@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
@@ -1,172 +0,0 @@
1
- import { spawn } from "node:child_process";
2
- import { appendFile, mkdir } from "node:fs/promises";
3
- import { dirname } from "node:path";
4
- import { logger } from "../logger.js";
5
- import { ClaudeError, classifyClaudeError } from "../claude/error.js";
6
- const log = logger("orchestrator.runner");
7
- const TIER_MODEL = {
8
- haiku: "haiku",
9
- sonnet: "sonnet",
10
- opus: "opus",
11
- };
12
- /**
13
- * Run the implementer agent via `claude --print --output-format stream-json`
14
- * and stream every event line to `eventsLogPath` (NDJSON). The final event
15
- * (type: "result") is returned to the caller.
16
- *
17
- * The agent operates in `cwd` (the mirror) and has access to the standard
18
- * Claude Code tool surface. It MUST NOT commit or push — those are later
19
- * phases. The `workflow.md` template's "Constraints" section enforces this
20
- * via instruction; future phases add hook-level enforcement.
21
- */
22
- export async function runImplementer(opts) {
23
- const model = TIER_MODEL[opts.tier];
24
- const args = [
25
- "--print",
26
- "--output-format",
27
- "stream-json",
28
- "--include-partial-messages",
29
- "--no-session-persistence",
30
- "--verbose",
31
- "--permission-mode",
32
- opts.permissionMode ?? "bypassPermissions",
33
- "--model",
34
- model,
35
- ];
36
- if (opts.allowedTools && opts.allowedTools.length > 0) {
37
- args.push("--allowedTools", opts.allowedTools.join(" "));
38
- }
39
- if (opts.addDirs && opts.addDirs.length > 0) {
40
- args.push("--add-dir", ...opts.addDirs);
41
- }
42
- await mkdir(dirname(opts.eventsLogPath), { recursive: true });
43
- const startedAt = Date.now();
44
- const ctrl = new AbortController();
45
- const timer = setTimeout(() => ctrl.abort("timeout"), opts.timeoutMs ?? 600_000);
46
- const signal = opts.abortSignal !== undefined
47
- ? AbortSignal.any([ctrl.signal, opts.abortSignal])
48
- : ctrl.signal;
49
- return new Promise((resolve, reject) => {
50
- const child = spawn("claude", args, {
51
- cwd: opts.cwd,
52
- stdio: ["pipe", "pipe", "pipe"],
53
- signal,
54
- });
55
- // SIGKILL escalation when the abort fires (whether from /halt or timeout).
56
- // `spawn`'s `signal` option sends SIGTERM via Node's internals; if the
57
- // child ignores it (e.g. blocked on stdin), we force-terminate after the
58
- // grace period so /halt actually kills.
59
- let killEscalation;
60
- const onAbort = () => {
61
- if (killEscalation !== undefined)
62
- return;
63
- killEscalation = setTimeout(() => {
64
- if (child.exitCode === null && child.signalCode === null) {
65
- try {
66
- child.kill("SIGKILL");
67
- }
68
- catch {
69
- // best-effort
70
- }
71
- }
72
- }, opts.killGraceMs ?? 30_000);
73
- };
74
- if (signal.aborted)
75
- onAbort();
76
- else
77
- signal.addEventListener("abort", onAbort, { once: true });
78
- let stderr = "";
79
- let buffer = "";
80
- let eventCount = 0;
81
- let resultEvent;
82
- const writeQueue = Promise.resolve();
83
- let writeChain = writeQueue;
84
- const handleLine = (line) => {
85
- const trimmed = line.trim();
86
- if (trimmed.length === 0)
87
- return;
88
- let parsed;
89
- try {
90
- parsed = JSON.parse(trimmed);
91
- }
92
- catch (err) {
93
- log.warn({ err: String(err), preview: trimmed.slice(0, 120) }, "stream line parse failed");
94
- return;
95
- }
96
- eventCount += 1;
97
- if (parsed["type"] === "result")
98
- resultEvent = parsed;
99
- writeChain = writeChain
100
- .then(() => appendFile(opts.eventsLogPath, `${trimmed}\n`, "utf8"))
101
- .catch((err) => log.warn({ err: String(err) }, "events log append failed"));
102
- if (opts.onEvent) {
103
- try {
104
- opts.onEvent(parsed);
105
- }
106
- catch (err) {
107
- log.warn({ err: String(err) }, "onEvent threw");
108
- }
109
- }
110
- };
111
- child.stdout.on("data", (chunk) => {
112
- buffer += chunk.toString("utf8");
113
- let nl = buffer.indexOf("\n");
114
- while (nl !== -1) {
115
- handleLine(buffer.slice(0, nl));
116
- buffer = buffer.slice(nl + 1);
117
- nl = buffer.indexOf("\n");
118
- }
119
- });
120
- child.stderr.on("data", (chunk) => {
121
- stderr += chunk.toString("utf8");
122
- });
123
- child.on("error", (err) => {
124
- clearTimeout(timer);
125
- reject(err);
126
- });
127
- child.on("close", (code) => {
128
- clearTimeout(timer);
129
- if (killEscalation !== undefined)
130
- clearTimeout(killEscalation);
131
- // Flush any trailing line.
132
- if (buffer.length > 0)
133
- handleLine(buffer);
134
- writeChain
135
- .then(() => {
136
- const durationMs = Date.now() - startedAt;
137
- if (code !== 0 && resultEvent === undefined) {
138
- const message = `claude (implementer) exited ${code}${stderr ? `: ${stderr.trim()}` : ""}`;
139
- const kind = classifyClaudeError({ message, exitCode: code, stderr });
140
- reject(new ClaudeError({ message, kind, exitCode: code, stderr }));
141
- return;
142
- }
143
- if (resultEvent === undefined) {
144
- reject(new ClaudeError({
145
- message: `implementer ended without a result event`,
146
- kind: "other",
147
- exitCode: code,
148
- stderr,
149
- }));
150
- return;
151
- }
152
- const isErr = resultEvent["is_error"] === true;
153
- log.info({
154
- model,
155
- durationMs,
156
- events: eventCount,
157
- ok: !isErr,
158
- }, "implementer run complete");
159
- resolve({
160
- result: resultEvent,
161
- events: eventCount,
162
- durationMs,
163
- ok: !isErr,
164
- });
165
- })
166
- .catch((err) => reject(err));
167
- });
168
- child.stdin.write(opts.prompt);
169
- child.stdin.end();
170
- });
171
- }
172
- //# sourceMappingURL=runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/orchestrator/runner.ts"],"names":[],"mappings":"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"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Tool-digest extractor — second-source visibility for §3.3.
3
- *
4
- * Reads claude stream-json events (from events.jsonl or the live activity
5
- * window) and surfaces what the agent is actually doing — the file paths
6
- * it edited, the bash commands it ran, the search patterns it grep'd.
7
- *
8
- * Operator-facing surface: rendered as embed FIELDS alongside the Tier-0
9
- * Ollama summary. Independent of LLM availability — pure pattern match
10
- * on tool_use entries. When the Ollama summary fails ("Working…"), the
11
- * tool digest still gives the operator something concrete.
12
- *
13
- * Claude stream-json shape (only the fields we read):
14
- * { type: "assistant", message: { content: [{ type: "tool_use",
15
- * name: "Edit"|"Write"|"MultiEdit"|"Bash"|"Grep"|"Glob"|...,
16
- * input: { file_path?, command?, pattern?, ... } }] } }
17
- */
18
- export interface ToolDigest {
19
- files: string[];
20
- bash: string[];
21
- searches: string[];
22
- }
23
- export interface ExtractToolDigestOptions {
24
- /** Max file paths kept (deduped, most-recent-last). Default 8. */
25
- maxFiles?: number;
26
- /** Max bash commands kept (most-recent-last). Default 6. */
27
- maxBash?: number;
28
- /** Max search patterns kept (most-recent-last). Default 6. */
29
- maxSearches?: number;
30
- /** Trim each captured string to this length. Default 120. */
31
- truncateTo?: number;
32
- }
33
- export declare function extractToolDigest(events: readonly Record<string, unknown>[], opts?: ExtractToolDigestOptions): ToolDigest;
34
- /** True if any of files/bash/searches are populated. */
35
- export declare function digestIsEmpty(d: ToolDigest): boolean;
@@ -1,116 +0,0 @@
1
- /**
2
- * Tool-digest extractor — second-source visibility for §3.3.
3
- *
4
- * Reads claude stream-json events (from events.jsonl or the live activity
5
- * window) and surfaces what the agent is actually doing — the file paths
6
- * it edited, the bash commands it ran, the search patterns it grep'd.
7
- *
8
- * Operator-facing surface: rendered as embed FIELDS alongside the Tier-0
9
- * Ollama summary. Independent of LLM availability — pure pattern match
10
- * on tool_use entries. When the Ollama summary fails ("Working…"), the
11
- * tool digest still gives the operator something concrete.
12
- *
13
- * Claude stream-json shape (only the fields we read):
14
- * { type: "assistant", message: { content: [{ type: "tool_use",
15
- * name: "Edit"|"Write"|"MultiEdit"|"Bash"|"Grep"|"Glob"|...,
16
- * input: { file_path?, command?, pattern?, ... } }] } }
17
- */
18
- const FILE_EDIT_TOOLS = new Set([
19
- "Edit",
20
- "Write",
21
- "MultiEdit",
22
- "NotebookEdit",
23
- ]);
24
- const BASH_TOOLS = new Set(["Bash"]);
25
- const SEARCH_TOOLS = new Set(["Grep", "Glob"]);
26
- export function extractToolDigest(events, opts = {}) {
27
- const maxFiles = opts.maxFiles ?? 8;
28
- const maxBash = opts.maxBash ?? 6;
29
- const maxSearches = opts.maxSearches ?? 6;
30
- const truncateTo = opts.truncateTo ?? 120;
31
- const files = [];
32
- const bash = [];
33
- const searches = [];
34
- for (const event of events) {
35
- if (event["type"] !== "assistant")
36
- continue;
37
- const msg = event["message"];
38
- if (typeof msg !== "object" || msg === null)
39
- continue;
40
- const content = msg["content"];
41
- if (!Array.isArray(content))
42
- continue;
43
- for (const part of content) {
44
- if (typeof part !== "object" || part === null)
45
- continue;
46
- const p = part;
47
- if (p["type"] !== "tool_use")
48
- continue;
49
- const name = typeof p["name"] === "string" ? p["name"] : "";
50
- const input = typeof p["input"] === "object" && p["input"] !== null
51
- ? p["input"]
52
- : undefined;
53
- if (input === undefined)
54
- continue;
55
- if (FILE_EDIT_TOOLS.has(name)) {
56
- const path = stringFrom(input, ["file_path", "filePath", "notebook_path"]);
57
- if (path !== undefined)
58
- pushUnique(files, truncate(path, truncateTo));
59
- }
60
- else if (BASH_TOOLS.has(name)) {
61
- const cmd = stringFrom(input, ["command"]);
62
- if (cmd !== undefined)
63
- bash.push(truncate(cmd, truncateTo));
64
- }
65
- else if (SEARCH_TOOLS.has(name)) {
66
- const pat = stringFrom(input, ["pattern", "query", "glob"]);
67
- if (pat !== undefined)
68
- searches.push(truncate(pat, truncateTo));
69
- }
70
- }
71
- }
72
- return {
73
- files: tailDedup(files, maxFiles),
74
- bash: bash.slice(-maxBash),
75
- searches: searches.slice(-maxSearches),
76
- };
77
- }
78
- function stringFrom(obj, keys) {
79
- for (const k of keys) {
80
- const v = obj[k];
81
- if (typeof v === "string" && v.length > 0)
82
- return v;
83
- }
84
- return undefined;
85
- }
86
- function pushUnique(arr, value) {
87
- const idx = arr.indexOf(value);
88
- if (idx !== -1)
89
- arr.splice(idx, 1);
90
- arr.push(value);
91
- }
92
- function tailDedup(arr, cap) {
93
- const seen = new Set();
94
- const out = [];
95
- for (let i = arr.length - 1; i >= 0; i--) {
96
- const v = arr[i];
97
- if (v === undefined)
98
- continue;
99
- if (seen.has(v))
100
- continue;
101
- seen.add(v);
102
- out.unshift(v);
103
- if (out.length >= cap)
104
- break;
105
- }
106
- return out;
107
- }
108
- function truncate(s, n) {
109
- const trimmed = s.replace(/\s+/g, " ").trim();
110
- return trimmed.length > n ? `${trimmed.slice(0, n - 1)}…` : trimmed;
111
- }
112
- /** True if any of files/bash/searches are populated. */
113
- export function digestIsEmpty(d) {
114
- return d.files.length === 0 && d.bash.length === 0 && d.searches.length === 0;
115
- }
116
- //# sourceMappingURL=tool-digest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool-digest.js","sourceRoot":"","sources":["../../src/orchestrator/tool-digest.ts"],"names":[],"mappings":"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"}
@@ -1,263 +0,0 @@
1
- import type { ClaudeTier } from "../claude/index.js";
2
- import type { FrontendAdapter } from "../frontend/index.js";
3
- import type { ReviewVerdict } from "../reviewer/types.js";
4
- import type { ProjectGlobs, SensorLanguage, SensorSweepResult } from "../sensors/types.js";
5
- import type { UatDecision, UatRunnerInput } from "../uat/types.js";
6
- /**
7
- * Phases a code-class run can be in. The lifecycle is linear; no skipping.
8
- *
9
- * queued — accepted from the inbox; waiting for the FIFO to drain
10
- * tightening — Layer F spec tightener (Phase 7) is running
11
- * blocked — tightener returned ready=false; awaiting operator answers
12
- * prepping — workspace prep: mirror sync + SHA pin + dirty-overlap gate
13
- * running — agent subprocess executing inside the mirror
14
- * succeeded — agent finished; sensors / reviewer / UAT gates are later phases
15
- * failed — terminal: tightener errored, workspace gate refused, agent timed
16
- * out, or stream parse failed
17
- *
18
- * Phase 8 minimum exercises queued → prepping → running → succeeded | failed.
19
- * `tightening` and `blocked` are wired but Phase 8 lets the smoke bypass via
20
- * `bypass_tightener` to avoid spending Sonnet quota on every run.
21
- */
22
- export type RunPhase = "queued" | "tightening" | "blocked" | "prepping" | "running" | "sensing" | "reviewing" | "uat" | "backpropping" | "succeeded" | "failed";
23
- /**
24
- * Persisted at `.harness/runs/active/<run_id>/meta.json`. The orchestrator
25
- * writes this on every phase transition. The grounding daemon's drift
26
- * detector reads it for module-health quality grades.
27
- */
28
- export interface RunMeta {
29
- run_id: string;
30
- task_id: string;
31
- agent_role: "implementer";
32
- phase: RunPhase;
33
- started_at: string;
34
- finished_at?: string;
35
- tier: ClaudeTier;
36
- model: string;
37
- mirror_path: string;
38
- /** SHA captured at workspace prep (origin/main pin). */
39
- sha_pin?: string;
40
- events_count: number;
41
- duration_ms?: number;
42
- /** Populated when phase = "failed". */
43
- error?: string;
44
- /** Populated when tightener ran. */
45
- tightener_score?: number;
46
- tightener_ready?: boolean;
47
- /**
48
- * Set when the tightener returned ready=false and the orchestrator
49
- * fired the resolution dialog. `approve_proposed` runs with the
50
- * tightener's proposal; `ship_anyway` bypasses the gate using the
51
- * operator's original body; `edit` / `cancel` / `timeout` mark the run
52
- * failed (operator chose to re-submit / drop).
53
- */
54
- tightener_user_choice?: "approve_proposed" | "ship_anyway" | "edit" | "cancel" | "timeout";
55
- /** Source channel id when ingested via Discord — used for postTaskUpdate. */
56
- channel_id?: string;
57
- /** Number of agent attempts dispatched (1 = no retries). */
58
- attempts?: number;
59
- /** Per-attempt sensor sweep summary; persisted in events log too. */
60
- sensor_history?: {
61
- attempt: number;
62
- ok: boolean;
63
- hard_failures: number;
64
- soft_findings: number;
65
- sensor_ids_failed: string[];
66
- }[];
67
- /** Final sweep result reference for downstream layers. */
68
- last_sensor_sweep?: Pick<SensorSweepResult, "ok" | "hard_failures" | "soft_findings">;
69
- /** Per-attempt reviewer subagent (Layer C) summary. */
70
- reviewer_history?: {
71
- attempt: number;
72
- ok: boolean;
73
- verdict: ReviewVerdict;
74
- hard_gaps: number;
75
- soft_gaps: number;
76
- confidence_signal: "high" | "medium" | "low";
77
- }[];
78
- last_reviewer?: {
79
- ok: boolean;
80
- verdict: ReviewVerdict;
81
- hard_gaps: number;
82
- soft_gaps: number;
83
- confidence_signal: "high" | "medium" | "low";
84
- };
85
- /** Per-attempt UAT (Layer U) summary. */
86
- uat_history?: {
87
- attempt: number;
88
- ok: boolean;
89
- all_passed: boolean;
90
- probe_failures: number;
91
- operator_decision: UatDecision;
92
- }[];
93
- last_uat?: {
94
- ok: boolean;
95
- all_passed: boolean;
96
- probe_failures: number;
97
- operator_decision: UatDecision;
98
- };
99
- /** Backprop subagent (Phase 13) summary. Set when backprop ran. */
100
- last_backprop?: {
101
- ok: boolean;
102
- invariant_id: string;
103
- invariant_path: string;
104
- sensor_path: string;
105
- enforcement_kind: "regex_sensor" | "named_e2e";
106
- /** Commit SHA on the mirror; undefined if commit step skipped/failed. */
107
- commit_sha?: string;
108
- /** Set when ok=false; agent threw / write failed / commit threw. */
109
- error?: string;
110
- };
111
- }
112
- /**
113
- * Shape of a `task` row dropped to `.harness/inbox/<...>.json` by adapters.
114
- * The orchestrator is tolerant — fields beyond `task_id` and `task` are
115
- * optional and just plumb through to the run.
116
- */
117
- export interface InboxTaskRow {
118
- kind: "task";
119
- source: string;
120
- received_at: string;
121
- task_id?: string;
122
- task: {
123
- rawText: string;
124
- intent: string;
125
- authorId: string;
126
- channelId?: string;
127
- guildId?: string;
128
- messageId?: string;
129
- receivedAt?: string;
130
- };
131
- classification?: {
132
- intent: string;
133
- confidence: number;
134
- source: string;
135
- };
136
- free_text?: unknown;
137
- slash?: unknown;
138
- /** Optional override per L24 / WORKFLOW_GUIDE §4.5. */
139
- ship_anyway?: boolean;
140
- /** Globs the run is expected to touch — used for dirty-overlap. */
141
- target_path_globs?: string[];
142
- /** Optional title override (otherwise derived from rawText[0..80]). */
143
- title?: string;
144
- /** Optional acceptance criteria pre-supplied. */
145
- acceptance_criteria?: string[];
146
- }
147
- export interface OrchestratorOptions {
148
- /** Project name as registered with mirror (slug, not display). */
149
- projectName: string;
150
- /** Repo root for inbox + runs + tasks dirs (typically the mirror path). */
151
- repoRoot: string;
152
- /** Adapters used for surfacing run progress + dialogs. */
153
- adapters: FrontendAdapter[];
154
- /** Skip the spec tightener (Phase 7). Smoke convenience. Default false. */
155
- bypassTightener?: boolean;
156
- /** Skip the sensor sweep (Phase 9). Smoke convenience. Default false. */
157
- bypassSensors?: boolean;
158
- /** Skip the reviewer subagent (Phase 10). Smoke convenience. Default false. */
159
- bypassReviewer?: boolean;
160
- /** Skip the UAT pipeline (Phase 11). Smoke convenience. Default false. */
161
- bypassUat?: boolean;
162
- /**
163
- * Skip the backprop subagent (Phase 13). Smoke convenience. Default
164
- * false — production runs invoke backprop on every successful code-class
165
- * UAT-approved run.
166
- */
167
- bypassBackprop?: boolean;
168
- /**
169
- * Override the backprop tier. Default = `tier_assignment.backprop_author`
170
- * from workflow.md (Tier 2 / Sonnet). Smokes drop to Tier 1 (Haiku) for
171
- * speed + quota.
172
- */
173
- backpropTier?: ClaudeTier;
174
- /**
175
- * Tier for the decision-capture extractor (Phase 14). Default = haiku
176
- * per workflow.md `decision_extractor: 1`. Sonnet may be useful when
177
- * directions are long-form and a Haiku miss-classifies them.
178
- */
179
- decisionExtractorTier?: ClaudeTier;
180
- /**
181
- * Confirm-dialog timeout for the decision-capture flow. Default 60_000
182
- * ms. Smokes drop this to a few seconds so stub adapters resolve fast.
183
- */
184
- decisionConfirmTimeoutMs?: number;
185
- /**
186
- * Skip the post-commit refinement step (Phase 14.x). Default false.
187
- * Smokes that don't care about refinement (e.g. `smoke:decision-capture`)
188
- * flip this on to keep the flow pure-mechanical.
189
- */
190
- bypassRefinement?: boolean;
191
- /**
192
- * Tier for the refinement-proposer call. Default = decisionExtractorTier
193
- * (haiku). The refiner is small JSON in / small JSON out; haiku is
194
- * sufficient for almost every case.
195
- */
196
- refinementTier?: ClaudeTier;
197
- /** Refinement-dialog timeout. Default 60_000 ms. */
198
- refinementDialogTimeoutMs?: number;
199
- /**
200
- * UAT-runner hints surfaced to the agent — base URL for http probes,
201
- * cli prefix/cwd, and which heavier probe surfaces are available
202
- * (ui/sql/integration). Adopted from `<project>:` extension block at
203
- * init. Defaults exclude the heavy surfaces; ui/sql/integration must be
204
- * explicitly enabled via setup:uat-* helpers per Phase 11.5/11.6.
205
- */
206
- uatHints?: UatRunnerInput["hints"];
207
- /**
208
- * Cold-start smoke command (e.g. `pnpm db:reset && pnpm db:migrate &&
209
- * pnpm start:dev`). Recorded as a single command + args; orchestrator
210
- * spawns it before probes when the UAT-runner sets `cold_start_smoke=true`.
211
- */
212
- uatColdStartCommand?: {
213
- command: string;
214
- args: string[];
215
- cwd?: string;
216
- };
217
- /**
218
- * Override the post-reject A/B/C/D dialog timeout. Default 24h per
219
- * UAT_PIPELINE.md §9 (`uat_decision_seconds`). Smokes pass a short
220
- * value so stub adapters resolve quickly.
221
- */
222
- uatRejectDialogTimeoutMs?: number;
223
- /** Override the question agent's tier. Default: same tier as implementer. */
224
- uatQuestionTier?: ClaudeTier;
225
- /** Cap on ❓ Ask iterations per run. Default 5 in runUat. */
226
- uatMaxQuestionRounds?: number;
227
- /**
228
- * Force this tier for the implementer. Default: haiku (cheap; raise to
229
- * sonnet for code-class tasks once Phase 9+ adds trust-class detection).
230
- */
231
- defaultTier?: ClaudeTier;
232
- /** Inbox poll interval — chokidar fires events but we also poll for safety. */
233
- pollIntervalMs?: number;
234
- /** Per-run hard timeout. Default 600_000 ms (10 min). */
235
- runTimeoutMs?: number;
236
- /** Allowed tools list passed to `claude --allowed-tools`. */
237
- allowedTools?: string[];
238
- /** Stack-profile language list — filters Layer A patterns. Default ["typescript"]. */
239
- sensorLanguages?: SensorLanguage[];
240
- /** Resolved <project>: extension globs from workflow.md. Default {}. */
241
- projectGlobs?: ProjectGlobs;
242
- /**
243
- * Max agent attempts before the run is failed-honesty-checked. Default 3
244
- * per L42 (max_attempts_per_task=3, attempt 2 = first sensor-feedback retry).
245
- */
246
- maxAttempts?: number;
247
- /**
248
- * Stall watchdog threshold. When the active run logs no event for this
249
- * many seconds AND the phase is one that should produce events
250
- * (excludes operator-pending `blocked`), the orchestrator posts a
251
- * one-shot remediation embed pointing at `/halt` + `/status`. Default
252
- * 90s; smokes drop this to a few seconds.
253
- */
254
- watchdogStallSeconds?: number;
255
- }
256
- export interface QueueEntry {
257
- run_id: string;
258
- task_id: string;
259
- enqueued_at: string;
260
- row: InboxTaskRow;
261
- /** Where the inbox row file lives — moved to processed/ on completion. */
262
- inbox_file: string;
263
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":""}
@@ -1,21 +0,0 @@
1
- import type { DirtyOverlapResult } from "../mirror/index.js";
2
- export interface WorkspacePrepResult {
3
- sha_pin: string;
4
- branch: string;
5
- /** Empty when no `target_path_globs` was supplied. */
6
- dirty_overlap: DirtyOverlapResult | null;
7
- }
8
- /**
9
- * Phase 8 workspace prep:
10
- * 1. `syncMirror` — fetch + reset --hard origin/<branch>; capture SHA pin.
11
- * 2. `checkLocalDirtyOverlap` — read user's working tree for files that
12
- * overlap the run's target globs (per L45). The orchestrator decides
13
- * whether to pause + dialog the operator based on the result; this
14
- * function only reports.
15
- *
16
- * Mutates the mirror only. The user's working tree is NEVER written to.
17
- */
18
- export declare function prepareWorkspace(args: {
19
- projectName: string;
20
- targetGlobs?: string[];
21
- }): Promise<WorkspacePrepResult>;
@@ -1,31 +0,0 @@
1
- import { logger } from "../logger.js";
2
- import { checkLocalDirtyOverlap, syncMirror } from "../mirror/index.js";
3
- const log = logger("orchestrator.workspace");
4
- /**
5
- * Phase 8 workspace prep:
6
- * 1. `syncMirror` — fetch + reset --hard origin/<branch>; capture SHA pin.
7
- * 2. `checkLocalDirtyOverlap` — read user's working tree for files that
8
- * overlap the run's target globs (per L45). The orchestrator decides
9
- * whether to pause + dialog the operator based on the result; this
10
- * function only reports.
11
- *
12
- * Mutates the mirror only. The user's working tree is NEVER written to.
13
- */
14
- export async function prepareWorkspace(args) {
15
- const { projectName, targetGlobs } = args;
16
- const sync = await syncMirror({ projectName });
17
- log.info({ projectName, sha: sync.sha, branch: sync.branch }, "mirror pinned");
18
- let dirty = null;
19
- if (targetGlobs && targetGlobs.length > 0) {
20
- dirty = await checkLocalDirtyOverlap({ projectName, targetGlobs });
21
- if (dirty.overlap) {
22
- log.warn({ projectName, files: dirty.overlappingFiles }, "dirty-overlap detected — orchestrator must pause + dialog");
23
- }
24
- }
25
- return {
26
- sha_pin: sync.sha,
27
- branch: sync.branch,
28
- dirty_overlap: dirty,
29
- };
30
- }
31
- //# sourceMappingURL=workspace.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/orchestrator/workspace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,sBAAsB,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGxE,MAAM,GAAG,GAAG,MAAM,CAAC,wBAAwB,CAAC,CAAC;AAS7C;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAGtC;IACC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAE1C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC;IAE/E,IAAI,KAAK,GAA8B,IAAI,CAAC;IAC5C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,GAAG,MAAM,sBAAsB,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,CAAC;QACnE,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,CACN,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,gBAAgB,EAAE,EAC9C,2DAA2D,CAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,GAAG;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,aAAa,EAAE,KAAK;KACrB,CAAC;AACJ,CAAC"}