Repository navigation
WO-09: importer desk match + dedupe + --set-desk, liveness-only /health guard, direct-mode Dot edit - #6
Merged
RoseBludd merged 1 commit intoOct 16, 2026
Conversation
…y supervisor /health, Dot edit in direct-model mode Importer: match seats to Dots by desk field, then 'name.' / 'name. (desk)'; skip memories already present (normalized content); opt-in --set-desk sets empty desk fields on --apply; report new/skippedDuplicate per desk. Supervisor /health stays public (liveness only) with a build-time guard. Direct mode: PATCH /dots/:id (name, instructions) plus PUT /dots/:id/model from the existing Dot dialog.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
WO-09: three fixes from the d243800 proof run. Base:
devvy/host-base-timeouts@ d243800.1. Memory importer (
src/server/memory-scope/import.ts,import-cli.ts)Reuses the WO-02 importer (#3, via #5) and
WorkspaceStore.setDotModel/ desk validation from WO-03 (src/server/dot-model.ts,src/shared/dot-model.ts).deskfield first. If no Dot has that desk, the name is tried next:<name>.,<name>,<name>. (desk)(case-insensitive, trailing dot and(desk)optional). The dry run matched 0/16 because host Dots are namedoppi. (desk)and none has a desk set.--set-desk(opt-in): on--apply, a matched Dot's desk is set to the seat name, but only if its desk field is empty. The dry run reportssetDeskper desk.--helpwarns that a desk forces desk-key-only calls (CADIS_API_KEY_<DESK>, no fallback).globals {new, skippedDuplicate}, and for each desk{desk, dotId, dotName, matchedBy, new, skippedDuplicate, truncated, setDesk}, plusunmatchedDesksandotherGlobals.2. Supervisor
/health: decision is to keep it publicUpstream OpenBot @ b6932d3
supervisor/src/index.tsL79/L86 returns only{ status: "ok", docker: <boolean> }. That is liveness only, with no version, config, counts or secrets. The compose healthcheck calls it without the token and needsdocker, and the port is published on 127.0.0.1 only. So the endpoint stays public.To keep it that way,
deployment/computers/check-supervisor-health.mjspins the exact handler and the single auth bypass. The image build fails closed (Pinned OpenBot /health contract changed) if upstream adds fields or routes, or widens the bypass. It runs insupervisor.Dockerfileafter the existing patches. It reuses the fail-closed pattern fromharden-supervisor.mjs/add-extra-binds.mjs, and I checked it against both the raw and the patched upstreamindex.ts.3. Dot editor in direct-model mode
Reuses the existing
WorkspaceDialogDot form and Model fieldset (WO-03), anddotSchemafromworkspace-routes.ts(now exported; name and instructions only, same limits).PATCH /api/dots/:id, strict{name, instructions}. It keeps permissions, spaces, learning, avatar and project. PUT/DELETE/dots/:idand POST/dotsstill return 501.PATCH /dots/:idand thenPUT /dots/:id/model(saveDirectDotindirect-chat.ts). Character, project folder, space access, permissions, learning and delete stay hidden.App.tsx: the per-Dot edit button and "Edit specialist" are back in direct mode. "Create Dot" stays hidden.Tests
memory-scope.test.ts: name-pattern matching and normalization; dedupe against existing globals;--set-deskdry run/apply, empty fields only.computer-patches.test.js: /health guard accepts upstream and rejects 4 drift cases.dot-model.test.ts: PATCH route validation, field preservation, 404, and 501s still in place.direct-chat.test.tsx: direct-mode dialog render, and a save round-trip through the real routes.Linux: 243/243 (baseline 237 + 6 new), typecheck and build OK. Lint: same 10 errors as on the base branch, none in changed files. Windows: 239/243; the 4 failures are the known Windows-path ones in host-git and dot-projects.
Importer commands (in the app container)
Leave out
--set-deskto import memories without setting desks.No merges and no deploys.