Repository navigation
Desktop: blueprint view - #4506
jeff-hykin wants to merge 540 commits into
Conversation
There was a problem hiding this comment.
go2 replay realtime (arm64)
Details
| Benchmark suite | Current: 5eafc02 | Previous: 5bc57a0 | Ratio |
|---|---|---|---|
peak memory |
1744.953 MB |
1776.91 MB |
0.98 |
peak threads |
367 threads |
376 threads |
0.98 |
network (transport) |
2733.72 MB |
2730.972 MB |
1.00 |
disk write |
1.828 MB |
1.59 MB |
1.15 |
instructions |
137.199 G |
138.52 G |
0.99 |
This comment was automatically generated by workflow using github-action-benchmark.
|
…s nothing, dimos:visible pauses or refreshes + resumes the runs, topic-rate and log polls, and dimos:chrome says pausable (dimos-react 0.2.1)
…e too coarse to see a quick edit
# Conflicts: # .github/workflows/ci.yml # dimos.yaml
…ns prose, drop a blueprint main deleted
… the whole web workspace
…eprint rescan, modules, skills, robots, msgs), /config, and /runs (module, skill, exec, live skills, logs)
# Conflicts: # dimos.yaml # experimental/gateway/README.md # experimental/gateway/app.py
# Conflicts: # experimental/gateway/app.py
…ets for each module field (value)
The console-preview fixes (h264 cameras, opening an .mcap at all) landed here by accident of where they were written. They are not about the cloud endpoints and they do not belong in this PR; they continue on their own branch.
…ff/feat/blueprint_view # Conflicts: # experimental/gateway/constants.py
…a missing schema shows lcm_codec's own error
…og or the launch output grows
…gs (blueprint-view:), served in GET /config
…, so the login page waits instead of polling
…t, timers only from config
…ments (CollectionModule's input_types answered 500)
…deQL polynomial-regex alert)
[Medium impact] The changes reach Desktop’s gateway pages and their supporting API workflows. Fix the lost-settings race and Linux wheel build before merging. FindingsSummaryAdds the blueprint graph, configuration dialog, live logs and process details, plus source-file, message-decoder and embedded login routes.
Reviews (2) · Last reviewed commit: "gateway: a run's logs say watched: false..." · Reviewed by Greptile |
# Conflicts: # docs/usage/gateway.md # experimental/gateway/app.py # experimental/gateway/responses.py # experimental/gateway/routes/cloud.py # experimental/gateway/shared_config.py # experimental/gateway/state.py # experimental/gateway/tests/test_cloud.py # experimental/gateway/uploads.py
…printView and ?loginNot= in dimos.yaml and the docs
…han launches.py's dimos imports can still list blueprint configs (DIM-630: every /config was a 500)
…ship, so a pip-installed gateway serves /blueprint_view and /msgs.js
… global overrides (they win at launch) instead of the shared value under them, and a module field saved as null shows null, not its default
… process stats and Stop
… blueprint's live run came from, as the catalog reads its modules (Show code from a branch run)
…s/ folders the gateway watches (a third checkout), and the logs dialog polls those instead of waiting on log events; API 8.6.0
|
@greptile review |
| const setField = (spec: FieldSpec, value: unknown) => | ||
| save(() => { | ||
| const atBase = sameValue(value, spec.base); | ||
| if (spec.scope === "module") { | ||
| return saveModules(withModule(savedModules, spec, atBase ? undefined : value)); |
There was a problem hiding this comment.
Quick edits lose saved settings
Editing two settings before the first save finishes can silently discard the first edit. Each call builds a complete settings dictionary from the last server response, so the second request leaves out the first change. The next launch then uses settings the user did not intend.
Queue saves and apply each edit to the latest saved values, or block further edits until the save finishes.
| deno = shutil.which("deno") | ||
| if (app / "src").is_dir() and deno: | ||
| # built here every time: a dist left by an older checkout would ship stale | ||
| subprocess.run([deno, "install", "--frozen"], cwd=app, check=True) | ||
| subprocess.run( | ||
| [deno, "run", "--frozen", "-A", "npm:vite", "build"], cwd=app, check=True | ||
| ) | ||
| if not (app / "dist" / "index.html").is_file(): | ||
| if os.environ.get("DIMOS_ALLOW_MISSING_COCKPIT") != "1": | ||
| raise RuntimeError( |
There was a problem hiding this comment.
The Linux release wheels now require Deno inside the build container, but the release workflow installs it only on the host. The existing build action builds web/sdk and web/cockpit, not blueprint_view. When cibuildwheel runs this hook in its manylinux container, neither Deno nor the new page's built files are available. This raises an error and stops the wheel build.
Build the page before entering the container and preserve its output, or install Deno inside the container.
There was a problem hiding this comment.
I agree with this.
My use of setup.py for the cockpit is also a mistake. I never got around to fixing that.
There was a problem hiding this comment.
Agreed—the same packaging concern applies to the cockpit build, so fixing only blueprint_view would leave the underlying setup.py coupling in place. Thanks for the context.
| if (app / "src").is_dir(): | ||
| # the same lock file relay_process uses, held until another process's build ends however long it takes | ||
| with (app / ".build.lock").open("w") as lock_file: | ||
| fcntl.flock(lock_file, fcntl.LOCK_EX) |
There was a problem hiding this comment.
Use filelock. We already have it installed.
| Decode dimos messages in a page with `msgs.js`: | ||
|
|
||
| ```js | ||
| const app = new DimApp({ msgDecodeEndpoint: "../../dimos-gateway/msgs.js" }) // DimApp from ./dim-app/mod.js |
| /docs/search: | ||
| get: | ||
| summary: Redirects to the docs site with its search open on ?q= (for a new tab or an iframe) | ||
| /blueprint_view: |
There was a problem hiding this comment.
View is an overloaded term is software development. I'd call it details to make it clearer.
In fact, it would probably be better as:
/blueprints/{identifier}/details
| "react-dom/": "npm:/react-dom@^19.2.0/", | ||
| "@types/react": "npm:@types/react@^19.3.0", | ||
| "@types/react-dom": "npm:@types/react-dom@^19.3.0", | ||
| "dimos-react": "https://raw.githubusercontent.com/jeff-hykin/dimos-react/v0.3.6/src/index.ts", |
There was a problem hiding this comment.
Again, package should be in dimensional
… /config or its config events; its timers are Desktop settings), GET /source becomes /catalog/blueprints/{name}/source and /catalog/modules/{name}/source?blueprint=, and /cloud/account?loginNot= becomes GET /cloud/login?after=, per the dimos-gateway plan; a blueprint's modules can be ?fields= picked; API 9.0.0
…copy of the module class lacks them (an RPC added in the run's checkout), and restart/stop no longer import the class; API 9.0.1
…ks (Desktop now runs the run's checkout's own gateway instead); API 9.0.2
Gateway API 9.0: catalog source routes, msgs.js, the cloud login page and login?after= (the blueprint view itself is now Desktop's).