@fractalsynapse/dsh-chapters 0.0.0-stage → 0.2.21

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.
Files changed (195) hide show
  1. package/LICENSE +14 -0
  2. package/README.md +76 -2
  3. package/cordis.patch.yml +363 -0
  4. package/docs/architecture.md +692 -0
  5. package/docs/autorun-guide.md +248 -0
  6. package/docs/backlog.md +2022 -0
  7. package/docs/contract.md +938 -0
  8. package/docs/development.md +990 -0
  9. package/docs/host-compaction-seam.md +225 -0
  10. package/docs/host-protected-head-ask.md +80 -0
  11. package/docs/knowledge-repo.md +1332 -0
  12. package/docs/plans-carriage.md +571 -0
  13. package/docs/project-state.md +642 -0
  14. package/docs/provider.md +98 -0
  15. package/docs/superpowers/plans/2026-10-17-chapters-save.md +198 -0
  16. package/docs/superpowers/plans/2026-11-02-chapter-removal.md +151 -0
  17. package/docs/superpowers/specs/2026-11-02-chapter-removal-design.md +115 -0
  18. package/docs/verify.md +561 -0
  19. package/lib/archive.d.ts +161 -0
  20. package/lib/archive.js +229 -0
  21. package/lib/archive.js.map +1 -0
  22. package/lib/arrival.d.ts +23 -0
  23. package/lib/arrival.js +125 -0
  24. package/lib/arrival.js.map +1 -0
  25. package/lib/artifact-query.d.ts +62 -0
  26. package/lib/artifact-query.js +187 -0
  27. package/lib/artifact-query.js.map +1 -0
  28. package/lib/attach.d.ts +46 -0
  29. package/lib/attach.js +120 -0
  30. package/lib/attach.js.map +1 -0
  31. package/lib/auto-save.d.ts +145 -0
  32. package/lib/auto-save.js +334 -0
  33. package/lib/auto-save.js.map +1 -0
  34. package/lib/aux-message.d.ts +17 -0
  35. package/lib/aux-message.js +20 -0
  36. package/lib/aux-message.js.map +1 -0
  37. package/lib/client.js +1419 -0
  38. package/lib/client.js.map +1 -0
  39. package/lib/codegraph.d.ts +76 -0
  40. package/lib/codegraph.js +190 -0
  41. package/lib/codegraph.js.map +1 -0
  42. package/lib/commands.d.ts +52 -0
  43. package/lib/commands.js +946 -0
  44. package/lib/commands.js.map +1 -0
  45. package/lib/compose.d.ts +30 -0
  46. package/lib/compose.js +185 -0
  47. package/lib/compose.js.map +1 -0
  48. package/lib/continue-core.d.ts +245 -0
  49. package/lib/continue-core.js +405 -0
  50. package/lib/continue-core.js.map +1 -0
  51. package/lib/diag.d.ts +55 -0
  52. package/lib/diag.js +186 -0
  53. package/lib/diag.js.map +1 -0
  54. package/lib/engine-core.d.ts +301 -0
  55. package/lib/engine-core.js +531 -0
  56. package/lib/engine-core.js.map +1 -0
  57. package/lib/engine-note.d.ts +35 -0
  58. package/lib/engine-note.js +32 -0
  59. package/lib/engine-note.js.map +1 -0
  60. package/lib/engine.d.ts +329 -0
  61. package/lib/engine.js +1179 -0
  62. package/lib/engine.js.map +1 -0
  63. package/lib/enrich-queue.d.ts +66 -0
  64. package/lib/enrich-queue.js +126 -0
  65. package/lib/enrich-queue.js.map +1 -0
  66. package/lib/enrich-store.d.ts +31 -0
  67. package/lib/enrich-store.js +103 -0
  68. package/lib/enrich-store.js.map +1 -0
  69. package/lib/enrich-wire.d.ts +163 -0
  70. package/lib/enrich-wire.js +353 -0
  71. package/lib/enrich-wire.js.map +1 -0
  72. package/lib/enrich.d.ts +102 -0
  73. package/lib/enrich.js +267 -0
  74. package/lib/enrich.js.map +1 -0
  75. package/lib/gitops.d.ts +107 -0
  76. package/lib/gitops.js +539 -0
  77. package/lib/gitops.js.map +1 -0
  78. package/lib/index.d.ts +241 -0
  79. package/lib/index.js +1162 -0
  80. package/lib/index.js.map +1 -0
  81. package/lib/indexing.d.ts +98 -0
  82. package/lib/indexing.js +223 -0
  83. package/lib/indexing.js.map +1 -0
  84. package/lib/injections.d.ts +90 -0
  85. package/lib/injections.js +165 -0
  86. package/lib/injections.js.map +1 -0
  87. package/lib/last-resort.d.ts +24 -0
  88. package/lib/last-resort.js +27 -0
  89. package/lib/last-resort.js.map +1 -0
  90. package/lib/log-shape.d.ts +38 -0
  91. package/lib/log-shape.js +93 -0
  92. package/lib/log-shape.js.map +1 -0
  93. package/lib/models-command.d.ts +74 -0
  94. package/lib/models-command.js +100 -0
  95. package/lib/models-command.js.map +1 -0
  96. package/lib/notice.d.ts +74 -0
  97. package/lib/notice.js +92 -0
  98. package/lib/notice.js.map +1 -0
  99. package/lib/plans.d.ts +154 -0
  100. package/lib/plans.js +315 -0
  101. package/lib/plans.js.map +1 -0
  102. package/lib/preset.d.ts +186 -0
  103. package/lib/preset.js +212 -0
  104. package/lib/preset.js.map +1 -0
  105. package/lib/prompt-keys.d.ts +7 -0
  106. package/lib/prompt-keys.js +8 -0
  107. package/lib/prompt-keys.js.map +1 -0
  108. package/lib/prompt-loop.d.ts +73 -0
  109. package/lib/prompt-loop.js +147 -0
  110. package/lib/prompt-loop.js.map +1 -0
  111. package/lib/prompt-push.d.ts +47 -0
  112. package/lib/prompt-push.js +115 -0
  113. package/lib/prompt-push.js.map +1 -0
  114. package/lib/prompt-runner.d.ts +48 -0
  115. package/lib/prompt-runner.js +90 -0
  116. package/lib/prompt-runner.js.map +1 -0
  117. package/lib/prompt-state.d.ts +142 -0
  118. package/lib/prompt-state.js +101 -0
  119. package/lib/prompt-state.js.map +1 -0
  120. package/lib/prompt.d.ts +270 -0
  121. package/lib/prompt.js +408 -0
  122. package/lib/prompt.js.map +1 -0
  123. package/lib/provider.d.ts +44 -0
  124. package/lib/provider.js +66 -0
  125. package/lib/provider.js.map +1 -0
  126. package/lib/redact.d.ts +24 -0
  127. package/lib/redact.js +85 -0
  128. package/lib/redact.js.map +1 -0
  129. package/lib/registry.d.ts +187 -0
  130. package/lib/registry.js +235 -0
  131. package/lib/registry.js.map +1 -0
  132. package/lib/removal.d.ts +159 -0
  133. package/lib/removal.js +556 -0
  134. package/lib/removal.js.map +1 -0
  135. package/lib/render.d.ts +97 -0
  136. package/lib/render.js +530 -0
  137. package/lib/render.js.map +1 -0
  138. package/lib/repair-run.d.ts +76 -0
  139. package/lib/repair-run.js +506 -0
  140. package/lib/repair-run.js.map +1 -0
  141. package/lib/repair.d.ts +208 -0
  142. package/lib/repair.js +357 -0
  143. package/lib/repair.js.map +1 -0
  144. package/lib/repo.d.ts +78 -0
  145. package/lib/repo.js +184 -0
  146. package/lib/repo.js.map +1 -0
  147. package/lib/rules-commands.d.ts +46 -0
  148. package/lib/rules-commands.js +379 -0
  149. package/lib/rules-commands.js.map +1 -0
  150. package/lib/rules.d.ts +267 -0
  151. package/lib/rules.js +478 -0
  152. package/lib/rules.js.map +1 -0
  153. package/lib/save-core.d.ts +72 -0
  154. package/lib/save-core.js +220 -0
  155. package/lib/save-core.js.map +1 -0
  156. package/lib/search.d.ts +112 -0
  157. package/lib/search.js +282 -0
  158. package/lib/search.js.map +1 -0
  159. package/lib/session-rules.d.ts +222 -0
  160. package/lib/session-rules.js +454 -0
  161. package/lib/session-rules.js.map +1 -0
  162. package/lib/signature.d.ts +45 -0
  163. package/lib/signature.js +199 -0
  164. package/lib/signature.js.map +1 -0
  165. package/lib/store.d.ts +156 -0
  166. package/lib/store.js +368 -0
  167. package/lib/store.js.map +1 -0
  168. package/lib/sync.d.ts +220 -0
  169. package/lib/sync.js +810 -0
  170. package/lib/sync.js.map +1 -0
  171. package/lib/tools.d.ts +113 -0
  172. package/lib/tools.js +1090 -0
  173. package/lib/tools.js.map +1 -0
  174. package/lib/treedx/client.d.ts +57 -0
  175. package/lib/treedx/client.js +82 -0
  176. package/lib/treedx/client.js.map +1 -0
  177. package/lib/treedx/provider.d.ts +39 -0
  178. package/lib/treedx/provider.js +479 -0
  179. package/lib/treedx/provider.js.map +1 -0
  180. package/lib/treedx/state.d.ts +27 -0
  181. package/lib/treedx/state.js +65 -0
  182. package/lib/treedx/state.js.map +1 -0
  183. package/lib/types.d.ts +210 -0
  184. package/lib/types.js +31 -0
  185. package/lib/types.js.map +1 -0
  186. package/lib/version.d.ts +9 -0
  187. package/lib/version.js +10 -0
  188. package/lib/version.js.map +1 -0
  189. package/lib/vocabulary.d.ts +41 -0
  190. package/lib/vocabulary.js +118 -0
  191. package/lib/vocabulary.js.map +1 -0
  192. package/lib/warnings.d.ts +10 -0
  193. package/lib/warnings.js +18 -0
  194. package/lib/warnings.js.map +1 -0
  195. package/package.json +151 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-rules.js","sourceRoot":"","sources":["../src/session-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { SessionEventLike } from './types.ts';
2
+ export interface CollectionSignature {
3
+ /** The collection's event seqs, ascending (user messages through turn/end). */
4
+ seqs: number[];
5
+ /** File paths mentioned in tool-call arguments — the strongest topic signal. */
6
+ paths: string[];
7
+ /** Command argv prefixes (shell tools) and non-shell tool names. */
8
+ commands: string[];
9
+ /** Stopword-filtered keyword top-N across the turn's text. */
10
+ terms: string[];
11
+ /** Estimated tokens of the collection's text (chars/4 — the project's one estimator). */
12
+ size: number;
13
+ /** Always `deterministic` today; P2 enrichment adds model-authored fields elsewhere. */
14
+ by: 'deterministic';
15
+ /**
16
+ * CodeGraph symbols verified against the project index during this turn.
17
+ * Populated only when the codegraph CLI is available and the project is
18
+ * indexed; empty otherwise. Used by enrichment and search scoring — never
19
+ * by composition (merge decisions stay deterministic-text-only).
20
+ */
21
+ codegraphSymbols?: string[];
22
+ }
23
+ /**
24
+ * The events of the turn that just ended: from (exclusive) the previous
25
+ * `turn/end` (or the log start) through this `turn/end` inclusive.
26
+ */
27
+ export declare function turnSpanOf(events: readonly SessionEventLike[], endSeq: number): SessionEventLike[];
28
+ /** Extract the deterministic signature for one completed turn's events. */
29
+ export declare function extractSignature(events: readonly SessionEventLike[], topTerms?: number): CollectionSignature;
30
+ /**
31
+ * Post-extraction CodeGraph symbol verification. Runs asynchronously after
32
+ * extractSignature — the turn/end listener fires this fire-and-forget.
33
+ * Verifies code-shaped tokens from the turn's text against the index;
34
+ * tokens that resolve to real symbols are added to codegraphSymbols.
35
+ *
36
+ * Budget: max 3 queries per turn, 5s timeout each. Every failure path
37
+ * returns the signature unchanged.
38
+ */
39
+ export declare function enrichSignatureWithCodegraph(sig: CollectionSignature, events: readonly SessionEventLike[], subprocess: import('./codegraph.ts').SubprocessLike | undefined, cwd: string): Promise<void>;
40
+ /**
41
+ * Chapter topics for the index: the chapter's own signature — the strongest
42
+ * paths first (same file ≈ same task), then top terms. Capped; this is the
43
+ * deterministic floor the P2 enrichment pass may later relabel.
44
+ */
45
+ export declare function chapterTopics(events: readonly SessionEventLike[], lo: number, hi: number, cap?: number): string[];
@@ -0,0 +1,199 @@
1
+ /**
2
+ * Per-turn deterministic signatures (knowledge-repo.md §4.1).
3
+ *
4
+ * Extracted at `turn/end`, synchronously, with no model: file paths, command
5
+ * argv, and a stopword-filtered keyword top-N — the "loud signatures" coding
6
+ * sessions leave behind. The composition step (src/compose.ts) merges
7
+ * consecutive collections by signature overlap; the async model enrichment
8
+ * (P2) may later relabel, never replace, what this produces at archive time.
9
+ *
10
+ * Pure module: SessionEventLike in, `CollectionSignature` out. The engine
11
+ * listener (src/engine.ts) is the only thing that calls this per session.
12
+ */
13
+ import { estimateTokens } from "./render.js";
14
+ import { isHumanAuthored } from "./injections.js";
15
+ /** Stoplist: English function words + code scaffolding that carries no topic. */
16
+ const STOP = new Set([
17
+ 'the', 'a', 'an', 'and', 'or', 'of', 'to', 'in', 'on', 'for', 'with', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
18
+ 'it', 'its', 'this', 'that', 'these', 'those', 'i', 'we', 'you', 'he', 'she', 'they', 'him', 'her', 'them', 'his', 'their', 'our', 'your', 'my', 'me', 'us',
19
+ 'as', 'at', 'by', 'do', 'does', 'did', 'done', 'will', 'would', 'can', 'could', 'should', 'shall', 'may', 'might', 'must',
20
+ 'just', 'also', 'then', 'than', 'so', 'if', 'else', 'not', 'no', 'yes', 'but', 'all', 'any', 'each', 'more', 'most', 'some', 'such', 'only', 'own', 'same', 'too', 'very',
21
+ 'about', 'into', 'over', 'under', 'again', 'further', 'once', 'here', 'there', 'when', 'where', 'why', 'how', 'what', 'which', 'who', 'whom',
22
+ 'get', 'got', 'let', 'make', 'made', 'use', 'used', 'using', 'run', 'ran', 'need', 'needs', 'want', 'wants', 'look', 'looked', 'see', 'saw', 'take', 'took', 'give', 'gave',
23
+ 'const', 'let', 'var', 'function', 'return', 'import', 'from', 'export', 'async', 'await', 'new', 'class', 'type', 'interface', 'extends', 'implements',
24
+ 'true', 'false', 'null', 'undefined', 'void', 'number', 'string', 'boolean', 'any', 'never', 'unknown', 'this', 'self', 'that', 'then', 'else', 'elif', 'while', 'for', 'do', 'try', 'catch', 'finally', 'throw', 'raise', 'def', 'fn', 'pub', 'use', 'match', 'end', 'begin',
25
+ 'file', 'line', 'code', 'test', 'tests', 'error', 'warning', 'info', 'note', 'fix', 'add', 'added', 'remove', 'removed', 'update', 'updated', 'change', 'changed', 'create', 'created', 'delete', 'deleted', 'set', 'get', 'list', 'show', 'print', 'echo', 'cd', 'ls', 'cp', 'mv', 'rm', 'cat', 'git', 'npm', 'npx', 'node', 'python', 'bash', 'sh', 'cd', 'mkdir', 'touch', 'grep', 'sed', 'awk',
26
+ ]);
27
+ const PATH_TOKEN = /((?:[A-Za-z0-9_.\-]+\/)+[A-Za-z0-9_.\-]+|\.{1,2}\/[A-Za-z0-9_.\-\/]+|[A-Za-z0-9_\-]+\.(?:ts|tsx|js|jsx|py|md|json|ya?ml|toml|sh|go|rs|c|cc|cpp|h|java|css|html|lock|txt|env|cfg|ini))/g;
28
+ const SHELL_TOOLS = new Set(['bash', 'shell', 'exec', 'run_command', 'execute', 'command', 'run']);
29
+ /**
30
+ * The events of the turn that just ended: from (exclusive) the previous
31
+ * `turn/end` (or the log start) through this `turn/end` inclusive.
32
+ */
33
+ export function turnSpanOf(events, endSeq) {
34
+ const idx = events.findIndex((e) => e.type === 'turn/end' && e.seq === endSeq);
35
+ if (idx === -1)
36
+ return [];
37
+ let start = 0;
38
+ for (let i = idx - 1; i >= 0; i -= 1) {
39
+ if (events[i].type === 'turn/end') {
40
+ start = events[i].seq + 1;
41
+ break;
42
+ }
43
+ }
44
+ return events.filter((e) => e.seq >= start && e.seq <= endSeq);
45
+ }
46
+ const textBlocks = (data) => {
47
+ const message = (data.message ?? data);
48
+ const content = Array.isArray(message.content) ? message.content : [];
49
+ return content.filter((b) => b.type === 'text').map((b) => b.text ?? '').join('\n');
50
+ };
51
+ /**
52
+ * Is this user/message authored by the human? The one predicate lives in
53
+ * src/injections.ts (shared with the renderer so the two layers can never
54
+ * drift on what counts as conversation); r28 measured the poison of the
55
+ * injections — AGENTS instructions (`kind: 'agent-instructions'`), the
56
+ * runtime-context snapshot (`kind: 'plugin'`), the skill catalog — every
57
+ * turn's signature gained `AGENTS.md`, `docs/contract.md`, ... drowning the
58
+ * real topic signal. Only `kind: 'user'` (or unlabelled, for seeded
59
+ * fixtures) counts.
60
+ */
61
+ const isHumanMessage = isHumanAuthored;
62
+ /** Repo-relative normalization: a token mentioning a known code dir is cut at
63
+ * its LAST such dir, so '/home/u/p/src/sync.ts' and 'src/sync.ts' are one path. */
64
+ const normalizePath = (t) => {
65
+ const m = /(?:^|\/)(src|lib|tests?|docs?|scripts?|spikes?|presets?|examples?|dev|vendor|app|packages)\/(.+)$/.exec(t);
66
+ return m !== null ? `${m[1]}/${m[2]}` : t;
67
+ };
68
+ /** Path tokens must LOOK like files/dirs: an extension, or a known root dir
69
+ * prefix, or explicit relative/absolute form — not prose phrases like
70
+ * "compaction/fork" or "topics/summaries/rule" (r28 noise). */
71
+ const EXT = /\.(?:tsx?|jsx?|py|md|mdx|json|ya?ml|toml|sh|go|rs|c|cc|cpp|h|hpp|java|css|html|lock|txt|env|cfg|ini|csv|png|jpe?g|gif|svg|ipynb|yml)$/i;
72
+ const ROOT_DIR = /^(?:src|lib|tests?|docs?|scripts?|spikes?|presets?|examples?|dev|vendor|app|packages|node_modules|\.dsh[a-z-]*|spike)\//;
73
+ const isRealPath = (t) => EXT.test(t) || ROOT_DIR.test(t) || /^(?:\.\/|\.\.\/|~\/|\/)/.test(t);
74
+ /** Extract the deterministic signature for one completed turn's events. */
75
+ export function extractSignature(events, topTerms = 8) {
76
+ const seqs = events.map((e) => e.seq).sort((a, b) => a - b);
77
+ const paths = [];
78
+ const commands = [];
79
+ const push = (arr, v) => { if (v !== '' && !arr.includes(v))
80
+ arr.push(v); };
81
+ let size = 0;
82
+ const termCounts = new Map();
83
+ for (const ev of events) {
84
+ const data = (ev.data ?? {});
85
+ if (ev.type === 'user/message' || ev.type === 'assistant/message') {
86
+ const text = textBlocks(data);
87
+ size += estimateTokens(text);
88
+ const human = ev.type === 'assistant/message' || isHumanMessage(data);
89
+ if (human) {
90
+ // Paths mentioned in PROSE are task signal too ("fix src/auth/x.ts").
91
+ for (const m of text.matchAll(PATH_TOKEN)) {
92
+ const norm = normalizePath(m[1]);
93
+ if (isRealPath(norm))
94
+ push(paths, norm);
95
+ }
96
+ for (const tok of text.toLowerCase().split(/[^a-z0-9_]+/)) {
97
+ if (tok.length < 3 || tok.length > 28 || STOP.has(tok) || /^\d+$/.test(tok))
98
+ continue;
99
+ termCounts.set(tok, (termCounts.get(tok) ?? 0) + 1);
100
+ }
101
+ }
102
+ }
103
+ else if (ev.type === 'tool/call') {
104
+ const name = String(data.name ?? '');
105
+ const args = typeof data.arguments === 'string' ? data.arguments : JSON.stringify(data.arguments ?? {});
106
+ size += estimateTokens(args);
107
+ for (const m of args.matchAll(PATH_TOKEN)) {
108
+ const norm = normalizePath(m[1]);
109
+ if (isRealPath(norm))
110
+ push(paths, norm);
111
+ }
112
+ if (SHELL_TOOLS.has(name.toLowerCase())) {
113
+ // argv prefix: first three non-flag tokens of the command string.
114
+ // NON-shell tools contribute nothing to `commands` (r28: tool NAMES
115
+ // like read/grep appear in every turn — constant overlap that drowns
116
+ // the real signal; their target files are already in `paths`).
117
+ const argv = args.replace(/^["'\s]+|["'\s]+$/g, '').split(/\s+/).filter((t) => !t.startsWith('-')).slice(0, 3);
118
+ if (argv.length > 0)
119
+ push(commands, argv.join(' '));
120
+ }
121
+ }
122
+ }
123
+ const terms = [...termCounts.entries()]
124
+ .sort((a, b) => b[1] - a[1] || a[0].localeCompare(b[0]))
125
+ .slice(0, topTerms)
126
+ .map(([t]) => t);
127
+ return { seqs, paths, commands, terms, size, by: 'deterministic', codegraphSymbols: [] };
128
+ }
129
+ /**
130
+ * Post-extraction CodeGraph symbol verification. Runs asynchronously after
131
+ * extractSignature — the turn/end listener fires this fire-and-forget.
132
+ * Verifies code-shaped tokens from the turn's text against the index;
133
+ * tokens that resolve to real symbols are added to codegraphSymbols.
134
+ *
135
+ * Budget: max 3 queries per turn, 5s timeout each. Every failure path
136
+ * returns the signature unchanged.
137
+ */
138
+ export async function enrichSignatureWithCodegraph(sig, events, subprocess, cwd) {
139
+ // Lazy import to avoid pulling codegraph.ts into every test that imports signature.ts.
140
+ const cg = await import("./codegraph.js");
141
+ const root = cg.findCodegraphRoot(cwd);
142
+ if (root === undefined)
143
+ return;
144
+ const exe = await cg.resolveCodegraph(subprocess);
145
+ if (exe === null)
146
+ return;
147
+ // Gather code-shaped tokens from human-authored messages in the turn.
148
+ const allText = events
149
+ .filter((e) => e.type === 'user/message' || e.type === 'assistant/message')
150
+ .map((e) => {
151
+ const data = (e.data ?? {});
152
+ return textBlocks(data);
153
+ })
154
+ .join('\n');
155
+ const tokens = cg.extractCodeTokens(allText, 5);
156
+ if (tokens.length === 0)
157
+ return;
158
+ const verified = [];
159
+ const seen = new Set();
160
+ let queries = 0;
161
+ for (const token of tokens) {
162
+ if (queries >= 3)
163
+ break;
164
+ queries++;
165
+ try {
166
+ const symbols = await cg.querySymbols(subprocess, root, token, 5, 5000);
167
+ for (const s of symbols) {
168
+ if (!seen.has(s)) {
169
+ seen.add(s);
170
+ verified.push(s);
171
+ }
172
+ }
173
+ }
174
+ catch { /* skip failed token */ }
175
+ }
176
+ if (verified.length > 0)
177
+ sig.codegraphSymbols = verified;
178
+ }
179
+ /**
180
+ * Chapter topics for the index: the chapter's own signature — the strongest
181
+ * paths first (same file ≈ same task), then top terms. Capped; this is the
182
+ * deterministic floor the P2 enrichment pass may later relabel.
183
+ */
184
+ export function chapterTopics(events, lo, hi, cap = 8) {
185
+ const span = events.filter((e) => e.seq >= lo && e.seq <= hi);
186
+ const sig = extractSignature(span);
187
+ const out = [];
188
+ for (const p of sig.paths.slice(0, 3))
189
+ if (!out.includes(p))
190
+ out.push(p);
191
+ for (const t of sig.terms) {
192
+ if (out.length >= cap)
193
+ break;
194
+ if (!out.includes(t))
195
+ out.push(t);
196
+ }
197
+ return out.slice(0, cap);
198
+ }
199
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"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"}
package/lib/store.d.ts ADDED
@@ -0,0 +1,156 @@
1
+ import type { ArchiveFs, ChapterRecord, NumberAllocator } from './archive.ts';
2
+ import { type SessionState } from './registry.ts';
3
+ /** Parse (and backfill defaults for) one raw registry record — the seam
4
+ * migrations and tests use; the domain open path uses the same schema. */
5
+ export declare const parseSessionState: (raw: unknown) => SessionState;
6
+ /** Parse (and default-fill) one stored project row — the migration seam tests
7
+ * and any future provider-kind backfill use; same shape as parseSessionState. */
8
+ export declare const parseProjectRecord: (raw: unknown) => ProjectRecordShape;
9
+ type ProjectRecordShape = {
10
+ projectKey: string;
11
+ slug: string;
12
+ remote: string;
13
+ harnessId: string;
14
+ linkedAt: string;
15
+ cwd: string;
16
+ kind: 'git' | 'treedx';
17
+ repoId?: string | undefined;
18
+ };
19
+ /** Durable declaration of the dsh_chapters registry domain. */ export declare const chapterDomainSpec: {
20
+ name: string;
21
+ version: number;
22
+ compatibleVersions: number[];
23
+ tables: {
24
+ sessions: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, SessionState>;
25
+ projects: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, import("./sync.ts").ProjectRecord>;
26
+ settings: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, {
27
+ value: string;
28
+ }>;
29
+ rules: import("@deepseek-ai/dsh-storage-domain").DomainTableSpec<string, import("./rules.ts").RuleRecord>;
30
+ };
31
+ };
32
+ /** Minimal structural type of `ctx.storageDomain.open(spec)` we rely on. */
33
+ export interface DomainLike {
34
+ table(name: 'sessions'): {
35
+ get(key: string): SessionState | undefined;
36
+ put(key: string, value: SessionState): Promise<void>;
37
+ entries(): IterableIterator<[string, SessionState]>;
38
+ readonly size: number;
39
+ };
40
+ table(name: 'projects'): {
41
+ get(key: string): import('./sync.ts').ProjectRecord | undefined;
42
+ put(key: string, value: import('./sync.ts').ProjectRecord): Promise<void>;
43
+ entries(): IterableIterator<[string, import('./sync.ts').ProjectRecord]>;
44
+ readonly size: number;
45
+ };
46
+ table(name: 'settings'): {
47
+ get(key: string): {
48
+ value: string;
49
+ } | undefined;
50
+ put(key: string, value: {
51
+ value: string;
52
+ }): Promise<void>;
53
+ /** Row removal (host table verb — dsh-storage-domain `delete(key)`). #71: a
54
+ * `model clear` must RESTORE the config fallback, which a stored value cannot
55
+ * express — `''` is the deliberate OFF state, deletion is the ABSENT state.
56
+ * Optional only so pre-delete fakes keep compiling; the store refuses loudly
57
+ * at the call site when the host table lacks it (every supported host has it). */
58
+ delete?(key: string): Promise<boolean>;
59
+ entries(): IterableIterator<[string, {
60
+ value: string;
61
+ }]>;
62
+ readonly size: number;
63
+ };
64
+ table(name: 'rules'): {
65
+ get(key: string): import('./rules.ts').RuleRecord | undefined;
66
+ put(key: string, value: import('./rules.ts').RuleRecord): Promise<void>;
67
+ entries(): IterableIterator<[string, import('./rules.ts').RuleRecord]>;
68
+ readonly size: number;
69
+ };
70
+ close(): Promise<void>;
71
+ }
72
+ /** Read-modify-write seam over one domain. */
73
+ export type ProjectRecord = import('./sync.ts').ProjectRecord;
74
+ export interface RegistryStore {
75
+ get(sessionId: string): Promise<SessionState>;
76
+ /**
77
+ * A whole-row write, guarded. `expectedRev` is the `rev` of the row the caller READ; a mismatch means
78
+ * another door committed since, and the write is REFUSED with numbers rather than clobbering it.
79
+ * Omit it only where a blind put is intended (the boot witness probe, a rollback to a captured row).
80
+ */
81
+ put(sessionId: string, state: SessionState, expectedRev?: number): Promise<void>;
82
+ /**
83
+ * The ONLY sanctioned way to change a session row (#59): one serialized section per session, the fn
84
+ * runs against a FRESH read, and the write is rev-checked. A door that holds work across an await
85
+ * passes a function, never a snapshot — that is what stopped a stale `put` from erasing another
86
+ * door's committed state. Nested calls for the same session are refused rather than deadlocked.
87
+ */
88
+ mutate(sessionId: string, fn: (state: SessionState) => SessionState | Promise<SessionState>): Promise<SessionState>;
89
+ /** Knowledge projects linked for this workspace (record §8). Live view. */
90
+ projects(): IterableIterator<[string, ProjectRecord]>;
91
+ /** All session states in the domain (for collection publishing, §5). */
92
+ sessions(): IterableIterator<[string, SessionState]>;
93
+ /** Durable kv (P2: enrichment model override). */
94
+ getSetting(key: string): string | undefined;
95
+ putSetting(key: string, value: string): Promise<void>;
96
+ /** Remove a kv row entirely (#71): `clear` restores the config fallback, which
97
+ * a stored value cannot express — stored `''` means deliberately OFF. */
98
+ deleteSetting(key: string): Promise<void>;
99
+ /** P3 §7.1 rule records (status is NOT here — per-machine curation facts, §15). */
100
+ rules(): IterableIterator<[string, import('./rules.ts').RuleRecord]>;
101
+ getRule(id: string): import('./rules.ts').RuleRecord | undefined;
102
+ putRule(id: string, value: import('./rules.ts').RuleRecord): Promise<void>;
103
+ }
104
+ export declare function makeDomainStore(domain: DomainLike): RegistryStore;
105
+ /**
106
+ * The NumberAllocator archive.ts asks for, bound to one author session.
107
+ * Reserve-before-write per docs/architecture.md § Atomicity; retries reuse
108
+ * numbers through registry.reserve's attempt-keyed idempotence.
109
+ */
110
+ export declare function makeAllocator(store: RegistryStore, sessionId: string): NumberAllocator;
111
+ /** The commit-point write: verified chapter records into the session state. */
112
+ export declare function commitChapters(store: RegistryStore, sessionId: string, records: readonly ChapterRecord[]): Promise<void>;
113
+ /**
114
+ * One domain, one opener: `DomainFacility.open` throws `already-open` for a
115
+ * reserved name and never releases the reservation except via `Domain.close()`
116
+ * (r27b proved the multi-opener lottery: plugin-apply, the realm engine, and
117
+ * any probe all targeting dsh_chapters — whoever raced first won and everyone
118
+ * else's compaction failed). Acquire = try open; on already-open, adopt the
119
+ * live handle via `facility.get` and claim NO close ownership.
120
+ */
121
+ export interface ChapterStoreHandle {
122
+ store: RegistryStore;
123
+ /** the live domain handle: read-only table scans for acquirers that do not own it. */
124
+ domain: DomainLike;
125
+ /**
126
+ * True only for the acquire that actually opened the domain. Recorded for
127
+ * observability; the CLOSER is the facility's own unmount disposer
128
+ * (closeAll), never an opener-registered effect — a fiber-scoped close
129
+ * effect fires when that fiber disposes, mid-run (r35).
130
+ */
131
+ owner: boolean;
132
+ }
133
+ export declare function acquireChapterStore(storageDomain: {
134
+ open: (spec: unknown) => Promise<DomainLike>;
135
+ get?: (name: string) => DomainLike | undefined;
136
+ }): Promise<ChapterStoreHandle>;
137
+ /**
138
+ * ArchiveFs over node:fs, anchored at one base dir (the session workspace).
139
+ * Plugins are trusted same-process code — the sandbox governs TOOLS, not
140
+ * this path — so node:fs is legitimate here; `ctx.fs` stays untouched.
141
+ * `read` maps ENOENT to undefined; anything else propagates: a permission
142
+ * error must not look like a missing file.
143
+ */
144
+ /** Resolve a configured store root against the session cwd. An ABSOLUTE root
145
+ * wins verbatim — the hosted profiles (#33) pin `/workspace/.dsh-chapters` so
146
+ * archives land on a persisted volume no matter which subdirectory a session
147
+ * runs in; relative roots keep the historical per-workspace meaning. */
148
+ export declare function resolveStoreRoot(cwd: string, storeRoot: string): string;
149
+ export declare function makeArchiveFs(baseDir: string): ArchiveFs;
150
+ /**
151
+ * "Add <store-root>/ to .gitignore on first write and say so" — silently
152
+ * polluting a user's tree is its own small bug (docs/architecture.md §
153
+ * Storage). Returns a human line for the tool result's warnings.
154
+ */
155
+ export declare function ensureStoreGitignore(fs: ArchiveFs, storeRoot: string): Promise<string>;
156
+ export {};