@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":"repair.js","sourceRoot":"","sources":["../src/repair.ts"],"names":[],"mappings":"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"}
package/lib/repo.d.ts ADDED
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Record §2.3, exact: lowercase; strip `https://` / `ssh://`; convert
3
+ * `user@host:path` → `host/path`; strip trailing `/` and `.git`; KEEP the
4
+ * host (two hosts, same path = different projects).
5
+ */
6
+ export declare function canonicalizeRemote(url: string): string;
7
+ /** UUIDv5(NAMESPACE_OID, name) per RFC 4122 — deterministic, name-derived. */
8
+ export declare const NAMESPACE_OID = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
9
+ export declare function uuidv5(namespaceUuid: string, name: string): string;
10
+ /** The project key: stable across machines for the same remote (record §2.3). */
11
+ export declare const projectKeyFromRemote: (url: string) => string;
12
+ /**
13
+ * A knowledge upstream target string (record §2.1/§3.2 + §15 amendment
14
+ * "transport is pluggable"). Shapes:
15
+ * https://host/org/repo(.git) git over HTTPS (token required, §2.1)
16
+ * /some/dir.git | ./dir | ~dir local-path git bare pool (no credentials)
17
+ * treedx+http(s)://host[:port]/repo-name TreeDX managed repository
18
+ * The `treedx+` prefix is the ONLY kind discriminator — identity, credentials,
19
+ * and the mirror layout are provider-independent beyond it.
20
+ */
21
+ export interface KnowledgeRemoteTarget {
22
+ kind: 'git' | 'treedx';
23
+ /** The raw string as the user typed it (stored as `ProjectRecord.remote`). */
24
+ raw: string;
25
+ /** TreeDX: REST base URL + the managed repository name. */
26
+ treedx?: {
27
+ baseUrl: string;
28
+ repoName: string;
29
+ };
30
+ }
31
+ /** Parse an upstream target. Throws (never guesses) on a treedx+ URL without a
32
+ * repository name — a wrong identity means syncing into the wrong pool. */
33
+ export declare function parseKnowledgeRemote(target: string): KnowledgeRemoteTarget;
34
+ /**
35
+ * Project identity for a parsed target (§2.3 unchanged in spirit): for git,
36
+ * the canonical remote; for TreeDX, `treedx/` + the canonical form of
37
+ * `baseUrl/repoName`. The prefix keeps transports distinct on purpose —
38
+ * a server that happens to mirror the same host/port/path as a git remote
39
+ * is a DIFFERENT pool, and two linked records must never fight over one key.
40
+ */
41
+ export declare function projectKeyForTarget(t: KnowledgeRemoteTarget): string;
42
+ /**
43
+ * Parse the minimum of a git config we need: the first remote's url,
44
+ * preferring `origin`. Comments (# ;), sections, and whitespace handled;
45
+ * anything exotic returns null rather than guessing.
46
+ */
47
+ export declare function parseGitConfigRemoteUrl(text: string): string | null;
48
+ export interface ProjectRemote {
49
+ remote: string;
50
+ /** `remote` = from a git remote; `path-derived` = non-git workspace fallback. */
51
+ source: 'remote' | 'path-derived';
52
+ }
53
+ /**
54
+ * Discover the project's remote WITHOUT a git binary: read `.git` as a file
55
+ * or directory, parse its `config` (following a `gitdir:` pointer for
56
+ * worktrees/submodules, relative to `cwd`). Non-git workspace → the
57
+ * path-derived fallback is the CALLER's choice (this returns null), so the
58
+ * key's `source` flag stays an explicit decision.
59
+ */
60
+ export declare function readProjectRemote(cwd: string): ProjectRemote | null;
61
+ /** Resolve the project identity: override > discovered remote > path-derived. */
62
+ export declare function resolveProject(cwd: string, overrideKey?: string, overrideRemote?: string): {
63
+ projectKey: string;
64
+ projectKeySource: 'override' | 'remote' | 'path-derived';
65
+ remote: string | null;
66
+ };
67
+ /** Repo layout (record §2.2) — every path the sync/index/search layers touch. */
68
+ export declare function repoPaths(projectKey: string, harnessId: string, sessionId?: string): {
69
+ projectYml: string;
70
+ chaptersDir: string;
71
+ artifactsDir: string;
72
+ collectionsFile: (sid: string) => string;
73
+ indexDir: string;
74
+ indexManifest: string;
75
+ curationFile: string;
76
+ rulesDir: string;
77
+ vocabularyJson: string;
78
+ };
package/lib/repo.js ADDED
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Project identity and knowledge-repo layout (knowledge-repo.md §2.2–2.3).
3
+ *
4
+ * Pure module: no cordis, no network, no git binary. `canonicalizeRemote` +
5
+ * UUIDv5 give every machine the SAME key for the same project (local paths
6
+ * differ; the remote is the identity). `.git/config` is parsed as a plain
7
+ * file — the no-git-executable rule (record §3.2) applies to discovery too.
8
+ */
9
+ import { createHash } from 'node:crypto';
10
+ import fs from 'node:fs';
11
+ import path from 'node:path';
12
+ /**
13
+ * Record §2.3, exact: lowercase; strip `https://` / `ssh://`; convert
14
+ * `user@host:path` → `host/path`; strip trailing `/` and `.git`; KEEP the
15
+ * host (two hosts, same path = different projects).
16
+ */
17
+ export function canonicalizeRemote(url) {
18
+ let s = url.trim().toLowerCase();
19
+ s = s.replace(/^(?:https?|ssh|git|file):\/\//, '');
20
+ // file:// urls carry no host, only a path
21
+ s = s.replace(/^\/+/, '');
22
+ // embedded credentials (https://user:token@host/…) must NOT fork identity:
23
+ // the same repo pasted with and without creds is the same pool. Colon-bearing
24
+ // userinfo only ever appears in scheme-form URLs (scp usernames have none).
25
+ s = s.replace(/^[^@/]*:[^@/]*@/, '');
26
+ // [user@]host:path (scp-style) and [user@]host/path (scheme-form, after the
27
+ // scheme strip above)
28
+ s = s.replace(/^([a-z0-9._-]+)@([a-z0-9.-]+)[:\/](.+)$/, (_m, _user, host, p) => `${host}/${p}`);
29
+ s = s.replace(/^([a-z0-9.-]+):(.+)$/, (_m, host, p) => `${host}/${p}`);
30
+ s = s.replace(/\/+$/, '');
31
+ s = s.replace(/\.git$/, '');
32
+ return s;
33
+ }
34
+ /** UUIDv5(NAMESPACE_OID, name) per RFC 4122 — deterministic, name-derived. */
35
+ export const NAMESPACE_OID = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
36
+ export function uuidv5(namespaceUuid, name) {
37
+ const ns = namespaceUuid.replace(/-/g, '');
38
+ if (ns.length !== 32)
39
+ throw new Error(`uuidv5: namespace is not a UUID: ${namespaceUuid}`);
40
+ const b = createHash('sha1').update(Buffer.concat([Buffer.from(ns, 'hex'), Buffer.from(name, 'utf8')])).digest();
41
+ b[6] = (b[6] & 0x0f) | 0x50; // version 5
42
+ b[8] = (b[8] & 0x3f) | 0x80; // variant 10xx
43
+ // RFC 4122: the first 16 OCTETS of the SHA-1 (not all 20)
44
+ const h = b.subarray(0, 16).toString('hex');
45
+ return `${h.slice(0, 8)}-${h.slice(8, 12)}-${h.slice(12, 16)}-${h.slice(16, 20)}-${h.slice(20)}`;
46
+ }
47
+ /** The project key: stable across machines for the same remote (record §2.3). */
48
+ export const projectKeyFromRemote = (url) => uuidv5(NAMESPACE_OID, canonicalizeRemote(url));
49
+ const TREEDX_FORM = /^treedx\+(https?:\/\/\S+)$/i;
50
+ /** Parse an upstream target. Throws (never guesses) on a treedx+ URL without a
51
+ * repository name — a wrong identity means syncing into the wrong pool. */
52
+ export function parseKnowledgeRemote(target) {
53
+ const raw = target.trim();
54
+ const m = TREEDX_FORM.exec(raw);
55
+ if (m === null)
56
+ return { kind: 'git', raw };
57
+ let u;
58
+ try {
59
+ u = new URL(m[1]);
60
+ }
61
+ catch {
62
+ throw new Error(`treedx+ remote is not a valid URL: ${raw}`);
63
+ }
64
+ const segs = u.pathname.split('/').filter((s) => s !== '' && !(s === 'api' && u.pathname.includes('/api/v1')) && s !== 'v1');
65
+ if (segs.length === 0)
66
+ throw new Error(`treedx+ remote needs a repository name: treedx+<url>/repo — got ${raw}`);
67
+ const repoName = segs[segs.length - 1].toLowerCase(); // TreeDX names are canonical lowercase
68
+ const trimmed = segs.slice(0, -1);
69
+ const baseUrl = u.origin + (trimmed.length > 0 ? `/${trimmed.join('/')}` : '');
70
+ return { kind: 'treedx', raw, treedx: { baseUrl, repoName } };
71
+ }
72
+ /**
73
+ * Project identity for a parsed target (§2.3 unchanged in spirit): for git,
74
+ * the canonical remote; for TreeDX, `treedx/` + the canonical form of
75
+ * `baseUrl/repoName`. The prefix keeps transports distinct on purpose —
76
+ * a server that happens to mirror the same host/port/path as a git remote
77
+ * is a DIFFERENT pool, and two linked records must never fight over one key.
78
+ */
79
+ export function projectKeyForTarget(t) {
80
+ if (t.treedx !== undefined)
81
+ return uuidv5(NAMESPACE_OID, `treedx/${canonicalizeRemote(`${t.treedx.baseUrl}/${t.treedx.repoName}`)}`);
82
+ return projectKeyFromRemote(t.raw);
83
+ }
84
+ /**
85
+ * Parse the minimum of a git config we need: the first remote's url,
86
+ * preferring `origin`. Comments (# ;), sections, and whitespace handled;
87
+ * anything exotic returns null rather than guessing.
88
+ */
89
+ export function parseGitConfigRemoteUrl(text) {
90
+ let section = null;
91
+ let originUrl = null;
92
+ let firstRemoteUrl = null;
93
+ for (const raw of text.split(/\r?\n/)) {
94
+ const line = raw.trim();
95
+ if (line === '' || line.startsWith('#') || line.startsWith(';'))
96
+ continue;
97
+ const sectionMatch = /^\[([^\]]+)\]$/.exec(line);
98
+ if (sectionMatch !== null) {
99
+ section = sectionMatch[1];
100
+ continue;
101
+ }
102
+ const kv = /^([A-Za-z0-9.]+)\s*=\s*(.+)$/.exec(line);
103
+ if (kv === null || section === null)
104
+ continue;
105
+ if (kv[1].toLowerCase() !== 'url')
106
+ continue;
107
+ const value = kv[2].trim().replace(/^["']|["']$/g, '');
108
+ const sectionName = section.replace(/^remote\s+"?([^"]+)"?$/i, '$1').toLowerCase();
109
+ if (sectionName === 'origin' && originUrl === null)
110
+ originUrl = value;
111
+ else if (/^remote/.test(section) && firstRemoteUrl === null)
112
+ firstRemoteUrl = value;
113
+ }
114
+ return originUrl ?? firstRemoteUrl;
115
+ }
116
+ /**
117
+ * Discover the project's remote WITHOUT a git binary: read `.git` as a file
118
+ * or directory, parse its `config` (following a `gitdir:` pointer for
119
+ * worktrees/submodules, relative to `cwd`). Non-git workspace → the
120
+ * path-derived fallback is the CALLER's choice (this returns null), so the
121
+ * key's `source` flag stays an explicit decision.
122
+ */
123
+ export function readProjectRemote(cwd) {
124
+ const dotGit = path.join(cwd, '.git');
125
+ let configPath = null;
126
+ try {
127
+ const st = fs.statSync(dotGit);
128
+ if (st.isDirectory())
129
+ configPath = path.join(dotGit, 'config');
130
+ else if (st.isFile()) {
131
+ const pointer = fs.readFileSync(dotGit, 'utf8').trim();
132
+ const m = /^gitdir:\s*(.+)$/m.exec(pointer);
133
+ if (m !== null) {
134
+ const target = m[1].trim();
135
+ configPath = path.isAbsolute(target) ? path.join(target, 'config') : path.join(cwd, target, 'config');
136
+ }
137
+ }
138
+ }
139
+ catch {
140
+ return null; // no .git, unreadable, or not git
141
+ }
142
+ if (configPath === null)
143
+ return null;
144
+ try {
145
+ const url = parseGitConfigRemoteUrl(fs.readFileSync(configPath, 'utf8'));
146
+ if (url === null)
147
+ return null;
148
+ return { remote: url, source: 'remote' };
149
+ }
150
+ catch {
151
+ return null;
152
+ }
153
+ }
154
+ /** Resolve the project identity: override > discovered remote > path-derived. */
155
+ export function resolveProject(cwd, overrideKey, overrideRemote) {
156
+ if (overrideKey !== undefined && overrideKey !== '') {
157
+ return { projectKey: overrideKey, projectKeySource: 'override', remote: overrideRemote ?? null };
158
+ }
159
+ const discovered = overrideRemote !== undefined && overrideRemote !== ''
160
+ ? { remote: overrideRemote, source: 'remote' }
161
+ : readProjectRemote(cwd);
162
+ if (discovered !== null) {
163
+ return { projectKey: projectKeyFromRemote(discovered.remote), projectKeySource: discovered.source, remote: discovered.remote };
164
+ }
165
+ return { projectKey: uuidv5(NAMESPACE_OID, cwd), projectKeySource: 'path-derived', remote: null };
166
+ }
167
+ /** Repo layout (record §2.2) — every path the sync/index/search layers touch. */
168
+ export function repoPaths(projectKey, harnessId, sessionId) {
169
+ const base = '';
170
+ return {
171
+ projectYml: path.join(base, 'project.yml'),
172
+ chaptersDir: sessionId === undefined
173
+ ? path.join(base, 'chapters', projectKey)
174
+ : path.join(base, 'chapters', projectKey, sessionId),
175
+ artifactsDir: path.join(base, 'artifacts', projectKey),
176
+ collectionsFile: (sid) => path.join(base, 'collections', projectKey, `${sid}.jsonl`),
177
+ indexDir: path.join(base, 'index'),
178
+ indexManifest: path.join(base, 'index', 'manifest.json'),
179
+ curationFile: path.join(base, 'edits', harnessId, 'curation.jsonl'),
180
+ rulesDir: path.join(base, 'rules', projectKey),
181
+ vocabularyJson: path.join(base, 'topics', 'vocabulary.json'),
182
+ };
183
+ }
184
+ //# sourceMappingURL=repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../src/repo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { type RuleRecord } from './rules.ts';
2
+ import type { ProjectRecord } from './sync.ts';
3
+ export interface RulesIo {
4
+ cwd(): string;
5
+ storeRoot: string;
6
+ harnessId: string;
7
+ store: {
8
+ rules(): IterableIterator<[string, RuleRecord]>;
9
+ getRule(id: string): RuleRecord | undefined;
10
+ putRule(id: string, value: RuleRecord): Promise<void>;
11
+ };
12
+ projectFor(cwd: string): ProjectRecord | undefined;
13
+ mirrorDir(cwd: string): string;
14
+ /** arm an immediate sync so facts and files travel (never throws) */
15
+ syncNow(cwd: string): Promise<void>;
16
+ /** provenance of the ADD path: 'manual' for commands, the session id for the tool */
17
+ sourceSession?: string;
18
+ now: () => Date;
19
+ /**
20
+ * #50 §7.5: the current session's ancestor path (root-first), so `active`,
21
+ * `list --scope session` and `conflicts` can tell which session rules bind.
22
+ * Absent ⇒ the session tier is reported as unresolved, never guessed.
23
+ */
24
+ ancestors?: () => Promise<ReadonlySet<string>>;
25
+ /** #52: true when the ancestry walk hit its cap (delegation or continuation). */
26
+ ancestryTruncated?: () => Promise<boolean>;
27
+ /** #50 §7.7: ONE bounded model call, report-only. Absent ⇒ the verb refuses. */
28
+ ask?: (prompt: string) => Promise<string>;
29
+ /** §7.3/§7.4 numbers the answer is measured with — the SAME config the doors
30
+ * render from, so `active` cannot report a view the head will not show. */
31
+ budgetTokens?: number;
32
+ projectCap?: number;
33
+ sessionCap?: number;
34
+ /** §7.5: reported by `active`, and drives whether mined rules govern on arrival */
35
+ autoActivate?: boolean | undefined;
36
+ /** the shared settings table (`rules.model` lives beside `enrichment.model`) */
37
+ settings?: {
38
+ get(key: string): string | undefined;
39
+ put(key: string, value: string): Promise<void>;
40
+ } | undefined;
41
+ }
42
+ export interface RulesReply {
43
+ kind: 'success' | 'error';
44
+ text: string;
45
+ }
46
+ export declare function rulesCommand(io: RulesIo, args: string): Promise<RulesReply>;