@isaacriehm/cairn 0.1.0 → 0.1.3

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 (533) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/index.d.ts +0 -1
  3. package/dist/index.js +0 -1
  4. package/dist/index.js.map +1 -1
  5. package/package.json +4 -4
  6. package/dist/backprop/id.d.ts +0 -14
  7. package/dist/backprop/id.js +0 -40
  8. package/dist/backprop/id.js.map +0 -1
  9. package/dist/backprop/index.d.ts +0 -23
  10. package/dist/backprop/index.js +0 -21
  11. package/dist/backprop/index.js.map +0 -1
  12. package/dist/backprop/prompt.d.ts +0 -16
  13. package/dist/backprop/prompt.js +0 -101
  14. package/dist/backprop/prompt.js.map +0 -1
  15. package/dist/backprop/runner.d.ts +0 -18
  16. package/dist/backprop/runner.js +0 -95
  17. package/dist/backprop/runner.js.map +0 -1
  18. package/dist/backprop/schema.d.ts +0 -61
  19. package/dist/backprop/schema.js +0 -55
  20. package/dist/backprop/schema.js.map +0 -1
  21. package/dist/backprop/types.d.ts +0 -101
  22. package/dist/backprop/types.js +0 -24
  23. package/dist/backprop/types.js.map +0 -1
  24. package/dist/backprop/writer.d.ts +0 -27
  25. package/dist/backprop/writer.js +0 -301
  26. package/dist/backprop/writer.js.map +0 -1
  27. package/dist/claude/error.d.ts +0 -33
  28. package/dist/claude/error.js +0 -58
  29. package/dist/claude/error.js.map +0 -1
  30. package/dist/claude/index.d.ts +0 -3
  31. package/dist/claude/index.js +0 -3
  32. package/dist/claude/index.js.map +0 -1
  33. package/dist/claude/runner.d.ts +0 -11
  34. package/dist/claude/runner.js +0 -132
  35. package/dist/claude/runner.js.map +0 -1
  36. package/dist/claude/types.d.ts +0 -52
  37. package/dist/claude/types.js +0 -14
  38. package/dist/claude/types.js.map +0 -1
  39. package/dist/cli/daemon.d.ts +0 -54
  40. package/dist/cli/daemon.js +0 -351
  41. package/dist/cli/daemon.js.map +0 -1
  42. package/dist/cli/install.d.ts +0 -52
  43. package/dist/cli/install.js +0 -308
  44. package/dist/cli/install.js.map +0 -1
  45. package/dist/cli/mirror.d.ts +0 -1
  46. package/dist/cli/mirror.js +0 -97
  47. package/dist/cli/mirror.js.map +0 -1
  48. package/dist/cli/run.d.ts +0 -1
  49. package/dist/cli/run.js +0 -174
  50. package/dist/cli/run.js.map +0 -1
  51. package/dist/cli/task.d.ts +0 -18
  52. package/dist/cli/task.js +0 -137
  53. package/dist/cli/task.js.map +0 -1
  54. package/dist/cli/watch.d.ts +0 -1
  55. package/dist/cli/watch.js +0 -73
  56. package/dist/cli/watch.js.map +0 -1
  57. package/dist/decision-capture/capture.d.ts +0 -57
  58. package/dist/decision-capture/capture.js +0 -186
  59. package/dist/decision-capture/capture.js.map +0 -1
  60. package/dist/decision-capture/extractor.d.ts +0 -20
  61. package/dist/decision-capture/extractor.js +0 -103
  62. package/dist/decision-capture/extractor.js.map +0 -1
  63. package/dist/decision-capture/id.d.ts +0 -14
  64. package/dist/decision-capture/id.js +0 -44
  65. package/dist/decision-capture/id.js.map +0 -1
  66. package/dist/decision-capture/index.d.ts +0 -25
  67. package/dist/decision-capture/index.js +0 -21
  68. package/dist/decision-capture/index.js.map +0 -1
  69. package/dist/decision-capture/prompt.d.ts +0 -15
  70. package/dist/decision-capture/prompt.js +0 -68
  71. package/dist/decision-capture/prompt.js.map +0 -1
  72. package/dist/decision-capture/refinement-prompt.d.ts +0 -25
  73. package/dist/decision-capture/refinement-prompt.js +0 -146
  74. package/dist/decision-capture/refinement-prompt.js.map +0 -1
  75. package/dist/decision-capture/refinement-schema.d.ts +0 -52
  76. package/dist/decision-capture/refinement-schema.js +0 -61
  77. package/dist/decision-capture/refinement-schema.js.map +0 -1
  78. package/dist/decision-capture/refinement.d.ts +0 -60
  79. package/dist/decision-capture/refinement.js +0 -439
  80. package/dist/decision-capture/refinement.js.map +0 -1
  81. package/dist/decision-capture/schema.d.ts +0 -70
  82. package/dist/decision-capture/schema.js +0 -71
  83. package/dist/decision-capture/schema.js.map +0 -1
  84. package/dist/decision-capture/types.d.ts +0 -201
  85. package/dist/decision-capture/types.js +0 -20
  86. package/dist/decision-capture/types.js.map +0 -1
  87. package/dist/decision-capture/writer.d.ts +0 -90
  88. package/dist/decision-capture/writer.js +0 -267
  89. package/dist/decision-capture/writer.js.map +0 -1
  90. package/dist/frontend/discord/acl.d.ts +0 -6
  91. package/dist/frontend/discord/acl.js +0 -19
  92. package/dist/frontend/discord/acl.js.map +0 -1
  93. package/dist/frontend/discord/channels.d.ts +0 -29
  94. package/dist/frontend/discord/channels.js +0 -58
  95. package/dist/frontend/discord/channels.js.map +0 -1
  96. package/dist/frontend/discord/classifier.d.ts +0 -16
  97. package/dist/frontend/discord/classifier.js +0 -29
  98. package/dist/frontend/discord/classifier.js.map +0 -1
  99. package/dist/frontend/discord/index.d.ts +0 -118
  100. package/dist/frontend/discord/index.js +0 -1104
  101. package/dist/frontend/discord/index.js.map +0 -1
  102. package/dist/frontend/discord/slash.d.ts +0 -18
  103. package/dist/frontend/discord/slash.js +0 -90
  104. package/dist/frontend/discord/slash.js.map +0 -1
  105. package/dist/frontend/inbox.d.ts +0 -17
  106. package/dist/frontend/inbox.js +0 -30
  107. package/dist/frontend/inbox.js.map +0 -1
  108. package/dist/frontend/index.d.ts +0 -8
  109. package/dist/frontend/index.js +0 -6
  110. package/dist/frontend/index.js.map +0 -1
  111. package/dist/frontend/stub/index.d.ts +0 -58
  112. package/dist/frontend/stub/index.js +0 -144
  113. package/dist/frontend/stub/index.js.map +0 -1
  114. package/dist/frontend/types.d.ts +0 -247
  115. package/dist/frontend/types.js +0 -15
  116. package/dist/frontend/types.js.map +0 -1
  117. package/dist/gc/apply.d.ts +0 -26
  118. package/dist/gc/apply.js +0 -48
  119. package/dist/gc/apply.js.map +0 -1
  120. package/dist/gc/canary.d.ts +0 -42
  121. package/dist/gc/canary.js +0 -134
  122. package/dist/gc/canary.js.map +0 -1
  123. package/dist/gc/classify.d.ts +0 -25
  124. package/dist/gc/classify.js +0 -89
  125. package/dist/gc/classify.js.map +0 -1
  126. package/dist/gc/doc-gardening.d.ts +0 -29
  127. package/dist/gc/doc-gardening.js +0 -146
  128. package/dist/gc/doc-gardening.js.map +0 -1
  129. package/dist/gc/frontmatter.d.ts +0 -35
  130. package/dist/gc/frontmatter.js +0 -111
  131. package/dist/gc/frontmatter.js.map +0 -1
  132. package/dist/gc/generator-drift.d.ts +0 -28
  133. package/dist/gc/generator-drift.js +0 -53
  134. package/dist/gc/generator-drift.js.map +0 -1
  135. package/dist/gc/index.d.ts +0 -35
  136. package/dist/gc/index.js +0 -26
  137. package/dist/gc/index.js.map +0 -1
  138. package/dist/gc/quality-update.d.ts +0 -23
  139. package/dist/gc/quality-update.js +0 -69
  140. package/dist/gc/quality-update.js.map +0 -1
  141. package/dist/gc/stub-hits.d.ts +0 -31
  142. package/dist/gc/stub-hits.js +0 -125
  143. package/dist/gc/stub-hits.js.map +0 -1
  144. package/dist/gc/sweep.d.ts +0 -56
  145. package/dist/gc/sweep.js +0 -178
  146. package/dist/gc/sweep.js.map +0 -1
  147. package/dist/gc/types.d.ts +0 -129
  148. package/dist/gc/types.js +0 -26
  149. package/dist/gc/types.js.map +0 -1
  150. package/dist/ground/drift.d.ts +0 -8
  151. package/dist/ground/drift.js +0 -23
  152. package/dist/ground/drift.js.map +0 -1
  153. package/dist/ground/frontmatter.d.ts +0 -20
  154. package/dist/ground/frontmatter.js +0 -49
  155. package/dist/ground/frontmatter.js.map +0 -1
  156. package/dist/ground/glob.d.ts +0 -10
  157. package/dist/ground/glob.js +0 -46
  158. package/dist/ground/glob.js.map +0 -1
  159. package/dist/ground/index.d.ts +0 -14
  160. package/dist/ground/index.js +0 -10
  161. package/dist/ground/index.js.map +0 -1
  162. package/dist/ground/ledgers.d.ts +0 -18
  163. package/dist/ground/ledgers.js +0 -103
  164. package/dist/ground/ledgers.js.map +0 -1
  165. package/dist/ground/manifest.d.ts +0 -10
  166. package/dist/ground/manifest.js +0 -88
  167. package/dist/ground/manifest.js.map +0 -1
  168. package/dist/ground/paths.d.ts +0 -20
  169. package/dist/ground/paths.js +0 -61
  170. package/dist/ground/paths.js.map +0 -1
  171. package/dist/ground/quality-grades.d.ts +0 -11
  172. package/dist/ground/quality-grades.js +0 -98
  173. package/dist/ground/quality-grades.js.map +0 -1
  174. package/dist/ground/schemas.d.ts +0 -306
  175. package/dist/ground/schemas.js +0 -188
  176. package/dist/ground/schemas.js.map +0 -1
  177. package/dist/ground/walk.d.ts +0 -7
  178. package/dist/ground/walk.js +0 -53
  179. package/dist/ground/walk.js.map +0 -1
  180. package/dist/init/detect.d.ts +0 -25
  181. package/dist/init/detect.js +0 -336
  182. package/dist/init/detect.js.map +0 -1
  183. package/dist/init/index.d.ts +0 -14
  184. package/dist/init/index.js +0 -9
  185. package/dist/init/index.js.map +0 -1
  186. package/dist/init/init.d.ts +0 -68
  187. package/dist/init/init.js +0 -673
  188. package/dist/init/init.js.map +0 -1
  189. package/dist/init/mapper.d.ts +0 -160
  190. package/dist/init/mapper.js +0 -248
  191. package/dist/init/mapper.js.map +0 -1
  192. package/dist/init/prompts.d.ts +0 -70
  193. package/dist/init/prompts.js +0 -80
  194. package/dist/init/prompts.js.map +0 -1
  195. package/dist/init/secrets.d.ts +0 -18
  196. package/dist/init/secrets.js +0 -76
  197. package/dist/init/secrets.js.map +0 -1
  198. package/dist/init/seed.d.ts +0 -21
  199. package/dist/init/seed.js +0 -75
  200. package/dist/init/seed.js.map +0 -1
  201. package/dist/init/setup-runners.d.ts +0 -17
  202. package/dist/init/setup-runners.js +0 -70
  203. package/dist/init/setup-runners.js.map +0 -1
  204. package/dist/init/types.d.ts +0 -59
  205. package/dist/init/types.js +0 -10
  206. package/dist/init/types.js.map +0 -1
  207. package/dist/init/walker.d.ts +0 -53
  208. package/dist/init/walker.js +0 -460
  209. package/dist/init/walker.js.map +0 -1
  210. package/dist/init/workflow-block.d.ts +0 -34
  211. package/dist/init/workflow-block.js +0 -110
  212. package/dist/init/workflow-block.js.map +0 -1
  213. package/dist/logger.d.ts +0 -3
  214. package/dist/logger.js +0 -23
  215. package/dist/logger.js.map +0 -1
  216. package/dist/mcp/context.d.ts +0 -16
  217. package/dist/mcp/context.js +0 -8
  218. package/dist/mcp/context.js.map +0 -1
  219. package/dist/mcp/errors.d.ts +0 -17
  220. package/dist/mcp/errors.js +0 -23
  221. package/dist/mcp/errors.js.map +0 -1
  222. package/dist/mcp/index.d.ts +0 -10
  223. package/dist/mcp/index.js +0 -7
  224. package/dist/mcp/index.js.map +0 -1
  225. package/dist/mcp/path-allowlist.d.ts +0 -25
  226. package/dist/mcp/path-allowlist.js +0 -66
  227. package/dist/mcp/path-allowlist.js.map +0 -1
  228. package/dist/mcp/result.d.ts +0 -8
  229. package/dist/mcp/result.js +0 -18
  230. package/dist/mcp/result.js.map +0 -1
  231. package/dist/mcp/schemas.d.ts +0 -153
  232. package/dist/mcp/schemas.js +0 -135
  233. package/dist/mcp/schemas.js.map +0 -1
  234. package/dist/mcp/server.d.ts +0 -11
  235. package/dist/mcp/server.js +0 -58
  236. package/dist/mcp/server.js.map +0 -1
  237. package/dist/mcp/telemetry.d.ts +0 -15
  238. package/dist/mcp/telemetry.js +0 -13
  239. package/dist/mcp/telemetry.js.map +0 -1
  240. package/dist/mcp/tools/append.d.ts +0 -8
  241. package/dist/mcp/tools/append.js +0 -33
  242. package/dist/mcp/tools/append.js.map +0 -1
  243. package/dist/mcp/tools/archive.d.ts +0 -8
  244. package/dist/mcp/tools/archive.js +0 -49
  245. package/dist/mcp/tools/archive.js.map +0 -1
  246. package/dist/mcp/tools/ask-operator.d.ts +0 -34
  247. package/dist/mcp/tools/ask-operator.js +0 -93
  248. package/dist/mcp/tools/ask-operator.js.map +0 -1
  249. package/dist/mcp/tools/canonical-for-topic.d.ts +0 -6
  250. package/dist/mcp/tools/canonical-for-topic.js +0 -40
  251. package/dist/mcp/tools/canonical-for-topic.js.map +0 -1
  252. package/dist/mcp/tools/decision-get.d.ts +0 -6
  253. package/dist/mcp/tools/decision-get.js +0 -49
  254. package/dist/mcp/tools/decision-get.js.map +0 -1
  255. package/dist/mcp/tools/decisions-for-symbol.d.ts +0 -7
  256. package/dist/mcp/tools/decisions-for-symbol.js +0 -42
  257. package/dist/mcp/tools/decisions-for-symbol.js.map +0 -1
  258. package/dist/mcp/tools/decisions-in-scope.d.ts +0 -7
  259. package/dist/mcp/tools/decisions-in-scope.js +0 -47
  260. package/dist/mcp/tools/decisions-in-scope.js.map +0 -1
  261. package/dist/mcp/tools/drop-task.d.ts +0 -12
  262. package/dist/mcp/tools/drop-task.js +0 -47
  263. package/dist/mcp/tools/drop-task.js.map +0 -1
  264. package/dist/mcp/tools/get-full.d.ts +0 -7
  265. package/dist/mcp/tools/get-full.js +0 -46
  266. package/dist/mcp/tools/get-full.js.map +0 -1
  267. package/dist/mcp/tools/ground-get.d.ts +0 -7
  268. package/dist/mcp/tools/ground-get.js +0 -80
  269. package/dist/mcp/tools/ground-get.js.map +0 -1
  270. package/dist/mcp/tools/index.d.ts +0 -3
  271. package/dist/mcp/tools/index.js +0 -44
  272. package/dist/mcp/tools/index.js.map +0 -1
  273. package/dist/mcp/tools/invariant-get.d.ts +0 -6
  274. package/dist/mcp/tools/invariant-get.js +0 -49
  275. package/dist/mcp/tools/invariant-get.js.map +0 -1
  276. package/dist/mcp/tools/invariants-in-scope.d.ts +0 -7
  277. package/dist/mcp/tools/invariants-in-scope.js +0 -65
  278. package/dist/mcp/tools/invariants-in-scope.js.map +0 -1
  279. package/dist/mcp/tools/query-history.d.ts +0 -9
  280. package/dist/mcp/tools/query-history.js +0 -33
  281. package/dist/mcp/tools/query-history.js.map +0 -1
  282. package/dist/mcp/tools/record-decision.d.ts +0 -14
  283. package/dist/mcp/tools/record-decision.js +0 -101
  284. package/dist/mcp/tools/record-decision.js.map +0 -1
  285. package/dist/mcp/tools/record-run-event.d.ts +0 -10
  286. package/dist/mcp/tools/record-run-event.js +0 -28
  287. package/dist/mcp/tools/record-run-event.js.map +0 -1
  288. package/dist/mcp/tools/search.d.ts +0 -9
  289. package/dist/mcp/tools/search.js +0 -165
  290. package/dist/mcp/tools/search.js.map +0 -1
  291. package/dist/mcp/tools/supersedes-chain.d.ts +0 -6
  292. package/dist/mcp/tools/supersedes-chain.js +0 -66
  293. package/dist/mcp/tools/supersedes-chain.js.map +0 -1
  294. package/dist/mcp/tools/timeline.d.ts +0 -9
  295. package/dist/mcp/tools/timeline.js +0 -65
  296. package/dist/mcp/tools/timeline.js.map +0 -1
  297. package/dist/mcp/tools/types.d.ts +0 -9
  298. package/dist/mcp/tools/types.js +0 -2
  299. package/dist/mcp/tools/types.js.map +0 -1
  300. package/dist/mirror/clone.d.ts +0 -6
  301. package/dist/mirror/clone.js +0 -48
  302. package/dist/mirror/clone.js.map +0 -1
  303. package/dist/mirror/dirty-overlap.d.ts +0 -13
  304. package/dist/mirror/dirty-overlap.js +0 -77
  305. package/dist/mirror/dirty-overlap.js.map +0 -1
  306. package/dist/mirror/index.d.ts +0 -7
  307. package/dist/mirror/index.js +0 -7
  308. package/dist/mirror/index.js.map +0 -1
  309. package/dist/mirror/paths.d.ts +0 -18
  310. package/dist/mirror/paths.js +0 -45
  311. package/dist/mirror/paths.js.map +0 -1
  312. package/dist/mirror/push.d.ts +0 -9
  313. package/dist/mirror/push.js +0 -27
  314. package/dist/mirror/push.js.map +0 -1
  315. package/dist/mirror/state.d.ts +0 -4
  316. package/dist/mirror/state.js +0 -36
  317. package/dist/mirror/state.js.map +0 -1
  318. package/dist/mirror/sync.d.ts +0 -9
  319. package/dist/mirror/sync.js +0 -33
  320. package/dist/mirror/sync.js.map +0 -1
  321. package/dist/mirror/types.d.ts +0 -77
  322. package/dist/mirror/types.js +0 -2
  323. package/dist/mirror/types.js.map +0 -1
  324. package/dist/orchestrator/activity-summarizer.d.ts +0 -33
  325. package/dist/orchestrator/activity-summarizer.js +0 -120
  326. package/dist/orchestrator/activity-summarizer.js.map +0 -1
  327. package/dist/orchestrator/inbox.d.ts +0 -78
  328. package/dist/orchestrator/inbox.js +0 -115
  329. package/dist/orchestrator/inbox.js.map +0 -1
  330. package/dist/orchestrator/index.d.ts +0 -9
  331. package/dist/orchestrator/index.js +0 -7
  332. package/dist/orchestrator/index.js.map +0 -1
  333. package/dist/orchestrator/orchestrator.d.ts +0 -154
  334. package/dist/orchestrator/orchestrator.js +0 -2437
  335. package/dist/orchestrator/orchestrator.js.map +0 -1
  336. package/dist/orchestrator/prompt.d.ts +0 -19
  337. package/dist/orchestrator/prompt.js +0 -50
  338. package/dist/orchestrator/prompt.js.map +0 -1
  339. package/dist/orchestrator/queue.d.ts +0 -21
  340. package/dist/orchestrator/queue.js +0 -80
  341. package/dist/orchestrator/queue.js.map +0 -1
  342. package/dist/orchestrator/run-log.d.ts +0 -53
  343. package/dist/orchestrator/run-log.js +0 -92
  344. package/dist/orchestrator/run-log.js.map +0 -1
  345. package/dist/orchestrator/runner.d.ts +0 -56
  346. package/dist/orchestrator/runner.js +0 -172
  347. package/dist/orchestrator/runner.js.map +0 -1
  348. package/dist/orchestrator/tool-digest.d.ts +0 -35
  349. package/dist/orchestrator/tool-digest.js +0 -116
  350. package/dist/orchestrator/tool-digest.js.map +0 -1
  351. package/dist/orchestrator/types.d.ts +0 -263
  352. package/dist/orchestrator/types.js +0 -2
  353. package/dist/orchestrator/types.js.map +0 -1
  354. package/dist/orchestrator/workspace.d.ts +0 -21
  355. package/dist/orchestrator/workspace.js +0 -31
  356. package/dist/orchestrator/workspace.js.map +0 -1
  357. package/dist/profiles/index.d.ts +0 -3
  358. package/dist/profiles/index.js +0 -3
  359. package/dist/profiles/index.js.map +0 -1
  360. package/dist/profiles/registry.d.ts +0 -5
  361. package/dist/profiles/registry.js +0 -31
  362. package/dist/profiles/registry.js.map +0 -1
  363. package/dist/profiles/types.d.ts +0 -48
  364. package/dist/profiles/types.js +0 -11
  365. package/dist/profiles/types.js.map +0 -1
  366. package/dist/profiles/unknown.d.ts +0 -9
  367. package/dist/profiles/unknown.js +0 -17
  368. package/dist/profiles/unknown.js.map +0 -1
  369. package/dist/reviewer/index.d.ts +0 -6
  370. package/dist/reviewer/index.js +0 -5
  371. package/dist/reviewer/index.js.map +0 -1
  372. package/dist/reviewer/prompt.d.ts +0 -11
  373. package/dist/reviewer/prompt.js +0 -132
  374. package/dist/reviewer/prompt.js.map +0 -1
  375. package/dist/reviewer/remediation.d.ts +0 -15
  376. package/dist/reviewer/remediation.js +0 -61
  377. package/dist/reviewer/remediation.js.map +0 -1
  378. package/dist/reviewer/reviewer.d.ts +0 -9
  379. package/dist/reviewer/reviewer.js +0 -89
  380. package/dist/reviewer/reviewer.js.map +0 -1
  381. package/dist/reviewer/schema.d.ts +0 -45
  382. package/dist/reviewer/schema.js +0 -43
  383. package/dist/reviewer/schema.js.map +0 -1
  384. package/dist/reviewer/types.d.ts +0 -74
  385. package/dist/reviewer/types.js +0 -14
  386. package/dist/reviewer/types.js.map +0 -1
  387. package/dist/sensors/attestation.d.ts +0 -44
  388. package/dist/sensors/attestation.js +0 -262
  389. package/dist/sensors/attestation.js.map +0 -1
  390. package/dist/sensors/catalog.d.ts +0 -41
  391. package/dist/sensors/catalog.js +0 -123
  392. package/dist/sensors/catalog.js.map +0 -1
  393. package/dist/sensors/decisions.d.ts +0 -30
  394. package/dist/sensors/decisions.js +0 -393
  395. package/dist/sensors/decisions.js.map +0 -1
  396. package/dist/sensors/diff.d.ts +0 -27
  397. package/dist/sensors/diff.js +0 -148
  398. package/dist/sensors/diff.js.map +0 -1
  399. package/dist/sensors/index.d.ts +0 -13
  400. package/dist/sensors/index.js +0 -9
  401. package/dist/sensors/index.js.map +0 -1
  402. package/dist/sensors/remediation.d.ts +0 -20
  403. package/dist/sensors/remediation.js +0 -65
  404. package/dist/sensors/remediation.js.map +0 -1
  405. package/dist/sensors/runner.d.ts +0 -44
  406. package/dist/sensors/runner.js +0 -95
  407. package/dist/sensors/runner.js.map +0 -1
  408. package/dist/sensors/structural.d.ts +0 -30
  409. package/dist/sensors/structural.js +0 -204
  410. package/dist/sensors/structural.js.map +0 -1
  411. package/dist/sensors/stub-catalog.d.ts +0 -39
  412. package/dist/sensors/stub-catalog.js +0 -115
  413. package/dist/sensors/stub-catalog.js.map +0 -1
  414. package/dist/sensors/types.d.ts +0 -135
  415. package/dist/sensors/types.js +0 -14
  416. package/dist/sensors/types.js.map +0 -1
  417. package/dist/tier0/classify.d.ts +0 -5
  418. package/dist/tier0/classify.js +0 -91
  419. package/dist/tier0/classify.js.map +0 -1
  420. package/dist/tier0/index.d.ts +0 -3
  421. package/dist/tier0/index.js +0 -3
  422. package/dist/tier0/index.js.map +0 -1
  423. package/dist/tier0/ollama.d.ts +0 -22
  424. package/dist/tier0/ollama.js +0 -63
  425. package/dist/tier0/ollama.js.map +0 -1
  426. package/dist/tier0/types.d.ts +0 -24
  427. package/dist/tier0/types.js +0 -7
  428. package/dist/tier0/types.js.map +0 -1
  429. package/dist/tightener/index.d.ts +0 -4
  430. package/dist/tightener/index.js +0 -4
  431. package/dist/tightener/index.js.map +0 -1
  432. package/dist/tightener/prompt.d.ts +0 -3
  433. package/dist/tightener/prompt.js +0 -67
  434. package/dist/tightener/prompt.js.map +0 -1
  435. package/dist/tightener/schema.d.ts +0 -68
  436. package/dist/tightener/schema.js +0 -44
  437. package/dist/tightener/schema.js.map +0 -1
  438. package/dist/tightener/tighten.d.ts +0 -2
  439. package/dist/tightener/tighten.js +0 -66
  440. package/dist/tightener/tighten.js.map +0 -1
  441. package/dist/tightener/types.d.ts +0 -74
  442. package/dist/tightener/types.js +0 -6
  443. package/dist/tightener/types.js.map +0 -1
  444. package/dist/uat/bundle.d.ts +0 -68
  445. package/dist/uat/bundle.js +0 -168
  446. package/dist/uat/bundle.js.map +0 -1
  447. package/dist/uat/index.d.ts +0 -15
  448. package/dist/uat/index.js +0 -10
  449. package/dist/uat/index.js.map +0 -1
  450. package/dist/uat/persistent.d.ts +0 -64
  451. package/dist/uat/persistent.js +0 -206
  452. package/dist/uat/persistent.js.map +0 -1
  453. package/dist/uat/probes/cli.d.ts +0 -11
  454. package/dist/uat/probes/cli.js +0 -107
  455. package/dist/uat/probes/cli.js.map +0 -1
  456. package/dist/uat/probes/http.d.ts +0 -12
  457. package/dist/uat/probes/http.js +0 -139
  458. package/dist/uat/probes/http.js.map +0 -1
  459. package/dist/uat/probes/index.d.ts +0 -21
  460. package/dist/uat/probes/index.js +0 -30
  461. package/dist/uat/probes/index.js.map +0 -1
  462. package/dist/uat/probes/integration.d.ts +0 -18
  463. package/dist/uat/probes/integration.js +0 -188
  464. package/dist/uat/probes/integration.js.map +0 -1
  465. package/dist/uat/probes/sql/config.d.ts +0 -14
  466. package/dist/uat/probes/sql/config.js +0 -57
  467. package/dist/uat/probes/sql/config.js.map +0 -1
  468. package/dist/uat/probes/sql/index.d.ts +0 -29
  469. package/dist/uat/probes/sql/index.js +0 -43
  470. package/dist/uat/probes/sql/index.js.map +0 -1
  471. package/dist/uat/probes/sql/mysql.d.ts +0 -12
  472. package/dist/uat/probes/sql/mysql.js +0 -96
  473. package/dist/uat/probes/sql/mysql.js.map +0 -1
  474. package/dist/uat/probes/sql/pg.d.ts +0 -20
  475. package/dist/uat/probes/sql/pg.js +0 -102
  476. package/dist/uat/probes/sql/pg.js.map +0 -1
  477. package/dist/uat/probes/sql/sqlite.d.ts +0 -9
  478. package/dist/uat/probes/sql/sqlite.js +0 -58
  479. package/dist/uat/probes/sql/sqlite.js.map +0 -1
  480. package/dist/uat/probes/sql/types.d.ts +0 -46
  481. package/dist/uat/probes/sql/types.js +0 -10
  482. package/dist/uat/probes/sql/types.js.map +0 -1
  483. package/dist/uat/probes/sql.d.ts +0 -9
  484. package/dist/uat/probes/sql.js +0 -119
  485. package/dist/uat/probes/sql.js.map +0 -1
  486. package/dist/uat/probes/ui.d.ts +0 -19
  487. package/dist/uat/probes/ui.js +0 -244
  488. package/dist/uat/probes/ui.js.map +0 -1
  489. package/dist/uat/prompt.d.ts +0 -10
  490. package/dist/uat/prompt.js +0 -85
  491. package/dist/uat/prompt.js.map +0 -1
  492. package/dist/uat/question.d.ts +0 -50
  493. package/dist/uat/question.js +0 -139
  494. package/dist/uat/question.js.map +0 -1
  495. package/dist/uat/rejection.d.ts +0 -58
  496. package/dist/uat/rejection.js +0 -163
  497. package/dist/uat/rejection.js.map +0 -1
  498. package/dist/uat/runner.d.ts +0 -6
  499. package/dist/uat/runner.js +0 -96
  500. package/dist/uat/runner.js.map +0 -1
  501. package/dist/uat/schema.d.ts +0 -322
  502. package/dist/uat/schema.js +0 -189
  503. package/dist/uat/schema.js.map +0 -1
  504. package/dist/uat/types.d.ts +0 -268
  505. package/dist/uat/types.js +0 -18
  506. package/dist/uat/types.js.map +0 -1
  507. package/dist/uat/uat.d.ts +0 -89
  508. package/dist/uat/uat.js +0 -256
  509. package/dist/uat/uat.js.map +0 -1
  510. package/dist/voice/index.d.ts +0 -4
  511. package/dist/voice/index.js +0 -4
  512. package/dist/voice/index.js.map +0 -1
  513. package/dist/voice/model.d.ts +0 -23
  514. package/dist/voice/model.js +0 -46
  515. package/dist/voice/model.js.map +0 -1
  516. package/dist/voice/pipe.d.ts +0 -9
  517. package/dist/voice/pipe.js +0 -47
  518. package/dist/voice/pipe.js.map +0 -1
  519. package/dist/voice/transcribe.d.ts +0 -3
  520. package/dist/voice/transcribe.js +0 -43
  521. package/dist/voice/transcribe.js.map +0 -1
  522. package/dist/voice/types.d.ts +0 -26
  523. package/dist/voice/types.js +0 -9
  524. package/dist/voice/types.js.map +0 -1
  525. package/dist/watch/daemon.d.ts +0 -21
  526. package/dist/watch/daemon.js +0 -143
  527. package/dist/watch/daemon.js.map +0 -1
  528. package/dist/watch/index.d.ts +0 -4
  529. package/dist/watch/index.js +0 -3
  530. package/dist/watch/index.js.map +0 -1
  531. package/dist/watch/regenerate.d.ts +0 -25
  532. package/dist/watch/regenerate.js +0 -51
  533. package/dist/watch/regenerate.js.map +0 -1
package/dist/cli/task.js DELETED
@@ -1,137 +0,0 @@
1
- /**
2
- * `harness task` — terminal-native task submit.
3
- *
4
- * Drops a `task` inbox row to the running daemon's mirror checkout. The
5
- * orchestrator picks it up via chokidar (or the periodic poll). No
6
- * Discord interaction required.
7
- *
8
- * Project resolution order:
9
- * 1. --project <slug> flag
10
- * 2. `.harness/config.yaml` in the current working directory
11
- * 3. error out
12
- *
13
- * Operator workflow:
14
- * cd ~/myapp
15
- * harness task "build feature X" --acceptance "must do Y" --acceptance "must not Z"
16
- * # daemon picks up; status visible via /status in Discord
17
- */
18
- import { existsSync, readFileSync } from "node:fs";
19
- import { resolve } from "node:path";
20
- import { parse as parseYaml } from "yaml";
21
- import { normalizeProjectName, readMirrorRecord, writeInboxRow, } from "@devplusllc/harness-core";
22
- function parseArgs(argv) {
23
- const positional = [];
24
- const flags = {};
25
- for (let i = 0; i < argv.length; i++) {
26
- const arg = argv[i];
27
- if (arg === undefined)
28
- continue;
29
- if (arg.startsWith("--")) {
30
- const key = arg.slice(2);
31
- const next = argv[i + 1];
32
- if (next !== undefined && !next.startsWith("--")) {
33
- const existing = flags[key];
34
- if (Array.isArray(existing)) {
35
- existing.push(next);
36
- }
37
- else if (typeof existing === "string") {
38
- flags[key] = [existing, next];
39
- }
40
- else {
41
- flags[key] = next;
42
- }
43
- i += 1;
44
- }
45
- else {
46
- flags[key] = true;
47
- }
48
- }
49
- else {
50
- positional.push(arg);
51
- }
52
- }
53
- return { positional, flags };
54
- }
55
- function usage() {
56
- console.error("Usage: harness task <body> [options]\n" +
57
- " <body> task description (free text)\n" +
58
- " --project <slug> project slug (default: read .harness/config.yaml in cwd)\n" +
59
- " --title <s> override title (default: first 80 chars of body)\n" +
60
- " --acceptance <s> acceptance criterion (repeat for multiple)\n" +
61
- " --ship-anyway bypass spec-tightener gate (logged)\n" +
62
- " --target <glob> target path glob (repeat for multiple)\n" +
63
- "\n" +
64
- "Drops a task inbox row to the daemon's mirror. Orchestrator picks it\n" +
65
- "up automatically (no Discord required). Watch progress via Discord\n" +
66
- "/status or `tail -F .harness/runs/active/<run-id>/log.jsonl`.");
67
- process.exit(1);
68
- }
69
- function readProjectFromCwd() {
70
- const configPath = resolve(process.cwd(), ".harness", "config.yaml");
71
- if (!existsSync(configPath))
72
- return undefined;
73
- try {
74
- const text = readFileSync(configPath, "utf8");
75
- const parsed = parseYaml(text);
76
- const slug = parsed["slug"];
77
- return typeof slug === "string" ? slug : undefined;
78
- }
79
- catch {
80
- return undefined;
81
- }
82
- }
83
- function asStringArray(v) {
84
- if (Array.isArray(v))
85
- return v;
86
- if (typeof v === "string")
87
- return [v];
88
- return [];
89
- }
90
- export async function taskCli(argv) {
91
- const { positional, flags } = parseArgs(argv);
92
- if (flags["help"] === true || flags["h"] === true)
93
- usage();
94
- const body = positional.join(" ").trim();
95
- if (body.length === 0) {
96
- console.error("harness task: <body> is required\n");
97
- usage();
98
- }
99
- const slugRaw = typeof flags["project"] === "string"
100
- ? flags["project"]
101
- : readProjectFromCwd();
102
- if (slugRaw === undefined || slugRaw.length === 0) {
103
- console.error("harness task: --project required (no .harness/config.yaml in cwd)");
104
- process.exit(2);
105
- }
106
- const project = normalizeProjectName(slugRaw);
107
- const record = readMirrorRecord(project);
108
- if (record === null) {
109
- console.error(`harness task: no mirror record for project "${project}". Run "harness init" + "harness mirror init --project ${project}" first.`);
110
- process.exit(2);
111
- }
112
- const titleRaw = typeof flags["title"] === "string" ? flags["title"] : undefined;
113
- const title = titleRaw ?? body.slice(0, 80);
114
- const acceptance = asStringArray(flags["acceptance"]);
115
- const targetGlobs = asStringArray(flags["target"]);
116
- const shipAnyway = flags["ship-anyway"] === true;
117
- const taskPayload = {
118
- task: {
119
- rawText: body,
120
- intent: "code_task",
121
- authorId: "cli",
122
- receivedAt: new Date().toISOString(),
123
- },
124
- title,
125
- ...(acceptance.length > 0 ? { acceptance_criteria: acceptance } : {}),
126
- ...(targetGlobs.length > 0 ? { target_path_globs: targetGlobs } : {}),
127
- ...(shipAnyway ? { ship_anyway: true } : {}),
128
- };
129
- const file = await writeInboxRow({
130
- repoRoot: record.mirrorPath,
131
- source: "cli",
132
- kind: "task",
133
- payload: taskPayload,
134
- });
135
- process.stdout.write(`task queued for project "${project}"\n inbox: ${file}\n title: ${title}\n body: ${body.slice(0, 200)}${body.length > 200 ? "…" : ""}\n acceptance: ${acceptance.length}\n ship-anyway: ${shipAnyway}\n`);
136
- }
137
- //# sourceMappingURL=task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/cli/task.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export declare function watchCli(argv: string[]): Promise<void>;
package/dist/cli/watch.js DELETED
@@ -1,73 +0,0 @@
1
- import { resolve } from "node:path";
2
- import { logger, normalizeProjectName, readMirrorRecord } from "@devplusllc/harness-core";
3
- import { startDaemon } from "@devplusllc/harness-runtime";
4
- const log = logger("cli.watch");
5
- function parseArgs(argv) {
6
- const positional = [];
7
- const flags = {};
8
- for (let i = 0; i < argv.length; i++) {
9
- const arg = argv[i];
10
- if (arg === undefined)
11
- continue;
12
- if (arg.startsWith("--")) {
13
- const key = arg.slice(2);
14
- const next = argv[i + 1];
15
- if (next !== undefined && !next.startsWith("--")) {
16
- flags[key] = next;
17
- i += 1;
18
- }
19
- else {
20
- flags[key] = true;
21
- }
22
- }
23
- else {
24
- positional.push(arg);
25
- }
26
- }
27
- return { positional, flags };
28
- }
29
- function usage() {
30
- console.error("Usage: harness watch --project <name> [--repo-root <path>] [--debounce-ms <n>]\n" +
31
- " --project project slug (matches `harness mirror init --project ...`)\n" +
32
- " --repo-root target dir to watch (default: mirror path from state)\n" +
33
- " --debounce-ms debounce window before regen fires (default: 500)");
34
- process.exit(1);
35
- }
36
- export async function watchCli(argv) {
37
- const { flags } = parseArgs(argv);
38
- const project = typeof flags["project"] === "string" ? flags["project"] : undefined;
39
- if (project === undefined)
40
- usage();
41
- const projectName = normalizeProjectName(project);
42
- const debounceMs = typeof flags["debounce-ms"] === "string" ? Number.parseInt(flags["debounce-ms"], 10) : 500;
43
- let repoRoot;
44
- if (typeof flags["repo-root"] === "string") {
45
- repoRoot = resolve(flags["repo-root"]);
46
- }
47
- else {
48
- const record = readMirrorRecord(projectName);
49
- if (!record) {
50
- console.error(`No mirror record for "${projectName}". Run \`harness mirror init\` first or pass --repo-root explicitly.`);
51
- process.exit(1);
52
- }
53
- repoRoot = record.mirrorPath;
54
- }
55
- const handle = await startDaemon({
56
- projectName,
57
- repoRoot,
58
- debounceMs: Number.isFinite(debounceMs) ? debounceMs : 500,
59
- });
60
- const shutdown = async (signal) => {
61
- log.info({ signal }, "shutdown signal received");
62
- await handle.stop();
63
- process.exit(0);
64
- };
65
- process.on("SIGINT", () => void shutdown("SIGINT"));
66
- process.on("SIGTERM", () => void shutdown("SIGTERM"));
67
- console.log(`harness watch: project=${projectName} root=${repoRoot} (Ctrl-C to stop)`);
68
- // Keep the event loop alive until a signal arrives.
69
- await new Promise(() => {
70
- /* never resolves */
71
- });
72
- }
73
- //# sourceMappingURL=watch.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"watch.js","sourceRoot":"","sources":["../../src/cli/watch.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- /**
2
- * runDecisionCapture — orchestrates the full flow:
3
- *
4
- * raw_text → extract → write draft → adapter dialog 🟢/🟡/🔴
5
- * ├── 🟢 commit → acceptDraft → ledger
6
- * ├── 🟡 edit → leave draft + return correction text
7
- * └── 🔴 reject → rejectDraft → no record
8
- *
9
- * The dialog is supplied by the caller (typically a FrontendAdapter's
10
- * requestDialog) so this entry point works equally well in tests with the
11
- * stub adapter, in CLI with a TTY prompt, and in Discord with the real
12
- * adapter.
13
- */
14
- import type { FrontendAdapter } from "../frontend/index.js";
15
- import type { ClaudeTier } from "../claude/index.js";
16
- import { runDecisionExtractor } from "./extractor.js";
17
- import { proposeStrictAssertions } from "./refinement.js";
18
- import type { DecisionCaptureResult } from "./types.js";
19
- export interface RunDecisionCaptureArgs {
20
- /** Repo root for the mirror checkout. */
21
- repoRoot: string;
22
- /** Raw operator text. */
23
- rawText: string;
24
- /** Operator id. */
25
- authorId: string;
26
- /** Source — `discord:slash:/direction` or `discord:free_text` etc. */
27
- source: string;
28
- /** ISO timestamp the message was received. Default = now. */
29
- receivedAt?: string;
30
- /** Tier for the extractor. Default = haiku. */
31
- tier?: ClaudeTier;
32
- /** Channel id to thread the confirm dialog through. */
33
- channelId?: string;
34
- /** Adapter that owns the confirm dialog. */
35
- adapter: FrontendAdapter;
36
- /** Confirm-dialog timeout. Default 60_000 ms. */
37
- confirmTimeoutMs?: number;
38
- /**
39
- * Optional: override the extractor entry point. Smokes inject a stub so
40
- * the smoke runs without burning claude quota when only the
41
- * draft/confirm/ledger flow needs verifying.
42
- */
43
- extractorOverride?: typeof runDecisionExtractor;
44
- /**
45
- * Skip the post-commit refinement step. Defaults to false. The
46
- * orchestrator's `bypassRefinement` mirrors this for production runs;
47
- * smokes that don't care about refinement can flip it on.
48
- */
49
- bypassRefinement?: boolean;
50
- /** Tier for the refinement proposer. Default = haiku. */
51
- refinementTier?: ClaudeTier;
52
- /** Refinement dialog timeout. Default 60_000 ms. */
53
- refinementDialogTimeoutMs?: number;
54
- /** Smokes inject a stub proposer to avoid burning claude quota. */
55
- refinementProposerOverride?: typeof proposeStrictAssertions;
56
- }
57
- export declare function runDecisionCapture(args: RunDecisionCaptureArgs): Promise<DecisionCaptureResult>;
@@ -1,186 +0,0 @@
1
- /**
2
- * runDecisionCapture — orchestrates the full flow:
3
- *
4
- * raw_text → extract → write draft → adapter dialog 🟢/🟡/🔴
5
- * ├── 🟢 commit → acceptDraft → ledger
6
- * ├── 🟡 edit → leave draft + return correction text
7
- * └── 🔴 reject → rejectDraft → no record
8
- *
9
- * The dialog is supplied by the caller (typically a FrontendAdapter's
10
- * requestDialog) so this entry point works equally well in tests with the
11
- * stub adapter, in CLI with a TTY prompt, and in Discord with the real
12
- * adapter.
13
- */
14
- import { logger } from "../logger.js";
15
- import { runDecisionExtractor } from "./extractor.js";
16
- import { allocateDecisionId } from "./id.js";
17
- import { acceptDraft, rejectDraft, writeDecisionDraft, } from "./writer.js";
18
- import { runDecisionRefinement, } from "./refinement.js";
19
- const log = logger("decision-capture");
20
- const CHOICE_COMMIT = "a";
21
- const CHOICE_EDIT = "b";
22
- const CHOICE_REJECT = "c";
23
- export async function runDecisionCapture(args) {
24
- const startedAt = Date.now();
25
- const tier = args.tier ?? "haiku";
26
- const receivedAt = args.receivedAt ?? new Date().toISOString();
27
- const extract = args.extractorOverride ?? runDecisionExtractor;
28
- const extractorResult = await extract({
29
- raw_text: args.rawText,
30
- author_id: args.authorId,
31
- received_at: receivedAt,
32
- source: args.source,
33
- tier,
34
- });
35
- if (extractorResult.output.not_a_decision) {
36
- log.info({ source: args.source, author: args.authorId }, "decision-extractor flagged not_a_decision — short-circuiting");
37
- return {
38
- short_circuited: true,
39
- duration_ms: Date.now() - startedAt,
40
- };
41
- }
42
- const id = allocateDecisionId(args.repoRoot);
43
- const draft = writeDecisionDraft({
44
- repoRoot: args.repoRoot,
45
- id,
46
- output: extractorResult.output,
47
- rawText: args.rawText,
48
- authorId: args.authorId,
49
- receivedAt,
50
- source: args.source,
51
- });
52
- log.info({ id, draft_path: draft.draft_path, confidence: extractorResult.output.confidence_signal }, "draft written; awaiting confirm");
53
- const decision = await promptConfirm({
54
- adapter: args.adapter,
55
- draft,
56
- ...(args.channelId !== undefined ? { channelId: args.channelId } : {}),
57
- timeoutMs: args.confirmTimeoutMs ?? 60_000,
58
- });
59
- if (decision.decision === "commit") {
60
- const accepted = acceptDraft({ repoRoot: args.repoRoot, draft });
61
- log.info({ id, accepted_path: accepted.acceptedPath, ledger_size: accepted.ledgerSize }, "draft accepted; ledger regenerated");
62
- let refinement;
63
- const hasCandidates = extractorResult.output.candidate_assertions.length > 0;
64
- if (!args.bypassRefinement && hasCandidates) {
65
- try {
66
- refinement = await runDecisionRefinement({
67
- repoRoot: args.repoRoot,
68
- decisionId: id,
69
- adapter: args.adapter,
70
- ...(args.channelId !== undefined ? { channelId: args.channelId } : {}),
71
- tier: args.refinementTier ?? tier,
72
- ...(args.refinementDialogTimeoutMs !== undefined
73
- ? { dialogTimeoutMs: args.refinementDialogTimeoutMs }
74
- : {}),
75
- ...(args.refinementProposerOverride !== undefined
76
- ? { proposerOverride: args.refinementProposerOverride }
77
- : {}),
78
- });
79
- log.info({
80
- id,
81
- operator_choice: refinement.operator_choice,
82
- lifted: refinement.lifted_count,
83
- demoted: refinement.demoted_count,
84
- kept_candidate: refinement.skipped_count,
85
- }, "refinement complete");
86
- }
87
- catch (err) {
88
- // Refinement failure must NEVER roll back the accept. Log and move
89
- // on; candidates stay loose under candidate_assertions: for the
90
- // operator's next refine pass.
91
- log.error({ err: String(err), id }, "refinement threw — accept stands; candidates remain loose");
92
- }
93
- }
94
- return {
95
- short_circuited: false,
96
- draft,
97
- confirm: {
98
- decision: "commit",
99
- accepted_path: accepted.acceptedPath,
100
- ledger_size: accepted.ledgerSize,
101
- draft,
102
- confidence: extractorResult.output.confidence_signal,
103
- },
104
- ...(refinement !== undefined ? { refinement } : {}),
105
- duration_ms: Date.now() - startedAt,
106
- };
107
- }
108
- if (decision.decision === "edit") {
109
- log.info({ id, correction: decision.correction?.slice(0, 120) }, "draft edit requested");
110
- return {
111
- short_circuited: false,
112
- draft,
113
- confirm: {
114
- decision: "edit",
115
- draft,
116
- ...(decision.correction !== undefined ? { correction: decision.correction } : {}),
117
- confidence: extractorResult.output.confidence_signal,
118
- },
119
- duration_ms: Date.now() - startedAt,
120
- };
121
- }
122
- // reject
123
- rejectDraft({ repoRoot: args.repoRoot, draft });
124
- log.info({ id }, "draft rejected; file removed");
125
- return {
126
- short_circuited: false,
127
- draft,
128
- confirm: {
129
- decision: "reject",
130
- draft,
131
- confidence: extractorResult.output.confidence_signal,
132
- },
133
- duration_ms: Date.now() - startedAt,
134
- };
135
- }
136
- async function promptConfirm(args) {
137
- const summary = args.draft.output.summary.split(/\r?\n/).slice(0, 3).join(" ").trim();
138
- const scope = args.draft.output.scope_globs.length > 0
139
- ? args.draft.output.scope_globs.join(", ")
140
- : "(no scope captured)";
141
- const supersedes = args.draft.output.supersedes
142
- ? `Supersedes ${args.draft.output.supersedes}. `
143
- : "";
144
- const assertions = args.draft.output.candidate_assertions.length;
145
- const prompt = [
146
- `Confirm ${args.draft.id}? "${args.draft.output.subject}"`,
147
- summary,
148
- `Scope: ${scope}`,
149
- `${supersedes}Candidate assertions: ${assertions}`,
150
- ].join("\n");
151
- const dialogSpec = {
152
- bundleId: args.draft.id,
153
- prompt,
154
- choices: [
155
- { id: CHOICE_COMMIT, label: "🟢 commit" },
156
- { id: CHOICE_EDIT, label: "🟡 edit" },
157
- { id: CHOICE_REJECT, label: "🔴 not a decision" },
158
- { id: "e_other", label: "E) Other" },
159
- ],
160
- timeoutMs: args.timeoutMs,
161
- };
162
- if (args.channelId !== undefined)
163
- dialogSpec.channelId = args.channelId;
164
- const response = await args.adapter.requestDialog(dialogSpec);
165
- if (response.timedOut) {
166
- // Timeout = treat as edit-with-no-correction so the draft survives in
167
- // _inbox/ and the operator can come back to it. This avoids losing the
168
- // capture on a transient inattentiveness.
169
- return { decision: "edit" };
170
- }
171
- if (response.choiceId === CHOICE_COMMIT) {
172
- return { decision: "commit" };
173
- }
174
- if (response.choiceId === CHOICE_REJECT) {
175
- return { decision: "reject" };
176
- }
177
- if (response.choiceId === CHOICE_EDIT || response.choiceId === "e_other") {
178
- return {
179
- decision: "edit",
180
- ...(response.freeText !== undefined ? { correction: response.freeText } : {}),
181
- };
182
- }
183
- // Unknown id — fall back to edit (preserve the draft).
184
- return { decision: "edit" };
185
- }
186
- //# sourceMappingURL=capture.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../src/decision-capture/capture.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- /**
2
- * Decision-extractor runner.
3
- *
4
- * Single Tier-1 (Haiku) call by default per workflow.md
5
- * `decision_extractor: 1`. Output is gated by `--json-schema`. The wrapper
6
- * validates shape via a runtime guard and returns the typed payload.
7
- *
8
- * The runner does NOT touch the filesystem. It returns the extractor's
9
- * structured output; the writer + confirm flow handle persistence.
10
- */
11
- import type { DecisionExtractorInput, DecisionExtractorOutput } from "./types.js";
12
- export interface ExtractorResult {
13
- output: DecisionExtractorOutput;
14
- duration_ms: number;
15
- usage?: {
16
- input_tokens?: number;
17
- output_tokens?: number;
18
- };
19
- }
20
- export declare function runDecisionExtractor(input: DecisionExtractorInput): Promise<ExtractorResult>;
@@ -1,103 +0,0 @@
1
- /**
2
- * Decision-extractor runner.
3
- *
4
- * Single Tier-1 (Haiku) call by default per workflow.md
5
- * `decision_extractor: 1`. Output is gated by `--json-schema`. The wrapper
6
- * validates shape via a runtime guard and returns the typed payload.
7
- *
8
- * The runner does NOT touch the filesystem. It returns the extractor's
9
- * structured output; the writer + confirm flow handle persistence.
10
- */
11
- import { runClaude } from "../claude/index.js";
12
- import { logger } from "../logger.js";
13
- import { DECISION_EXTRACTOR_SYSTEM_PROMPT, buildDecisionExtractorUserPrompt, } from "./prompt.js";
14
- import { DECISION_EXTRACTOR_OUTPUT_SCHEMA } from "./schema.js";
15
- const log = logger("decision-capture.extractor");
16
- export async function runDecisionExtractor(input) {
17
- const userPrompt = buildDecisionExtractorUserPrompt(input);
18
- log.info({
19
- tier: input.tier,
20
- raw_text_len: input.raw_text.length,
21
- accepted_decisions: input.accepted_decisions?.length ?? 0,
22
- }, "decision-extractor dispatch");
23
- const result = await runClaude({
24
- tier: input.tier,
25
- prompt: userPrompt,
26
- system: DECISION_EXTRACTOR_SYSTEM_PROMPT,
27
- jsonSchema: DECISION_EXTRACTOR_OUTPUT_SCHEMA,
28
- timeoutMs: input.timeout_ms ?? 120_000,
29
- });
30
- if (!isOutput(result.parsed)) {
31
- throw new Error(`decision-extractor returned malformed output. preview: ${result.text.slice(0, 200)}`);
32
- }
33
- const output = result.parsed;
34
- log.info({
35
- not_a_decision: output.not_a_decision,
36
- subject_preview: output.subject.slice(0, 80),
37
- assertions: output.candidate_assertions.length,
38
- confidence: output.confidence_signal,
39
- duration_ms: result.durationMs,
40
- }, "decision-extractor complete");
41
- return {
42
- output,
43
- duration_ms: result.durationMs,
44
- ...(result.usage !== undefined
45
- ? {
46
- usage: {
47
- ...(result.usage["input_tokens"] !== undefined
48
- ? { input_tokens: result.usage["input_tokens"] }
49
- : {}),
50
- ...(result.usage["output_tokens"] !== undefined
51
- ? { output_tokens: result.usage["output_tokens"] }
52
- : {}),
53
- },
54
- }
55
- : {}),
56
- };
57
- }
58
- function isOutput(value) {
59
- if (typeof value !== "object" || value === null)
60
- return false;
61
- const v = value;
62
- if (typeof v["subject"] !== "string")
63
- return false;
64
- if (typeof v["summary"] !== "string")
65
- return false;
66
- if (!Array.isArray(v["scope_globs"]))
67
- return false;
68
- for (const g of v["scope_globs"]) {
69
- if (typeof g !== "string")
70
- return false;
71
- }
72
- const supersedes = v["supersedes"];
73
- if (supersedes !== undefined &&
74
- supersedes !== null &&
75
- typeof supersedes !== "string") {
76
- return false;
77
- }
78
- if (!Array.isArray(v["candidate_assertions"]))
79
- return false;
80
- for (const a of v["candidate_assertions"]) {
81
- if (!isCandidateAssertion(a))
82
- return false;
83
- }
84
- if (v["confidence_signal"] !== "high" &&
85
- v["confidence_signal"] !== "medium" &&
86
- v["confidence_signal"] !== "low") {
87
- return false;
88
- }
89
- if (typeof v["not_a_decision"] !== "boolean")
90
- return false;
91
- return true;
92
- }
93
- function isCandidateAssertion(value) {
94
- if (typeof value !== "object" || value === null)
95
- return false;
96
- const v = value;
97
- if (typeof v["kind"] !== "string")
98
- return false;
99
- if (typeof v["description"] !== "string")
100
- return false;
101
- return true;
102
- }
103
- //# sourceMappingURL=extractor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../src/decision-capture/extractor.ts"],"names":[],"mappings":"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"}
@@ -1,14 +0,0 @@
1
- /**
2
- * Decision id allocator. DEC-NNNN, monotonic, never reused.
3
- *
4
- * Scans `.harness/ground/decisions/` for accepted decisions AND
5
- * `.harness/ground/decisions/_inbox/` for outstanding drafts. Either counts
6
- * toward the high-water mark — a draft that's pending operator confirmation
7
- * still owns its id; rejecting a draft does NOT recycle the id.
8
- */
9
- /**
10
- * Return the next free `DEC-<NNNN>` id. The scan is liberal — any DEC-prefixed
11
- * file (`.md` or `.draft.md`) counts toward the mark, including superseded
12
- * decisions and rejected drafts that the harness chose to leave on disk.
13
- */
14
- export declare function allocateDecisionId(repoRoot: string): string;