@they-juanreina/compost-cli 0.1.0-rc.1

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 (362) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +5 -0
  3. package/bin/compost.js +7 -0
  4. package/dist/commands/_stub.d.ts +9 -0
  5. package/dist/commands/_stub.d.ts.map +1 -0
  6. package/dist/commands/_stub.js +27 -0
  7. package/dist/commands/_stub.js.map +1 -0
  8. package/dist/commands/blame.d.ts +3 -0
  9. package/dist/commands/blame.d.ts.map +1 -0
  10. package/dist/commands/blame.js +31 -0
  11. package/dist/commands/blame.js.map +1 -0
  12. package/dist/commands/chat.d.ts +8 -0
  13. package/dist/commands/chat.d.ts.map +1 -0
  14. package/dist/commands/chat.js +99 -0
  15. package/dist/commands/chat.js.map +1 -0
  16. package/dist/commands/code.d.ts +3 -0
  17. package/dist/commands/code.d.ts.map +1 -0
  18. package/dist/commands/code.js +70 -0
  19. package/dist/commands/code.js.map +1 -0
  20. package/dist/commands/config.d.ts +3 -0
  21. package/dist/commands/config.d.ts.map +1 -0
  22. package/dist/commands/config.js +76 -0
  23. package/dist/commands/config.js.map +1 -0
  24. package/dist/commands/create.d.ts +20 -0
  25. package/dist/commands/create.d.ts.map +1 -0
  26. package/dist/commands/create.js +148 -0
  27. package/dist/commands/create.js.map +1 -0
  28. package/dist/commands/endorse.d.ts +3 -0
  29. package/dist/commands/endorse.d.ts.map +1 -0
  30. package/dist/commands/endorse.js +31 -0
  31. package/dist/commands/endorse.js.map +1 -0
  32. package/dist/commands/evals.d.ts +3 -0
  33. package/dist/commands/evals.d.ts.map +1 -0
  34. package/dist/commands/evals.js +54 -0
  35. package/dist/commands/evals.js.map +1 -0
  36. package/dist/commands/export.d.ts +3 -0
  37. package/dist/commands/export.d.ts.map +1 -0
  38. package/dist/commands/export.js +54 -0
  39. package/dist/commands/export.js.map +1 -0
  40. package/dist/commands/ingest.d.ts +3 -0
  41. package/dist/commands/ingest.d.ts.map +1 -0
  42. package/dist/commands/ingest.js +26 -0
  43. package/dist/commands/ingest.js.map +1 -0
  44. package/dist/commands/init.d.ts +3 -0
  45. package/dist/commands/init.d.ts.map +1 -0
  46. package/dist/commands/init.js +51 -0
  47. package/dist/commands/init.js.map +1 -0
  48. package/dist/commands/migrate.d.ts +3 -0
  49. package/dist/commands/migrate.d.ts.map +1 -0
  50. package/dist/commands/migrate.js +28 -0
  51. package/dist/commands/migrate.js.map +1 -0
  52. package/dist/commands/models.d.ts +3 -0
  53. package/dist/commands/models.d.ts.map +1 -0
  54. package/dist/commands/models.js +32 -0
  55. package/dist/commands/models.js.map +1 -0
  56. package/dist/commands/query.d.ts +3 -0
  57. package/dist/commands/query.d.ts.map +1 -0
  58. package/dist/commands/query.js +13 -0
  59. package/dist/commands/query.js.map +1 -0
  60. package/dist/commands/reindex.d.ts +3 -0
  61. package/dist/commands/reindex.d.ts.map +1 -0
  62. package/dist/commands/reindex.js +53 -0
  63. package/dist/commands/reindex.js.map +1 -0
  64. package/dist/commands/rescan.d.ts +3 -0
  65. package/dist/commands/rescan.d.ts.map +1 -0
  66. package/dist/commands/rescan.js +60 -0
  67. package/dist/commands/rescan.js.map +1 -0
  68. package/dist/commands/saturate.d.ts +3 -0
  69. package/dist/commands/saturate.d.ts.map +1 -0
  70. package/dist/commands/saturate.js +35 -0
  71. package/dist/commands/saturate.js.map +1 -0
  72. package/dist/commands/search.d.ts +3 -0
  73. package/dist/commands/search.d.ts.map +1 -0
  74. package/dist/commands/search.js +52 -0
  75. package/dist/commands/search.js.map +1 -0
  76. package/dist/commands/serve.d.ts +3 -0
  77. package/dist/commands/serve.d.ts.map +1 -0
  78. package/dist/commands/serve.js +9 -0
  79. package/dist/commands/serve.js.map +1 -0
  80. package/dist/commands/session.d.ts +3 -0
  81. package/dist/commands/session.d.ts.map +1 -0
  82. package/dist/commands/session.js +25 -0
  83. package/dist/commands/session.js.map +1 -0
  84. package/dist/commands/setup.d.ts +3 -0
  85. package/dist/commands/setup.d.ts.map +1 -0
  86. package/dist/commands/setup.js +38 -0
  87. package/dist/commands/setup.js.map +1 -0
  88. package/dist/commands/snap.d.ts +3 -0
  89. package/dist/commands/snap.d.ts.map +1 -0
  90. package/dist/commands/snap.js +27 -0
  91. package/dist/commands/snap.js.map +1 -0
  92. package/dist/commands/status.d.ts +3 -0
  93. package/dist/commands/status.d.ts.map +1 -0
  94. package/dist/commands/status.js +26 -0
  95. package/dist/commands/status.js.map +1 -0
  96. package/dist/commands/synthesize.d.ts +3 -0
  97. package/dist/commands/synthesize.d.ts.map +1 -0
  98. package/dist/commands/synthesize.js +13 -0
  99. package/dist/commands/synthesize.js.map +1 -0
  100. package/dist/commands/tag.d.ts +3 -0
  101. package/dist/commands/tag.d.ts.map +1 -0
  102. package/dist/commands/tag.js +46 -0
  103. package/dist/commands/tag.js.map +1 -0
  104. package/dist/commands/transcribe.d.ts +3 -0
  105. package/dist/commands/transcribe.d.ts.map +1 -0
  106. package/dist/commands/transcribe.js +110 -0
  107. package/dist/commands/transcribe.js.map +1 -0
  108. package/dist/commands/validate.d.ts +3 -0
  109. package/dist/commands/validate.d.ts.map +1 -0
  110. package/dist/commands/validate.js +81 -0
  111. package/dist/commands/validate.js.map +1 -0
  112. package/dist/commands/watch.d.ts +3 -0
  113. package/dist/commands/watch.d.ts.map +1 -0
  114. package/dist/commands/watch.js +50 -0
  115. package/dist/commands/watch.js.map +1 -0
  116. package/dist/errors.d.ts +9 -0
  117. package/dist/errors.d.ts.map +1 -0
  118. package/dist/errors.js +12 -0
  119. package/dist/errors.js.map +1 -0
  120. package/dist/exporters/csv.d.ts +8 -0
  121. package/dist/exporters/csv.d.ts.map +1 -0
  122. package/dist/exporters/csv.js +44 -0
  123. package/dist/exporters/csv.js.map +1 -0
  124. package/dist/exporters/eaf.d.ts +3 -0
  125. package/dist/exporters/eaf.d.ts.map +1 -0
  126. package/dist/exporters/eaf.js +91 -0
  127. package/dist/exporters/eaf.js.map +1 -0
  128. package/dist/exporters/html.d.ts +8 -0
  129. package/dist/exporters/html.d.ts.map +1 -0
  130. package/dist/exporters/html.js +47 -0
  131. package/dist/exporters/html.js.map +1 -0
  132. package/dist/exporters/md.d.ts +3 -0
  133. package/dist/exporters/md.d.ts.map +1 -0
  134. package/dist/exporters/md.js +43 -0
  135. package/dist/exporters/md.js.map +1 -0
  136. package/dist/exporters/pdf.d.ts +9 -0
  137. package/dist/exporters/pdf.d.ts.map +1 -0
  138. package/dist/exporters/pdf.js +40 -0
  139. package/dist/exporters/pdf.js.map +1 -0
  140. package/dist/exporters/report.d.ts +43 -0
  141. package/dist/exporters/report.d.ts.map +1 -0
  142. package/dist/exporters/report.js +49 -0
  143. package/dist/exporters/report.js.map +1 -0
  144. package/dist/index.d.ts +2 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +6 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/legacy_client.d.ts +38 -0
  149. package/dist/legacy_client.d.ts.map +1 -0
  150. package/dist/legacy_client.js +44 -0
  151. package/dist/legacy_client.js.map +1 -0
  152. package/dist/lib/answerSchema.d.ts +2 -0
  153. package/dist/lib/answerSchema.d.ts.map +1 -0
  154. package/dist/lib/answerSchema.js +27 -0
  155. package/dist/lib/answerSchema.js.map +1 -0
  156. package/dist/lib/artifacts.d.ts +64 -0
  157. package/dist/lib/artifacts.d.ts.map +1 -0
  158. package/dist/lib/artifacts.js +254 -0
  159. package/dist/lib/artifacts.js.map +1 -0
  160. package/dist/lib/blame.d.ts +30 -0
  161. package/dist/lib/blame.d.ts.map +1 -0
  162. package/dist/lib/blame.js +164 -0
  163. package/dist/lib/blame.js.map +1 -0
  164. package/dist/lib/canonicalSessions.d.ts +24 -0
  165. package/dist/lib/canonicalSessions.d.ts.map +1 -0
  166. package/dist/lib/canonicalSessions.js +48 -0
  167. package/dist/lib/canonicalSessions.js.map +1 -0
  168. package/dist/lib/chat.d.ts +24 -0
  169. package/dist/lib/chat.d.ts.map +1 -0
  170. package/dist/lib/chat.js +50 -0
  171. package/dist/lib/chat.js.map +1 -0
  172. package/dist/lib/config.d.ts +45 -0
  173. package/dist/lib/config.d.ts.map +1 -0
  174. package/dist/lib/config.js +143 -0
  175. package/dist/lib/config.js.map +1 -0
  176. package/dist/lib/dispatch.d.ts +10 -0
  177. package/dist/lib/dispatch.d.ts.map +1 -0
  178. package/dist/lib/dispatch.js +31 -0
  179. package/dist/lib/dispatch.js.map +1 -0
  180. package/dist/lib/doctor.d.ts +19 -0
  181. package/dist/lib/doctor.d.ts.map +1 -0
  182. package/dist/lib/doctor.js +43 -0
  183. package/dist/lib/doctor.js.map +1 -0
  184. package/dist/lib/events.d.ts +42 -0
  185. package/dist/lib/events.d.ts.map +1 -0
  186. package/dist/lib/events.js +57 -0
  187. package/dist/lib/events.js.map +1 -0
  188. package/dist/lib/export.d.ts +14 -0
  189. package/dist/lib/export.d.ts.map +1 -0
  190. package/dist/lib/export.js +36 -0
  191. package/dist/lib/export.js.map +1 -0
  192. package/dist/lib/ingest.d.ts +21 -0
  193. package/dist/lib/ingest.d.ts.map +1 -0
  194. package/dist/lib/ingest.js +68 -0
  195. package/dist/lib/ingest.js.map +1 -0
  196. package/dist/lib/journal.d.ts +23 -0
  197. package/dist/lib/journal.d.ts.map +1 -0
  198. package/dist/lib/journal.js +95 -0
  199. package/dist/lib/journal.js.map +1 -0
  200. package/dist/lib/migrate.d.ts +29 -0
  201. package/dist/lib/migrate.d.ts.map +1 -0
  202. package/dist/lib/migrate.js +117 -0
  203. package/dist/lib/migrate.js.map +1 -0
  204. package/dist/lib/nativeRuntime.d.ts +46 -0
  205. package/dist/lib/nativeRuntime.d.ts.map +1 -0
  206. package/dist/lib/nativeRuntime.js +61 -0
  207. package/dist/lib/nativeRuntime.js.map +1 -0
  208. package/dist/lib/provisionNative.d.ts +46 -0
  209. package/dist/lib/provisionNative.d.ts.map +1 -0
  210. package/dist/lib/provisionNative.js +105 -0
  211. package/dist/lib/provisionNative.js.map +1 -0
  212. package/dist/lib/queue.d.ts +36 -0
  213. package/dist/lib/queue.d.ts.map +1 -0
  214. package/dist/lib/queue.js +102 -0
  215. package/dist/lib/queue.js.map +1 -0
  216. package/dist/lib/retrieve.d.ts +51 -0
  217. package/dist/lib/retrieve.d.ts.map +1 -0
  218. package/dist/lib/retrieve.js +92 -0
  219. package/dist/lib/retrieve.js.map +1 -0
  220. package/dist/lib/saturate.d.ts +21 -0
  221. package/dist/lib/saturate.d.ts.map +1 -0
  222. package/dist/lib/saturate.js +132 -0
  223. package/dist/lib/saturate.js.map +1 -0
  224. package/dist/lib/schemas.generated.d.ts +15 -0
  225. package/dist/lib/schemas.generated.d.ts.map +1 -0
  226. package/dist/lib/schemas.generated.js +975 -0
  227. package/dist/lib/schemas.generated.js.map +1 -0
  228. package/dist/lib/seed.d.ts +16 -0
  229. package/dist/lib/seed.d.ts.map +1 -0
  230. package/dist/lib/seed.js +64 -0
  231. package/dist/lib/seed.js.map +1 -0
  232. package/dist/lib/seedResolve.d.ts +6 -0
  233. package/dist/lib/seedResolve.d.ts.map +1 -0
  234. package/dist/lib/seedResolve.js +27 -0
  235. package/dist/lib/seedResolve.js.map +1 -0
  236. package/dist/lib/session.d.ts +19 -0
  237. package/dist/lib/session.d.ts.map +1 -0
  238. package/dist/lib/session.js +61 -0
  239. package/dist/lib/session.js.map +1 -0
  240. package/dist/lib/setup.d.ts +44 -0
  241. package/dist/lib/setup.d.ts.map +1 -0
  242. package/dist/lib/setup.js +249 -0
  243. package/dist/lib/setup.js.map +1 -0
  244. package/dist/lib/snap.d.ts +15 -0
  245. package/dist/lib/snap.d.ts.map +1 -0
  246. package/dist/lib/snap.js +115 -0
  247. package/dist/lib/snap.js.map +1 -0
  248. package/dist/lib/status.d.ts +39 -0
  249. package/dist/lib/status.d.ts.map +1 -0
  250. package/dist/lib/status.js +174 -0
  251. package/dist/lib/status.js.map +1 -0
  252. package/dist/lib/tagcode.d.ts +26 -0
  253. package/dist/lib/tagcode.d.ts.map +1 -0
  254. package/dist/lib/tagcode.js +231 -0
  255. package/dist/lib/tagcode.js.map +1 -0
  256. package/dist/lib/templates.d.ts +3 -0
  257. package/dist/lib/templates.d.ts.map +1 -0
  258. package/dist/lib/templates.js +21 -0
  259. package/dist/lib/templates.js.map +1 -0
  260. package/dist/lib/transcribeNative.d.ts +44 -0
  261. package/dist/lib/transcribeNative.d.ts.map +1 -0
  262. package/dist/lib/transcribeNative.js +53 -0
  263. package/dist/lib/transcribeNative.js.map +1 -0
  264. package/dist/lib/transcript.d.ts +68 -0
  265. package/dist/lib/transcript.d.ts.map +1 -0
  266. package/dist/lib/transcript.js +10 -0
  267. package/dist/lib/transcript.js.map +1 -0
  268. package/dist/lib/validate.d.ts +16 -0
  269. package/dist/lib/validate.d.ts.map +1 -0
  270. package/dist/lib/validate.js +155 -0
  271. package/dist/lib/validate.js.map +1 -0
  272. package/dist/llm/adapter.d.ts +33 -0
  273. package/dist/llm/adapter.d.ts.map +1 -0
  274. package/dist/llm/adapter.js +106 -0
  275. package/dist/llm/adapter.js.map +1 -0
  276. package/dist/llm/http.d.ts +9 -0
  277. package/dist/llm/http.d.ts.map +1 -0
  278. package/dist/llm/http.js +56 -0
  279. package/dist/llm/http.js.map +1 -0
  280. package/dist/llm/providers/anthropic.d.ts +14 -0
  281. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  282. package/dist/llm/providers/anthropic.js +66 -0
  283. package/dist/llm/providers/anthropic.js.map +1 -0
  284. package/dist/llm/providers/lmstudio.d.ts +7 -0
  285. package/dist/llm/providers/lmstudio.d.ts.map +1 -0
  286. package/dist/llm/providers/lmstudio.js +8 -0
  287. package/dist/llm/providers/lmstudio.js.map +1 -0
  288. package/dist/llm/providers/ollama.d.ts +12 -0
  289. package/dist/llm/providers/ollama.d.ts.map +1 -0
  290. package/dist/llm/providers/ollama.js +87 -0
  291. package/dist/llm/providers/ollama.js.map +1 -0
  292. package/dist/llm/providers/openai.d.ts +7 -0
  293. package/dist/llm/providers/openai.d.ts.map +1 -0
  294. package/dist/llm/providers/openai.js +8 -0
  295. package/dist/llm/providers/openai.js.map +1 -0
  296. package/dist/llm/providers/openai_compatible.d.ts +18 -0
  297. package/dist/llm/providers/openai_compatible.d.ts.map +1 -0
  298. package/dist/llm/providers/openai_compatible.js +70 -0
  299. package/dist/llm/providers/openai_compatible.js.map +1 -0
  300. package/dist/llm/types.d.ts +60 -0
  301. package/dist/llm/types.d.ts.map +1 -0
  302. package/dist/llm/types.js +2 -0
  303. package/dist/llm/types.js.map +1 -0
  304. package/dist/logging.d.ts +22 -0
  305. package/dist/logging.d.ts.map +1 -0
  306. package/dist/logging.js +58 -0
  307. package/dist/logging.js.map +1 -0
  308. package/dist/loops/embed_worker.d.ts +44 -0
  309. package/dist/loops/embed_worker.d.ts.map +1 -0
  310. package/dist/loops/embed_worker.js +144 -0
  311. package/dist/loops/embed_worker.js.map +1 -0
  312. package/dist/loops/eval_grader.d.ts +19 -0
  313. package/dist/loops/eval_grader.d.ts.map +1 -0
  314. package/dist/loops/eval_grader.js +22 -0
  315. package/dist/loops/eval_grader.js.map +1 -0
  316. package/dist/loops/ingest_watcher.d.ts +17 -0
  317. package/dist/loops/ingest_watcher.d.ts.map +1 -0
  318. package/dist/loops/ingest_watcher.js +66 -0
  319. package/dist/loops/ingest_watcher.js.map +1 -0
  320. package/dist/loops/legacy_worker.d.ts +26 -0
  321. package/dist/loops/legacy_worker.d.ts.map +1 -0
  322. package/dist/loops/legacy_worker.js +102 -0
  323. package/dist/loops/legacy_worker.js.map +1 -0
  324. package/dist/loops/supervisor.d.ts +71 -0
  325. package/dist/loops/supervisor.d.ts.map +1 -0
  326. package/dist/loops/supervisor.js +122 -0
  327. package/dist/loops/supervisor.js.map +1 -0
  328. package/dist/loops/synthesis.d.ts +31 -0
  329. package/dist/loops/synthesis.d.ts.map +1 -0
  330. package/dist/loops/synthesis.js +71 -0
  331. package/dist/loops/synthesis.js.map +1 -0
  332. package/dist/loops/transcribe_worker.d.ts +22 -0
  333. package/dist/loops/transcribe_worker.d.ts.map +1 -0
  334. package/dist/loops/transcribe_worker.js +77 -0
  335. package/dist/loops/transcribe_worker.js.map +1 -0
  336. package/dist/output.d.ts +8 -0
  337. package/dist/output.d.ts.map +1 -0
  338. package/dist/output.js +26 -0
  339. package/dist/output.js.map +1 -0
  340. package/dist/render/transcript_md.d.ts +5 -0
  341. package/dist/render/transcript_md.d.ts.map +1 -0
  342. package/dist/render/transcript_md.js +14 -0
  343. package/dist/render/transcript_md.js.map +1 -0
  344. package/dist/router.d.ts +3 -0
  345. package/dist/router.d.ts.map +1 -0
  346. package/dist/router.js +68 -0
  347. package/dist/router.js.map +1 -0
  348. package/dist/transcriber_client.d.ts +42 -0
  349. package/dist/transcriber_client.d.ts.map +1 -0
  350. package/dist/transcriber_client.js +72 -0
  351. package/dist/transcriber_client.js.map +1 -0
  352. package/package.json +45 -0
  353. package/templates/AGENTS.md +25 -0
  354. package/templates/config.toml +56 -0
  355. package/templates/sample-seed/codebook/desire-for-manual-override.md +8 -0
  356. package/templates/sample-seed/codebook/distrust-of-automation.md +8 -0
  357. package/templates/sample-seed/highlights/H-001.md +9 -0
  358. package/templates/sample-seed/highlights/H-002.md +9 -0
  359. package/templates/sample-seed/seed.md +17 -0
  360. package/templates/sample-seed/sessions/S001/transcript.json +74 -0
  361. package/templates/sample-seed/synthesis/themes/control-earns-trust.md +13 -0
  362. package/templates/seed.md +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../src/loops/supervisor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type EmbeddedItem, type SaturationPulse } from 'compost-retrieval';
2
+ export interface ThemeSuggestion {
3
+ artifact_id: string;
4
+ members: string[];
5
+ cohesion: number;
6
+ }
7
+ /**
8
+ * Autonomous theme/code suggestion (#59): cluster un-coded highlights in
9
+ * embedding space and emit one AI-suggested `code` event per cohesive cluster.
10
+ * Throttled to 20 suggestions/run; suggestions are [draft] until endorsed.
11
+ */
12
+ export declare function suggestThemesOnce(seedPath: string, highlights: EmbeddedItem[], opts?: {
13
+ threshold?: number;
14
+ minSize?: number;
15
+ model?: string;
16
+ promptHash?: string;
17
+ }): ThemeSuggestion[];
18
+ export interface PulseResult extends SaturationPulse {
19
+ notify: boolean;
20
+ artifact_id: string;
21
+ }
22
+ /**
23
+ * Saturation-pulse loop (#61): compute the pulse and emit an AI suggestion
24
+ * recording it. `notify` is true when the recommendation is pause/conclude —
25
+ * the watcher surfaces that to the researcher.
26
+ */
27
+ export declare function saturationPulseOnce(seedPath: string, sessions: Array<{
28
+ id: string;
29
+ themes: string[];
30
+ }>): PulseResult;
31
+ //# sourceMappingURL=synthesis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesis.d.ts","sourceRoot":"","sources":["../../src/loops/synthesis.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EAGrB,MAAM,mBAAmB,CAAA;AAS1B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,YAAY,EAAE,EAC1B,IAAI,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACvF,eAAe,EAAE,CAgCnB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAChD,WAAW,CAmBb"}
@@ -0,0 +1,71 @@
1
+ import { saturationPulse, suggestCodeClusters, } from 'compost-retrieval';
2
+ import { artifactId, emitAgentCreate, openSeedEvents } from '../lib/events.js';
3
+ const SCANNER = 'similarity-scanner';
4
+ const PULSE = 'saturation-pulse';
5
+ const VERSION = '0.1.0';
6
+ const MAX_SUGGESTIONS = 20;
7
+ /**
8
+ * Autonomous theme/code suggestion (#59): cluster un-coded highlights in
9
+ * embedding space and emit one AI-suggested `code` event per cohesive cluster.
10
+ * Throttled to 20 suggestions/run; suggestions are [draft] until endorsed.
11
+ */
12
+ export function suggestThemesOnce(seedPath, highlights, opts = {}) {
13
+ const clusters = suggestCodeClusters(highlights, {
14
+ ...(opts.threshold !== undefined ? { threshold: opts.threshold } : {}),
15
+ ...(opts.minSize !== undefined ? { minSize: opts.minSize } : {}),
16
+ }).slice(0, MAX_SUGGESTIONS);
17
+ const events = openSeedEvents(seedPath);
18
+ const out = [];
19
+ try {
20
+ for (const cluster of clusters) {
21
+ const initialState = {
22
+ kind: 'code',
23
+ members: cluster.members,
24
+ cohesion: cluster.cohesion,
25
+ status: 'draft',
26
+ };
27
+ const event = emitAgentCreate(events, {
28
+ artifactKind: 'code',
29
+ initialState,
30
+ agentName: SCANNER,
31
+ agentVersion: VERSION,
32
+ });
33
+ out.push({
34
+ artifact_id: event.artifact_id,
35
+ members: cluster.members,
36
+ cohesion: cluster.cohesion,
37
+ });
38
+ }
39
+ return out;
40
+ }
41
+ finally {
42
+ events.close();
43
+ }
44
+ }
45
+ /**
46
+ * Saturation-pulse loop (#61): compute the pulse and emit an AI suggestion
47
+ * recording it. `notify` is true when the recommendation is pause/conclude —
48
+ * the watcher surfaces that to the researcher.
49
+ */
50
+ export function saturationPulseOnce(seedPath, sessions) {
51
+ const pulse = saturationPulse(sessions);
52
+ const events = openSeedEvents(seedPath);
53
+ try {
54
+ const initialState = { kind: 'saturation_pulse', ...pulse };
55
+ const event = emitAgentCreate(events, {
56
+ artifactKind: 'insight',
57
+ initialState,
58
+ agentName: PULSE,
59
+ agentVersion: VERSION,
60
+ });
61
+ return {
62
+ ...pulse,
63
+ notify: pulse.recommendation !== 'continue',
64
+ artifact_id: event.artifact_id ?? artifactId(initialState),
65
+ };
66
+ }
67
+ finally {
68
+ events.close();
69
+ }
70
+ }
71
+ //# sourceMappingURL=synthesis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"synthesis.js","sourceRoot":"","sources":["../../src/loops/synthesis.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,eAAe,EACf,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAE1B,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE9E,MAAM,OAAO,GAAG,oBAAoB,CAAA;AACpC,MAAM,KAAK,GAAG,kBAAkB,CAAA;AAChC,MAAM,OAAO,GAAG,OAAO,CAAA;AACvB,MAAM,eAAe,GAAG,EAAE,CAAA;AAQ1B;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAA0B,EAC1B,OAAsF,EAAE;IAExF,MAAM,QAAQ,GAAG,mBAAmB,CAAC,UAAU,EAAE;QAC/C,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA;IAE5B,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,GAAG,GAAsB,EAAE,CAAA;IACjC,IAAI,CAAC;QACH,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,YAAY,GAAG;gBACnB,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,MAAM,EAAE,OAAO;aAChB,CAAA;YACD,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE;gBACpC,YAAY,EAAE,MAAM;gBACpB,YAAY;gBACZ,SAAS,EAAE,OAAO;gBAClB,YAAY,EAAE,OAAO;aACtB,CAAC,CAAA;YACF,GAAG,CAAC,IAAI,CAAC;gBACP,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;AACH,CAAC;AAOD;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,QAAgB,EAChB,QAAiD;IAEjD,MAAM,KAAK,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAA;IACvC,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAA;IACvC,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,GAAG,KAAK,EAAE,CAAA;QAC3D,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE;YACpC,YAAY,EAAE,SAAS;YACvB,YAAY;YACZ,SAAS,EAAE,KAAK;YAChB,YAAY,EAAE,OAAO;SACtB,CAAC,CAAA;QACF,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,KAAK,CAAC,cAAc,KAAK,UAAU;YAC3C,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,YAAY,CAAC;SAC3D,CAAA;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,KAAK,EAAE,CAAA;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { TranscriberClient } from '../transcriber_client.js';
2
+ export interface WorkerStepResult {
3
+ processed: number;
4
+ results: Array<{
5
+ job_id: number;
6
+ session_id: string;
7
+ status: string;
8
+ transcript_path?: string;
9
+ }>;
10
+ }
11
+ export interface WorkerDeps {
12
+ client?: TranscriberClient;
13
+ }
14
+ /**
15
+ * Drain all queued `transcribe` jobs (concurrency 1 — the Python service is the
16
+ * bottleneck). For each: call the service, render transcript.md, and complete.
17
+ * Transient failures requeue via the queue's attempt counter (gives up after 3,
18
+ * marking the job failed). Returns what it did. Pure of timers — the supervisor
19
+ * calls this on a cadence.
20
+ */
21
+ export declare function runTranscribeWorkerOnce(seedPath: string, deps?: WorkerDeps): Promise<WorkerStepResult>;
22
+ //# sourceMappingURL=transcribe_worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe_worker.d.ts","sourceRoot":"","sources":["../../src/loops/transcribe_worker.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAM5D,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACjG;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,iBAAiB,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,UAAe,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAyD3B"}
@@ -0,0 +1,77 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { dirname } from 'node:path';
3
+ import { emitAgentCreate, openSeedEvents } from '../lib/events.js';
4
+ import { JobQueue, stateDbPath } from '../lib/queue.js';
5
+ import { writeTranscriptMd } from '../render/transcript_md.js';
6
+ import { TranscriberClient } from '../transcriber_client.js';
7
+ const AGENT_NAME = 'transcribe-worker';
8
+ const AGENT_VERSION = '0.1.0';
9
+ const MAX_ATTEMPTS = 3;
10
+ /**
11
+ * Drain all queued `transcribe` jobs (concurrency 1 — the Python service is the
12
+ * bottleneck). For each: call the service, render transcript.md, and complete.
13
+ * Transient failures requeue via the queue's attempt counter (gives up after 3,
14
+ * marking the job failed). Returns what it did. Pure of timers — the supervisor
15
+ * calls this on a cadence.
16
+ */
17
+ export async function runTranscribeWorkerOnce(seedPath, deps = {}) {
18
+ const client = deps.client ?? new TranscriberClient();
19
+ const queue = new JobQueue(stateDbPath(seedPath));
20
+ const events = openSeedEvents(seedPath);
21
+ const out = { processed: 0, results: [] };
22
+ try {
23
+ while (true) {
24
+ const job = queue.claim('transcribe');
25
+ if (job === null)
26
+ break;
27
+ out.processed += 1;
28
+ const sessionId = String(job.payload.session_id ?? 'S?');
29
+ try {
30
+ const language = typeof job.payload.language === 'string' ? job.payload.language : undefined;
31
+ const resp = await client.transcribe(job.source_path, sessionId, seedPath, language);
32
+ if (resp.status === 'failed_transcription') {
33
+ queue.fail(job.id, 'service reported failed_transcription', MAX_ATTEMPTS);
34
+ out.results.push({
35
+ job_id: job.id,
36
+ session_id: sessionId,
37
+ status: 'failed_transcription',
38
+ });
39
+ continue;
40
+ }
41
+ if (existsSync(resp.transcript_path)) {
42
+ writeTranscriptMd(resp.transcript_path);
43
+ }
44
+ queue.complete(job.id);
45
+ emitAgentCreate(events, {
46
+ artifactKind: 'transcript',
47
+ initialState: {
48
+ session_id: resp.session_id,
49
+ transcript_path: resp.transcript_path,
50
+ status: resp.status,
51
+ },
52
+ agentName: AGENT_NAME,
53
+ agentVersion: AGENT_VERSION,
54
+ });
55
+ out.results.push({
56
+ job_id: job.id,
57
+ session_id: sessionId,
58
+ status: resp.status,
59
+ transcript_path: resp.transcript_path,
60
+ });
61
+ // needs_speaker_labels: completed but flagged for human; surfaced in result.
62
+ }
63
+ catch (err) {
64
+ queue.fail(job.id, err instanceof Error ? err.message : String(err), MAX_ATTEMPTS);
65
+ out.results.push({ job_id: job.id, session_id: sessionId, status: 'error' });
66
+ // stop the drain on a service-down error; nothing else will succeed now.
67
+ break;
68
+ }
69
+ }
70
+ return out;
71
+ }
72
+ finally {
73
+ queue.close();
74
+ events.close();
75
+ }
76
+ }
77
+ //# sourceMappingURL=transcribe_worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcribe_worker.js","sourceRoot":"","sources":["../../src/loops/transcribe_worker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Command } from 'commander';
2
+ export interface OutputOptions {
3
+ human: boolean;
4
+ }
5
+ export declare function getOutputOpts(cmd: Command): OutputOptions;
6
+ export declare function emit(data: unknown, opts: OutputOptions): void;
7
+ export declare function emitError(err: unknown, opts: OutputOptions): never;
8
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAIxC,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,CAAA;CACf;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAKzD;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,IAAI,CAG7D;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,GAAG,KAAK,CAalE"}
package/dist/output.js ADDED
@@ -0,0 +1,26 @@
1
+ import { isCompostError } from './errors.js';
2
+ export function getOutputOpts(cmd) {
3
+ let root = cmd;
4
+ while (root.parent)
5
+ root = root.parent;
6
+ const opts = root.opts();
7
+ return { human: opts.human === true };
8
+ }
9
+ export function emit(data, opts) {
10
+ const text = opts.human ? JSON.stringify(data, null, 2) : JSON.stringify(data);
11
+ process.stdout.write(`${text}\n`);
12
+ }
13
+ export function emitError(err, opts) {
14
+ const compost = isCompostError(err);
15
+ const code = compost ? err.code : 'INTERNAL';
16
+ const message = err instanceof Error ? err.message : String(err);
17
+ if (opts.human) {
18
+ process.stderr.write(`error: ${message}\n`);
19
+ process.stderr.write(`code: ${code}\n`);
20
+ }
21
+ else {
22
+ process.stderr.write(`${JSON.stringify({ error: { code, message } })}\n`);
23
+ }
24
+ process.exit(1);
25
+ }
26
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAM5C,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,IAAI,GAAY,GAAG,CAAA;IACvB,OAAO,IAAI,CAAC,MAAM;QAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAA;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,EAAyB,CAAA;IAC/C,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE,CAAA;AACvC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,IAAa,EAAE,IAAmB;IACrD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAC9E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAY,EAAE,IAAmB;IACzD,MAAM,OAAO,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;IACnC,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAA;IAC5C,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEhE,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,OAAO,IAAI,CAAC,CAAA;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;IAC3E,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC"}
@@ -0,0 +1,5 @@
1
+ /** Render transcript.json → transcript.md (cues + silences inlined) next to it.
2
+ * Reuses the Markdown exporter (#24) so the human mirror and `compost export`
3
+ * stay byte-identical. Returns the path written. */
4
+ export declare function writeTranscriptMd(transcriptJsonPath: string): string;
5
+ //# sourceMappingURL=transcript_md.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript_md.d.ts","sourceRoot":"","sources":["../../src/render/transcript_md.ts"],"names":[],"mappings":"AAMA;;oDAEoD;AACpD,wBAAgB,iBAAiB,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAMpE"}
@@ -0,0 +1,14 @@
1
+ import { readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { transcriptToMarkdown } from '../exporters/md.js';
4
+ /** Render transcript.json → transcript.md (cues + silences inlined) next to it.
5
+ * Reuses the Markdown exporter (#24) so the human mirror and `compost export`
6
+ * stay byte-identical. Returns the path written. */
7
+ export function writeTranscriptMd(transcriptJsonPath) {
8
+ const transcript = JSON.parse(readFileSync(transcriptJsonPath, 'utf8'));
9
+ const md = transcriptToMarkdown(transcript);
10
+ const mdPath = join(dirname(transcriptJsonPath), 'transcript.md');
11
+ writeFileSync(mdPath, md, 'utf8');
12
+ return mdPath;
13
+ }
14
+ //# sourceMappingURL=transcript_md.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript_md.js","sourceRoot":"","sources":["../../src/render/transcript_md.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAGzD;;oDAEoD;AACpD,MAAM,UAAU,iBAAiB,CAAC,kBAA0B;IAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAe,CAAA;IACrF,MAAM,EAAE,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,eAAe,CAAC,CAAA;IACjE,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;IACjC,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function buildProgram(): Command;
3
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAgCnC,wBAAgB,YAAY,IAAI,OAAO,CA2CtC"}
package/dist/router.js ADDED
@@ -0,0 +1,68 @@
1
+ import { Command } from 'commander';
2
+ import { registerBlame } from './commands/blame.js';
3
+ import { registerChat } from './commands/chat.js';
4
+ import { registerCode } from './commands/code.js';
5
+ import { registerConfig } from './commands/config.js';
6
+ import { registerCreate } from './commands/create.js';
7
+ import { registerEndorse } from './commands/endorse.js';
8
+ import { registerEvals } from './commands/evals.js';
9
+ import { registerExport } from './commands/export.js';
10
+ import { registerIngest } from './commands/ingest.js';
11
+ import { registerInit } from './commands/init.js';
12
+ import { registerMigrate } from './commands/migrate.js';
13
+ import { registerModels } from './commands/models.js';
14
+ import { registerQuery } from './commands/query.js';
15
+ import { registerReindex } from './commands/reindex.js';
16
+ import { registerRescan } from './commands/rescan.js';
17
+ import { registerSaturate } from './commands/saturate.js';
18
+ import { registerSearch } from './commands/search.js';
19
+ import { registerServe } from './commands/serve.js';
20
+ import { registerSession } from './commands/session.js';
21
+ import { registerSetup } from './commands/setup.js';
22
+ import { registerSnap } from './commands/snap.js';
23
+ import { registerStatus } from './commands/status.js';
24
+ import { registerSynthesize } from './commands/synthesize.js';
25
+ import { registerTag } from './commands/tag.js';
26
+ import { registerTranscribe } from './commands/transcribe.js';
27
+ import { registerValidate } from './commands/validate.js';
28
+ import { registerWatch } from './commands/watch.js';
29
+ const VERSION = '0.1.0-rc.1';
30
+ export function buildProgram() {
31
+ const program = new Command();
32
+ program
33
+ .name('compost')
34
+ .description('Local-first, AI-first research analysis harness for coding agents and humans.')
35
+ .version(VERSION, '-V, --version')
36
+ .option('--human', 'Pretty-print output for human eyes (JSON is the default — agents parse it directly).')
37
+ .showHelpAfterError()
38
+ .configureHelp({ sortSubcommands: true });
39
+ registerInit(program);
40
+ registerIngest(program);
41
+ registerTranscribe(program);
42
+ registerWatch(program);
43
+ registerSnap(program);
44
+ registerStatus(program);
45
+ registerBlame(program);
46
+ registerMigrate(program);
47
+ registerExport(program);
48
+ registerReindex(program);
49
+ registerRescan(program);
50
+ registerSaturate(program);
51
+ registerValidate(program);
52
+ registerTag(program);
53
+ registerCode(program);
54
+ registerSynthesize(program);
55
+ registerSearch(program);
56
+ registerSession(program);
57
+ registerCreate(program);
58
+ registerEndorse(program);
59
+ registerSetup(program);
60
+ registerQuery(program);
61
+ registerChat(program);
62
+ registerServe(program);
63
+ registerModels(program);
64
+ registerEvals(program);
65
+ registerConfig(program);
66
+ return program;
67
+ }
68
+ //# sourceMappingURL=router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAEnD,MAAM,OAAO,GAAG,YAAY,CAAA;AAE5B,MAAM,UAAU,YAAY;IAC1B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAA;IAE7B,OAAO;SACJ,IAAI,CAAC,SAAS,CAAC;SACf,WAAW,CAAC,+EAA+E,CAAC;SAC5F,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;SACjC,MAAM,CACL,SAAS,EACT,sFAAsF,CACvF;SACA,kBAAkB,EAAE;SACpB,aAAa,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAA;IAE3C,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzB,gBAAgB,CAAC,OAAO,CAAC,CAAA;IACzB,WAAW,CAAC,OAAO,CAAC,CAAA;IACpB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,kBAAkB,CAAC,OAAO,CAAC,CAAA;IAC3B,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,eAAe,CAAC,OAAO,CAAC,CAAA;IACxB,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,YAAY,CAAC,OAAO,CAAC,CAAA;IACrB,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,cAAc,CAAC,OAAO,CAAC,CAAA;IACvB,aAAa,CAAC,OAAO,CAAC,CAAA;IACtB,cAAc,CAAC,OAAO,CAAC,CAAA;IAEvB,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import type { FetchLike } from './llm/types.js';
2
+ export interface TranscribeResponse {
3
+ session_id: string;
4
+ transcript_path: string;
5
+ status: 'ok' | 'needs_speaker_labels' | 'failed_transcription';
6
+ }
7
+ export interface TranscriberHealth {
8
+ ok: boolean;
9
+ versions: Record<string, string | null>;
10
+ }
11
+ export declare class TranscriberServiceError extends Error {
12
+ readonly kind: 'down' | 'model_missing' | 'failed';
13
+ constructor(message: string, kind: 'down' | 'model_missing' | 'failed');
14
+ }
15
+ export interface TranscriberClientOptions {
16
+ baseUrl?: string;
17
+ fetchImpl?: FetchLike;
18
+ timeoutMs?: number;
19
+ }
20
+ /** HTTP client for the Python transcriber service (compose: localhost:7862). */
21
+ export declare class TranscriberClient {
22
+ private readonly base;
23
+ private readonly fetchImpl;
24
+ private readonly timeoutMs;
25
+ constructor(opts?: TranscriberClientOptions);
26
+ health(): Promise<TranscriberHealth>;
27
+ /**
28
+ * Invoke POST /transcribe with the body shape the Python route expects.
29
+ *
30
+ * Bug fix (#148): the previous signature sent `{audio_path, session_id}` but
31
+ * the route requires `{seed_path, session_id, source_path}` per its pydantic
32
+ * `TranscribeRequest` model. The route returned 422 on every real call from
33
+ * the worker, breaking `compost transcribe` end-to-end.
34
+ *
35
+ * The fix takes `seedPath` (required) and an optional `language` hint, and
36
+ * sends the body shape the route actually expects. The shape is verified
37
+ * against the contract schema at `cli/contracts/transcribe-request.schema.json`
38
+ * (generated from the pydantic model — see contract test).
39
+ */
40
+ transcribe(audioPath: string, sessionId: string, seedPath: string, language?: string): Promise<TranscribeResponse>;
41
+ }
42
+ //# sourceMappingURL=transcriber_client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcriber_client.d.ts","sourceRoot":"","sources":["../src/transcriber_client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,MAAM,EAAE,IAAI,GAAG,sBAAsB,GAAG,sBAAsB,CAAA;CAC/D;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAA;IACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC,CAAA;CACxC;AAED,qBAAa,uBAAwB,SAAQ,KAAK;aAG9B,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,QAAQ;gBADzD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,QAAQ;CAK5D;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,gFAAgF;AAChF,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAQ;gBAEtB,IAAI,GAAE,wBAA6B;IAMzC,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAc1C;;;;;;;;;;;;OAYG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC;CA+B/B"}
@@ -0,0 +1,72 @@
1
+ import { resolveFetch } from './llm/http.js';
2
+ export class TranscriberServiceError extends Error {
3
+ kind;
4
+ constructor(message, kind) {
5
+ super(message);
6
+ this.kind = kind;
7
+ this.name = 'TranscriberServiceError';
8
+ }
9
+ }
10
+ /** HTTP client for the Python transcriber service (compose: localhost:7862). */
11
+ export class TranscriberClient {
12
+ base;
13
+ fetchImpl;
14
+ timeoutMs;
15
+ constructor(opts = {}) {
16
+ this.base = (opts.baseUrl ?? 'http://localhost:7862').replace(/\/$/, '');
17
+ this.fetchImpl = resolveFetch(opts.fetchImpl);
18
+ this.timeoutMs = opts.timeoutMs ?? 1_800_000; // 30 min; transcription is slow
19
+ }
20
+ async health() {
21
+ try {
22
+ const res = await this.fetchImpl(`${this.base}/health`, { method: 'GET' });
23
+ if (!res.ok)
24
+ return { ok: false, versions: {} };
25
+ const json = (await res.json());
26
+ return { ok: json.status === 'ok', versions: json.versions ?? {} };
27
+ }
28
+ catch {
29
+ return { ok: false, versions: {} };
30
+ }
31
+ }
32
+ /**
33
+ * Invoke POST /transcribe with the body shape the Python route expects.
34
+ *
35
+ * Bug fix (#148): the previous signature sent `{audio_path, session_id}` but
36
+ * the route requires `{seed_path, session_id, source_path}` per its pydantic
37
+ * `TranscribeRequest` model. The route returned 422 on every real call from
38
+ * the worker, breaking `compost transcribe` end-to-end.
39
+ *
40
+ * The fix takes `seedPath` (required) and an optional `language` hint, and
41
+ * sends the body shape the route actually expects. The shape is verified
42
+ * against the contract schema at `cli/contracts/transcribe-request.schema.json`
43
+ * (generated from the pydantic model — see contract test).
44
+ */
45
+ async transcribe(audioPath, sessionId, seedPath, language) {
46
+ const body = {
47
+ seed_path: seedPath,
48
+ session_id: sessionId,
49
+ source_path: audioPath,
50
+ };
51
+ if (language !== undefined)
52
+ body.language = language;
53
+ let res;
54
+ try {
55
+ res = await this.fetchImpl(`${this.base}/transcribe`, {
56
+ method: 'POST',
57
+ headers: { 'content-type': 'application/json' },
58
+ body: JSON.stringify(body),
59
+ });
60
+ }
61
+ catch (err) {
62
+ throw new TranscriberServiceError(`transcriber service unreachable at ${this.base}: ${err instanceof Error ? err.message : String(err)}`, 'down');
63
+ }
64
+ if (res.status === 503)
65
+ throw new TranscriberServiceError('model missing/unavailable', 'model_missing');
66
+ if (!res.ok) {
67
+ throw new TranscriberServiceError(`transcribe failed: ${res.status} ${res.statusText}`, 'failed');
68
+ }
69
+ return (await res.json());
70
+ }
71
+ }
72
+ //# sourceMappingURL=transcriber_client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcriber_client.js","sourceRoot":"","sources":["../src/transcriber_client.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@they-juanreina/compost-cli",
3
+ "version": "0.1.0-rc.1",
4
+ "description": "Compost CLI engine. Subcommand router, JSON-out, harness loop runner.",
5
+ "type": "module",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "license": "MIT",
10
+ "bin": {
11
+ "compost": "./bin/compost.js"
12
+ },
13
+ "exports": {
14
+ ".": "./dist/index.js"
15
+ },
16
+ "files": [
17
+ "bin",
18
+ "dist",
19
+ "templates",
20
+ "package.json"
21
+ ],
22
+ "dependencies": {
23
+ "ajv": "^8.20.0",
24
+ "ajv-formats": "^3.0.1",
25
+ "better-sqlite3": "^11.5.0",
26
+ "chokidar": "^4.0.0",
27
+ "commander": "^12.1.0",
28
+ "smol-toml": "^1.3.0",
29
+ "compost-provenance": "0.1.0-rc.1",
30
+ "compost-evals": "0.1.0-rc.1",
31
+ "compost-retrieval": "0.1.0-rc.1"
32
+ },
33
+ "devDependencies": {
34
+ "@types/better-sqlite3": "^7.6.11",
35
+ "tsx": "^4.19.0"
36
+ },
37
+ "scripts": {
38
+ "prebuild": "node scripts/generate-schemas.mjs",
39
+ "build": "tsc -p .",
40
+ "typecheck": "tsc -p . --noEmit",
41
+ "pretest": "node scripts/generate-schemas.mjs",
42
+ "dev": "tsx src/index.ts",
43
+ "test": "node --import tsx --test 'src/**/*.test.ts'"
44
+ }
45
+ }
@@ -0,0 +1,25 @@
1
+ # AGENTS.md — {{seed_name}}
2
+
3
+ This is the versioned prompt journal for this seed. Compost reads this file when invoking LLM tasks (synthesis, coding, query, chat) and prepends its contents to system prompts. Treat it like a `CLAUDE.md` for your research.
4
+
5
+ Edit freely. Commit changes to version-control alongside the rest of the seed.
6
+
7
+ ## Voice & style
8
+
9
+ - Direct. Cite utterance IDs.
10
+ - "Insufficient evidence" is acceptable when retrieval comes up short — preferable to fabricating.
11
+ - No paraphrasing as if it were a quote. Either quote verbatim with utterance_id, or speak in your own voice.
12
+
13
+ ## Domain glossary
14
+
15
+ - Defer to `glossary/glossary.md`. Don't redefine terms that already live there.
16
+
17
+ ## Anti-patterns
18
+
19
+ - Never invent quotes.
20
+ - Never claim a theme without ≥2 supporting highlights from ≥2 sessions.
21
+ - Never promote an AI-suggested artifact to "endorsed" status — only a researcher does that.
22
+
23
+ ## This seed's specifics
24
+
25
+ _Add anything compost should know that's unique to this research initiative — the stakeholder audience, sensitivities, scope guardrails, deadline pressure, etc._