@they-juanreina/compost-cli 0.1.2 → 0.1.4

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 (313) hide show
  1. package/dist/commands/agreement.d.ts +3 -0
  2. package/dist/commands/agreement.d.ts.map +1 -0
  3. package/dist/commands/agreement.js +35 -0
  4. package/dist/commands/agreement.js.map +1 -0
  5. package/dist/commands/backup.d.ts +3 -0
  6. package/dist/commands/backup.d.ts.map +1 -0
  7. package/dist/commands/backup.js +31 -0
  8. package/dist/commands/backup.js.map +1 -0
  9. package/dist/commands/chat.d.ts.map +1 -1
  10. package/dist/commands/chat.js +3 -2
  11. package/dist/commands/chat.js.map +1 -1
  12. package/dist/commands/create.d.ts +1 -0
  13. package/dist/commands/create.d.ts.map +1 -1
  14. package/dist/commands/create.js +39 -1
  15. package/dist/commands/create.js.map +1 -1
  16. package/dist/commands/export.d.ts.map +1 -1
  17. package/dist/commands/export.js +47 -4
  18. package/dist/commands/export.js.map +1 -1
  19. package/dist/commands/import.d.ts +3 -0
  20. package/dist/commands/import.d.ts.map +1 -0
  21. package/dist/commands/import.js +64 -0
  22. package/dist/commands/import.js.map +1 -0
  23. package/dist/commands/ingest.d.ts.map +1 -1
  24. package/dist/commands/ingest.js +1 -0
  25. package/dist/commands/ingest.js.map +1 -1
  26. package/dist/commands/init.d.ts.map +1 -1
  27. package/dist/commands/init.js +2 -0
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/jobs.d.ts +3 -0
  30. package/dist/commands/jobs.d.ts.map +1 -0
  31. package/dist/commands/jobs.js +105 -0
  32. package/dist/commands/jobs.js.map +1 -0
  33. package/dist/commands/label.d.ts +3 -0
  34. package/dist/commands/label.d.ts.map +1 -0
  35. package/dist/commands/label.js +67 -0
  36. package/dist/commands/label.js.map +1 -0
  37. package/dist/commands/models.d.ts.map +1 -1
  38. package/dist/commands/models.js +2 -1
  39. package/dist/commands/models.js.map +1 -1
  40. package/dist/commands/recode.d.ts +3 -0
  41. package/dist/commands/recode.d.ts.map +1 -0
  42. package/dist/commands/recode.js +60 -0
  43. package/dist/commands/recode.js.map +1 -0
  44. package/dist/commands/reindex.d.ts.map +1 -1
  45. package/dist/commands/reindex.js +19 -7
  46. package/dist/commands/reindex.js.map +1 -1
  47. package/dist/commands/rerun.d.ts +3 -0
  48. package/dist/commands/rerun.d.ts.map +1 -0
  49. package/dist/commands/rerun.js +91 -0
  50. package/dist/commands/rerun.js.map +1 -0
  51. package/dist/commands/search.d.ts.map +1 -1
  52. package/dist/commands/search.js +12 -1
  53. package/dist/commands/search.js.map +1 -1
  54. package/dist/commands/secrets.d.ts +3 -0
  55. package/dist/commands/secrets.d.ts.map +1 -0
  56. package/dist/commands/secrets.js +145 -0
  57. package/dist/commands/secrets.js.map +1 -0
  58. package/dist/commands/setup.d.ts.map +1 -1
  59. package/dist/commands/setup.js +95 -2
  60. package/dist/commands/setup.js.map +1 -1
  61. package/dist/commands/setupItem.d.ts +26 -0
  62. package/dist/commands/setupItem.d.ts.map +1 -0
  63. package/dist/commands/setupItem.js +145 -0
  64. package/dist/commands/setupItem.js.map +1 -0
  65. package/dist/commands/status.d.ts.map +1 -1
  66. package/dist/commands/status.js +2 -1
  67. package/dist/commands/status.js.map +1 -1
  68. package/dist/commands/transcribe.d.ts.map +1 -1
  69. package/dist/commands/transcribe.js +32 -4
  70. package/dist/commands/transcribe.js.map +1 -1
  71. package/dist/commands/validate.d.ts.map +1 -1
  72. package/dist/commands/validate.js +29 -1
  73. package/dist/commands/validate.js.map +1 -1
  74. package/dist/commands/watch.d.ts.map +1 -1
  75. package/dist/commands/watch.js +53 -6
  76. package/dist/commands/watch.js.map +1 -1
  77. package/dist/engine.d.ts +23 -0
  78. package/dist/engine.d.ts.map +1 -0
  79. package/dist/engine.js +32 -0
  80. package/dist/engine.js.map +1 -0
  81. package/dist/errors.d.ts +5 -1
  82. package/dist/errors.d.ts.map +1 -1
  83. package/dist/errors.js +6 -0
  84. package/dist/errors.js.map +1 -1
  85. package/dist/exporters/pdf.d.ts.map +1 -1
  86. package/dist/exporters/pdf.js +2 -1
  87. package/dist/exporters/pdf.js.map +1 -1
  88. package/dist/exporters/prov.d.ts +11 -0
  89. package/dist/exporters/prov.d.ts.map +1 -0
  90. package/dist/exporters/prov.js +151 -0
  91. package/dist/exporters/prov.js.map +1 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +6 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/legacy_client.d.ts.map +1 -1
  96. package/dist/legacy_client.js +2 -1
  97. package/dist/legacy_client.js.map +1 -1
  98. package/dist/lib/agreement.d.ts +77 -0
  99. package/dist/lib/agreement.d.ts.map +1 -0
  100. package/dist/lib/agreement.js +261 -0
  101. package/dist/lib/agreement.js.map +1 -0
  102. package/dist/lib/artifacts.d.ts +35 -2
  103. package/dist/lib/artifacts.d.ts.map +1 -1
  104. package/dist/lib/artifacts.js +158 -29
  105. package/dist/lib/artifacts.js.map +1 -1
  106. package/dist/lib/backup.d.ts +37 -0
  107. package/dist/lib/backup.d.ts.map +1 -0
  108. package/dist/lib/backup.js +57 -0
  109. package/dist/lib/backup.js.map +1 -0
  110. package/dist/lib/childEnv.d.ts +13 -0
  111. package/dist/lib/childEnv.d.ts.map +1 -0
  112. package/dist/lib/childEnv.js +45 -0
  113. package/dist/lib/childEnv.js.map +1 -0
  114. package/dist/lib/config.d.ts +3 -0
  115. package/dist/lib/config.d.ts.map +1 -1
  116. package/dist/lib/config.js.map +1 -1
  117. package/dist/lib/doctor.d.ts +3 -0
  118. package/dist/lib/doctor.d.ts.map +1 -1
  119. package/dist/lib/doctor.js +24 -1
  120. package/dist/lib/doctor.js.map +1 -1
  121. package/dist/lib/events.d.ts +44 -1
  122. package/dist/lib/events.d.ts.map +1 -1
  123. package/dist/lib/events.js +55 -2
  124. package/dist/lib/events.js.map +1 -1
  125. package/dist/lib/importTranscript.d.ts +16 -0
  126. package/dist/lib/importTranscript.d.ts.map +1 -0
  127. package/dist/lib/importTranscript.js +94 -0
  128. package/dist/lib/importTranscript.js.map +1 -0
  129. package/dist/lib/ingest.d.ts.map +1 -1
  130. package/dist/lib/ingest.js +12 -6
  131. package/dist/lib/ingest.js.map +1 -1
  132. package/dist/lib/journal.d.ts +13 -4
  133. package/dist/lib/journal.d.ts.map +1 -1
  134. package/dist/lib/journal.js +53 -16
  135. package/dist/lib/journal.js.map +1 -1
  136. package/dist/lib/legacyNative.d.ts +17 -0
  137. package/dist/lib/legacyNative.d.ts.map +1 -0
  138. package/dist/lib/legacyNative.js +38 -0
  139. package/dist/lib/legacyNative.js.map +1 -0
  140. package/dist/lib/migrate.d.ts.map +1 -1
  141. package/dist/lib/migrate.js +9 -2
  142. package/dist/lib/migrate.js.map +1 -1
  143. package/dist/lib/nativeRuntime.d.ts +31 -0
  144. package/dist/lib/nativeRuntime.d.ts.map +1 -1
  145. package/dist/lib/nativeRuntime.js +38 -0
  146. package/dist/lib/nativeRuntime.js.map +1 -1
  147. package/dist/lib/pathSafe.d.ts +8 -0
  148. package/dist/lib/pathSafe.d.ts.map +1 -0
  149. package/dist/lib/pathSafe.js +12 -0
  150. package/dist/lib/pathSafe.js.map +1 -0
  151. package/dist/lib/provisionNative.d.ts.map +1 -1
  152. package/dist/lib/provisionNative.js +7 -3
  153. package/dist/lib/provisionNative.js.map +1 -1
  154. package/dist/lib/queue.d.ts +25 -0
  155. package/dist/lib/queue.d.ts.map +1 -1
  156. package/dist/lib/queue.js +70 -3
  157. package/dist/lib/queue.js.map +1 -1
  158. package/dist/lib/reads.d.ts +24 -0
  159. package/dist/lib/reads.d.ts.map +1 -0
  160. package/dist/lib/reads.js +115 -0
  161. package/dist/lib/reads.js.map +1 -0
  162. package/dist/lib/recode.d.ts +19 -0
  163. package/dist/lib/recode.d.ts.map +1 -0
  164. package/dist/lib/recode.js +43 -0
  165. package/dist/lib/recode.js.map +1 -0
  166. package/dist/lib/redact.d.ts +7 -0
  167. package/dist/lib/redact.d.ts.map +1 -0
  168. package/dist/lib/redact.js +45 -0
  169. package/dist/lib/redact.js.map +1 -0
  170. package/dist/lib/rerun.d.ts +51 -0
  171. package/dist/lib/rerun.d.ts.map +1 -0
  172. package/dist/lib/rerun.js +160 -0
  173. package/dist/lib/rerun.js.map +1 -0
  174. package/dist/lib/retrieve.d.ts +8 -4
  175. package/dist/lib/retrieve.d.ts.map +1 -1
  176. package/dist/lib/retrieve.js +14 -3
  177. package/dist/lib/retrieve.js.map +1 -1
  178. package/dist/lib/saturate.js +3 -3
  179. package/dist/lib/saturate.js.map +1 -1
  180. package/dist/lib/schemas.generated.d.ts.map +1 -1
  181. package/dist/lib/schemas.generated.js +28 -0
  182. package/dist/lib/schemas.generated.js.map +1 -1
  183. package/dist/lib/secrets.d.ts +158 -0
  184. package/dist/lib/secrets.d.ts.map +1 -0
  185. package/dist/lib/secrets.js +514 -0
  186. package/dist/lib/secrets.js.map +1 -0
  187. package/dist/lib/seed.d.ts +5 -0
  188. package/dist/lib/seed.d.ts.map +1 -1
  189. package/dist/lib/seed.js +15 -2
  190. package/dist/lib/seed.js.map +1 -1
  191. package/dist/lib/seedResolve.d.ts +5 -0
  192. package/dist/lib/seedResolve.d.ts.map +1 -1
  193. package/dist/lib/seedResolve.js +12 -3
  194. package/dist/lib/seedResolve.js.map +1 -1
  195. package/dist/lib/session.d.ts +14 -0
  196. package/dist/lib/session.d.ts.map +1 -1
  197. package/dist/lib/session.js +53 -4
  198. package/dist/lib/session.js.map +1 -1
  199. package/dist/lib/sessionId.d.ts +9 -0
  200. package/dist/lib/sessionId.d.ts.map +1 -0
  201. package/dist/lib/sessionId.js +37 -0
  202. package/dist/lib/sessionId.js.map +1 -0
  203. package/dist/lib/setup.d.ts +9 -0
  204. package/dist/lib/setup.d.ts.map +1 -1
  205. package/dist/lib/setup.js +97 -29
  206. package/dist/lib/setup.js.map +1 -1
  207. package/dist/lib/setupItem.d.ts +99 -0
  208. package/dist/lib/setupItem.d.ts.map +1 -0
  209. package/dist/lib/setupItem.js +262 -0
  210. package/dist/lib/setupItem.js.map +1 -0
  211. package/dist/lib/setupWizard.d.ts +53 -0
  212. package/dist/lib/setupWizard.d.ts.map +1 -0
  213. package/dist/lib/setupWizard.js +347 -0
  214. package/dist/lib/setupWizard.js.map +1 -0
  215. package/dist/lib/snap.d.ts.map +1 -1
  216. package/dist/lib/snap.js +5 -0
  217. package/dist/lib/snap.js.map +1 -1
  218. package/dist/lib/speakers.d.ts +41 -0
  219. package/dist/lib/speakers.d.ts.map +1 -0
  220. package/dist/lib/speakers.js +78 -0
  221. package/dist/lib/speakers.js.map +1 -0
  222. package/dist/lib/status.d.ts.map +1 -1
  223. package/dist/lib/status.js +21 -0
  224. package/dist/lib/status.js.map +1 -1
  225. package/dist/lib/stdin.d.ts +5 -0
  226. package/dist/lib/stdin.d.ts.map +1 -0
  227. package/dist/lib/stdin.js +12 -0
  228. package/dist/lib/stdin.js.map +1 -0
  229. package/dist/lib/transcribeNative.d.ts +4 -9
  230. package/dist/lib/transcribeNative.d.ts.map +1 -1
  231. package/dist/lib/transcribeNative.js +11 -26
  232. package/dist/lib/transcribeNative.js.map +1 -1
  233. package/dist/lib/userConfig.d.ts +22 -0
  234. package/dist/lib/userConfig.d.ts.map +1 -0
  235. package/dist/lib/userConfig.js +67 -0
  236. package/dist/lib/userConfig.js.map +1 -0
  237. package/dist/lib/validate.d.ts +18 -0
  238. package/dist/lib/validate.d.ts.map +1 -1
  239. package/dist/lib/validate.js +71 -1
  240. package/dist/lib/validate.js.map +1 -1
  241. package/dist/lib/version.d.ts +30 -0
  242. package/dist/lib/version.d.ts.map +1 -0
  243. package/dist/lib/version.js +65 -0
  244. package/dist/lib/version.js.map +1 -0
  245. package/dist/llm/adapter.d.ts +5 -0
  246. package/dist/llm/adapter.d.ts.map +1 -1
  247. package/dist/llm/adapter.js +27 -8
  248. package/dist/llm/adapter.js.map +1 -1
  249. package/dist/llm/http.d.ts +22 -1
  250. package/dist/llm/http.d.ts.map +1 -1
  251. package/dist/llm/http.js +52 -30
  252. package/dist/llm/http.js.map +1 -1
  253. package/dist/llm/providers/anthropic.d.ts.map +1 -1
  254. package/dist/llm/providers/anthropic.js +6 -9
  255. package/dist/llm/providers/anthropic.js.map +1 -1
  256. package/dist/llm/providers/ollama.d.ts.map +1 -1
  257. package/dist/llm/providers/ollama.js +8 -7
  258. package/dist/llm/providers/ollama.js.map +1 -1
  259. package/dist/llm/providers/openai_compatible.d.ts.map +1 -1
  260. package/dist/llm/providers/openai_compatible.js +2 -7
  261. package/dist/llm/providers/openai_compatible.js.map +1 -1
  262. package/dist/logging.d.ts.map +1 -1
  263. package/dist/logging.js +3 -1
  264. package/dist/logging.js.map +1 -1
  265. package/dist/loops/embed_worker.d.ts +3 -0
  266. package/dist/loops/embed_worker.d.ts.map +1 -1
  267. package/dist/loops/embed_worker.js +11 -4
  268. package/dist/loops/embed_worker.js.map +1 -1
  269. package/dist/loops/ingest_watcher.d.ts.map +1 -1
  270. package/dist/loops/ingest_watcher.js +6 -3
  271. package/dist/loops/ingest_watcher.js.map +1 -1
  272. package/dist/loops/legacy_worker.d.ts +28 -1
  273. package/dist/loops/legacy_worker.d.ts.map +1 -1
  274. package/dist/loops/legacy_worker.js +91 -10
  275. package/dist/loops/legacy_worker.js.map +1 -1
  276. package/dist/loops/supervisor.d.ts +7 -0
  277. package/dist/loops/supervisor.d.ts.map +1 -1
  278. package/dist/loops/supervisor.js +17 -2
  279. package/dist/loops/supervisor.js.map +1 -1
  280. package/dist/loops/synthesis.d.ts.map +1 -1
  281. package/dist/loops/synthesis.js +15 -0
  282. package/dist/loops/synthesis.js.map +1 -1
  283. package/dist/loops/transcribe_worker.d.ts +3 -0
  284. package/dist/loops/transcribe_worker.d.ts.map +1 -1
  285. package/dist/loops/transcribe_worker.js +15 -7
  286. package/dist/loops/transcribe_worker.js.map +1 -1
  287. package/dist/output.d.ts +13 -1
  288. package/dist/output.d.ts.map +1 -1
  289. package/dist/output.js +27 -6
  290. package/dist/output.js.map +1 -1
  291. package/dist/render/glyphs.d.ts +30 -0
  292. package/dist/render/glyphs.d.ts.map +1 -0
  293. package/dist/render/glyphs.js +38 -0
  294. package/dist/render/glyphs.js.map +1 -0
  295. package/dist/render/human.d.ts +22 -0
  296. package/dist/render/human.d.ts.map +1 -0
  297. package/dist/render/human.js +62 -0
  298. package/dist/render/human.js.map +1 -0
  299. package/dist/router.d.ts.map +1 -1
  300. package/dist/router.js +32 -4
  301. package/dist/router.js.map +1 -1
  302. package/dist/transcriber_client.d.ts.map +1 -1
  303. package/dist/transcriber_client.js +2 -1
  304. package/dist/transcriber_client.js.map +1 -1
  305. package/package.json +12 -5
  306. package/templates/AGENTS.md +1 -1
  307. package/templates/config.toml +6 -1
  308. package/transcriber/app/diarization.py +36 -6
  309. package/transcriber/app/legacy_cli.py +90 -0
  310. package/transcriber/app/pipeline.py +13 -7
  311. package/transcriber/app/prosody.py +5 -0
  312. package/transcriber/app/transcribe_cli.py +15 -1
  313. package/transcriber/app/vad.py +82 -11
@@ -1,8 +1,7 @@
1
1
  import { existsSync, mkdirSync, readdirSync, rmSync, writeFileSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
- import Database from 'better-sqlite3';
4
3
  import { CompostError } from '../errors.js';
5
- import { artifactId, emitCreate, emitEndorse, openSeedEvents } from './events.js';
4
+ import { artifactId, emitCreate, emitEndorse, emitReject, emitUpdate, openReadonlyEvents, openSeedEvents, } from './events.js';
6
5
  // ---------------------------------------------------------------- helpers
7
6
  /** Next sequential H-NNN in highlights/, scanning existing files. */
8
7
  function nextHighlightId(dir) {
@@ -96,6 +95,7 @@ export function createHighlight(seedPath, input) {
96
95
  artifactKind: 'highlight',
97
96
  initialState,
98
97
  author: input.author,
98
+ ...(input.inputs !== undefined ? { inputs: input.inputs } : {}),
99
99
  });
100
100
  return { id, artifact_id: sha, path, event_id };
101
101
  }
@@ -122,6 +122,7 @@ export function createCode(seedPath, input) {
122
122
  artifactKind: 'code',
123
123
  initialState,
124
124
  author: input.author,
125
+ ...(input.inputs !== undefined ? { inputs: input.inputs } : {}),
125
126
  });
126
127
  return { id, artifact_id: sha, path, event_id };
127
128
  }
@@ -149,6 +150,7 @@ export function createTheme(seedPath, input) {
149
150
  artifactKind: 'theme',
150
151
  initialState,
151
152
  author: input.author,
153
+ ...(input.inputs !== undefined ? { inputs: input.inputs } : {}),
152
154
  });
153
155
  return { id, artifact_id: sha, path, event_id };
154
156
  }
@@ -168,47 +170,63 @@ export function tryResolveHumanRef(db, ref) {
168
170
  if (!HUMAN_REF_RE.test(ref))
169
171
  return undefined;
170
172
  return db
171
- .prepare("SELECT id, artifact_kind, artifact_id FROM events WHERE action = 'create' AND json_extract(payload, '$.id') = ? ORDER BY ts, rowid LIMIT 1")
173
+ .prepare("SELECT id, artifact_kind, artifact_id, actor_id FROM events WHERE action = 'create' AND json_extract(payload, '$.id') = ? ORDER BY ts, rowid LIMIT 1")
172
174
  .get(ref);
173
175
  }
176
+ /**
177
+ * Resolve an artifact ref (human id, full/prefix SHA, or `latest:<kind>=<seed>`)
178
+ * to its create event row. Shared by endorse/reject/update so every mutation
179
+ * path accepts the same refs `compost create`/blame print (#168). Throws
180
+ * INVALID_INPUT only when the ref is neither human-, SHA-, nor latest-shaped;
181
+ * returns undefined when it's well-shaped but matches no create event (callers
182
+ * raise a clearer FILE_NOT_FOUND).
183
+ */
184
+ function findCreateEvent(db, artifactRef) {
185
+ const human = tryResolveHumanRef(db, artifactRef);
186
+ if (human !== undefined)
187
+ return human;
188
+ const latest = /^latest:(\w+)=(.+)$/.exec(artifactRef);
189
+ if (latest) {
190
+ const kind = latest[1];
191
+ return db
192
+ .prepare("SELECT id, artifact_kind, artifact_id, actor_id FROM events WHERE artifact_kind = ? AND action = 'create' ORDER BY ts DESC, rowid DESC LIMIT 1")
193
+ .get(kind);
194
+ }
195
+ if (/^[a-f0-9]{8,64}$/i.test(artifactRef)) {
196
+ return db
197
+ .prepare("SELECT id, artifact_kind, artifact_id, actor_id FROM events WHERE artifact_id LIKE ? AND action = 'create' ORDER BY ts, rowid LIMIT 1")
198
+ .get(`${artifactRef.toLowerCase()}%`);
199
+ }
200
+ if (!HUMAN_REF_RE.test(artifactRef)) {
201
+ // Not human-shaped, not SHA-shaped, not latest: → user typed something
202
+ // unparseable. (Human-shaped refs that didn't resolve return undefined so
203
+ // callers raise FILE_NOT_FOUND with a clearer message.)
204
+ throw new CompostError('INVALID_INPUT', `Invalid artifact ref "${artifactRef}". Use the id from \`compost create\` (e.g. C-slug, H-001), a SHA256 prefix, or latest:<kind>=<seed>.`);
205
+ }
206
+ return undefined;
207
+ }
208
+ /** Latest event id on an artifact's timeline — the parent a new reject/update
209
+ * event chains to (vs endorse, which chains to create for #168 round-tripping). */
210
+ function latestEventId(db, artifactId) {
211
+ const row = db
212
+ .prepare('SELECT id FROM events WHERE artifact_id = ? ORDER BY ts DESC, rowid DESC LIMIT 1')
213
+ .get(artifactId);
214
+ return row?.id;
215
+ }
174
216
  /**
175
217
  * Resolve an artifact ref (human id, full/prefix SHA, or `latest:<kind>=<seed>`)
176
218
  * to its create event, then emit a researcher endorse chaining it. Mirrors
177
219
  * blame's ref resolution so `compost endorse <id-from-create>` works (#168).
178
220
  */
179
221
  export function endorseArtifact(seedPath, artifactRef, researcherId) {
180
- const eventsDb = join(seedPath, '.compost', 'events.sqlite');
181
- if (!existsSync(eventsDb)) {
182
- throw new CompostError('FILE_NOT_FOUND', `No events.sqlite in seed; nothing to endorse.`);
183
- }
184
- const db = new Database(eventsDb, { readonly: true, fileMustExist: true });
222
+ const db = openReadonlyEvents(seedPath, 'No events.sqlite in seed; nothing to endorse.');
185
223
  let createRow;
186
224
  // Same (artifact_id, researcher) endorse already on the timeline → idempotent
187
225
  // no-op (#169). Looked up alongside the create row so we hold the read-only
188
226
  // connection once and avoid a stat/open dance.
189
227
  let existingEndorse;
190
228
  try {
191
- createRow = tryResolveHumanRef(db, artifactRef);
192
- if (createRow === undefined) {
193
- const latest = /^latest:(\w+)=(.+)$/.exec(artifactRef);
194
- if (latest) {
195
- const kind = latest[1];
196
- createRow = db
197
- .prepare("SELECT id, artifact_kind, artifact_id FROM events WHERE artifact_kind = ? AND action = 'create' ORDER BY ts DESC, rowid DESC LIMIT 1")
198
- .get(kind);
199
- }
200
- else if (/^[a-f0-9]{8,64}$/i.test(artifactRef)) {
201
- createRow = db
202
- .prepare("SELECT id, artifact_kind, artifact_id FROM events WHERE artifact_id LIKE ? AND action = 'create' ORDER BY ts, rowid LIMIT 1")
203
- .get(`${artifactRef.toLowerCase()}%`);
204
- }
205
- else if (!HUMAN_REF_RE.test(artifactRef)) {
206
- // Not human-shaped, not SHA-shaped, not latest: → user typed something
207
- // unparseable. (Human-shaped refs that didn't resolve fall through to
208
- // the FILE_NOT_FOUND below with a clearer message.)
209
- throw new CompostError('INVALID_INPUT', `Invalid artifact ref "${artifactRef}". Use the id from \`compost create\` (e.g. C-slug, H-001), a SHA256 prefix, or latest:<kind>=<seed>.`);
210
- }
211
- }
229
+ createRow = findCreateEvent(db, artifactRef);
212
230
  if (createRow !== undefined) {
213
231
  existingEndorse = db
214
232
  .prepare("SELECT id, parent_event FROM events WHERE artifact_id = ? AND action = 'endorse' AND actor_id = ? ORDER BY ts, rowid LIMIT 1")
@@ -221,6 +239,14 @@ export function endorseArtifact(seedPath, artifactRef, researcherId) {
221
239
  if (createRow === undefined) {
222
240
  throw new CompostError('FILE_NOT_FOUND', `No create event found for ref "${artifactRef}".`);
223
241
  }
242
+ // Refuse a self-endorse: the actor who created an artifact can't also be the
243
+ // one who endorses it (#236, defense-in-depth). The [draft]→endorsed gate is a
244
+ // human approving an AI/agent suggestion; an agent endorsing under the same
245
+ // actor_id it created with would collapse the gate. The endorsing identity is
246
+ // bound to $COMPOST_USER server-side (commands/endorse.ts), not a tool arg.
247
+ if (researcherId === createRow.actor_id) {
248
+ throw new CompostError('INVALID_INPUT', `Refusing to self-endorse: "${researcherId}" is the actor that created this artifact. Endorsement is a second actor approving it — set COMPOST_USER (or pass --researcher) to a human reviewer distinct from the author.`);
249
+ }
224
250
  if (existingEndorse !== undefined) {
225
251
  return {
226
252
  artifact_id: createRow.artifact_id,
@@ -247,6 +273,109 @@ export function endorseArtifact(seedPath, artifactRef, researcherId) {
247
273
  events.close();
248
274
  }
249
275
  }
276
+ /**
277
+ * Resolve an artifact ref to its create event, then emit a researcher reject
278
+ * chaining the artifact's latest event. Reject archives (current_state is
279
+ * preserved for audit) — the three-actor model's "delete", where nothing is
280
+ * ever truly removed. Idempotent: a second reject by the same researcher is a
281
+ * no-op returning the existing reject.
282
+ */
283
+ export function rejectArtifact(seedPath, artifactRef, researcherId, note) {
284
+ const db = openReadonlyEvents(seedPath, 'No events.sqlite in seed; nothing to reject.');
285
+ let resolved;
286
+ let existingReject;
287
+ try {
288
+ const createRow = findCreateEvent(db, artifactRef);
289
+ if (createRow !== undefined) {
290
+ existingReject = db
291
+ .prepare("SELECT id, parent_event FROM events WHERE artifact_id = ? AND action = 'reject' AND actor_id = ? ORDER BY ts, rowid LIMIT 1")
292
+ .get(createRow.artifact_id, researcherId);
293
+ resolved = {
294
+ createRow,
295
+ parentEventId: latestEventId(db, createRow.artifact_id) ?? createRow.id,
296
+ };
297
+ }
298
+ }
299
+ finally {
300
+ db.close();
301
+ }
302
+ if (resolved === undefined) {
303
+ throw new CompostError('FILE_NOT_FOUND', `No create event found for ref "${artifactRef}".`);
304
+ }
305
+ const { createRow, parentEventId } = resolved;
306
+ if (existingReject !== undefined) {
307
+ return {
308
+ artifact_id: createRow.artifact_id,
309
+ reject_event_id: existingReject.id,
310
+ parent_event_id: existingReject.parent_event ?? createRow.id,
311
+ already_rejected: true,
312
+ };
313
+ }
314
+ const events = openSeedEvents(seedPath);
315
+ try {
316
+ const reject = emitReject(events, {
317
+ artifactKind: createRow.artifact_kind,
318
+ artifactId: createRow.artifact_id,
319
+ parentEventId,
320
+ researcherId,
321
+ ...(note !== undefined ? { note } : {}),
322
+ });
323
+ return {
324
+ artifact_id: createRow.artifact_id,
325
+ reject_event_id: reject.id,
326
+ parent_event_id: parentEventId,
327
+ };
328
+ }
329
+ finally {
330
+ events.close();
331
+ }
332
+ }
333
+ /**
334
+ * Resolve an artifact ref, then emit a field-level update chaining the latest
335
+ * event. The event log records `{ field, before, after }` so blame shows what
336
+ * changed. `before` is best-effort context for the audit trail; the reducer
337
+ * applies only `after`.
338
+ */
339
+ export function updateArtifact(seedPath, artifactRef, patch, author) {
340
+ const db = openReadonlyEvents(seedPath, 'No events.sqlite in seed; nothing to update.');
341
+ let resolved;
342
+ try {
343
+ const createRow = findCreateEvent(db, artifactRef);
344
+ if (createRow !== undefined) {
345
+ resolved = {
346
+ createRow,
347
+ parentEventId: latestEventId(db, createRow.artifact_id) ?? createRow.id,
348
+ };
349
+ }
350
+ }
351
+ finally {
352
+ db.close();
353
+ }
354
+ if (resolved === undefined) {
355
+ throw new CompostError('FILE_NOT_FOUND', `No create event found for ref "${artifactRef}".`);
356
+ }
357
+ const { createRow, parentEventId } = resolved;
358
+ const events = openSeedEvents(seedPath);
359
+ try {
360
+ const update = emitUpdate(events, {
361
+ artifactKind: createRow.artifact_kind,
362
+ artifactId: createRow.artifact_id,
363
+ parentEventId,
364
+ author,
365
+ field: patch.field,
366
+ before: patch.before,
367
+ after: patch.after,
368
+ });
369
+ return {
370
+ artifact_id: createRow.artifact_id,
371
+ update_event_id: update.id,
372
+ parent_event_id: parentEventId,
373
+ };
374
+ }
375
+ finally {
376
+ events.close();
377
+ }
378
+ }
250
379
  /** Read the configured researcher identity: COMPOST_USER env, else fallback. */
251
380
  export function defaultResearcherId() {
252
381
  return process.env.COMPOST_USER || process.env.USER || 'researcher';
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/lib/artifacts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../src/lib/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACnF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAIhC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAGL,UAAU,EACV,UAAU,EACV,WAAW,EACX,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,cAAc,GACf,MAAM,aAAa,CAAA;AASpB,2EAA2E;AAE3E,qEAAqE;AACrE,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,GAAG,GAAG,CAAC,CAAA;IACX,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACjC,IAAI,CAAC;gBAAE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IACD,OAAO,KAAK,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;AAChD,CAAC;AAED,iDAAiD;AACjD,SAAS,IAAI,CAAC,IAAY;IACxB,MAAM,CAAC,GAAG,IAAI;SACX,WAAW,EAAE;SACb,IAAI,EAAE;SACN,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC1B,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAChB,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,qCAAqC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAC5D,CAAA;IACH,OAAO,CAAC,CAAA;AACV,CAAC;AAED,SAAS,WAAW,CAAC,MAA+B;IAClD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACnF,OAAO,QAAQ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAA;AAC1C,CAAC;AAED,SAAS,eAAe,CAAC,CAAU;IACjC,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAA;IACtE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5B,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;aACzC,IAAI,CAAC,IAAI,CAAC,CAAA;QACb,OAAO,KAAK,KAAK,IAAI,CAAA;IACvB,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;AAClB,CAAC;AAED,0EAA0E;AAE1E;;;;;;GAMG;AACH,SAAS,mBAAmB,CAC1B,QAAgB,EAChB,IAAY,EACZ,IAAY,EACZ,KAKC;IAED,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACjC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,CAAA;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA,CAAC,6BAA6B;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,2EAA2E;QAC7E,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAWD,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAA2B;IAC3E,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;IACxC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAE/B,6EAA6E;IAC7E,MAAM,YAAY,GAAG;QACnB,EAAE;QACF,IAAI,EAAE,WAAW;QACjB,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,IAAI,EAAE,KAAK,CAAC,IAAI;KACjB,CAAA;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC;QAC1B,EAAE;QACF,UAAU,EAAE,KAAK,CAAC,SAAS;QAC3B,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;KACnF,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAA;IAErB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACzD,YAAY,EAAE,WAAW;QACzB,YAAY;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,CAAA;IACF,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AACjD,CAAC;AAUD,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,KAAsB;IACjE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;IACtC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE,CAAA;IACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;IAErC,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAA;IACvF,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC;QAC1B,EAAE;QACF,IAAI;QACJ,QAAQ;QACR,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;KACnF,CAAC,KAAK,KAAK,CAAC,UAAU,IAAI,CAAA;IAE3B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAA;IACpC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,SAAS,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAA;IACnF,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACzD,YAAY,EAAE,MAAM;QACpB,YAAY;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,CAAA;IACF,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AACjD,CAAC;AAUD,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,KAAuB;IACnE,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAA;IACjD,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC7B,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;IAE/B,MAAM,YAAY,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;IAC/E,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IAC/B,MAAM,IAAI,GAAG,GAAG,WAAW,CAAC;QAC1B,EAAE;QACF,IAAI;QACJ,KAAK;QACL,WAAW,EAAE,GAAG;QAChB,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;KACnF,CAAC,OAAO,KAAK,OAAO,KAAK,CAAC,OAAO,IAAI,CAAA;IAEtC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,KAAK,CAAC,CAAA;IACpC,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,YAAY,CAAC,eAAe,EAAE,UAAU,EAAE,uBAAuB,IAAI,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE;QACzD,YAAY,EAAE,OAAO;QACrB,YAAY;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC,CAAA;IACF,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;AACjD,CAAC;AAWD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAA;AAEpD;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAqB,EACrB,GAAW;IAEX,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,OAAO,EAAE;SACN,OAAO,CACN,sJAAsJ,CACvJ;SACA,GAAG,CAAC,GAAG,CAA2D,CAAA;AACvE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,eAAe,CACtB,EAAqB,EACrB,WAAmB;IAEnB,MAAM,KAAK,GAAG,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAA;IACrC,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACtD,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAW,CAAA;QAChC,OAAO,EAAE;aACN,OAAO,CACN,gJAAgJ,CACjJ;aACA,GAAG,CAAC,IAAI,CAA2D,CAAA;IACxE,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE;aACN,OAAO,CACN,uIAAuI,CACxI;aACA,GAAG,CAAC,GAAG,WAAW,CAAC,WAAW,EAAE,GAAG,CAEzB,CAAA;IACf,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;QACpC,uEAAuE;QACvE,0EAA0E;QAC1E,wDAAwD;QACxD,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,yBAAyB,WAAW,uGAAuG,CAC5I,CAAA;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;mFACmF;AACnF,SAAS,aAAa,CAAC,EAAqB,EAAE,UAAkB;IAC9D,MAAM,GAAG,GAAG,EAAE;SACX,OAAO,CAAC,kFAAkF,CAAC;SAC3F,GAAG,CAAC,UAAU,CAA+B,CAAA;IAChD,OAAO,GAAG,EAAE,EAAE,CAAA;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,WAAmB,EACnB,YAAoB;IAOpB,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,+CAA+C,CAAC,CAAA;IACxF,IAAI,SAAiE,CAAA;IACrE,8EAA8E;IAC9E,4EAA4E;IAC5E,+CAA+C;IAC/C,IAAI,eAAwE,CAAA;IAC5E,IAAI,CAAC;QACH,SAAS,GAAG,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAE5C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,eAAe,GAAG,EAAE;iBACjB,OAAO,CACN,8HAA8H,CAC/H;iBACA,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,YAAY,CAE7B,CAAA;QACf,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,kCAAkC,WAAW,IAAI,CAAC,CAAA;IAC7F,CAAC;IAED,6EAA6E;IAC7E,+EAA+E;IAC/E,4EAA4E;IAC5E,8EAA8E;IAC9E,4EAA4E;IAC5E,IAAI,YAAY,KAAK,SAAS,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,YAAY,CACpB,eAAe,EACf,8BAA8B,YAAY,+KAA+K,CAC1N,CAAA;IACH,CAAC;IAED,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;QAClC,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,gBAAgB,EAAE,eAAe,CAAC,EAAE;YACpC,eAAe,EAAE,eAAe,CAAC,YAAY,IAAI,SAAS,CAAC,EAAE;YAC7D,gBAAgB,EAAE,IAAI;SACvB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE;YAClC,YAAY,EAAE,SAAS,CAAC,aAAa;YACrC,UAAU,EAAE,SAAS,CAAC,WAAW;YACjC,aAAa,EAAE,SAAS,CAAC,EAAE;YAC3B,YAAY;SACb,CAAC,CAAA;QACF,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,gBAAgB,EAAE,OAAO,CAAC,EAAE;YAC5B,eAAe,EAAE,SAAS,CAAC,EAAE;SAC9B,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,WAAmB,EACnB,YAAoB,EACpB,IAAa;IAOb,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,8CAA8C,CAAC,CAAA;IACvF,IAAI,QAES,CAAA;IACb,IAAI,cAAuE,CAAA;IAC3E,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,cAAc,GAAG,EAAE;iBAChB,OAAO,CACN,6HAA6H,CAC9H;iBACA,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,YAAY,CAE7B,CAAA;YACb,QAAQ,GAAG;gBACT,SAAS;gBACT,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,EAAE;aACxE,CAAA;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IAED,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,kCAAkC,WAAW,IAAI,CAAC,CAAA;IAC7F,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAA;IAC7C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,eAAe,EAAE,cAAc,CAAC,EAAE;YAClC,eAAe,EAAE,cAAc,CAAC,YAAY,IAAI,SAAS,CAAC,EAAE;YAC5D,gBAAgB,EAAE,IAAI;SACvB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE;YAChC,YAAY,EAAE,SAAS,CAAC,aAAa;YACrC,UAAU,EAAE,SAAS,CAAC,WAAW;YACjC,aAAa;YACb,YAAY;YACZ,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAA;QACF,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,eAAe,EAAE,MAAM,CAAC,EAAE;YAC1B,eAAe,EAAE,aAAa;SAC/B,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,WAAmB,EACnB,KAA0D,EAC1D,MAAc;IAEd,MAAM,EAAE,GAAG,kBAAkB,CAAC,QAAQ,EAAE,8CAA8C,CAAC,CAAA;IACvF,IAAI,QAES,CAAA;IACb,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,eAAe,CAAC,EAAE,EAAE,WAAW,CAAC,CAAA;QAClD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,QAAQ,GAAG;gBACT,SAAS;gBACT,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,SAAS,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC,EAAE;aACxE,CAAA;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAA;IACZ,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,kCAAkC,WAAW,IAAI,CAAC,CAAA;IAC7F,CAAC;IACD,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,QAAQ,CAAA;IAE7C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE;YAChC,YAAY,EAAE,SAAS,CAAC,aAAa;YACrC,UAAU,EAAE,SAAS,CAAC,WAAW;YACjC,aAAa;YACb,MAAM;YACN,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAA;QACF,OAAO;YACL,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,eAAe,EAAE,MAAM,CAAC,EAAE;YAC1B,eAAe,EAAE,aAAa;SAC/B,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,mBAAmB;IACjC,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,YAAY,CAAA;AACrE,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Back up a seed's canonical provenance (#236 readiness follow-up).
3
+ *
4
+ * `.compost/events.sqlite` is the append-only event log every artifact's lineage
5
+ * reduces from — it is NOT rebuildable (snapshots/markdown derive from it, never
6
+ * the reverse), yet it lives inside the per-seed `.compost/`, which is gitignored
7
+ * and excluded from backups-of-tracked-files. Losing it makes every claim
8
+ * unattributable. This produces a portable bundle (a copy of the ledger plus a
9
+ * human-auditable W3C PROV-O JSON-LD serialization) in the seed's `exports/`
10
+ * (which IS tracked/synced), so the provenance can travel with the seed.
11
+ *
12
+ * `verify: true` reads the ledger without writing — a cheap pre-move/pre-backup
13
+ * consistency check (a corrupt db throws here rather than silently producing a
14
+ * bad backup).
15
+ */
16
+ export interface BackupOptions {
17
+ /** Output directory. Defaults to `<seed>/exports`. */
18
+ outDir?: string;
19
+ /** Read-and-check only; write nothing. */
20
+ verify?: boolean;
21
+ /** ISO timestamp for the filenames (injected in tests; defaults to now). */
22
+ now?: () => Date;
23
+ }
24
+ export interface BackupResult {
25
+ seed: string;
26
+ events_db: string;
27
+ mode: 'backup' | 'verify';
28
+ /** Provenance graph counts — double as the consistency summary. */
29
+ entities: number;
30
+ activities: number;
31
+ agents: number;
32
+ /** Written paths (absent in verify mode). */
33
+ ledger_copy?: string;
34
+ provenance?: string;
35
+ }
36
+ export declare function backupSeed(seedPath: string, opts?: BackupOptions): BackupResult;
37
+ //# sourceMappingURL=backup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.d.ts","sourceRoot":"","sources":["../../src/lib/backup.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,aAAa;IAC5B,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzB,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,CAsDnF"}
@@ -0,0 +1,57 @@
1
+ import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import Database from 'better-sqlite3';
4
+ import { CompostError } from '../errors.js';
5
+ import { eventsToProvO } from '../exporters/prov.js';
6
+ import { eventsDbPath } from './events.js';
7
+ import { seedNameOf } from './seedResolve.js';
8
+ export function backupSeed(seedPath, opts = {}) {
9
+ const eventsDb = eventsDbPath(seedPath);
10
+ if (!existsSync(eventsDb)) {
11
+ throw new CompostError('FILE_NOT_FOUND', `No events.sqlite at ${eventsDb}. Nothing to back up yet — no artifacts have been created in this seed.`);
12
+ }
13
+ // Reading the full event log doubles as a consistency check: a corrupt ledger
14
+ // throws here instead of silently producing a bad backup.
15
+ const prov = eventsToProvO(eventsDb);
16
+ const seedName = seedNameOf(seedPath);
17
+ if (opts.verify === true) {
18
+ return {
19
+ seed: seedPath,
20
+ events_db: eventsDb,
21
+ mode: 'verify',
22
+ entities: prov.entities,
23
+ activities: prov.activities,
24
+ agents: prov.agents,
25
+ };
26
+ }
27
+ const outDir = opts.outDir ?? join(seedPath, 'exports');
28
+ mkdirSync(outDir, { recursive: true });
29
+ const stamp = (opts.now ?? (() => new Date()))().toISOString().replace(/[:.]/g, '-');
30
+ const ledgerCopy = join(outDir, `${seedName}-events-${stamp}.sqlite`);
31
+ const provenance = join(outDir, `${seedName}-provenance-${stamp}.jsonld`);
32
+ // A *consistent* snapshot, not a raw byte copy. `copyFileSync` of a live db can
33
+ // tear if `compost watch` is emitting events during the backup, and in WAL mode
34
+ // it omits un-checkpointed frames — exactly the way to corrupt the one ledger
35
+ // this feature exists to protect. `VACUUM INTO` takes a transactional read
36
+ // snapshot into a fresh file; it runs on the read-only connection and never
37
+ // mutates the source. Single-quotes in the path are escaped for the SQL literal.
38
+ const src = new Database(eventsDb, { readonly: true, fileMustExist: true });
39
+ try {
40
+ src.exec(`VACUUM INTO '${ledgerCopy.replace(/'/g, "''")}'`);
41
+ }
42
+ finally {
43
+ src.close();
44
+ }
45
+ writeFileSync(provenance, JSON.stringify(prov.document, null, 2), 'utf8');
46
+ return {
47
+ seed: seedPath,
48
+ events_db: eventsDb,
49
+ mode: 'backup',
50
+ entities: prov.entities,
51
+ activities: prov.activities,
52
+ agents: prov.agents,
53
+ ledger_copy: ledgerCopy,
54
+ provenance,
55
+ };
56
+ }
57
+ //# sourceMappingURL=backup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backup.js","sourceRoot":"","sources":["../../src/lib/backup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAErC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAwC7C,MAAM,UAAU,UAAU,CAAC,QAAgB,EAAE,OAAsB,EAAE;IACnE,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,YAAY,CACpB,gBAAgB,EAChB,uBAAuB,QAAQ,yEAAyE,CACzG,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,0DAA0D;IAC1D,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;IACpC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;IAErC,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,QAAQ;YACnB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAA;IACvD,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAA;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,WAAW,KAAK,SAAS,CAAC,CAAA;IACrE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,eAAe,KAAK,SAAS,CAAC,CAAA;IACzE,gFAAgF;IAChF,gFAAgF;IAChF,8EAA8E;IAC9E,2EAA2E;IAC3E,4EAA4E;IAC5E,iFAAiF;IACjF,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3E,IAAI,CAAC;QACH,GAAG,CAAC,IAAI,CAAC,gBAAgB,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7D,CAAC;YAAS,CAAC;QACT,GAAG,CAAC,KAAK,EAAE,CAAA;IACb,CAAC;IACD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAA;IAEzE,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,QAAQ;QACnB,IAAI,EAAE,QAAQ;QACd,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,WAAW,EAAE,UAAU;QACvB,UAAU;KACX,CAAA;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ /** True when `name` looks like it holds a secret and should not be inherited
2
+ * by a child that didn't explicitly ask for it. */
3
+ export declare function isSecretName(name: string): boolean;
4
+ /** A copy of `base` with secret-shaped names removed. Children still inherit
5
+ * PATH/HOME/locale/etc. — just not the user's tokens. */
6
+ export declare function scrubbedEnv(base?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
7
+ /**
8
+ * A scrubbed env with an explicit allow-list of secrets re-added. Use for a
9
+ * child that needs exactly one secret (e.g. the transcriber needs only
10
+ * `HUGGINGFACE_TOKEN`). Empty/undefined values are dropped.
11
+ */
12
+ export declare function childEnv(allow?: NodeJS.ProcessEnv, base?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
13
+ //# sourceMappingURL=childEnv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childEnv.d.ts","sourceRoot":"","sources":["../../src/lib/childEnv.ts"],"names":[],"mappings":"AAqBA;mDACmD;AACnD,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;yDACyD;AACzD,wBAAgB,WAAW,CAAC,IAAI,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAMpF;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CACtB,KAAK,GAAE,MAAM,CAAC,UAAe,EAC7B,IAAI,GAAE,MAAM,CAAC,UAAwB,GACpC,MAAM,CAAC,UAAU,CAMnB"}
@@ -0,0 +1,45 @@
1
+ import { KNOWN_SECRET_NAMES } from './secrets.js';
2
+ /**
3
+ * Least-privilege env for spawned child processes (#236 readiness follow-up).
4
+ *
5
+ * Startup autoload copies `~/.compost/secrets.env` into `process.env` so the
6
+ * parent resolves file-stored secrets everywhere. The side effect is that any
7
+ * child spawned with the inherited environment would also receive every secret
8
+ * — a `git commit`, a `docker info` probe, an `ollama pull`, or `pip install`
9
+ * has no need for `ANTHROPIC_API_KEY`/`OPENAI_API_KEY`/`HUGGINGFACE_TOKEN`.
10
+ * Pass `scrubbedEnv()` (no secrets) or `childEnv({ NAME: value })` (a scrubbed
11
+ * env plus exactly the secrets that child needs) instead of the raw inherit.
12
+ */
13
+ /** Suffix shapes that mark an env var as secret-bearing, so a future provider
14
+ * key (e.g. `MISTRAL_API_KEY`) is scrubbed without editing this list. */
15
+ const SECRET_SHAPE_RE = /(_TOKEN|_API_KEY|_SECRET_KEY|_ACCESS_KEY|_SECRET|_PASSWORD|_PASSWD|_CREDENTIALS?)$/i;
16
+ const KNOWN = new Set(KNOWN_SECRET_NAMES);
17
+ /** True when `name` looks like it holds a secret and should not be inherited
18
+ * by a child that didn't explicitly ask for it. */
19
+ export function isSecretName(name) {
20
+ return KNOWN.has(name) || SECRET_SHAPE_RE.test(name);
21
+ }
22
+ /** A copy of `base` with secret-shaped names removed. Children still inherit
23
+ * PATH/HOME/locale/etc. — just not the user's tokens. */
24
+ export function scrubbedEnv(base = process.env) {
25
+ const out = {};
26
+ for (const [k, v] of Object.entries(base)) {
27
+ if (!isSecretName(k))
28
+ out[k] = v;
29
+ }
30
+ return out;
31
+ }
32
+ /**
33
+ * A scrubbed env with an explicit allow-list of secrets re-added. Use for a
34
+ * child that needs exactly one secret (e.g. the transcriber needs only
35
+ * `HUGGINGFACE_TOKEN`). Empty/undefined values are dropped.
36
+ */
37
+ export function childEnv(allow = {}, base = process.env) {
38
+ const out = scrubbedEnv(base);
39
+ for (const [k, v] of Object.entries(allow)) {
40
+ if (v !== undefined && v !== '')
41
+ out[k] = v;
42
+ }
43
+ return out;
44
+ }
45
+ //# sourceMappingURL=childEnv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"childEnv.js","sourceRoot":"","sources":["../../src/lib/childEnv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD;;;;;;;;;;GAUG;AAEH;yEACyE;AACzE,MAAM,eAAe,GACnB,qFAAqF,CAAA;AAEvF,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS,kBAAuC,CAAC,CAAA;AAEtE;mDACmD;AACnD,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACtD,CAAC;AAED;yDACyD;AACzD,MAAM,UAAU,WAAW,CAAC,OAA0B,OAAO,CAAC,GAAG;IAC/D,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAClC,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CACtB,QAA2B,EAAE,EAC7B,OAA0B,OAAO,CAAC,GAAG;IAErC,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IAC7C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,6 +1,9 @@
1
1
  export interface ProviderSettings {
2
2
  base_url?: string;
3
3
  api_key_env?: string;
4
+ /** Per-request timeout override (ms). Large local models can need more than
5
+ * the 120s default just to load into memory. */
6
+ timeout_ms?: number;
4
7
  }
5
8
  export interface CompostConfig {
6
9
  providers: Record<string, ProviderSettings>;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AASD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAU3D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAM1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ9F;AAED;0DAC0D;AAC1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CASjF;AAED,gEAAgE;AAChE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,eAA0B,GAC/B,IAAI,CAeN;AAsDD,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAG/E;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAS7E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;oDACgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAA;IAC3C,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC7B;AASD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAU3D;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAM1D;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ9F;AAED;0DAC0D;AAC1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CASjF;AAED,gEAAgE;AAChE,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,eAA0B,GAC/B,IAAI,CAeN;AAsDD,8DAA8D;AAC9D,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAG/E;AAED,iFAAiF;AACjF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAS7E"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,9 @@ export interface DoctorReport {
13
13
  schema_version: '1.0';
14
14
  providers: Record<string, ProviderHealth>;
15
15
  tasks: TaskReport[];
16
+ /** Bidirectional reconcile (#175): models a provider has pulled but no
17
+ * `[defaults]` route uses. Informational — not an error. Keyed by provider. */
18
+ unused_models: Record<string, string[]>;
16
19
  ok: boolean;
17
20
  }
18
21
  export declare function runDoctor(adapter: LLMAdapter, config: CompostConfig): Promise<DoctorReport>;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,eAAe,GAAG,YAAY,CAAA;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,KAAK,CAAA;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACzC,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB,EAAE,EAAE,OAAO,CAAA;CACZ;AAUD,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAmCjG"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAGhD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,IAAI,GAAG,eAAe,GAAG,eAAe,GAAG,YAAY,CAAA;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,KAAK,CAAA;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IACzC,KAAK,EAAE,UAAU,EAAE,CAAA;IACnB;mFAC+E;IAC/E,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IACvC,EAAE,EAAE,OAAO,CAAA;CACZ;AAUD,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CA0DjG"}
@@ -9,6 +9,19 @@ export async function runDoctor(adapter, config) {
9
9
  const providers = await adapter.healthAll();
10
10
  const tasks = [];
11
11
  let ok = true;
12
+ // Configured model per provider, for the pulled-but-unused reconcile below.
13
+ const configuredByProvider = new Map();
14
+ for (const route of Object.values(config.defaults)) {
15
+ try {
16
+ const { provider, model } = parseRoute(route);
17
+ if (!configuredByProvider.has(provider))
18
+ configuredByProvider.set(provider, new Set());
19
+ configuredByProvider.get(provider)?.add(model);
20
+ }
21
+ catch {
22
+ // unroutable — handled per-task below
23
+ }
24
+ }
12
25
  for (const [task, route] of Object.entries(config.defaults)) {
13
26
  let provider = '';
14
27
  let model = '';
@@ -38,6 +51,16 @@ export async function runDoctor(adapter, config) {
38
51
  }
39
52
  tasks.push({ task, route, provider, model, status: 'ok' });
40
53
  }
41
- return { schema_version: '1.0', providers, tasks, ok };
54
+ // Reconcile the other direction: models a provider has pulled but nothing routes to.
55
+ const unused_models = {};
56
+ for (const [provider, health] of Object.entries(providers)) {
57
+ if (!health.ok || health.model_list.length === 0)
58
+ continue;
59
+ const configured = configuredByProvider.get(provider) ?? new Set();
60
+ const unused = health.model_list.filter((m) => !configured.has(m) && ![...configured].some((c) => m === c || m.startsWith(`${c}:`)));
61
+ if (unused.length > 0)
62
+ unused_models[provider] = unused;
63
+ }
64
+ return { schema_version: '1.0', providers, tasks, unused_models, ok };
42
65
  }
43
66
  //# sourceMappingURL=doctor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAkBxC,uFAAuF;AACvF,SAAS,YAAY,CAAC,MAAkC,EAAE,KAAa;IACrE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,KAAK,CAAA;IACpD,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CACvE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAmB,EAAE,MAAqB;IACxE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAA;IAC3C,MAAM,KAAK,GAAiB,EAAE,CAAA;IAC9B,IAAI,EAAE,GAAG,IAAI,CAAA;IAEb,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAChC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;YAC1B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;YAC1E,EAAE,GAAG,KAAK,CAAA;YACV,SAAQ;QACV,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;YACrE,EAAE,GAAG,KAAK,CAAA;YACV,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;YACpF,IAAI,QAAQ,KAAK,QAAQ;gBAAE,MAAM,CAAC,UAAU,GAAG,eAAe,KAAK,EAAE,CAAA;YACrE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAClB,EAAE,GAAG,KAAK,CAAA;YACV,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;AACxD,CAAC"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/lib/doctor.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAqBxC,uFAAuF;AACvF,SAAS,YAAY,CAAC,MAAkC,EAAE,KAAa;IACrE,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,KAAK,CAAA;IACpD,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CACvE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAmB,EAAE,MAAqB;IACxE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,EAAE,CAAA;IAC3C,MAAM,KAAK,GAAiB,EAAE,CAAA;IAC9B,IAAI,EAAE,GAAG,IAAI,CAAA;IAEb,4EAA4E;IAC5E,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAuB,CAAA;IAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAC7C,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,oBAAoB,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YACtF,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5D,IAAI,QAAQ,GAAG,EAAE,CAAA;QACjB,IAAI,KAAK,GAAG,EAAE,CAAA;QACd,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;YAChC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAA;YAC1B,KAAK,GAAG,MAAM,CAAC,KAAK,CAAA;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAA;YAC1E,EAAE,GAAG,KAAK,CAAA;YACV,SAAQ;QACV,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;QAClC,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;YACrE,EAAE,GAAG,KAAK,CAAA;YACV,SAAQ;QACV,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAe,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAA;YACpF,IAAI,QAAQ,KAAK,QAAQ;gBAAE,MAAM,CAAC,UAAU,GAAG,eAAe,KAAK,EAAE,CAAA;YACrE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;YAClB,EAAE,GAAG,KAAK,CAAA;YACV,SAAQ;QACV,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,qFAAqF;IACrF,MAAM,aAAa,GAA6B,EAAE,CAAA;IAClD,KAAK,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QAC1D,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAU,CAAA;QAC1E,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC5F,CAAA;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,aAAa,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAA;IACzD,CAAC;IAED,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,CAAA;AACvE,CAAC"}