@treeseed/dsh-chapters 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,97 @@
1
+ # Open items — 2026-10-11
2
+
3
+ Handoff for a fresh session. Everything below is *scoped and reachable*; none of it is a unknown
4
+ defect. Shipped state: **0.1.13** (tag = npm `latest` = the user's installed profile), hosted CI green
5
+ (deterministic gate + eight-project tape chain), and the untagged commit after it (`5bdc11b`) changes
6
+ only the e2e stub and this record.
7
+
8
+ Order matters: 1 and 2 are the ones that change what we are allowed to *claim*.
9
+
10
+ ## 1. Live-model proof of the plans journey
11
+
12
+ **What is missing.** Every acceptance claim for plan carriage runs off a tape distilled from the
13
+ scripted upstream (`tests/e2e/stub-model.ts`), because this box's model server was in a CUDA-OOM
14
+ restart loop. The behaviour at our seam is proven; "a real model plans, a human approves, the
15
+ continuation carries it" is not.
16
+
17
+ **What attempt 5 already bought** (see `tests/fixtures/model-tape/plans/PROVENANCE.md`): a real
18
+ `exit_plan_mode` submission, the host review answered by a real click, `plan/mode` flipping
19
+ active→inactive on approval, the archived chapter carrying the plan, and the **branch** child receiving
20
+ zero directive bytes — all with a live model. What it did *not* buy: the continuation leg, because the
21
+ model called `chapters_segment` and then answered in prose.
22
+
23
+ **How to close it.** The container is now `RestartCount=0` with `N_PARALLEL` removed.
24
+
25
+ 1. Prove a **completion**, not a health check: `curl` a real ~14K-token chat request and confirm it
26
+ finishes. `/v1/models` answering proves nothing (measured repeatedly).
27
+ 2. Run the journey live: `E2E_MODEL=live E2E_PORT=41850 E2E_THRESHOLD=0.99 E2E_NO_AUX_MODEL=1
28
+ npx playwright test -c tests/e2e/playwright.config.ts --project=plans`
29
+ 3. Expect cost: ~15 tok/s decode means several minutes per turn, and with one slot this session's own
30
+ turns queue behind it. Do it when the box is otherwise free.
31
+ 4. Record the outcome in `PROVENANCE.md` either way — including a failure and its cause. Do **not**
32
+ promote the scripted tape's status based on a live run that only half-completed.
33
+
34
+ **Honest limit.** A live journey is inherently non-deterministic (attempt 5 proved the model may chain
35
+ two calls or may not). It is evidence, never a CI gate. Do not try to make it one.
36
+
37
+ ## 2. The seeded-gate row in a browser
38
+
39
+ **What is missing.** The seeded `plan/mode` into a continuation child (§ 10 of
40
+ `docs/plans-carriage.md`) is proven by a kernel probe and by deterministic rows, but never *observed*
41
+ in a real session.
42
+
43
+ **Already done, and it is the hard part:** the session shape was reached live-in-the-harness and
44
+ recorded — `plan/mode {active:true}` at seq 4, `turn/end` at 21, **no** tool call. So a session can be
45
+ in plan mode with a completed turn, which gives the deterministic door a real ceiling to archive
46
+ against. The attempt was reverted unshipped for two harness reasons, both now fixed on `main`:
47
+
48
+ - the stub had to learn to answer **plainly** in plan mode (`kind: 'plain'`), and its "is the human
49
+ asking for a plan?" test first read the **last** user message — but the harness appends its own
50
+ injected user messages (workspace instructions, runtime snapshot, skill catalog) *after* the human's,
51
+ so the ask was invisible and the next step hung 15 minutes on a review card that could not appear.
52
+ Now it scans every user-role message, the trigger is a whole sentence so the plan-mode *policy* text
53
+ cannot set it off, and both properties are pinned by rows in `tests/unit/stub-model.test.ts`.
54
+ - a **stale stub process** was serving pre-edit logic, which made a harness bug look like a product
55
+ one. Restart the upstream before trusting any distillation.
56
+
57
+ **Remaining work.** Re-add the leg (draft is in this file's history of the repo: new session → `/plan`
58
+ with a plain ask → wait for `plan/mode` + `turn/end` → `/chapters-continue` → poll `ch-` children for a
59
+ `plan/mode` event at seq 1 with `active:true`, assert exactly one `dsh-chapters` user/message, and
60
+ assert the notice carries **no** plan section since no plan was submitted). Then re-distill the plans
61
+ tape with a **fresh** stub and replay it. Roughly 15–20 minutes.
62
+
63
+ ## 3. Per-message anchoring (needs a product decision, not just code)
64
+
65
+ `deriveRanges` already accepts any anchor, and the fork/continue doors archive from the watermark. What
66
+ does not exist is a way for a human to say *"branch from this message"*, because the button acts at
67
+ conversation end. Two open questions before code:
68
+
69
+ - where the affordance lives (message action row vs selection in the composer), and
70
+ - **how the child is told what it did not inherit** — an anchored branch silently drops the tail, which
71
+ is exactly the kind of unstated loss this project refuses. It needs a line in the notice.
72
+
73
+ Scope it as its own plan; do not fold it into a release.
74
+
75
+ ## 4. Default-preset shipping policy (the user's call)
76
+
77
+ Today `chapters` is opt-in: the profile must name it, and the README/site tell users how. The
78
+ alternative — make it the default agent preset — changes every new session's header. That is a
79
+ distribution decision with a cache consequence (a recomposed header is measured at ~12K tokens on a
80
+ 32K model) and it belongs to the human, not to an agent. Ask before touching it.
81
+
82
+ ## 5. Human-judgment verification rows
83
+
84
+ Still open and still human-only: readability of a real checkpoint in a real browser, and whether the
85
+ notice/preamble *feels* right to work in. These are not automatable and should not be faked with
86
+ assertions. `docs/verify.md` lists them; run them after installing, in the project you actually care
87
+ about.
88
+
89
+ ## Also worth knowing
90
+
91
+ - **Durability caveat for a new project:** with no pool linked, the archive lives only in the
92
+ workspace. `/chapters-link <path-or-url>` is the difference between "this machine remembers" and
93
+ "the project remembers".
94
+ - **Search now answers unlinked** (0.1.12) and says which door it used. If a result ever looks
95
+ machine-only when you expected the pool, that note is the first thing to read.
96
+ - **`/chapters-continue` vs `/chapters-fork`** is the intent line: continue carries the operative plan
97
+ and may seed plan mode; fork carries nothing.
@@ -362,7 +362,7 @@ happened in these notes before it was caught.
362
362
  | `scripts/dsh-scratch.sh` | **done** — refuses any DSH_HOME under the live `~/.dsh`; the near-miss is in FINDINGS |
363
363
  | `chapters_segment` / `chapters_continue` / `chapters_fork` tools (`src/tools.ts` → `continue-core.ts`) | **done & boot-proven** (r22 9/9 full loop incl. child read-back; r24 fork siblings reserve nothing; r25 durable title; r26/26b checklist pass) |
364
364
  | E3: header cache across a compaction | **measured, per-machine (r23 cloud, r28 local)**: cloud held 7,424 cached across the replacement (refill 13,658 → ~7,000); local llama.cpp reuses NOTHING across a head replacement (0 cached) but steady-state turns cost only the new content. Never quote one machine's number for the other |
365
- | Fork button | **shipped** (client bundle + slots; `remote.commands` trigger — `connection.rpc.handle` from a plugin is broken on this host, r26a; the button rides the command path instead) |
365
+ | Fork + Continue buttons | **shipped** (client bundle + slots; `remote.commands` trigger — `connection.rpc.handle` from a plugin is broken on this host, r26a; the buttons ride the command path instead). Both deterministic doors are rows over ONE client runner (`src/client/doors.ts` + the `DOOR_ACTIONS` table): `/chapters-continue` shipped as a composer command only, so its child was created correctly with no visible affordance |
366
366
  | Long-context mechanics (architecture amendments) | **built + verified**: arrival-time artifacting (`src/arrival.ts`, `chapters_artifact`; e2e artifact-arrival green — 373KB book never prefilled, cache intact) and plot carriage (persona PLOT: + elicited fallback); e2e = 7 specs / 2 projects on a throwaway per-boot home (188 unit/integration) |
367
367
  | Knowledge layer P1 (record §13) | **complete**: project identity, redaction, live turn signatures, topic-sequential composition (fork proven live, r36; engine wired, r29), sharded index + incremental manifest, `chapters_search`, `/chapters-link`+`/chapters-status`+notice v2 (Project line, `(N msgs)`), the sync loop with §5.3 local-only degradation + diverged-rebuild, both schedulers and all §5.1 triggers wired. 9/9 live (r35j) + the two-machine exit criterion PROVEN as a browser journey (e2e suite green 2026-09-18) (composer→real remote→machine B searches) |
368
368
  | Topic mapping (composer) | **live-verified at the fork (r36)**: same-topic turns merge into one chapter on real signatures; topic changes split; pressure fragments stay legacy (measured, documented §4.2/4.3 + FINDINGS r28-36) — engine composition (r29) waits for deep selections |
@@ -315,6 +315,7 @@ Every item below was an assumption the deterministic plane had encoded — and t
315
315
  | 5 | Site docs (§9 anatomy, §16 tools, §17 configuration, §18 notice) | done in the same release |
316
316
  | — | Seven-segment tape replay | green WITHOUT re-recording (2026-10-09, `npm run test:e2e:replay`, EXIT=0) |
317
317
  | — | `plans` browser journey | LANDED as the eighth chain project (2026-10-10) and immediately **extended to two legs** so § 12's continue-vs-branch distinction is tested, not described: a `chapters_segment`→`chapters_continue` continuation (asserts `## Active plan`, the plan's document path, and NO seeded gate because approving a plan exits plan mode) and a fork-button branch (asserts **no** directive section, archive still cited). Replays in 17 s on a committed tape; the eight-project chain re-runs for the 0.1.9 ship. Its tape is scripted-upstream distilled — see § Tapes and `PROVENANCE.md` |
318
+ | 8 | `/chapters-continue` — the deterministic door for continuations (§ 15): continuation leg back in the tape chain, both intents covered in the browser, no frozen ranges |
318
319
  | 7 | Journey made hardware-independent (0.1.10): 0.99 threshold pin + `compaction/*`-absent guard; replay chain annotates its own failure and ships the engine diagnostics | built — tape re-distilled under the pin, eight-project chain `CHAIN_EXIT=0` locally, hosted acceptance green at the 0.1.10 tag |
319
320
  | 7 | Findability round (§ 14): local search door over a shared scorer, `## Finding things` in the notice (`retrievalHints`), kernel-drift gate on the seed contract | built — verify.md P18–P20; two pinned contract rows amended with reason; eight-project chain re-run |
320
321
  | 6 | Second-round decisions (§§ 9–13): intent-aware notice, seeded plan mode for continuations, `kind: plan` documents, checkpoint carriage, the one injection-screen exception | built 2026-10-10 — verify.md P12–P17; 582 deterministic rows green, gate 98.05 / 86.44 / 93.67 |
@@ -377,6 +378,64 @@ is honest: `no mirror ⇒ honest empty` became `no mirror ⇒ the local answer,
377
378
  in place with the reason in the diff, because a silently-passing old expectation would have meant the
378
379
  feature shipped broken and green.
379
380
 
381
+ ## 15. The deterministic door: `/chapters-continue`
382
+
383
+ Attempt 5 settled an argument that had cost three releases. Two facts, both measured:
384
+
385
+ 1. **A tape cannot carry a model-authored range.** The continuation leg broke on the runner because the
386
+ recorded `chapters_continue` arguments said `endSeq: 30` while the runner's own ceiling was 29.
387
+ `validateRanges` refused — correctly. Nothing about pinning a threshold can fix a number frozen in a
388
+ recording.
389
+ 2. **A small local model will not reliably chain two tool calls.** Live, it called `chapters_segment` and
390
+ then answered in prose. So the leg could not be made green by asking the model harder.
391
+
392
+ Both have the same cure: the plugin already knew how to create a child without a model. `/chapters-fork`
393
+ derives everything itself — *"no model involvement — `deriveRanges` is deterministic, so a click needs no
394
+ agent turn and no proposed ranges."* The gap was that this door was hard-wired to `intent: 'branch'`, and a
395
+ branch by decision 3 asserts **nothing** about plans. So every property of the *continuation* shape
396
+ (`## Active plan`, `## Previous plans on this path`, the seeded `plan/mode`, the `plan document:` citation)
397
+ was provable only through the model's door.
398
+
399
+ **`/chapters-continue` is that same builder with the other intent.** Archive semantics are identical by
400
+ user decision (everything since the watermark). It is one `deterministicCommand(door)` producing both
401
+ defs — name, verbs, intent, and the no-directive prose are the only differences, and
402
+ `tests/unit/continue-command.test.ts` pins that the two doors **archive identically** (same ranges, same
403
+ titles, same plan facts) so the factoring cannot drift into two implementations. Consequences:
404
+
405
+ - the continuation leg is **back in the tape chain**, replaying on every push with no GPU and no frozen
406
+ number (it needs no model request at all — the child is created by the command, and asserted from its
407
+ durable log without the UI switching to it);
408
+ - the browser plane now covers **both intents**, which is where decision 3 actually lives;
409
+ - and the tool `chapters_continue` keeps existing for the model's own use — it is simply no longer the
410
+ only way to learn whether a continuation carries its plan.
411
+
412
+ ### The seeded-gate case: measured, and why there is no browser row for it yet
413
+
414
+ The open question was whether the host gives a completed turn to archive while a plan review is still
415
+ pending. Answered from attempt 5's own log (no speculation): `plan/mode` active at seq 4,
416
+ `exit_plan_mode` at 20, the verdict at 21, `plan/mode` inactive at 23, `turn/end` at **41** — the turn
417
+ containing a submission does not end until the review is answered. So:
418
+
419
+ - a session whose *only* turn is pending has **no ceiling**, and `/chapters-continue` refuses with its
420
+ first guard (`nothing to archive yet — the conversation has no completed turn`);
421
+ - the seeded case is reachable in a browser only when an earlier turn already closed — which means a
422
+ second distilled session (a plain turn, then `/plan`), not a rewording of the current one;
423
+ - the plugin-side behaviour for that shape **is** pinned at L0: a pending-review fixture yields
424
+ seed `['user/message', 'plan/mode']`, the notice line `Plan mode is ACTIVE in this session`, and the
425
+ plan marked PENDING/un-stored (`continue-command.test.ts`).
426
+
427
+ So the honest statement is: the seeded continuation is covered deterministically and structurally, and
428
+ NOT yet observed in a real browser. An attempt at that browser row on 2026-10-11 was built and then
429
+ REVERTED, unshipped, for two reasons worth recording so the next person does not re-derive them:
430
+ (a) the scripted upstream had to learn to answer PLAINLY in plan mode, and its decision rule first keyed
431
+ on the LAST user message — but the harness appends its own injected user messages (instructions, runtime
432
+ snapshot, skill catalog) AFTER the human's, so the ask was invisible and the journey hung on a review card
433
+ that could never appear; that ordering trap is now pinned by a unit row; and (b) a stale stub process
434
+ serving pre-edit logic made the failure look like a product problem. Neither is a product defect. The
435
+ shape is sound — `plan/mode {active:true}` logged, turn completed at seq 21, no tool call — so a future
436
+ leg needs the plain branch plus a fresh distillation, and nothing else. Building that row needs new stub rules and a fresh distillation; it is
437
+ recorded as the remaining piece rather than quietly claimed.
438
+
380
439
  ## Deferred (human decisions, not ours)
381
440
 
382
441
  - ~~`kind: plan` corpus documents~~ **decided and built** (§ 11).
package/docs/verify.md CHANGED
@@ -152,6 +152,8 @@ renderer, the segmentation tool, and the child's notice.
152
152
  | P10 | Artifact citations resolve wherever they were written | a chapter's `artifacts/aa/<sha>.txt` reference resolves whether the blob sits at the STORE ROOT (arrival stubs) or inside the ANCESTRY TREE (`<store>/<root>/artifacts/…`, where `writeArchive` puts deferred results and every plan) — before this fix the second form was unreadable through `chapters_artifact`, which is what "every byte remains retrievable" actually promised | `artifact-query.test.ts` rows + integration `plans-carriage.test.ts` (`resolveArtifactWithMirror` over the real tree) |
153
153
  | P11 | The browser plane runs in the chain | `/plan <message>` → a real `exit_plan_mode` call → the host's review card opened and answered by a real CLICK → fork; asserts the submission's bytes are the artifact's bytes (or provably only-redacted), `planMode: inactive` from the fold, a `kind: plan` document on disk, and that the BRANCH child carries **no** `## Active plan` and no call-out while still citing the archive; plus a guard that no `compaction/*` entered the journey | `tests/e2e/plans.spec.ts` = chain project `plans` (13 s replay, no LLM; 3-entry tape). **Scope, learned at cost:** the continuation leg was REMOVED from this journey because a tape freezes the model's tool ARGUMENTS — my scripted upstream derived `chapters_continue` ranges from the ceiling the live segment tool reported while distilling (30 here), and the runner's session lands at 29, so `validateRanges` refused the stale input (correctly). A journey whose recorded request embeds a machine-specific seq cannot be hardware-neutral. Continuation semantics — `## Active plan`, `## Previous plans`, the seeded `plan/mode`, the checkpoint carry — are covered by the deterministic plane (`continue-plans`, `plans-engine`, `plan-documents`, the § 10 kernel probe) and the in-place path by the heavy/arrival/enrich/fanout journeys. Tape provenance: scripted upstream, see `tests/fixtures/model-tape/plans/PROVENANCE.md` |
154
154
 
155
+ | P21 | The continuation has a **human-pulled door**, and the two doors cannot drift | `/chapters-continue` = `deterministicCommand({intent:'continue'})`, the same builder as `/chapters-fork`; only name/verbs/intent/no-directive prose differ; archive semantics identical (everything since the watermark). CLIENT SIDE, same discipline: the assistant row registers both doors from ONE runner (`src/client/doors.ts` `makeDoorRunner` + a two-row `DOOR_ACTIONS` table) — a composer-only continue left the user with a created child and no affordance | unit `continue-command.test.ts` (7 rows) incl. the **no-drift row**: same events in ⇒ same ranges, titles and plan facts out of both doors; the no-plan case, the refusal naming its own door, and approved ⇒ NOT seeded vs still-planning ⇒ seeded `['user/message','plan/mode']`. Unit `client-doors.test.ts` (7 rows) pins the two client rows (distinct id/order/label/command, the fork label frozen for the specs), that ONE child-id regex parses BOTH door wordings, that both rows fire their own command through the same body, and — by reading the server's own templates — that the reply wording the client parses is still what `deterministicCommand` emits. Browser: project `fork` asserts BOTH buttons render |
156
+ | P22 | The continuation shape is covered **in the browser**, on every push | the leg that a tape could not carry (§ 15) is back, driven by the command — no model request, no frozen `endSeq`; asserted from the child's durable log without switching the UI: `## Active plan`, the operative plan by title with its real verdict, `plan document:` and `chapters_artifact` citations, `## Finding things`, no seeded gate after approval, exactly one synthetic notice (invariant 2) | `tests/e2e/plans.spec.ts` project `plans` — replays in ~14 s with no LLM/GPU, eight-project chain green |
155
157
  | P18 | Search answers **without a pool linked** — the findability audit | `buildLocalCorpus` walks the workspace store (chapters, `kind: plan` documents, rules) and answers through the SAME scorer as the mirror door (`rankEntries`), so ranking cannot drift between doors; artifacts are deliberately not indexed (they answer to `chapters_artifact`); the answer names its door ("searched this machine's store, N docs, no pool mirror") so a session never reads *this machine only* as *the whole project*; "nothing matched" (`documents>0`) is distinguished from "nothing here" (`empty`); a pool miss falls back to the local store before answering empty | unit `local-corpus.test.ts` (5) + integration `find-without-a-pool.test.ts` through the real tool wrapper — the empty answer used to be born in the wrapper, not the pure function |
156
158
  | P19 | A child is TOLD the lookup verbs | the notice gains a three-line `## Finding things` naming `read` (chapters), `chapters_artifact` (deferred blobs, path or bare sha) and `chapters_search` (everything else), plus the one fact a model cannot infer — that plans are searchable **as plans** (`kind: plan`) and rules arrive from other machines; `retrievalHints` (default on) off ⇒ the notice is byte-identical to the previous shape | unit rows in `find-without-a-pool.test.ts` (on/off goldens); measured that NO committed tape prefix contains a seeded notice, so the change costs no re-record, and the eight-project chain replays green |
157
159
  | P20 | Kernel-drift gate on the seeded continuation | the seed depends on two host facts: `plan/mode` is a KNOWN event type and is NOT surface-eligible. Read from the kernel's OWN exported predicates (`KNOWN_SESSION_EVENT_TYPES`, `isSurfaceEligibleType`, `isAppendSurfaceEvent`, `adoptSessionEvent`) rather than reimplemented, so the gate fails on a change of kernel INTENT, not on refactoring. Without it, a host upgrade turns a gated child into an ungated one with every existing test still green | unit `host-seed-contract.test.ts` (4 rows, 0 skips against the pinned host; skips loudly naming the missing package if the host is absent) |
package/lib/client.js CHANGED
@@ -6,39 +6,28 @@ window.__ModuleLoader__.load({
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
7
  let react = require("react");
8
8
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
9
- //#region src/client/index.ts
10
- /**
11
- * dsh-chapters client entry: the per-message fork action.
12
- *
13
- * Registers one button into the assistant action row
14
- * (`conversation.chat.assistant-actions` — the slot the official feedback
15
- * package populates beside copy/branch). Clicking it executes `/chapters-fork`
16
- * through `remote.commands` — the exact wire the composer's input line rides —
17
- * then SWITCHES the app to the fresh branch:
18
- *
19
- * 1. `sessions.open(child)` — the client sessions service carries open() on
20
- * its prototype (Playwright-verified against this host; a keys-dump alone
21
- * hid it, which is why an earlier round wrongly gave up on this path);
22
- * 2. fallback: click the branch's sidebar row after expanding collapsed
23
- * groups (plugin children can render under collapsed 'Ungrouped' heads);
24
- * 3. last resort: an inline note — the branch is durable either way.
25
- *
26
- * There is deliberately NO second implementation of fork logic here: the
27
- * button is a mouth for the host command (watermark, segmentation, budget,
28
- * titles, refusal-with-numbers all server-side, all tested). The purity gate
29
- * in tsdown.client.config.ts keeps this file cross-plugin-free.
30
- *
31
- * @module dsh-chapters/src/client
32
- */
33
- const inject = [
34
- "slots",
35
- "remote",
36
- "remote.commands",
37
- "sessions"
38
- ];
39
- /** Pull the child id and branch title out of the command's durable texts. */
9
+ //#region src/client/doors.ts
10
+ const DOOR_ACTIONS = [{
11
+ id: "chapters-fork",
12
+ order: 30,
13
+ label: "Fork with chapters",
14
+ command: "/chapters-fork",
15
+ noun: "branch",
16
+ iconPath: "M5 3.25a2.25 2.25 0 1 0-1.5 2.12v5.26a2.25 2.25 0 1 0 1.5 0V9h5a2.25 2.25 0 0 0 2.25-2.25v-1.4a2.25 2.25 0 1 0-1.5 0v1.4A.75.75 0 0 1 10 7.5H5V5.37A2.25 2.25 0 0 0 5 3.25Z"
17
+ }, {
18
+ id: "chapters-continue",
19
+ order: 31,
20
+ label: "Continue with chapters",
21
+ command: "/chapters-continue",
22
+ noun: "continuation",
23
+ iconPath: "M1 8a.75.75 0 0 1 0-1.5h9.44L7.72 3.28a.75.75 0 1 1 1.06-1.06l3.5 3.5.53.53-.53.53-3.5 3.5a.75.75 0 1 1-1.06-1.06L10.44 9.5H1Zm13-5.25v10.5a.75.75 0 0 1-1.5 0v-10.5a.75.75 0 0 1 1.5 0Z"
24
+ }];
25
+ /** Pull the child id out of either door's durable success text — both end in
26
+ * `… is session ch-…` (src/tools.ts), so this regex is door-agnostic. */
40
27
  const CHILD_ID = /is session (ch-[\w-]+)/;
41
- const BRANCH_TITLE = /branch \u201C([^\u201D]+)\u201D is session/;
28
+ /** The quoted title the door gave the child, matched by its OWN noun so a
29
+ * refusal or an unrelated quote cannot pass for it. */
30
+ const doorTitle = (noun) => new RegExp(`${noun} \\u201C([^\\u201D]+)\\u201D is session`);
42
31
  function openByService(sessions, sessionId) {
43
32
  return (async () => {
44
33
  const svc = sessions;
@@ -58,8 +47,8 @@ window.__ModuleLoader__.load({
58
47
  }
59
48
  /**
60
49
  * Fallback path: expand collapsed groups / show-more buttons, then click the
61
- * newest treeitem whose label contains the branch title (newest-updated sorts
62
- * first, so the first match is the fresh branch).
50
+ * newest treeitem whose label contains the child title (newest-updated sorts
51
+ * first, so the first match is the fresh child).
63
52
  */
64
53
  async function openBranchRow(title, budgetMs = 4e3) {
65
54
  if (typeof document === "undefined") return false;
@@ -88,41 +77,41 @@ window.__ModuleLoader__.load({
88
77
  }
89
78
  return tryClick();
90
79
  }
91
- function makeForker(remote, sessions) {
92
- return async function fork(sessionId) {
80
+ function makeDoorRunner(remote, sessions, door) {
81
+ return async function run(sessionId) {
93
82
  try {
94
83
  if (remote.commands?.execute === void 0) return {
95
84
  ok: false,
96
85
  message: "commands remote unavailable"
97
86
  };
98
- const res = await remote.commands.execute(sessionId, "/chapters-fork", []);
87
+ const res = await remote.commands.execute(sessionId, door.command, []);
99
88
  if (res.ok !== true) return {
100
89
  ok: false,
101
- message: (res.error?.message ?? "the fork call failed").slice(0, 90)
90
+ message: (res.error?.message ?? `the ${door.noun} call failed`).slice(0, 90)
102
91
  };
103
92
  const result = res.value?.result;
104
93
  const text = typeof result?.text === "string" ? result.text : "";
105
94
  if (result?.kind !== "success") return {
106
95
  ok: false,
107
- message: (text || "the fork was refused — see the command result").slice(0, 90)
96
+ message: (text || `the ${door.noun} was refused — see the command result`).slice(0, 90)
108
97
  };
109
98
  const child = CHILD_ID.exec(text)?.[1];
110
99
  if (child === void 0) return {
111
100
  ok: true,
112
- message: "forked — the branch is appearing in the sidebar"
101
+ message: `${door.noun} created — appearing in the sidebar`
113
102
  };
114
103
  if (await openByService(sessions, child)) return {
115
104
  ok: true,
116
105
  message: ""
117
106
  };
118
- const title = BRANCH_TITLE.exec(text)?.[1];
107
+ const title = doorTitle(door.noun).exec(text)?.[1];
119
108
  if (title !== void 0 && await openBranchRow(title)) return {
120
109
  ok: true,
121
110
  message: ""
122
111
  };
123
112
  return {
124
113
  ok: true,
125
- message: "forked — open the branch in the sidebar"
114
+ message: `${door.noun} created — open it in the sidebar`
126
115
  };
127
116
  } catch (error) {
128
117
  return {
@@ -132,11 +121,45 @@ window.__ModuleLoader__.load({
132
121
  }
133
122
  };
134
123
  }
124
+ //#endregion
125
+ //#region src/client/index.ts
126
+ /**
127
+ * dsh-chapters client entry: the per-message door buttons.
128
+ *
129
+ * Registers the two deterministic archive doors into the assistant action row
130
+ * (`conversation.chat.assistant-actions` — the slot the official feedback
131
+ * package populates beside copy/branch). Clicking one executes its host
132
+ * command — `/chapters-fork`, `/chapters-continue` — through `remote.commands`,
133
+ * the exact wire the composer's input line rides, then SWITCHES the app to the
134
+ * fresh child:
135
+ *
136
+ * 1. `sessions.open(child)` — the client sessions service carries open() on
137
+ * its prototype (Playwright-verified against this host; a keys-dump alone
138
+ * hid it, which is why an earlier round wrongly gave up on this path);
139
+ * 2. fallback: click the child's sidebar row after expanding collapsed
140
+ * groups (plugin children can render under collapsed 'Ungrouped' heads);
141
+ * 3. last resort: an inline note — the child is durable either way.
142
+ *
143
+ * There is deliberately NO second implementation of door logic here: the
144
+ * buttons are mouths for the host commands (watermark, segmentation, budget,
145
+ * titles, refusal-with-numbers all server-side, all tested), and the runner
146
+ * they share is `src/client/doors.ts` — one body, one row per door. The purity
147
+ * gate in tsdown.client.config.ts keeps this file cross-plugin-free.
148
+ *
149
+ * @module dsh-chapters/src/client
150
+ */
151
+ const inject = [
152
+ "slots",
153
+ "remote",
154
+ "remote.commands",
155
+ "sessions"
156
+ ];
135
157
  /**
136
158
  * Style parity with the native IconActions row: rules copied verbatim from the
137
159
  * host's MessageIconActions module (`._xzv4MW_action` in dsh-client-ui-chat's
138
160
  * compiled client + the feedback package's :disabled) — same metrics, tokens,
139
- * hover. Update this string if the host restyles its action row.
161
+ * hover. Update this string if the host restyles its action row. Both doors
162
+ * share these metrics.
140
163
  *
141
164
  * The final rule hides the native branch action IN THE MESSAGE ROW only
142
165
  * (user-approved cosmetic decision, docs/architecture.md): built-in chrome, so
@@ -163,48 +186,51 @@ window.__ModuleLoader__.load({
163
186
  document.head.appendChild(tag);
164
187
  } catch {}
165
188
  }
166
- function ChaptersForkAction({ fork }) {
167
- const [busy, setBusy] = (0, react.useState)(false);
168
- const [note, setNote] = (0, react.useState)(null);
169
- const alive = (0, react.useRef)(true);
170
- (0, react.useEffect)(() => () => {
171
- alive.current = false;
172
- }, []);
173
- const onClick = (0, react.useCallback)(() => {
174
- if (busy) return;
175
- setBusy(true);
176
- setNote(null);
177
- fork().then((result) => {
178
- if (!alive.current) return;
179
- setBusy(false);
180
- setNote(result.message === "" ? null : result.message);
181
- setTimeout(() => {
182
- if (alive.current) setNote(null);
183
- }, 8e3);
184
- });
185
- }, [busy, fork]);
186
- const button = (0, react.createElement)("button", {
187
- type: "button",
188
- "aria-label": "Fork with chapters",
189
- disabled: busy,
190
- onClick,
191
- className: "dsh-chapters_forkAction"
192
- }, (0, react.createElement)("svg", {
193
- viewBox: "0 0 16 16",
194
- width: "15",
195
- height: "15",
196
- fill: "currentColor",
197
- "aria-hidden": "true"
198
- }, (0, react.createElement)("path", { d: "M5 3.25a2.25 2.25 0 1 0-1.5 2.12v5.26a2.25 2.25 0 1 0 1.5 0V9h5a2.25 2.25 0 0 0 2.25-2.25v-1.4a2.25 2.25 0 1 0-1.5 0v1.4A.75.75 0 0 1 10 7.5H5V5.37A2.25 2.25 0 0 0 5 3.25Z" })));
199
- return (0, react.createElement)("span", { style: {
200
- display: "inline-flex",
201
- alignItems: "center",
202
- gap: "4px"
203
- } }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
204
- label: "Fork with chapters",
205
- side: "bottom",
206
- children: button
207
- }), note !== null ? (0, react.createElement)("span", { className: "dsh-chapters_forkNote" }, note) : null);
189
+ /** One component body for every door row; only the label and glyph differ. */
190
+ function makeDoorAction(door) {
191
+ return function ChaptersDoorAction({ run }) {
192
+ const [busy, setBusy] = (0, react.useState)(false);
193
+ const [note, setNote] = (0, react.useState)(null);
194
+ const alive = (0, react.useRef)(true);
195
+ (0, react.useEffect)(() => () => {
196
+ alive.current = false;
197
+ }, []);
198
+ const onClick = (0, react.useCallback)(() => {
199
+ if (busy) return;
200
+ setBusy(true);
201
+ setNote(null);
202
+ run().then((result) => {
203
+ if (!alive.current) return;
204
+ setBusy(false);
205
+ setNote(result.message === "" ? null : result.message);
206
+ setTimeout(() => {
207
+ if (alive.current) setNote(null);
208
+ }, 8e3);
209
+ });
210
+ }, [busy, run]);
211
+ const button = (0, react.createElement)("button", {
212
+ type: "button",
213
+ "aria-label": door.label,
214
+ disabled: busy,
215
+ onClick,
216
+ className: "dsh-chapters_forkAction"
217
+ }, (0, react.createElement)("svg", {
218
+ viewBox: "0 0 16 16",
219
+ width: "15",
220
+ height: "15",
221
+ fill: "currentColor",
222
+ "aria-hidden": "true"
223
+ }, (0, react.createElement)("path", { d: door.iconPath })));
224
+ return (0, react.createElement)("span", { style: {
225
+ display: "inline-flex",
226
+ alignItems: "center",
227
+ gap: "4px"
228
+ } }, (0, react.createElement)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
229
+ label: door.label,
230
+ side: "bottom",
231
+ children: button
232
+ }), note !== null ? (0, react.createElement)("span", { className: "dsh-chapters_forkNote" }, note) : null);
233
+ };
208
234
  }
209
235
  function apply(ctx) {
210
236
  injectStyles();
@@ -216,13 +242,17 @@ window.__ModuleLoader__.load({
216
242
  } catch {
217
243
  sessions = void 0;
218
244
  }
219
- const fork = makeForker(remote, sessions);
220
- slots.inject("conversation.chat.assistant-actions", () => slots.register({
245
+ const rows = DOOR_ACTIONS.map((door) => ({
246
+ door,
247
+ run: makeDoorRunner(remote, sessions, door),
248
+ component: makeDoorAction(door)
249
+ }));
250
+ slots.inject("conversation.chat.assistant-actions", () => rows.map(({ door, run, component }) => slots.register({
221
251
  name: "conversation.chat.assistant-actions",
222
- id: "chapters-fork",
223
- order: 30,
224
- inject: (sessionId) => ({ fork: () => fork(sessionId) })
225
- }, ChaptersForkAction));
252
+ id: door.id,
253
+ order: door.order,
254
+ inject: (sessionId) => ({ run: () => run(sessionId) })
255
+ }, component)));
226
256
  }
227
257
  //#endregion
228
258
  exports.apply = apply;
package/lib/client.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","names":["useState","useRef","useCallback","h","Tooltip"],"sources":["../src/client/index.ts"],"sourcesContent":["/**\n * dsh-chapters client entry: the per-message fork action.\n *\n * Registers one button into the assistant action row\n * (`conversation.chat.assistant-actions` — the slot the official feedback\n * package populates beside copy/branch). Clicking it executes `/chapters-fork`\n * through `remote.commands` — the exact wire the composer's input line rides —\n * then SWITCHES the app to the fresh branch:\n *\n * 1. `sessions.open(child)` — the client sessions service carries open() on\n * its prototype (Playwright-verified against this host; a keys-dump alone\n * hid it, which is why an earlier round wrongly gave up on this path);\n * 2. fallback: click the branch's sidebar row after expanding collapsed\n * groups (plugin children can render under collapsed 'Ungrouped' heads);\n * 3. last resort: an inline note — the branch is durable either way.\n *\n * There is deliberately NO second implementation of fork logic here: the\n * button is a mouth for the host command (watermark, segmentation, budget,\n * titles, refusal-with-numbers all server-side, all tested). The purity gate\n * in tsdown.client.config.ts keeps this file cross-plugin-free.\n *\n * @module dsh-chapters/src/client\n */\n\nimport { createElement as h, useCallback, useEffect, useRef, useState, type ReactElement } from 'react'\n// The host's own tooltip bubble — a platform module served by the loader table,\n// external like react. Every action in this row labels through it.\nimport { Tooltip } from '@deepseek-ai/dsh-client-ui-primitives'\n\n/** Structural slice of the aggregated remote service (@deepseek-ai/dsh-api-remotes).\n * `remote.commands` must ALSO appear in inject — the federation gates each\n * sub-service individually (the live feedback package declares\n * remote.messageFeedback beside remote for exactly this reason). */\ninterface ClientRemote {\n commands?: {\n execute(sessionId: string, line: string, attachments: readonly unknown[]): Promise<{\n ok?: boolean\n value?: { commandId?: string; result?: { kind?: string; text?: string } }\n error?: { code?: string; message?: string }\n }>\n }\n}\n\ninterface ClientSlots {\n inject(name: string, factory: () => unknown): void\n register(registration: Record<string, unknown>, component: unknown): unknown\n}\n\n/** The client sessions service (dsh-client-runtime): open() lives on the\n * prototype; everything else on the surface stays untrusted and unused. */\ninterface ClientSessions {\n open(sessionId: string): unknown\n}\n\ninterface Ctx {\n slots: ClientSlots\n get(name: string): unknown\n}\n\nexport const inject = ['slots', 'remote', 'remote.commands', 'sessions'] as const\n\n/** Pull the child id and branch title out of the command's durable texts. */\nconst CHILD_ID = /is session (ch-[\\w-]+)/\nconst BRANCH_TITLE = /branch \\u201C([^\\u201D]+)\\u201D is session/\n\nfunction openByService(sessions: ClientSessions | undefined, sessionId: string): Promise<boolean> {\n return (async () => {\n const svc = sessions as unknown as { open?: (id: string) => unknown; refresh?: () => unknown } | undefined\n if (typeof svc?.open !== 'function') return false\n try { await svc.refresh?.() } catch { /* refresh best-effort */ }\n // The store must know the session before open() resolves it; a child\n // created seconds ago is only server-known until refresh lands. Retry\n // open briefly across that window.\n const started = Date.now()\n for (;;) {\n try { svc.open(sessionId); return true } catch {\n if (Date.now() - started > 4_000) return false\n await new Promise((r) => setTimeout(r, 250))\n }\n }\n })()\n}\n\n/**\n * Fallback path: expand collapsed groups / show-more buttons, then click the\n * newest treeitem whose label contains the branch title (newest-updated sorts\n * first, so the first match is the fresh branch).\n */\nasync function openBranchRow(title: string, budgetMs = 4_000): Promise<boolean> {\n if (typeof document === 'undefined') return false\n const needle = title.toLowerCase()\n const tryClick = (): boolean => {\n const rows = Array.from(document.querySelectorAll<HTMLElement>('[role=\"treeitem\"]'))\n const hit = rows.find((row) => (row.textContent ?? '').toLowerCase().includes(needle))\n if (hit === undefined) return false\n hit.click()\n return true\n }\n const clickMore = (): number => {\n const buttons = Array.from(document.querySelectorAll<HTMLElement>('button'))\n .filter((b) => /more sessions|ungrouped/i.test(b.textContent ?? '') && b.getAttribute('aria-expanded') !== 'true')\n for (const b of buttons) b.click()\n return buttons.length\n }\n const started = Date.now()\n let expansions = 0\n while (Date.now() - started < budgetMs) {\n if (tryClick()) return true\n if (expansions < 4 && clickMore() > 0) { expansions += 1; await new Promise((r) => setTimeout(r, 250)); continue }\n await new Promise((resolve) => setTimeout(resolve, 150))\n }\n return tryClick()\n}\n\nfunction makeForker(remote: ClientRemote, sessions: ClientSessions | undefined) {\n return async function fork(sessionId: string): Promise<{ ok: boolean; message: string }> {\n try {\n if (remote.commands?.execute === undefined) return { ok: false, message: 'commands remote unavailable' }\n const res = await remote.commands.execute(sessionId, '/chapters-fork', [])\n if (res.ok !== true) return { ok: false, message: (res.error?.message ?? 'the fork call failed').slice(0, 90) }\n const result = res.value?.result\n const text = typeof result?.text === 'string' ? result.text : ''\n if (result?.kind !== 'success') return { ok: false, message: (text || 'the fork was refused — see the command result').slice(0, 90) }\n const child = CHILD_ID.exec(text)?.[1]\n if (child === undefined) return { ok: true, message: 'forked — the branch is appearing in the sidebar' }\n const opened = await openByService(sessions, child)\n if (opened) return { ok: true, message: '' }\n const title = BRANCH_TITLE.exec(text)?.[1]\n if (title !== undefined && await openBranchRow(title)) return { ok: true, message: '' }\n return { ok: true, message: 'forked — open the branch in the sidebar' }\n } catch (error) {\n return { ok: false, message: String((error as Error)?.message ?? error).slice(0, 90) }\n }\n }\n}\n\n/** Props composed by the slot framework: owner (`messageId`) + our injected verb. */\ninterface ForkActionProps {\n messageId: string\n fork: () => Promise<{ ok: boolean; message: string }>\n}\n\n/**\n * Style parity with the native IconActions row: rules copied verbatim from the\n * host's MessageIconActions module (`._xzv4MW_action` in dsh-client-ui-chat's\n * compiled client + the feedback package's :disabled) — same metrics, tokens,\n * hover. Update this string if the host restyles its action row.\n *\n * The final rule hides the native branch action IN THE MESSAGE ROW only\n * (user-approved cosmetic decision, docs/architecture.md): built-in chrome, so\n * the selector is its accessible label scoped to action-row buttons; both\n * locale spellings covered. If the host rewords the label the button simply\n * reappears — fails open, visibly.\n */\nconst CSS = [\n '.dsh-chapters_forkAction{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex}',\n '.dsh-chapters_forkAction svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}',\n '.dsh-chapters_forkAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}',\n '.dsh-chapters_forkAction:disabled{cursor:default;opacity:.4}',\n '.dsh-chapters_forkNote{color:var(--dsw-alias-label-tertiary);padding-left:4px;font-size:13px;line-height:20px}',\n 'button[class*=\"_action\"][aria-label=\"Branch into a new conversation\"],button[class*=\"_action\"][aria-label=\"\\u5728\\u65b0\\u5bf9\\u8bdd\\u4e2d\\u5206\\u652f\"]{display:none !important}',\n].join('\\n')\nconst CSS_TAG_ID = 'dsh-chapters/assistant-action.css'\n\nfunction injectStyles(): void {\n try {\n if (typeof document === 'undefined' || document.querySelector(`style[data-plugin-css=${JSON.stringify(CSS_TAG_ID)}]`) !== null) return\n const tag = document.createElement('style')\n tag.dataset.plugin = 'dsh-chapters'\n tag.dataset.pluginCss = CSS_TAG_ID\n tag.textContent = CSS\n document.head.appendChild(tag)\n } catch { /* styling is cosmetic; the action still works without it */ }\n}\n\nfunction ChaptersForkAction({ fork }: ForkActionProps) {\n const [busy, setBusy] = useState(false)\n const [note, setNote] = useState<string | null>(null)\n const alive = useRef(true)\n useEffect(() => () => { alive.current = false }, [])\n const onClick = useCallback(() => {\n if (busy) return\n setBusy(true)\n setNote(null)\n void fork().then((result) => {\n if (!alive.current) return\n setBusy(false)\n setNote(result.message === '' ? null : result.message)\n setTimeout(() => { if (alive.current) setNote(null) }, 8000)\n })\n }, [busy, fork])\n const button = h('button', {\n type: 'button',\n 'aria-label': 'Fork with chapters',\n disabled: busy,\n onClick,\n className: 'dsh-chapters_forkAction',\n },\n h('svg', { viewBox: '0 0 16 16', width: '15', height: '15', fill: 'currentColor', 'aria-hidden': 'true' },\n h('path', { d: 'M5 3.25a2.25 2.25 0 1 0-1.5 2.12v5.26a2.25 2.25 0 1 0 1.5 0V9h5a2.25 2.25 0 0 0 2.25-2.25v-1.4a2.25 2.25 0 1 0-1.5 0v1.4A.75.75 0 0 1 10 7.5H5V5.37A2.25 2.25 0 0 0 5 3.25Z' })))\n return h('span', { style: { display: 'inline-flex', alignItems: 'center', gap: '4px' } },\n h(Tooltip, { label: 'Fork with chapters', side: 'bottom' as const, children: button as ReactElement<Record<string, unknown>> }),\n note !== null\n ? h('span', { className: 'dsh-chapters_forkNote' }, note)\n : null)\n}\n\nexport function apply(ctx: Ctx): void {\n injectStyles()\n const slots = ctx.slots\n const remote = (ctx.get('remote') ?? {}) as ClientRemote\n let sessions: ClientSessions | undefined\n try { sessions = ctx.get('sessions') as ClientSessions | undefined } catch { sessions = undefined }\n // No early return on missing descriptors: the button registers regardless\n // and the click reports the gap. A missing button is worse than a button\n // that explains itself.\n const fork = makeForker(remote, sessions)\n slots.inject('conversation.chat.assistant-actions', () => slots.register({\n name: 'conversation.chat.assistant-actions',\n id: 'chapters-fork',\n order: 30,\n inject: (sessionId: string) => ({ fork: () => fork(sessionId) }),\n }, ChaptersForkAction))\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.js","names":["useState","useRef","useCallback","h","Tooltip"],"sources":["../src/client/doors.ts","../src/client/index.ts"],"sourcesContent":["/**\n * The client door runner: the two deterministic archive doors, executed over\n * `remote.commands` and followed by a SWITCH to the fresh child.\n *\n * ONE runner, two rows. The server side keeps the same discipline — both doors\n * come from `deterministicCommand(door)` in src/tools.ts, and a unit row pins\n * that they archive identically. Copy-pasting this body is how the two would\n * drift apart, so there is exactly one implementation and a table of rows.\n *\n * `chapters-continue` ships only as a composer command; without a button here\n * the child is created correctly and the UI shows nothing, which reads as\n * \"nothing happened\". The row is the missing affordance, not new logic.\n *\n * React-free on purpose: the primitives package pulls CSS modules the node\n * test runner cannot load, so the testable half lives here and index.ts is the\n * thin chrome that renders these rows as buttons (tests/unit/client-doors.test.ts).\n *\n * @module dsh-chapters/src/client/doors\n */\n\n/** Structural slice of the aggregated remote service (@deepseek-ai/dsh-api-remotes).\n * `remote.commands` must ALSO appear in inject — the federation gates each\n * sub-service individually (the live feedback package declares\n * remote.messageFeedback beside remote for exactly this reason). */\nexport interface ClientRemote {\n commands?: {\n execute(sessionId: string, line: string, attachments: readonly unknown[]): Promise<{\n ok?: boolean\n value?: { commandId?: string; result?: { kind?: string; text?: string } }\n error?: { code?: string; message?: string }\n }>\n }\n}\n\n/** The client sessions service (dsh-client-runtime): open() lives on the\n * prototype; everything else on the surface stays untrusted and unused. */\nexport interface ClientSessions {\n open(sessionId: string): unknown\n}\n\nexport interface DoorResult {\n ok: boolean\n message: string\n}\n\n/**\n * One assistant-action row. `noun` is the server's own word for the child in\n * its success text (`branch` / `continuation`), so the fallback wording and the\n * title regex both track the door without a second implementation.\n */\nexport interface DoorAction {\n /** The slot registration id. */\n id: string\n /** Position in the assistant action row. */\n order: number\n /** Button + tooltip label, and the accessible name the e2e specs select on. */\n label: string\n /** The host command this row executes — the ONLY semantic difference at runtime. */\n command: string\n /** The noun in `${noun} “title” is session ch-…`. */\n noun: string\n /** The row's glyph (16×16 viewBox, single path). */\n iconPath: string\n}\n\nexport const DOOR_ACTIONS: readonly DoorAction[] = [\n {\n id: 'chapters-fork',\n order: 30,\n label: 'Fork with chapters',\n command: '/chapters-fork',\n noun: 'branch',\n iconPath: 'M5 3.25a2.25 2.25 0 1 0-1.5 2.12v5.26a2.25 2.25 0 1 0 1.5 0V9h5a2.25 2.25 0 0 0 2.25-2.25v-1.4a2.25 2.25 0 1 0-1.5 0v1.4A.75.75 0 0 1 10 7.5H5V5.37A2.25 2.25 0 0 0 5 3.25Z',\n },\n {\n id: 'chapters-continue',\n order: 31,\n label: 'Continue with chapters',\n command: '/chapters-continue',\n noun: 'continuation',\n iconPath: 'M1 8a.75.75 0 0 1 0-1.5h9.44L7.72 3.28a.75.75 0 1 1 1.06-1.06l3.5 3.5.53.53-.53.53-3.5 3.5a.75.75 0 1 1-1.06-1.06L10.44 9.5H1Zm13-5.25v10.5a.75.75 0 0 1-1.5 0v-10.5a.75.75 0 0 1 1.5 0Z',\n },\n]\n\n/** Pull the child id out of either door's durable success text — both end in\n * `… is session ch-…` (src/tools.ts), so this regex is door-agnostic. */\nexport const CHILD_ID = /is session (ch-[\\w-]+)/\n\n/** The quoted title the door gave the child, matched by its OWN noun so a\n * refusal or an unrelated quote cannot pass for it. */\nexport const doorTitle = (noun: string): RegExp => new RegExp(`${noun} \\\\u201C([^\\\\u201D]+)\\\\u201D is session`)\n\nfunction openByService(sessions: ClientSessions | undefined, sessionId: string): Promise<boolean> {\n return (async () => {\n const svc = sessions as unknown as { open?: (id: string) => unknown; refresh?: () => unknown } | undefined\n if (typeof svc?.open !== 'function') return false\n try { await svc.refresh?.() } catch { /* refresh best-effort */ }\n // The store must know the session before open() resolves it; a child\n // created seconds ago is only server-known until refresh lands. Retry\n // open briefly across that window.\n const started = Date.now()\n for (;;) {\n try { svc.open(sessionId); return true } catch {\n if (Date.now() - started > 4_000) return false\n await new Promise((r) => setTimeout(r, 250))\n }\n }\n })()\n}\n\n/**\n * Fallback path: expand collapsed groups / show-more buttons, then click the\n * newest treeitem whose label contains the child title (newest-updated sorts\n * first, so the first match is the fresh child).\n */\nasync function openBranchRow(title: string, budgetMs = 4_000): Promise<boolean> {\n if (typeof document === 'undefined') return false\n const needle = title.toLowerCase()\n const tryClick = (): boolean => {\n const rows = Array.from(document.querySelectorAll<HTMLElement>('[role=\"treeitem\"]'))\n const hit = rows.find((row) => (row.textContent ?? '').toLowerCase().includes(needle))\n if (hit === undefined) return false\n hit.click()\n return true\n }\n const clickMore = (): number => {\n const buttons = Array.from(document.querySelectorAll<HTMLElement>('button'))\n .filter((b) => /more sessions|ungrouped/i.test(b.textContent ?? '') && b.getAttribute('aria-expanded') !== 'true')\n for (const b of buttons) b.click()\n return buttons.length\n }\n const started = Date.now()\n let expansions = 0\n while (Date.now() - started < budgetMs) {\n if (tryClick()) return true\n if (expansions < 4 && clickMore() > 0) { expansions += 1; await new Promise((r) => setTimeout(r, 250)); continue }\n await new Promise((resolve) => setTimeout(resolve, 150))\n }\n return tryClick()\n}\n\nexport function makeDoorRunner(\n remote: ClientRemote,\n sessions: ClientSessions | undefined,\n door: DoorAction,\n): (sessionId: string) => Promise<DoorResult> {\n return async function run(sessionId: string): Promise<DoorResult> {\n try {\n if (remote.commands?.execute === undefined) return { ok: false, message: 'commands remote unavailable' }\n const res = await remote.commands.execute(sessionId, door.command, [])\n if (res.ok !== true) return { ok: false, message: (res.error?.message ?? `the ${door.noun} call failed`).slice(0, 90) }\n const result = res.value?.result\n const text = typeof result?.text === 'string' ? result.text : ''\n if (result?.kind !== 'success') return { ok: false, message: (text || `the ${door.noun} was refused — see the command result`).slice(0, 90) }\n const child = CHILD_ID.exec(text)?.[1]\n if (child === undefined) return { ok: true, message: `${door.noun} created — appearing in the sidebar` }\n const opened = await openByService(sessions, child)\n if (opened) return { ok: true, message: '' }\n const title = doorTitle(door.noun).exec(text)?.[1]\n if (title !== undefined && await openBranchRow(title)) return { ok: true, message: '' }\n return { ok: true, message: `${door.noun} created — open it in the sidebar` }\n } catch (error) {\n return { ok: false, message: String((error as Error)?.message ?? error).slice(0, 90) }\n }\n }\n}\n","/**\n * dsh-chapters client entry: the per-message door buttons.\n *\n * Registers the two deterministic archive doors into the assistant action row\n * (`conversation.chat.assistant-actions` — the slot the official feedback\n * package populates beside copy/branch). Clicking one executes its host\n * command — `/chapters-fork`, `/chapters-continue` — through `remote.commands`,\n * the exact wire the composer's input line rides, then SWITCHES the app to the\n * fresh child:\n *\n * 1. `sessions.open(child)` — the client sessions service carries open() on\n * its prototype (Playwright-verified against this host; a keys-dump alone\n * hid it, which is why an earlier round wrongly gave up on this path);\n * 2. fallback: click the child's sidebar row after expanding collapsed\n * groups (plugin children can render under collapsed 'Ungrouped' heads);\n * 3. last resort: an inline note — the child is durable either way.\n *\n * There is deliberately NO second implementation of door logic here: the\n * buttons are mouths for the host commands (watermark, segmentation, budget,\n * titles, refusal-with-numbers all server-side, all tested), and the runner\n * they share is `src/client/doors.ts` — one body, one row per door. The purity\n * gate in tsdown.client.config.ts keeps this file cross-plugin-free.\n *\n * @module dsh-chapters/src/client\n */\n\nimport { createElement as h, useCallback, useEffect, useRef, useState, type ReactElement } from 'react'\n// The host's own tooltip bubble — a platform module served by the loader table,\n// external like react. Every action in this row labels through it.\nimport { Tooltip } from '@deepseek-ai/dsh-client-ui-primitives'\nimport { DOOR_ACTIONS, makeDoorRunner, type ClientRemote, type ClientSessions, type DoorAction, type DoorResult } from './doors.ts'\n\ninterface ClientSlots {\n inject(name: string, factory: () => unknown): void\n register(registration: Record<string, unknown>, component: unknown): unknown\n}\n\ninterface Ctx {\n slots: ClientSlots\n get(name: string): unknown\n}\n\nexport const inject = ['slots', 'remote', 'remote.commands', 'sessions'] as const\n\n/** Props composed by the slot framework: owner (`messageId`) + our injected verb. */\ninterface DoorActionProps {\n messageId: string\n run: () => Promise<DoorResult>\n}\n\n/**\n * Style parity with the native IconActions row: rules copied verbatim from the\n * host's MessageIconActions module (`._xzv4MW_action` in dsh-client-ui-chat's\n * compiled client + the feedback package's :disabled) — same metrics, tokens,\n * hover. Update this string if the host restyles its action row. Both doors\n * share these metrics.\n *\n * The final rule hides the native branch action IN THE MESSAGE ROW only\n * (user-approved cosmetic decision, docs/architecture.md): built-in chrome, so\n * the selector is its accessible label scoped to action-row buttons; both\n * locale spellings covered. If the host rewords the label the button simply\n * reappears — fails open, visibly.\n */\nconst CSS = [\n '.dsh-chapters_forkAction{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);cursor:pointer;background:0 0;border:none;border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex}',\n '.dsh-chapters_forkAction svg{width:calc(15px + var(--dsh-content-font-delta,0px));height:calc(15px + var(--dsh-content-font-delta,0px))}',\n '.dsh-chapters_forkAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary)}',\n '.dsh-chapters_forkAction:disabled{cursor:default;opacity:.4}',\n '.dsh-chapters_forkNote{color:var(--dsw-alias-label-tertiary);padding-left:4px;font-size:13px;line-height:20px}',\n 'button[class*=\"_action\"][aria-label=\"Branch into a new conversation\"],button[class*=\"_action\"][aria-label=\"\\u5728\\u65b0\\u5bf9\\u8bdd\\u4e2d\\u5206\\u652f\"]{display:none !important}',\n].join('\\n')\nconst CSS_TAG_ID = 'dsh-chapters/assistant-action.css'\n\nfunction injectStyles(): void {\n try {\n if (typeof document === 'undefined' || document.querySelector(`style[data-plugin-css=${JSON.stringify(CSS_TAG_ID)}]`) !== null) return\n const tag = document.createElement('style')\n tag.dataset.plugin = 'dsh-chapters'\n tag.dataset.pluginCss = CSS_TAG_ID\n tag.textContent = CSS\n document.head.appendChild(tag)\n } catch { /* styling is cosmetic; the action still works without it */ }\n}\n\n/** One component body for every door row; only the label and glyph differ. */\nfunction makeDoorAction(door: DoorAction) {\n return function ChaptersDoorAction({ run }: DoorActionProps) {\n const [busy, setBusy] = useState(false)\n const [note, setNote] = useState<string | null>(null)\n const alive = useRef(true)\n useEffect(() => () => { alive.current = false }, [])\n const onClick = useCallback(() => {\n if (busy) return\n setBusy(true)\n setNote(null)\n void run().then((result) => {\n if (!alive.current) return\n setBusy(false)\n setNote(result.message === '' ? null : result.message)\n setTimeout(() => { if (alive.current) setNote(null) }, 8000)\n })\n }, [busy, run])\n const button = h('button', {\n type: 'button',\n 'aria-label': door.label,\n disabled: busy,\n onClick,\n className: 'dsh-chapters_forkAction',\n },\n h('svg', { viewBox: '0 0 16 16', width: '15', height: '15', fill: 'currentColor', 'aria-hidden': 'true' },\n h('path', { d: door.iconPath })))\n return h('span', { style: { display: 'inline-flex', alignItems: 'center', gap: '4px' } },\n h(Tooltip, { label: door.label, side: 'bottom' as const, children: button as ReactElement<Record<string, unknown>> }),\n note !== null\n ? h('span', { className: 'dsh-chapters_forkNote' }, note)\n : null)\n }\n}\n\nexport function apply(ctx: Ctx): void {\n injectStyles()\n const slots = ctx.slots\n const remote = (ctx.get('remote') ?? {}) as ClientRemote\n let sessions: ClientSessions | undefined\n try { sessions = ctx.get('sessions') as ClientSessions | undefined } catch { sessions = undefined }\n // No early return on missing descriptors: the buttons register regardless\n // and the click reports the gap. A missing button is worse than a button\n // that explains itself. Components and runners are built ONCE here — slot\n // factories may re-run, and a fresh component identity per call would\n // remount the row.\n const rows = DOOR_ACTIONS.map((door) => ({ door, run: makeDoorRunner(remote, sessions, door), component: makeDoorAction(door) }))\n slots.inject('conversation.chat.assistant-actions', () => rows.map(({ door, run, component }) => slots.register({\n name: 'conversation.chat.assistant-actions',\n id: door.id,\n order: door.order,\n inject: (sessionId: string) => ({ run: () => run(sessionId) }),\n }, component)))\n}\n"],"mappings":"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"}
package/lib/tools.d.ts CHANGED
@@ -55,6 +55,25 @@ export interface ToolsConfig extends ContinueConfig {
55
55
  }) => void;
56
56
  }
57
57
  /** Build the two tool definitions (registration is the caller's lifecycle). */
58
+ /** The shape the host's command service takes — two doors share it. */
59
+ export interface HostCommand {
60
+ name: string;
61
+ description: string;
62
+ input: {
63
+ hint: string;
64
+ };
65
+ handler: (invocation: {
66
+ agent: unknown;
67
+ rawInput?: string;
68
+ signal?: AbortSignal;
69
+ }) => Promise<{
70
+ kind: 'success';
71
+ text?: string;
72
+ } | {
73
+ kind: 'error';
74
+ text: string;
75
+ }>;
76
+ }
58
77
  export declare function buildChaptersTools(ctx: ToolsCtx, store: RegistryStore, config: ToolsConfig): {
59
78
  segment: ReturnType<typeof defineTool>;
60
79
  chaptersContinue: ReturnType<typeof defineTool>;
@@ -62,23 +81,7 @@ export declare function buildChaptersTools(ctx: ToolsCtx, store: RegistryStore,
62
81
  chaptersSearch: ReturnType<typeof defineTool>;
63
82
  chaptersArtifact: ReturnType<typeof defineTool>;
64
83
  chaptersRulePropose: ReturnType<typeof defineTool>;
65
- forkCommand: {
66
- name: string;
67
- description: string;
68
- input: {
69
- hint: string;
70
- };
71
- handler: (invocation: {
72
- agent: unknown;
73
- rawInput?: string;
74
- signal?: AbortSignal;
75
- }) => Promise<{
76
- kind: 'success';
77
- text?: string;
78
- } | {
79
- kind: 'error';
80
- text: string;
81
- }>;
82
- };
84
+ forkCommand: HostCommand;
85
+ continueCommand: HostCommand;
83
86
  };
84
87
  export declare function registerChaptersTools(ctx: ToolsCtx, store: RegistryStore, config: ToolsConfig): () => void;
package/lib/tools.js CHANGED
@@ -28,7 +28,6 @@ function callerOf(exec) {
28
28
  const agent = exec.agent;
29
29
  return agent ?? CALLER_MISSING;
30
30
  }
31
- /** Build the two tool definitions (registration is the caller's lifecycle). */
32
31
  export function buildChaptersTools(ctx, store, config) {
33
32
  const portsFor = async (caller) => {
34
33
  const cwd = caller.session.header.cwd ?? '';
@@ -337,20 +336,16 @@ export function buildChaptersTools(ctx, store, config) {
337
336
  }
338
337
  },
339
338
  });
340
- // ---------------------------------------------------------------- command
341
- // The palette/URL path for the fork BUTTON: same ports as the tools, ZERO
342
- // model involvement — deriveRanges is deterministic, so a click needs no
343
- // agent turn and no proposed ranges. `/chapters-fork [title]`: everything
344
- // up to the last completed turn is archived verbatim and a titled child
345
- // opens whose entire history is the cumulative TOC.
346
- const forkCommand = {
347
- name: 'chapters-fork',
348
- description: 'Fork this conversation into a new session: archive everything so far into verbatim chapters and open a child whose history is the table of contents. Optional argument: a title for the branch.',
339
+ const deterministicCommand = (door) => ({
340
+ name: door.name,
341
+ description: door.intent === 'branch'
342
+ ? 'Fork this conversation into a new session: archive everything so far into verbatim chapters and open a child whose history is the table of contents. Optional argument: a title for the branch.'
343
+ : 'Continue this conversation in a new session: archive everything so far into verbatim chapters and open a child that carries the same stream of work — its notice names the operative plan, if one is still standing. Optional argument: a title for the continuation.',
349
344
  input: { hint: '[title]' },
350
345
  async handler(invocation) {
351
346
  const agent = invocation.agent;
352
347
  if (agent?.session === undefined)
353
- return { kind: 'error', text: 'chapters-fork: no session context for this invocation' };
348
+ return { kind: 'error', text: `${door.name}: no session context for this invocation` };
354
349
  try {
355
350
  const ports = await portsFor(agent);
356
351
  const cwd0 = agent.session.header?.cwd ?? '';
@@ -360,45 +355,42 @@ export function buildChaptersTools(ctx, store, config) {
360
355
  const events = await ports.readCallerEvents();
361
356
  const anchor = [...events].reverse().find((e) => e.type === 'turn/end')?.seq;
362
357
  if (anchor === undefined)
363
- return { kind: 'error', text: 'chapters-fork: nothing to archive yet — the conversation has no completed turn' };
358
+ return { kind: 'error', text: `${door.name}: nothing to archive yet — the conversation has no completed turn` };
364
359
  const trimmed = (invocation.rawInput ?? '').trim();
365
360
  const parentTitle = [...events].reverse()
366
361
  .find((e) => e.type === 'session/title')?.data?.title;
367
- const title = trimmed !== '' ? trimmed : `${parentTitle ?? 'Chapters branch'} \u2014 branch`;
362
+ const title = trimmed !== '' ? trimmed : `${parentTitle ?? `Chapters ${door.noun}`} \u2014 ${door.noun}`;
368
363
  const rsCmd = rulesSectionFor(agent);
369
364
  if (rsCmd.refusal !== undefined)
370
- return { kind: 'error', text: `chapters-fork refused: ${rsCmd.refusal}` };
365
+ return { kind: 'error', text: `${door.name} refused: ${rsCmd.refusal}` };
371
366
  const callerArgs = {
372
367
  callerSessionId: agent.session.id,
373
368
  callerPreset: ctx.sessionProjections?.stateOf(agent.session, 'agentPreset') ?? null,
374
369
  title,
375
- // The button means "branch": same rule as chapters_fork — history, not a
376
- // directive, and no seeded mode. The tool `chapters_continue` keeps the
377
- // opposite intent because it extends the same stream of work.
378
- intent: 'branch',
370
+ // THE intent, and the only place it is chosen for a human-pulled door.
371
+ intent: door.intent,
379
372
  toolResultOverrides: [],
380
373
  ...(projectLineFor(agent) !== undefined ? { projectLine: projectLineFor(agent) } : {}),
381
374
  ...(rsCmd.section !== undefined ? { rulesSection: rsCmd.section } : {}),
382
375
  };
383
376
  // Archive watermark: compaction chapters (and prior forks) already carry
384
- // [.. lastArchived]. The fork segments ONLY what is newer — the store
385
- // stays append-only AND duplicate-free, and the child's TOC inherits
386
- // every earlier chapter through the ancestry walk. When nothing is
387
- // newer, this degrades to a pure citation fork (runFork): child created,
388
- // archive cited, nothing written.
377
+ // [.. lastArchived]. This segments ONLY what is newer — the store stays
378
+ // append-only AND duplicate-free, and the child's TOC inherits every earlier
379
+ // chapter through the ancestry walk. When nothing is newer, this degrades to a
380
+ // pure citation fork: child created, archive cited, nothing written.
389
381
  const parentState = await ports.getState(agent.session.id);
390
382
  const lastArchived = parentState.chapters.reduce((m, c) => Math.max(m, c.endSeq), 0);
391
383
  const fromSeq = lastArchived > 0 ? lastArchived + 1 : 0;
392
384
  if (fromSeq > 0 && anchor <= lastArchived) {
393
- const forked = await runFork(ports, { ...callerArgs, handoffNote: 'Branched from the conversation through the Chapters fork. Nothing had been said since the last archive, so this branch cites the existing chapters unchanged. Ask the user what this branch should work on.' }, config);
385
+ const forked = await runFork(ports, { ...callerArgs, handoffNote: `Archived through the Chapters ${door.noun}. Nothing had been said since the last archive, so this ${door.noun} cites the existing chapters unchanged. ${door.noDirective}` }, config);
394
386
  if (cwd0 !== '')
395
387
  config.scheduler?.schedule(cwd0, 'archive:fork-cite');
396
- return { kind: 'success', text: `Forked (nothing new to archive): branch \u201C${title}\u201D is session ${forked.childSessionId ?? '(created)'} citing ${parentState.chapters.length} existing chapter(s). Switch from the sidebar.` };
388
+ return { kind: 'success', text: `${door.verb} (nothing new to archive): ${door.noun} \u201C${title}\u201D is session ${forked.childSessionId ?? '(created)'} citing ${parentState.chapters.length} existing chapter(s). Switch from the sidebar.` };
397
389
  }
398
- // Topic-sequential composition (record §4.2): merge adjacent
399
- // same-task collections from the stored per-turn signatures. No
400
- // signatures yet (a session that predates the feature) → the legacy
401
- // size-based segmentation, which is exactly what deriveRanges is.
390
+ // Topic-sequential composition (record §4.2): merge adjacent same-task
391
+ // collections from the stored per-turn signatures. No signatures yet (a session
392
+ // that predates the feature) → the legacy size-based segmentation, which is
393
+ // exactly what deriveRanges is.
402
394
  const composed = composeChapters(events, fromSeq, anchor, parentState.collections, {
403
395
  mergeThreshold: config.mergeThreshold,
404
396
  chapterLimit: config.chapterLimit,
@@ -409,24 +401,41 @@ export function buildChaptersTools(ctx, store, config) {
409
401
  const notes = composed.chapters.length > 0
410
402
  ? composed.notes
411
403
  : ['no stored turn signatures — legacy size-based segmentation'];
412
- const handoffNote = 'Branched from the conversation through the Chapters fork. The chapters listed above carry every prior word verbatim — reload any with the read tool on its path. No task was handed over with this fork: ask the user what this branch should work on.'
404
+ const handoffNote = `Archived through the Chapters ${door.noun}. The chapters listed above carry every prior word verbatim — reload any with the read tool on its path. ${door.noDirective}`
413
405
  + (notes.length > 0 ? `\n(Segmentation notes: ${notes.join('; ')})` : '');
414
406
  const result = await runContinue(ports, { ...callerArgs, handoffNote, chapters }, config);
415
407
  if (result.ok && cwd0 !== '')
416
408
  config.scheduler?.schedule(cwd0, 'archive:fork');
417
409
  const budgetText = result.budget !== undefined ? `; TOC ~${result.budget.usedTokens} tokens, allowance ${result.budget.allowanceTokens}` : '';
418
- return { kind: 'success', text: `Forked: ${chapters.length} new chapter(s) archived (watermark respected: seqs ${fromSeq}..${anchor}), branch \u201C${title}\u201D is session ${result.childSessionId ?? '(created)'}${budgetText}. Switch to it from the sidebar — its first message is the table of contents.` };
410
+ return { kind: 'success', text: `${door.verb}: ${chapters.length} new chapter(s) archived (watermark respected: seqs ${fromSeq}..${anchor}), ${door.noun} \u201C${title}\u201D is session ${result.childSessionId ?? '(created)'}${budgetText}. Switch to it from the sidebar — its first message is the table of contents.` };
419
411
  }
420
412
  catch (error) {
421
413
  const refusal = refusalResult(error);
422
414
  if (refusal !== null) {
423
415
  const budget = refusal.budget !== undefined ? ` (notice ~${refusal.budget.usedTokens} > allowance ${refusal.budget.allowanceTokens})` : '';
424
- return { kind: 'error', text: `chapters-fork refused: ${refusal.reason ?? 'refused'}${budget}` };
416
+ return { kind: 'error', text: `${door.name} refused: ${refusal.reason ?? 'refused'}${budget}` };
425
417
  }
426
- return { kind: 'error', text: `chapters-fork failed: ${String(error?.message ?? error)}`.slice(0, 500) };
418
+ return { kind: 'error', text: `${door.name} failed: ${String(error?.message ?? error)}`.slice(0, 500) };
427
419
  }
428
420
  },
429
- };
421
+ });
422
+ const forkCommand = deterministicCommand({
423
+ name: 'chapters-fork',
424
+ intent: 'branch',
425
+ noun: 'branch',
426
+ verb: 'Forked',
427
+ // A branch SPLITS the work (decision 3): it inherits history, not an order.
428
+ noDirective: 'No task was handed over with this fork: ask the user what this branch should work on.',
429
+ });
430
+ const continueCommand = deterministicCommand({
431
+ name: 'chapters-continue',
432
+ intent: 'continue',
433
+ noun: 'continuation',
434
+ verb: 'Continued',
435
+ // A continuation EXTENDS the same stream. When a plan is operative the notice already
436
+ // carries it as a directive, so this line only speaks for the plan-less case.
437
+ noDirective: 'If the notice above names an active plan, that is your directive — read its full text before implementing and do NOT re-plan from recall. Otherwise ask the user what to carry on with.',
438
+ });
430
439
  // ------------------------------------------------- knowledge project line
431
440
  // The notice carries the knowledge-project line (record §8) when a project
432
441
  // is linked for this workspace: the deepest project record whose recorded
@@ -638,7 +647,7 @@ export function buildChaptersTools(ctx, store, config) {
638
647
  }
639
648
  },
640
649
  });
641
- return { segment: chaptersSegment, chaptersContinue, chaptersFork, chaptersSearch, chaptersArtifact, chaptersRulePropose, forkCommand };
650
+ return { segment: chaptersSegment, chaptersContinue, chaptersFork, chaptersSearch, chaptersArtifact, chaptersRulePropose, forkCommand, continueCommand };
642
651
  }
643
652
  export function registerChaptersTools(ctx, store, config) {
644
653
  const built = buildChaptersTools(ctx, store, config);
@@ -652,20 +661,33 @@ export function registerChaptersTools(ctx, store, config) {
652
661
  const commands = ctx.get?.('commands');
653
662
  if (commands?.register !== undefined) {
654
663
  try {
655
- const disposer = commands.register(built.forkCommand);
656
- if (typeof disposer === 'function')
657
- disposeCommand = disposer;
664
+ // Both deterministic doors register on the same seam. Keep EVERY disposer: a loop
665
+ // that overwrote `disposeCommand` would leak the first registration and unregister
666
+ // only whichever door was added last.
667
+ const commandDisposers = [];
668
+ for (const def of [built.forkCommand, built.continueCommand]) {
669
+ const disposer = commands.register(def);
670
+ if (typeof disposer === 'function')
671
+ commandDisposers.push(disposer);
672
+ }
673
+ if (commandDisposers.length > 0)
674
+ disposeCommand = () => { for (const d of commandDisposers)
675
+ d(); };
658
676
  }
659
677
  catch (error) {
660
- ctx.logger?.warn?.(`dsh-chapters: /chapters-fork command registration failed (${String(error)}); tools unaffected`);
678
+ ctx.logger?.warn?.(`dsh-chapters: host command registration failed (${String(error)}); tools unaffected`);
661
679
  }
662
680
  }
681
+ // Pre-existing comma operator here (`disposeArtifact(), disposeRulePropose()`) ran both,
682
+ // so behaviour was right — but it reads as a typo and would silently break if anyone
683
+ // reordered the line. Semicolons, since this is the unload path a test cannot cover.
663
684
  return () => {
664
685
  disposeSegment();
665
686
  disposeContinue();
666
687
  disposeFork();
667
688
  disposeSearch();
668
- disposeArtifact(), disposeRulePropose();
689
+ disposeArtifact();
690
+ disposeRulePropose();
669
691
  disposeCommand?.();
670
692
  };
671
693
  }
package/lib/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@treeseed/dsh-chapters",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "dsh plugin: verbatim chapter archive + zero-token index for small-context models",
5
5
  "type": "module",
6
6
  "license": "Apache-2.0",