harnery 0.35.0 → 0.37.0

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 (843) hide show
  1. package/dist/commander.d.ts +30 -5
  2. package/dist/commander.d.ts.map +1 -1
  3. package/dist/commander.js +128 -96
  4. package/dist/commands/agents.d.ts +23 -3
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +464 -242
  7. package/dist/commands/artifacts.d.ts.map +1 -1
  8. package/dist/commands/artifacts.js +26 -1
  9. package/dist/commands/backup.d.ts.map +1 -1
  10. package/dist/commands/backup.js +10 -10
  11. package/dist/commands/browse-session.d.ts.map +1 -1
  12. package/dist/commands/browse-session.js +12 -0
  13. package/dist/commands/browse.d.ts +1 -1
  14. package/dist/commands/browse.d.ts.map +1 -1
  15. package/dist/commands/browse.js +16 -4
  16. package/dist/commands/conversations.d.ts +10 -0
  17. package/dist/commands/conversations.d.ts.map +1 -0
  18. package/dist/commands/conversations.js +201 -0
  19. package/dist/commands/deinit.d.ts.map +1 -1
  20. package/dist/commands/deinit.js +5 -0
  21. package/dist/commands/diagnostics.d.ts +4 -0
  22. package/dist/commands/diagnostics.d.ts.map +1 -0
  23. package/dist/commands/diagnostics.js +229 -0
  24. package/dist/commands/docs.d.ts.map +1 -1
  25. package/dist/commands/docs.js +13 -2
  26. package/dist/commands/doctor.d.ts +5 -0
  27. package/dist/commands/doctor.d.ts.map +1 -1
  28. package/dist/commands/doctor.js +51 -7
  29. package/dist/commands/fetch.js +6 -5
  30. package/dist/commands/files.d.ts +34 -0
  31. package/dist/commands/files.d.ts.map +1 -0
  32. package/dist/commands/files.js +166 -0
  33. package/dist/commands/governor.d.ts.map +1 -1
  34. package/dist/commands/governor.js +18 -12
  35. package/dist/commands/inbox.d.ts +5 -0
  36. package/dist/commands/inbox.d.ts.map +1 -0
  37. package/dist/commands/inbox.js +57 -0
  38. package/dist/commands/init.d.ts +4 -5
  39. package/dist/commands/init.d.ts.map +1 -1
  40. package/dist/commands/init.js +63 -13
  41. package/dist/commands/ledger-v3.d.ts.map +1 -1
  42. package/dist/commands/ledger-v3.js +417 -2
  43. package/dist/commands/logs.d.ts +4 -0
  44. package/dist/commands/logs.d.ts.map +1 -0
  45. package/dist/commands/logs.js +169 -0
  46. package/dist/commands/messages.d.ts +5 -0
  47. package/dist/commands/messages.d.ts.map +1 -0
  48. package/dist/commands/messages.js +45 -0
  49. package/dist/commands/outline.d.ts +1 -1
  50. package/dist/commands/outline.d.ts.map +1 -1
  51. package/dist/commands/outline.js +2 -2
  52. package/dist/commands/qa-run.d.ts +4 -0
  53. package/dist/commands/qa-run.d.ts.map +1 -0
  54. package/dist/commands/qa-run.js +141 -0
  55. package/dist/commands/read.d.ts +1 -1
  56. package/dist/commands/read.d.ts.map +1 -1
  57. package/dist/commands/read.js +2 -2
  58. package/dist/commands/resources.d.ts +4 -0
  59. package/dist/commands/resources.d.ts.map +1 -0
  60. package/dist/commands/resources.js +29 -0
  61. package/dist/commands/semantic.d.ts.map +1 -1
  62. package/dist/commands/semantic.js +54 -2
  63. package/dist/commands/storage.d.ts +4 -0
  64. package/dist/commands/storage.d.ts.map +1 -0
  65. package/dist/commands/storage.js +238 -0
  66. package/dist/commands/supervisor.d.ts +4 -0
  67. package/dist/commands/supervisor.d.ts.map +1 -0
  68. package/dist/commands/supervisor.js +101 -0
  69. package/dist/commands/tunnel.d.ts +5 -1
  70. package/dist/commands/tunnel.d.ts.map +1 -1
  71. package/dist/commands/tunnel.js +44 -31
  72. package/dist/commands/web.d.ts +3 -0
  73. package/dist/commands/web.d.ts.map +1 -1
  74. package/dist/commands/web.js +84 -7
  75. package/dist/commands/work.js +3 -3
  76. package/dist/commands/workflow.d.ts.map +1 -1
  77. package/dist/commands/workflow.js +17 -13
  78. package/dist/core/adapters/profiles.d.ts +1 -1
  79. package/dist/core/agents/cli.js +215 -41
  80. package/dist/core/agents/health.d.ts +17 -0
  81. package/dist/core/agents/health.d.ts.map +1 -0
  82. package/dist/core/agents/health.js +109 -0
  83. package/dist/core/agents/live-authority-v3.d.ts +47 -1
  84. package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
  85. package/dist/core/agents/live-authority-v3.js +244 -10
  86. package/dist/core/agents/live-lifecycle-v3.js +6 -1
  87. package/dist/core/agents/live-observation-v3.d.ts.map +1 -1
  88. package/dist/core/agents/live-observation-v3.js +6 -1
  89. package/dist/core/agents/mailbox.d.ts +92 -0
  90. package/dist/core/agents/mailbox.d.ts.map +1 -0
  91. package/dist/core/agents/mailbox.js +325 -0
  92. package/dist/core/agents/reconcile-coordination-v3.d.ts +44 -0
  93. package/dist/core/agents/reconcile-coordination-v3.d.ts.map +1 -0
  94. package/dist/core/agents/reconcile-coordination-v3.js +58 -0
  95. package/dist/core/agents/render/prompt-context.d.ts +14 -3
  96. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  97. package/dist/core/agents/render/prompt-context.js +54 -16
  98. package/dist/core/agents/render/session-context.d.ts +8 -0
  99. package/dist/core/agents/render/session-context.d.ts.map +1 -1
  100. package/dist/core/agents/render/session-context.js +34 -3
  101. package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
  102. package/dist/core/agents/rules/commit-conflict.js +50 -1
  103. package/dist/core/agents/rules/stop-hook.d.ts +2 -0
  104. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  105. package/dist/core/agents/rules/stop-hook.js +93 -16
  106. package/dist/core/agents/rules/verdict.d.ts +1 -0
  107. package/dist/core/agents/rules/verdict.d.ts.map +1 -1
  108. package/dist/core/agents/session-events.d.ts.map +1 -1
  109. package/dist/core/agents/session-events.js +4 -0
  110. package/dist/core/agents/session-finalization-state-v3.js +1 -1
  111. package/dist/core/agents/session-finalizer-v3.js +9 -2
  112. package/dist/core/agents/state/activity-log.d.ts +3 -0
  113. package/dist/core/agents/state/activity-log.d.ts.map +1 -1
  114. package/dist/core/agents/state/activity-log.js +6 -3
  115. package/dist/core/agents/state/heartbeat-writer.d.ts +6 -0
  116. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  117. package/dist/core/agents/state/heartbeat-writer.js +18 -0
  118. package/dist/core/agents/state/live-coordination-view.d.ts +5 -7
  119. package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
  120. package/dist/core/agents/state/live-coordination-view.js +15 -90
  121. package/dist/core/agents/state/live-coordination-writer.d.ts +12 -0
  122. package/dist/core/agents/state/live-coordination-writer.d.ts.map +1 -0
  123. package/dist/core/agents/state/live-coordination-writer.js +92 -0
  124. package/dist/core/artifacts/index.d.ts +47 -1
  125. package/dist/core/artifacts/index.d.ts.map +1 -1
  126. package/dist/core/artifacts/index.js +191 -6
  127. package/dist/core/config.d.ts +74 -4
  128. package/dist/core/config.d.ts.map +1 -1
  129. package/dist/core/config.js +141 -4
  130. package/dist/core/conversations/archive.d.ts +49 -0
  131. package/dist/core/conversations/archive.d.ts.map +1 -0
  132. package/dist/core/conversations/archive.js +136 -0
  133. package/dist/core/conversations/catalog.d.ts +10 -0
  134. package/dist/core/conversations/catalog.d.ts.map +1 -0
  135. package/dist/core/conversations/catalog.js +72 -0
  136. package/dist/core/conversations/context-pack.d.ts +6 -0
  137. package/dist/core/conversations/context-pack.d.ts.map +1 -0
  138. package/dist/core/conversations/context-pack.js +60 -0
  139. package/dist/core/conversations/contract.d.ts +155 -0
  140. package/dist/core/conversations/contract.d.ts.map +1 -0
  141. package/dist/core/conversations/contract.js +1 -0
  142. package/dist/core/conversations/evaluation.d.ts +16 -0
  143. package/dist/core/conversations/evaluation.d.ts.map +1 -0
  144. package/dist/core/conversations/evaluation.js +9 -0
  145. package/dist/core/conversations/index.d.ts +10 -0
  146. package/dist/core/conversations/index.d.ts.map +1 -0
  147. package/dist/core/conversations/index.js +9 -0
  148. package/dist/core/conversations/lifecycle.d.ts +28 -0
  149. package/dist/core/conversations/lifecycle.d.ts.map +1 -0
  150. package/dist/core/conversations/lifecycle.js +29 -0
  151. package/dist/core/conversations/normalize.d.ts +14 -0
  152. package/dist/core/conversations/normalize.d.ts.map +1 -0
  153. package/dist/core/conversations/normalize.js +82 -0
  154. package/dist/core/conversations/query.d.ts +8 -0
  155. package/dist/core/conversations/query.d.ts.map +1 -0
  156. package/dist/core/conversations/query.js +280 -0
  157. package/dist/core/conversations/search-index.d.ts +9 -0
  158. package/dist/core/conversations/search-index.d.ts.map +1 -0
  159. package/dist/core/conversations/search-index.js +29 -0
  160. package/dist/core/diagnostics/advice.d.ts +9 -0
  161. package/dist/core/diagnostics/advice.d.ts.map +1 -0
  162. package/dist/core/diagnostics/advice.js +112 -0
  163. package/dist/core/diagnostics/bundle.d.ts +35 -0
  164. package/dist/core/diagnostics/bundle.d.ts.map +1 -0
  165. package/dist/core/diagnostics/bundle.js +874 -0
  166. package/dist/core/diagnostics/comparison.d.ts +5 -0
  167. package/dist/core/diagnostics/comparison.d.ts.map +1 -0
  168. package/dist/core/diagnostics/comparison.js +444 -0
  169. package/dist/core/diagnostics/contract.d.ts +245 -0
  170. package/dist/core/diagnostics/contract.d.ts.map +1 -0
  171. package/dist/core/diagnostics/contract.js +18 -0
  172. package/dist/core/diagnostics/identity.d.ts +3 -0
  173. package/dist/core/diagnostics/identity.d.ts.map +1 -0
  174. package/dist/core/diagnostics/identity.js +10 -0
  175. package/dist/core/diagnostics/index.d.ts +8 -0
  176. package/dist/core/diagnostics/index.d.ts.map +1 -0
  177. package/dist/core/diagnostics/index.js +7 -0
  178. package/dist/core/diagnostics/replay.d.ts +8 -0
  179. package/dist/core/diagnostics/replay.d.ts.map +1 -0
  180. package/dist/core/diagnostics/replay.js +213 -0
  181. package/dist/core/diagnostics/sanitize.d.ts +9 -0
  182. package/dist/core/diagnostics/sanitize.d.ts.map +1 -0
  183. package/dist/core/diagnostics/sanitize.js +84 -0
  184. package/dist/core/events/legacy-storage/canary.d.ts +18 -0
  185. package/dist/core/events/legacy-storage/canary.d.ts.map +1 -0
  186. package/dist/core/events/legacy-storage/canary.js +150 -0
  187. package/dist/core/events/legacy-storage/compression.d.ts +13 -0
  188. package/dist/core/events/legacy-storage/compression.d.ts.map +1 -0
  189. package/dist/core/events/legacy-storage/compression.js +107 -0
  190. package/dist/core/events/legacy-storage/fence.d.ts +15 -0
  191. package/dist/core/events/legacy-storage/fence.d.ts.map +1 -0
  192. package/dist/core/events/legacy-storage/fence.js +115 -0
  193. package/dist/core/events/legacy-storage/index.d.ts +7 -0
  194. package/dist/core/events/legacy-storage/index.d.ts.map +1 -0
  195. package/dist/core/events/legacy-storage/index.js +6 -0
  196. package/dist/core/events/legacy-storage/inventory.d.ts +10 -0
  197. package/dist/core/events/legacy-storage/inventory.d.ts.map +1 -0
  198. package/dist/core/events/legacy-storage/inventory.js +40 -0
  199. package/dist/core/events/legacy-storage/manifest.d.ts +23 -0
  200. package/dist/core/events/legacy-storage/manifest.d.ts.map +1 -0
  201. package/dist/core/events/legacy-storage/manifest.js +108 -0
  202. package/dist/core/events/legacy-storage/reader.d.ts +15 -0
  203. package/dist/core/events/legacy-storage/reader.d.ts.map +1 -0
  204. package/dist/core/events/legacy-storage/reader.js +154 -0
  205. package/dist/core/events/v3/archive-retention.d.ts +33 -0
  206. package/dist/core/events/v3/archive-retention.d.ts.map +1 -0
  207. package/dist/core/events/v3/archive-retention.js +195 -0
  208. package/dist/core/events/v3/authority-outbox.d.ts +7 -2
  209. package/dist/core/events/v3/authority-outbox.d.ts.map +1 -1
  210. package/dist/core/events/v3/authority-outbox.js +16 -3
  211. package/dist/core/events/v3/base-contract.d.ts +81 -41
  212. package/dist/core/events/v3/base-contract.d.ts.map +1 -1
  213. package/dist/core/events/v3/base-contract.js +17 -7
  214. package/dist/core/events/v3/bootstrap.d.ts +39 -0
  215. package/dist/core/events/v3/bootstrap.d.ts.map +1 -1
  216. package/dist/core/events/v3/bootstrap.js +167 -3
  217. package/dist/core/events/v3/capabilities.d.ts +1 -1
  218. package/dist/core/events/v3/capabilities.d.ts.map +1 -1
  219. package/dist/core/events/v3/capabilities.js +4 -3
  220. package/dist/core/events/v3/control-witness.d.ts +44 -0
  221. package/dist/core/events/v3/control-witness.d.ts.map +1 -0
  222. package/dist/core/events/v3/control-witness.js +233 -0
  223. package/dist/core/events/v3/control-writer.d.ts +4 -0
  224. package/dist/core/events/v3/control-writer.d.ts.map +1 -0
  225. package/dist/core/events/v3/control-writer.js +16 -0
  226. package/dist/core/events/v3/control.d.ts +8 -2
  227. package/dist/core/events/v3/control.d.ts.map +1 -1
  228. package/dist/core/events/v3/control.js +46 -18
  229. package/dist/core/events/v3/coordination-transaction-recovery.d.ts +42 -0
  230. package/dist/core/events/v3/coordination-transaction-recovery.d.ts.map +1 -0
  231. package/dist/core/events/v3/coordination-transaction-recovery.js +342 -0
  232. package/dist/core/events/v3/coordination-view.d.ts.map +1 -1
  233. package/dist/core/events/v3/coordination-view.js +16 -1
  234. package/dist/core/events/v3/generated.d.ts +1 -1
  235. package/dist/core/events/v3/generated.js +1 -1
  236. package/dist/core/events/v3/index.d.ts +5 -2
  237. package/dist/core/events/v3/index.d.ts.map +1 -1
  238. package/dist/core/events/v3/index.js +4 -1
  239. package/dist/core/events/v3/live-route-observer.d.ts +31 -0
  240. package/dist/core/events/v3/live-route-observer.d.ts.map +1 -0
  241. package/dist/core/events/v3/live-route-observer.js +58 -0
  242. package/dist/core/events/v3/live-routing.d.ts +13 -21
  243. package/dist/core/events/v3/live-routing.d.ts.map +1 -1
  244. package/dist/core/events/v3/live-routing.js +46 -41
  245. package/dist/core/events/v3/producers/coordination-recorder.d.ts +11 -1
  246. package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
  247. package/dist/core/events/v3/producers/coordination-recorder.js +76 -10
  248. package/dist/core/events/v3/producers/diagnostic-summaries.d.ts +129 -0
  249. package/dist/core/events/v3/producers/diagnostic-summaries.d.ts.map +1 -0
  250. package/dist/core/events/v3/producers/diagnostic-summaries.js +499 -0
  251. package/dist/core/events/v3/producers/hook-base.d.ts +1 -1
  252. package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
  253. package/dist/core/events/v3/producers/hook-base.js +14 -3
  254. package/dist/core/events/v3/producers/intake.d.ts +7 -0
  255. package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
  256. package/dist/core/events/v3/producers/intake.js +26 -2
  257. package/dist/core/events/v3/producers/producer-state-observer.d.ts +8 -0
  258. package/dist/core/events/v3/producers/producer-state-observer.d.ts.map +1 -0
  259. package/dist/core/events/v3/producers/producer-state-observer.js +45 -0
  260. package/dist/core/events/v3/producers/recorder.d.ts +71 -1
  261. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
  262. package/dist/core/events/v3/producers/recorder.js +441 -25
  263. package/dist/core/events/v3/reader.d.ts +51 -0
  264. package/dist/core/events/v3/reader.d.ts.map +1 -1
  265. package/dist/core/events/v3/reader.js +181 -1
  266. package/dist/core/events/v3/rotation-config.d.ts +9 -0
  267. package/dist/core/events/v3/rotation-config.d.ts.map +1 -0
  268. package/dist/core/events/v3/rotation-config.js +91 -0
  269. package/dist/core/events/v3/runtime-build.d.ts +11 -0
  270. package/dist/core/events/v3/runtime-build.d.ts.map +1 -0
  271. package/dist/core/events/v3/runtime-build.js +39 -0
  272. package/dist/core/events/v3/runtime-identity.d.ts +5 -0
  273. package/dist/core/events/v3/runtime-identity.d.ts.map +1 -0
  274. package/dist/core/events/v3/runtime-identity.js +18 -0
  275. package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts +6 -5
  276. package/dist/core/events/v3/runtime-telemetry-capabilities.d.ts.map +1 -1
  277. package/dist/core/events/v3/runtime-telemetry-capabilities.js +1 -1
  278. package/dist/core/events/v3/support-storage/classify.d.ts +46 -0
  279. package/dist/core/events/v3/support-storage/classify.d.ts.map +1 -0
  280. package/dist/core/events/v3/support-storage/classify.js +149 -0
  281. package/dist/core/events/v3/support-storage/eligibility.d.ts +29 -0
  282. package/dist/core/events/v3/support-storage/eligibility.d.ts.map +1 -0
  283. package/dist/core/events/v3/support-storage/eligibility.js +35 -0
  284. package/dist/core/events/v3/support-storage/index.d.ts +10 -0
  285. package/dist/core/events/v3/support-storage/index.d.ts.map +1 -0
  286. package/dist/core/events/v3/support-storage/index.js +9 -0
  287. package/dist/core/events/v3/support-storage/inventory.d.ts +30 -0
  288. package/dist/core/events/v3/support-storage/inventory.d.ts.map +1 -0
  289. package/dist/core/events/v3/support-storage/inventory.js +94 -0
  290. package/dist/core/events/v3/support-storage/logical-authority.d.ts +14 -0
  291. package/dist/core/events/v3/support-storage/logical-authority.d.ts.map +1 -0
  292. package/dist/core/events/v3/support-storage/logical-authority.js +104 -0
  293. package/dist/core/events/v3/support-storage/maintenance.d.ts +98 -0
  294. package/dist/core/events/v3/support-storage/maintenance.d.ts.map +1 -0
  295. package/dist/core/events/v3/support-storage/maintenance.js +352 -0
  296. package/dist/core/events/v3/support-storage/pack-contract.d.ts +59 -0
  297. package/dist/core/events/v3/support-storage/pack-contract.d.ts.map +1 -0
  298. package/dist/core/events/v3/support-storage/pack-contract.js +249 -0
  299. package/dist/core/events/v3/support-storage/pack-reader.d.ts +34 -0
  300. package/dist/core/events/v3/support-storage/pack-reader.d.ts.map +1 -0
  301. package/dist/core/events/v3/support-storage/pack-reader.js +258 -0
  302. package/dist/core/events/v3/support-storage/pack-writer.d.ts +30 -0
  303. package/dist/core/events/v3/support-storage/pack-writer.d.ts.map +1 -0
  304. package/dist/core/events/v3/support-storage/pack-writer.js +268 -0
  305. package/dist/core/events/v3/support-storage/recovery.d.ts +15 -0
  306. package/dist/core/events/v3/support-storage/recovery.d.ts.map +1 -0
  307. package/dist/core/events/v3/support-storage/recovery.js +22 -0
  308. package/dist/core/events/v3/turn-telemetry.d.ts +14 -8
  309. package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -1
  310. package/dist/core/events/v3/turn-telemetry.js +32 -2
  311. package/dist/core/events/v3/writer.d.ts +13 -1
  312. package/dist/core/events/v3/writer.d.ts.map +1 -1
  313. package/dist/core/events/v3/writer.js +126 -12
  314. package/dist/core/governor/plan-read.d.ts.map +1 -1
  315. package/dist/core/governor/plan-read.js +5 -21
  316. package/dist/core/governor/planning.js +6 -8
  317. package/dist/core/governor/service-read.d.ts +12 -0
  318. package/dist/core/governor/service-read.d.ts.map +1 -1
  319. package/dist/core/governor/service-read.js +266 -2
  320. package/dist/core/governor/service.d.ts +1 -0
  321. package/dist/core/governor/service.d.ts.map +1 -1
  322. package/dist/core/governor/service.js +53 -18
  323. package/dist/core/guard/evidence-v3.d.ts.map +1 -1
  324. package/dist/core/guard/evidence-v3.js +2 -0
  325. package/dist/core/hooks/adapter/events.d.ts.map +1 -1
  326. package/dist/core/hooks/adapter/events.js +1 -0
  327. package/dist/core/hooks/adapter/output.d.ts +12 -2
  328. package/dist/core/hooks/adapter/output.d.ts.map +1 -1
  329. package/dist/core/hooks/adapter/output.js +23 -5
  330. package/dist/core/hooks/adapter/runtime-telemetry.d.ts +27 -4
  331. package/dist/core/hooks/adapter/runtime-telemetry.d.ts.map +1 -1
  332. package/dist/core/hooks/adapter/runtime-telemetry.js +307 -6
  333. package/dist/core/hooks/cli.js +380 -207
  334. package/dist/core/hooks/effects/image-capture.d.ts +1 -1
  335. package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
  336. package/dist/core/hooks/effects/image-capture.js +4 -2
  337. package/dist/core/hooks/health.d.ts +59 -0
  338. package/dist/core/hooks/health.d.ts.map +1 -0
  339. package/dist/core/hooks/health.js +84 -0
  340. package/dist/core/hooks/remediation-cap.d.ts +8 -3
  341. package/dist/core/hooks/remediation-cap.d.ts.map +1 -1
  342. package/dist/core/hooks/remediation-cap.js +3 -11
  343. package/dist/core/hooks/resolve/coord-root.d.ts +22 -9
  344. package/dist/core/hooks/resolve/coord-root.d.ts.map +1 -1
  345. package/dist/core/hooks/resolve/coord-root.js +92 -11
  346. package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
  347. package/dist/core/hooks/resolve/owner.js +5 -0
  348. package/dist/core/hooks/resolve/transcript.d.ts +8 -0
  349. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  350. package/dist/core/hooks/resolve/transcript.js +11 -0
  351. package/dist/core/inbox/contract.d.ts +64 -0
  352. package/dist/core/inbox/contract.d.ts.map +1 -0
  353. package/dist/core/inbox/contract.js +13 -0
  354. package/dist/core/inbox/index.d.ts +5 -0
  355. package/dist/core/inbox/index.d.ts.map +1 -0
  356. package/dist/core/inbox/index.js +4 -0
  357. package/dist/core/inbox/lifecycle.d.ts +22 -0
  358. package/dist/core/inbox/lifecycle.d.ts.map +1 -0
  359. package/dist/core/inbox/lifecycle.js +41 -0
  360. package/dist/core/inbox/service.d.ts +36 -0
  361. package/dist/core/inbox/service.d.ts.map +1 -0
  362. package/dist/core/inbox/service.js +210 -0
  363. package/dist/core/inbox/watcher.d.ts +7 -0
  364. package/dist/core/inbox/watcher.d.ts.map +1 -0
  365. package/dist/core/inbox/watcher.js +26 -0
  366. package/dist/core/presence/codec-digest.d.ts.map +1 -1
  367. package/dist/core/presence/codec-digest.js +14 -3
  368. package/dist/core/presence/relay-client.d.ts +1 -0
  369. package/dist/core/presence/relay-client.d.ts.map +1 -1
  370. package/dist/core/presence/relay-client.js +52 -8
  371. package/dist/core/resources/contract.d.ts +90 -0
  372. package/dist/core/resources/contract.d.ts.map +1 -0
  373. package/dist/core/resources/contract.js +2 -0
  374. package/dist/core/resources/index.d.ts +6 -0
  375. package/dist/core/resources/index.d.ts.map +1 -0
  376. package/dist/core/resources/index.js +5 -0
  377. package/dist/core/resources/sampler.d.ts +27 -0
  378. package/dist/core/resources/sampler.d.ts.map +1 -0
  379. package/dist/core/resources/sampler.js +357 -0
  380. package/dist/core/resources/service-status.d.ts +3 -0
  381. package/dist/core/resources/service-status.d.ts.map +1 -0
  382. package/dist/core/resources/service-status.js +48 -0
  383. package/dist/core/resources/service.d.ts +26 -0
  384. package/dist/core/resources/service.d.ts.map +1 -0
  385. package/dist/core/resources/service.js +292 -0
  386. package/dist/core/resources/storage.d.ts +13 -0
  387. package/dist/core/resources/storage.d.ts.map +1 -0
  388. package/dist/core/resources/storage.js +30 -0
  389. package/dist/core/semantic/adapters.d.ts +11 -8
  390. package/dist/core/semantic/adapters.d.ts.map +1 -1
  391. package/dist/core/semantic/adapters.js +169 -31
  392. package/dist/core/semantic/contract.d.ts +532 -48
  393. package/dist/core/semantic/contract.d.ts.map +1 -1
  394. package/dist/core/semantic/contract.js +104 -3
  395. package/dist/core/semantic/index.d.ts +7 -3
  396. package/dist/core/semantic/index.d.ts.map +1 -1
  397. package/dist/core/semantic/index.js +7 -3
  398. package/dist/core/semantic/once.d.ts +6 -1
  399. package/dist/core/semantic/once.d.ts.map +1 -1
  400. package/dist/core/semantic/once.js +80 -9
  401. package/dist/core/semantic/prompt.d.ts.map +1 -1
  402. package/dist/core/semantic/prompt.js +14 -1
  403. package/dist/core/semantic/review.d.ts +144 -0
  404. package/dist/core/semantic/review.d.ts.map +1 -0
  405. package/dist/core/semantic/review.js +544 -0
  406. package/dist/core/semantic/routes.d.ts +10 -0
  407. package/dist/core/semantic/routes.d.ts.map +1 -0
  408. package/dist/core/semantic/routes.js +21 -0
  409. package/dist/core/semantic/scheduler.d.ts +14 -3
  410. package/dist/core/semantic/scheduler.d.ts.map +1 -1
  411. package/dist/core/semantic/scheduler.js +30 -6
  412. package/dist/core/semantic/service-status.d.ts +20 -0
  413. package/dist/core/semantic/service-status.d.ts.map +1 -1
  414. package/dist/core/semantic/service-status.js +60 -4
  415. package/dist/core/semantic/service.d.ts +1 -0
  416. package/dist/core/semantic/service.d.ts.map +1 -1
  417. package/dist/core/semantic/service.js +104 -15
  418. package/dist/core/semantic/soak.d.ts +75 -0
  419. package/dist/core/semantic/soak.d.ts.map +1 -0
  420. package/dist/core/semantic/soak.js +476 -0
  421. package/dist/core/semantic/storage.d.ts +11 -1
  422. package/dist/core/semantic/storage.d.ts.map +1 -1
  423. package/dist/core/semantic/storage.js +4 -3
  424. package/dist/core/semantic/usage.d.ts +43 -0
  425. package/dist/core/semantic/usage.d.ts.map +1 -0
  426. package/dist/core/semantic/usage.js +193 -0
  427. package/dist/core/semantic/validate.d.ts +3 -1
  428. package/dist/core/semantic/validate.d.ts.map +1 -1
  429. package/dist/core/semantic/validate.js +34 -1
  430. package/dist/core/storage/atomic-json.d.ts +3 -0
  431. package/dist/core/storage/atomic-json.d.ts.map +1 -0
  432. package/dist/core/storage/atomic-json.js +15 -0
  433. package/dist/core/storage/buffer.d.ts +28 -0
  434. package/dist/core/storage/buffer.d.ts.map +1 -0
  435. package/dist/core/storage/buffer.js +101 -0
  436. package/dist/core/storage/builtins.d.ts +3 -0
  437. package/dist/core/storage/builtins.d.ts.map +1 -0
  438. package/dist/core/storage/builtins.js +722 -0
  439. package/dist/core/storage/catalog.d.ts +19 -0
  440. package/dist/core/storage/catalog.d.ts.map +1 -0
  441. package/dist/core/storage/catalog.js +365 -0
  442. package/dist/core/storage/config.d.ts +16 -0
  443. package/dist/core/storage/config.d.ts.map +1 -0
  444. package/dist/core/storage/config.js +311 -0
  445. package/dist/core/storage/contract.d.ts +275 -0
  446. package/dist/core/storage/contract.d.ts.map +1 -0
  447. package/dist/core/storage/contract.js +3 -0
  448. package/dist/core/storage/durable-history.d.ts +36 -0
  449. package/dist/core/storage/durable-history.d.ts.map +1 -0
  450. package/dist/core/storage/durable-history.js +606 -0
  451. package/dist/core/storage/health.d.ts +4 -0
  452. package/dist/core/storage/health.d.ts.map +1 -0
  453. package/dist/core/storage/health.js +65 -0
  454. package/dist/core/storage/index.d.ts +16 -0
  455. package/dist/core/storage/index.d.ts.map +1 -0
  456. package/dist/core/storage/index.js +15 -0
  457. package/dist/core/storage/inventory.d.ts +25 -0
  458. package/dist/core/storage/inventory.d.ts.map +1 -0
  459. package/dist/core/storage/inventory.js +666 -0
  460. package/dist/core/storage/jsonl.d.ts +52 -0
  461. package/dist/core/storage/jsonl.d.ts.map +1 -0
  462. package/dist/core/storage/jsonl.js +156 -0
  463. package/dist/core/storage/log-retention.d.ts +52 -0
  464. package/dist/core/storage/log-retention.d.ts.map +1 -0
  465. package/dist/core/storage/log-retention.js +419 -0
  466. package/dist/core/storage/logger.d.ts +84 -0
  467. package/dist/core/storage/logger.d.ts.map +1 -0
  468. package/dist/core/storage/logger.js +413 -0
  469. package/dist/core/storage/maintenance-providers.d.ts +26 -0
  470. package/dist/core/storage/maintenance-providers.d.ts.map +1 -0
  471. package/dist/core/storage/maintenance-providers.js +141 -0
  472. package/dist/core/storage/maintenance.d.ts +125 -0
  473. package/dist/core/storage/maintenance.d.ts.map +1 -0
  474. package/dist/core/storage/maintenance.js +609 -0
  475. package/dist/core/storage/metrics.d.ts +60 -0
  476. package/dist/core/storage/metrics.d.ts.map +1 -0
  477. package/dist/core/storage/metrics.js +134 -0
  478. package/dist/core/storage/policy.d.ts +7 -0
  479. package/dist/core/storage/policy.d.ts.map +1 -0
  480. package/dist/core/storage/policy.js +110 -0
  481. package/dist/core/storage/process-log.d.ts +38 -0
  482. package/dist/core/storage/process-log.d.ts.map +1 -0
  483. package/dist/core/storage/process-log.js +165 -0
  484. package/dist/core/storage/query.d.ts +48 -0
  485. package/dist/core/storage/query.d.ts.map +1 -0
  486. package/dist/core/storage/query.js +346 -0
  487. package/dist/core/storage/receipts.d.ts +23 -0
  488. package/dist/core/storage/receipts.d.ts.map +1 -0
  489. package/dist/core/storage/receipts.js +117 -0
  490. package/dist/core/storage/segments.d.ts +84 -0
  491. package/dist/core/storage/segments.d.ts.map +1 -0
  492. package/dist/core/storage/segments.js +542 -0
  493. package/dist/core/storage/sink-graph.d.ts +65 -0
  494. package/dist/core/storage/sink-graph.d.ts.map +1 -0
  495. package/dist/core/storage/sink-graph.js +213 -0
  496. package/dist/core/storage/storm-control.d.ts +23 -0
  497. package/dist/core/storage/storm-control.d.ts.map +1 -0
  498. package/dist/core/storage/storm-control.js +59 -0
  499. package/dist/core/supervisor/activity.d.ts +4 -0
  500. package/dist/core/supervisor/activity.d.ts.map +1 -0
  501. package/dist/core/supervisor/activity.js +141 -0
  502. package/dist/core/supervisor/contract.d.ts +268 -0
  503. package/dist/core/supervisor/contract.d.ts.map +1 -0
  504. package/dist/core/supervisor/contract.js +35 -0
  505. package/dist/core/supervisor/explanations.d.ts +4 -0
  506. package/dist/core/supervisor/explanations.d.ts.map +1 -0
  507. package/dist/core/supervisor/explanations.js +71 -0
  508. package/dist/core/supervisor/findings.d.ts +20 -0
  509. package/dist/core/supervisor/findings.d.ts.map +1 -0
  510. package/dist/core/supervisor/findings.js +399 -0
  511. package/dist/core/supervisor/history.d.ts +9 -0
  512. package/dist/core/supervisor/history.d.ts.map +1 -0
  513. package/dist/core/supervisor/history.js +46 -0
  514. package/dist/core/supervisor/hook-health-alerts.d.ts +14 -0
  515. package/dist/core/supervisor/hook-health-alerts.d.ts.map +1 -0
  516. package/dist/core/supervisor/hook-health-alerts.js +70 -0
  517. package/dist/core/supervisor/hook-health-storage.d.ts +5 -0
  518. package/dist/core/supervisor/hook-health-storage.d.ts.map +1 -0
  519. package/dist/core/supervisor/hook-health-storage.js +24 -0
  520. package/dist/core/supervisor/hook-health.d.ts +72 -0
  521. package/dist/core/supervisor/hook-health.d.ts.map +1 -0
  522. package/dist/core/supervisor/hook-health.js +203 -0
  523. package/dist/core/supervisor/hooks.d.ts +10 -0
  524. package/dist/core/supervisor/hooks.d.ts.map +1 -0
  525. package/dist/core/supervisor/hooks.js +28 -0
  526. package/dist/core/supervisor/index.d.ts +15 -0
  527. package/dist/core/supervisor/index.d.ts.map +1 -0
  528. package/dist/core/supervisor/index.js +14 -0
  529. package/dist/core/supervisor/log-feed.d.ts +9 -0
  530. package/dist/core/supervisor/log-feed.d.ts.map +1 -0
  531. package/dist/core/supervisor/log-feed.js +103 -0
  532. package/dist/core/supervisor/service.d.ts +29 -0
  533. package/dist/core/supervisor/service.d.ts.map +1 -0
  534. package/dist/core/supervisor/service.js +450 -0
  535. package/dist/core/supervisor/services.d.ts +11 -0
  536. package/dist/core/supervisor/services.d.ts.map +1 -0
  537. package/dist/core/supervisor/services.js +155 -0
  538. package/dist/core/supervisor/status.d.ts +3 -0
  539. package/dist/core/supervisor/status.d.ts.map +1 -0
  540. package/dist/core/supervisor/status.js +48 -0
  541. package/dist/core/supervisor/storage.d.ts +30 -0
  542. package/dist/core/supervisor/storage.d.ts.map +1 -0
  543. package/dist/core/supervisor/storage.js +73 -0
  544. package/dist/core/supervisor/timeline.d.ts +3 -0
  545. package/dist/core/supervisor/timeline.d.ts.map +1 -0
  546. package/dist/core/supervisor/timeline.js +87 -0
  547. package/dist/core/work/state.d.ts.map +1 -1
  548. package/dist/core/work/state.js +10 -14
  549. package/dist/core/workflow/admission.d.ts +23 -0
  550. package/dist/core/workflow/admission.d.ts.map +1 -0
  551. package/dist/core/workflow/admission.js +136 -0
  552. package/dist/core/workflow/engine.d.ts.map +1 -1
  553. package/dist/core/workflow/engine.js +77 -2
  554. package/dist/core/workflow/index.d.ts +3 -2
  555. package/dist/core/workflow/index.d.ts.map +1 -1
  556. package/dist/core/workflow/index.js +2 -1
  557. package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
  558. package/dist/core/workflow/live-session-v3.js +2 -1
  559. package/dist/core/workflow/proof.d.ts +2 -1
  560. package/dist/core/workflow/proof.d.ts.map +1 -1
  561. package/dist/core/workflow/proof.js +39 -1
  562. package/dist/core/workflow/run-state.d.ts +3 -2
  563. package/dist/core/workflow/run-state.d.ts.map +1 -1
  564. package/dist/core/workflow/run-state.js +8 -1
  565. package/dist/core/workflow/types.d.ts +33 -1
  566. package/dist/core/workflow/types.d.ts.map +1 -1
  567. package/dist/core/workflow/types.js +2 -1
  568. package/dist/index.d.ts +2 -0
  569. package/dist/index.d.ts.map +1 -1
  570. package/dist/index.js +2 -0
  571. package/dist/lazy-commands.d.ts +26 -0
  572. package/dist/lazy-commands.d.ts.map +1 -0
  573. package/dist/lazy-commands.js +210 -0
  574. package/dist/lib/browser/client.d.ts +5 -0
  575. package/dist/lib/browser/client.d.ts.map +1 -1
  576. package/dist/lib/browser/client.js +1 -0
  577. package/dist/lib/browser/index.d.ts +2 -0
  578. package/dist/lib/browser/index.d.ts.map +1 -1
  579. package/dist/lib/browser/index.js +2 -0
  580. package/dist/lib/browser/qa-run-contracts.d.ts +173 -0
  581. package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -0
  582. package/dist/lib/browser/qa-run-contracts.js +226 -0
  583. package/dist/lib/browser/qa-run.d.ts +51 -0
  584. package/dist/lib/browser/qa-run.d.ts.map +1 -0
  585. package/dist/lib/browser/qa-run.js +684 -0
  586. package/dist/lib/coord-root-id.d.ts +9 -0
  587. package/dist/lib/coord-root-id.d.ts.map +1 -0
  588. package/dist/lib/coord-root-id.js +17 -0
  589. package/dist/lib/docs-lint.d.ts +2 -0
  590. package/dist/lib/docs-lint.d.ts.map +1 -1
  591. package/dist/lib/docs-lint.js +45 -80
  592. package/dist/lib/docs-metadata-audit.d.ts +3 -0
  593. package/dist/lib/docs-metadata-audit.d.ts.map +1 -1
  594. package/dist/lib/docs-metadata-audit.js +13 -23
  595. package/dist/lib/docs-metadata-sync.d.ts +1 -0
  596. package/dist/lib/docs-metadata-sync.d.ts.map +1 -1
  597. package/dist/lib/docs-metadata-sync.js +28 -10
  598. package/dist/lib/docs-repository-view.d.ts +22 -0
  599. package/dist/lib/docs-repository-view.d.ts.map +1 -0
  600. package/dist/lib/docs-repository-view.js +185 -0
  601. package/dist/lib/http/client.d.ts +11 -5
  602. package/dist/lib/http/client.d.ts.map +1 -1
  603. package/dist/lib/http/client.js +22 -4
  604. package/dist/lib/http/index.d.ts +1 -1
  605. package/dist/lib/http/index.d.ts.map +1 -1
  606. package/dist/lib/http/index.js +1 -1
  607. package/dist/lib/indexer-exclusions.d.ts +27 -0
  608. package/dist/lib/indexer-exclusions.d.ts.map +1 -0
  609. package/dist/lib/indexer-exclusions.js +176 -0
  610. package/dist/lib/instructions/apply.d.ts +3 -1
  611. package/dist/lib/instructions/apply.d.ts.map +1 -1
  612. package/dist/lib/instructions/apply.js +74 -3
  613. package/dist/lib/instructions/templates.d.ts.map +1 -1
  614. package/dist/lib/instructions/templates.js +11 -0
  615. package/dist/lib/local-file-url.d.ts +9 -0
  616. package/dist/lib/local-file-url.d.ts.map +1 -0
  617. package/dist/lib/local-file-url.js +20 -0
  618. package/dist/lib/web-performance.d.ts +118 -0
  619. package/dist/lib/web-performance.d.ts.map +1 -0
  620. package/dist/lib/web-performance.js +192 -0
  621. package/package.json +40 -2
  622. package/schemas/config.schema.json +58 -0
  623. package/schemas/event-v3.schema.json +324 -112
  624. package/src/commander.ts +488 -95
  625. package/src/commands/agents.ts +617 -237
  626. package/src/commands/artifacts.ts +40 -2
  627. package/src/commands/backup.ts +18 -14
  628. package/src/commands/browse-session.ts +12 -0
  629. package/src/commands/browse.ts +21 -7
  630. package/src/commands/conversations.ts +279 -0
  631. package/src/commands/deinit.ts +6 -0
  632. package/src/commands/diagnostics.ts +271 -0
  633. package/src/commands/docs.ts +25 -6
  634. package/src/commands/doctor.ts +75 -9
  635. package/src/commands/fetch.ts +7 -6
  636. package/src/commands/files.ts +243 -0
  637. package/src/commands/governor.ts +21 -12
  638. package/src/commands/inbox.ts +61 -0
  639. package/src/commands/init.ts +78 -16
  640. package/src/commands/ledger-v3.ts +503 -1
  641. package/src/commands/logs.ts +224 -0
  642. package/src/commands/messages.ts +61 -0
  643. package/src/commands/outline.ts +6 -2
  644. package/src/commands/qa-run.ts +184 -0
  645. package/src/commands/read.ts +6 -2
  646. package/src/commands/resources.ts +38 -0
  647. package/src/commands/semantic.ts +66 -1
  648. package/src/commands/storage.ts +310 -0
  649. package/src/commands/supervisor.ts +141 -0
  650. package/src/commands/tunnel.ts +66 -52
  651. package/src/commands/web.ts +96 -7
  652. package/src/commands/work.ts +3 -3
  653. package/src/commands/workflow.ts +21 -13
  654. package/src/core/agents/cli.ts +265 -55
  655. package/src/core/agents/health.ts +142 -0
  656. package/src/core/agents/live-authority-v3.ts +341 -10
  657. package/src/core/agents/live-lifecycle-v3.ts +6 -1
  658. package/src/core/agents/live-observation-v3.ts +6 -1
  659. package/src/core/agents/mailbox.ts +373 -0
  660. package/src/core/agents/reconcile-coordination-v3.ts +77 -0
  661. package/src/core/agents/render/prompt-context.ts +66 -15
  662. package/src/core/agents/render/session-context.ts +37 -3
  663. package/src/core/agents/rules/commit-conflict.ts +58 -1
  664. package/src/core/agents/rules/stop-hook.ts +105 -20
  665. package/src/core/agents/rules/verdict.ts +1 -0
  666. package/src/core/agents/session-events.ts +4 -0
  667. package/src/core/agents/session-finalization-state-v3.ts +1 -1
  668. package/src/core/agents/session-finalizer-v3.ts +8 -2
  669. package/src/core/agents/state/activity-log.ts +7 -2
  670. package/src/core/agents/state/heartbeat-writer.ts +27 -0
  671. package/src/core/agents/state/live-coordination-view.ts +16 -105
  672. package/src/core/agents/state/live-coordination-writer.ts +141 -0
  673. package/src/core/artifacts/index.ts +260 -11
  674. package/src/core/config.ts +235 -5
  675. package/src/core/conversations/archive.ts +237 -0
  676. package/src/core/conversations/catalog.ts +79 -0
  677. package/src/core/conversations/context-pack.ts +72 -0
  678. package/src/core/conversations/contract.ts +178 -0
  679. package/src/core/conversations/evaluation.ts +30 -0
  680. package/src/core/conversations/index.ts +9 -0
  681. package/src/core/conversations/lifecycle.ts +63 -0
  682. package/src/core/conversations/normalize.ts +105 -0
  683. package/src/core/conversations/query.ts +318 -0
  684. package/src/core/conversations/search-index.ts +48 -0
  685. package/src/core/diagnostics/advice.ts +147 -0
  686. package/src/core/diagnostics/bundle.ts +1142 -0
  687. package/src/core/diagnostics/comparison.ts +565 -0
  688. package/src/core/diagnostics/contract.ts +311 -0
  689. package/src/core/diagnostics/identity.ts +11 -0
  690. package/src/core/diagnostics/index.ts +7 -0
  691. package/src/core/diagnostics/replay.ts +314 -0
  692. package/src/core/diagnostics/sanitize.ts +97 -0
  693. package/src/core/events/legacy-storage/canary.ts +177 -0
  694. package/src/core/events/legacy-storage/compression.ts +130 -0
  695. package/src/core/events/legacy-storage/fence.ts +129 -0
  696. package/src/core/events/legacy-storage/index.ts +6 -0
  697. package/src/core/events/legacy-storage/inventory.ts +51 -0
  698. package/src/core/events/legacy-storage/manifest.ts +136 -0
  699. package/src/core/events/legacy-storage/reader.ts +178 -0
  700. package/src/core/events/v3/archive-retention.ts +251 -0
  701. package/src/core/events/v3/authority-outbox.ts +22 -1
  702. package/src/core/events/v3/base-contract.ts +17 -7
  703. package/src/core/events/v3/bootstrap.ts +195 -2
  704. package/src/core/events/v3/capabilities.ts +5 -3
  705. package/src/core/events/v3/control-witness.ts +339 -0
  706. package/src/core/events/v3/control-writer.ts +16 -0
  707. package/src/core/events/v3/control.ts +54 -18
  708. package/src/core/events/v3/coordination-transaction-recovery.ts +477 -0
  709. package/src/core/events/v3/coordination-view.ts +17 -1
  710. package/src/core/events/v3/generated.ts +1 -1
  711. package/src/core/events/v3/index.ts +14 -2
  712. package/src/core/events/v3/live-route-observer.ts +80 -0
  713. package/src/core/events/v3/live-routing.ts +65 -46
  714. package/src/core/events/v3/producers/coordination-recorder.ts +95 -10
  715. package/src/core/events/v3/producers/diagnostic-summaries.ts +593 -0
  716. package/src/core/events/v3/producers/hook-base.ts +15 -3
  717. package/src/core/events/v3/producers/intake.ts +31 -2
  718. package/src/core/events/v3/producers/producer-state-observer.ts +52 -0
  719. package/src/core/events/v3/producers/recorder.ts +681 -34
  720. package/src/core/events/v3/reader.ts +243 -2
  721. package/src/core/events/v3/rotation-config.ts +98 -0
  722. package/src/core/events/v3/runtime-build.ts +41 -0
  723. package/src/core/events/v3/runtime-identity.ts +16 -0
  724. package/src/core/events/v3/runtime-telemetry-capabilities.ts +14 -8
  725. package/src/core/events/v3/support-storage/classify.ts +209 -0
  726. package/src/core/events/v3/support-storage/eligibility.ts +58 -0
  727. package/src/core/events/v3/support-storage/index.ts +9 -0
  728. package/src/core/events/v3/support-storage/inventory.ts +135 -0
  729. package/src/core/events/v3/support-storage/logical-authority.ts +117 -0
  730. package/src/core/events/v3/support-storage/maintenance.ts +501 -0
  731. package/src/core/events/v3/support-storage/pack-contract.ts +337 -0
  732. package/src/core/events/v3/support-storage/pack-reader.ts +346 -0
  733. package/src/core/events/v3/support-storage/pack-writer.ts +352 -0
  734. package/src/core/events/v3/support-storage/recovery.ts +43 -0
  735. package/src/core/events/v3/turn-telemetry.ts +58 -7
  736. package/src/core/events/v3/writer.ts +168 -16
  737. package/src/core/governor/plan-read.ts +5 -18
  738. package/src/core/governor/planning.ts +5 -8
  739. package/src/core/governor/service-read.ts +320 -2
  740. package/src/core/governor/service.ts +49 -22
  741. package/src/core/guard/evidence-v3.ts +1 -0
  742. package/src/core/hooks/adapter/events.ts +1 -0
  743. package/src/core/hooks/adapter/output.ts +23 -5
  744. package/src/core/hooks/adapter/runtime-telemetry.ts +408 -13
  745. package/src/core/hooks/cli.ts +404 -233
  746. package/src/core/hooks/effects/image-capture.ts +4 -1
  747. package/src/core/hooks/health.ts +146 -0
  748. package/src/core/hooks/remediation-cap.ts +12 -6
  749. package/src/core/hooks/resolve/coord-root.ts +91 -11
  750. package/src/core/hooks/resolve/owner.ts +4 -0
  751. package/src/core/hooks/resolve/transcript.ts +18 -0
  752. package/src/core/inbox/contract.ts +81 -0
  753. package/src/core/inbox/index.ts +4 -0
  754. package/src/core/inbox/lifecycle.ts +104 -0
  755. package/src/core/inbox/service.ts +305 -0
  756. package/src/core/inbox/watcher.ts +36 -0
  757. package/src/core/presence/codec-digest.ts +15 -9
  758. package/src/core/presence/relay-client.ts +55 -7
  759. package/src/core/resources/contract.ts +98 -0
  760. package/src/core/resources/index.ts +5 -0
  761. package/src/core/resources/sampler.ts +458 -0
  762. package/src/core/resources/service-status.ts +62 -0
  763. package/src/core/resources/service.ts +337 -0
  764. package/src/core/resources/storage.ts +44 -0
  765. package/src/core/semantic/adapters.ts +200 -41
  766. package/src/core/semantic/contract.ts +135 -3
  767. package/src/core/semantic/index.ts +76 -2
  768. package/src/core/semantic/once.ts +93 -7
  769. package/src/core/semantic/prompt.ts +13 -1
  770. package/src/core/semantic/review.ts +803 -0
  771. package/src/core/semantic/routes.ts +30 -0
  772. package/src/core/semantic/scheduler.ts +49 -5
  773. package/src/core/semantic/service-status.ts +99 -5
  774. package/src/core/semantic/service.ts +116 -15
  775. package/src/core/semantic/soak.ts +638 -0
  776. package/src/core/semantic/storage.ts +20 -6
  777. package/src/core/semantic/usage.ts +272 -0
  778. package/src/core/semantic/validate.ts +31 -0
  779. package/src/core/storage/atomic-json.ts +15 -0
  780. package/src/core/storage/buffer.ts +124 -0
  781. package/src/core/storage/builtins.ts +972 -0
  782. package/src/core/storage/catalog.ts +467 -0
  783. package/src/core/storage/config.ts +423 -0
  784. package/src/core/storage/contract.ts +342 -0
  785. package/src/core/storage/durable-history.ts +738 -0
  786. package/src/core/storage/health.ts +76 -0
  787. package/src/core/storage/index.ts +15 -0
  788. package/src/core/storage/inventory.ts +859 -0
  789. package/src/core/storage/jsonl.ts +213 -0
  790. package/src/core/storage/log-retention.ts +555 -0
  791. package/src/core/storage/logger.ts +548 -0
  792. package/src/core/storage/maintenance-providers.ts +200 -0
  793. package/src/core/storage/maintenance.ts +929 -0
  794. package/src/core/storage/metrics.ts +199 -0
  795. package/src/core/storage/policy.ts +141 -0
  796. package/src/core/storage/process-log.ts +203 -0
  797. package/src/core/storage/query.ts +418 -0
  798. package/src/core/storage/receipts.ts +162 -0
  799. package/src/core/storage/segments.ts +721 -0
  800. package/src/core/storage/sink-graph.ts +343 -0
  801. package/src/core/storage/storm-control.ts +91 -0
  802. package/src/core/supervisor/activity.ts +193 -0
  803. package/src/core/supervisor/contract.ts +312 -0
  804. package/src/core/supervisor/explanations.ts +104 -0
  805. package/src/core/supervisor/findings.ts +788 -0
  806. package/src/core/supervisor/history.ts +61 -0
  807. package/src/core/supervisor/hook-health-alerts.ts +108 -0
  808. package/src/core/supervisor/hook-health-storage.ts +25 -0
  809. package/src/core/supervisor/hook-health.ts +301 -0
  810. package/src/core/supervisor/hooks.ts +35 -0
  811. package/src/core/supervisor/index.ts +14 -0
  812. package/src/core/supervisor/log-feed.ts +131 -0
  813. package/src/core/supervisor/service.ts +511 -0
  814. package/src/core/supervisor/services.ts +203 -0
  815. package/src/core/supervisor/status.ts +59 -0
  816. package/src/core/supervisor/storage.ts +126 -0
  817. package/src/core/supervisor/timeline.ts +133 -0
  818. package/src/core/work/state.ts +12 -21
  819. package/src/core/workflow/admission.ts +215 -0
  820. package/src/core/workflow/engine.ts +93 -1
  821. package/src/core/workflow/index.ts +10 -0
  822. package/src/core/workflow/live-session-v3.ts +2 -4
  823. package/src/core/workflow/proof.ts +54 -1
  824. package/src/core/workflow/run-state.ts +13 -1
  825. package/src/core/workflow/types.ts +39 -1
  826. package/src/index.ts +2 -0
  827. package/src/lazy-commands.ts +294 -0
  828. package/src/lib/browser/client.ts +6 -0
  829. package/src/lib/browser/index.ts +29 -0
  830. package/src/lib/browser/qa-run-contracts.ts +380 -0
  831. package/src/lib/browser/qa-run.ts +784 -0
  832. package/src/lib/coord-root-id.ts +23 -0
  833. package/src/lib/docs-lint.ts +58 -77
  834. package/src/lib/docs-metadata-audit.ts +26 -21
  835. package/src/lib/docs-metadata-sync.ts +32 -9
  836. package/src/lib/docs-repository-view.ts +220 -0
  837. package/src/lib/http/client.ts +44 -8
  838. package/src/lib/http/index.ts +6 -1
  839. package/src/lib/indexer-exclusions.ts +173 -0
  840. package/src/lib/instructions/apply.ts +81 -2
  841. package/src/lib/instructions/templates.ts +11 -0
  842. package/src/lib/local-file-url.ts +31 -0
  843. package/src/lib/web-performance.ts +335 -0
@@ -4,6 +4,7 @@ import { monorepoRoot, resolveOwner } from "../core/agents/index.ts";
4
4
  import { readLiveCoordinationRow } from "../core/agents/state/live-coordination-view.ts";
5
5
  import {
6
6
  type ArtifactActor,
7
+ adoptUnmanagedArtifactFiles,
7
8
  cleanArtifacts,
8
9
  createArtifact,
9
10
  inventoryArtifacts,
@@ -28,7 +29,8 @@ export function registerArtifactsCommand(
28
29
  .description("Create one managed artifact workspace and print its path.")
29
30
  .requiredOption("--purpose <text>", "What the files are for")
30
31
  .option("--days <n>", "Retention in days (default from artifacts.default_retention_days)")
31
- .action((slug: string, opts: { purpose: string; days?: string }) => {
32
+ .option("--big", "Acknowledge that this workspace may exceed the per-bundle size ceiling")
33
+ .action((slug: string, opts: { purpose: string; days?: string; big?: boolean }) => {
32
34
  run(emit, () => {
33
35
  const repoRoot = requireRepoRoot(context);
34
36
  const actor = currentActor(repoRoot);
@@ -40,6 +42,7 @@ export function registerArtifactsCommand(
40
42
  purpose: opts.purpose,
41
43
  retentionDays,
42
44
  actor,
45
+ big: opts.big,
43
46
  });
44
47
  emit.data({
45
48
  path: created.path,
@@ -50,6 +53,34 @@ export function registerArtifactsCommand(
50
53
  });
51
54
  });
52
55
 
56
+ root
57
+ .command("adopt-unmanaged")
58
+ .description("Preview loose direct-child files, or move them into one managed workspace.")
59
+ .option(
60
+ "--purpose <text>",
61
+ "Why the adopted files are being retained",
62
+ "Adopt legacy loose artifact files",
63
+ )
64
+ .option("--days <n>", "Retention in days (default from artifacts.default_retention_days)")
65
+ .option("--big", "Acknowledge an adopted bundle above the per-bundle size ceiling")
66
+ .option("--yes", "Move the exact previewed regular files into a managed workspace")
67
+ .action((opts: { purpose: string; days?: string; big?: boolean; yes?: boolean }) => {
68
+ run(emit, () => {
69
+ const repoRoot = requireRepoRoot(context);
70
+ emit.data(
71
+ adoptUnmanagedArtifactFiles(repoRoot, {
72
+ yes: opts.yes,
73
+ big: opts.big,
74
+ purpose: opts.purpose,
75
+ retentionDays: opts.days
76
+ ? parseDays(opts.days)
77
+ : artifactDefaultRetentionDays(repoRoot),
78
+ actor: currentActor(repoRoot),
79
+ }),
80
+ );
81
+ });
82
+ });
83
+
53
84
  root
54
85
  .command("list")
55
86
  .description("Inventory every artifact workspace with its cleanup classification.")
@@ -143,16 +174,23 @@ function parseDays(value: string): number {
143
174
  return parsed;
144
175
  }
145
176
 
146
- function summarize(rows: { classification: string; action: string }[]): Record<string, unknown> {
177
+ function summarize(
178
+ rows: { classification: string; action: string; bytes?: number | null }[],
179
+ ): Record<string, unknown> {
147
180
  const classifications: Record<string, number> = {};
148
181
  for (const row of rows) {
149
182
  classifications[row.classification] = (classifications[row.classification] ?? 0) + 1;
150
183
  }
151
184
  return {
152
185
  total: rows.length,
186
+ bytes: rows.reduce((sum, row) => sum + (row.bytes ?? 0), 0),
153
187
  classifications,
154
188
  would_delete: rows.filter((row) => row.action === "would-delete").length,
155
189
  deleted: rows.filter((row) => row.action === "deleted").length,
190
+ would_delete_bytes: rows.reduce(
191
+ (sum, row) => sum + (row.action === "would-delete" ? (row.bytes ?? 0) : 0),
192
+ 0,
193
+ ),
156
194
  };
157
195
  }
158
196
 
@@ -108,10 +108,10 @@ export function registerBackupCommand(program: Command, emit: EmitContext): void
108
108
  backup
109
109
  .command("init")
110
110
  .description("Create the restic repository + password file (one-time).")
111
- .option("--repo <path>", `Repository path (default: ${defaultRepo()})`)
111
+ .option("--repo <path>", "Repository path (default: configured backup.repo)")
112
112
  .option(
113
113
  "--password-file <path>",
114
- `Password file (default: ${defaultPasswordFile()}, autogenerated)`,
114
+ "Password file (default: configured backup.password_file; autogenerated)",
115
115
  )
116
116
  .action((opts: BaseOpts) => {
117
117
  if (!checkRestic(emit)) {
@@ -257,24 +257,27 @@ export function registerBackupCommand(program: Command, emit: EmitContext): void
257
257
  // -- prune --
258
258
  // Prune-policy defaults come from backup.keep_* in config.jsonc (falling back
259
259
  // to 7/4/6); an explicit --keep-* flag still overrides per invocation.
260
- const prunePolicy = backupConfig();
261
260
  backup
262
261
  .command("prune")
263
- .description(
264
- `Forget + prune snapshots (default policy: keep ${prunePolicy.keepDaily} daily / ${prunePolicy.keepWeekly} weekly / ${prunePolicy.keepMonthly} monthly).`,
262
+ .description("Forget + prune snapshots (default policy comes from backup.keep_* config).")
263
+ .option("--keep-daily <n>", "Daily snapshots to keep (default: configured backup.keep_daily)")
264
+ .option(
265
+ "--keep-weekly <n>",
266
+ "Weekly snapshots to keep (default: configured backup.keep_weekly)",
267
+ )
268
+ .option(
269
+ "--keep-monthly <n>",
270
+ "Monthly snapshots to keep (default: configured backup.keep_monthly)",
265
271
  )
266
- .option("--keep-daily <n>", "Daily snapshots to keep", String(prunePolicy.keepDaily))
267
- .option("--keep-weekly <n>", "Weekly snapshots to keep", String(prunePolicy.keepWeekly))
268
- .option("--keep-monthly <n>", "Monthly snapshots to keep", String(prunePolicy.keepMonthly))
269
272
  .option("--dry-run", "Show what would be pruned without actually pruning")
270
273
  .option("--repo <path>", "Repository path")
271
274
  .option("--password-file <path>", "Password file")
272
275
  .action(
273
276
  (
274
277
  opts: BaseOpts & {
275
- keepDaily: string;
276
- keepWeekly: string;
277
- keepMonthly: string;
278
+ keepDaily?: string;
279
+ keepWeekly?: string;
280
+ keepMonthly?: string;
278
281
  dryRun?: boolean;
279
282
  },
280
283
  ) => {
@@ -282,14 +285,15 @@ export function registerBackupCommand(program: Command, emit: EmitContext): void
282
285
  emit.setExitCode(1);
283
286
  return;
284
287
  }
288
+ const prunePolicy = backupConfig();
285
289
  const args = [
286
290
  "forget",
287
291
  "--keep-daily",
288
- opts.keepDaily,
292
+ opts.keepDaily ?? String(prunePolicy.keepDaily),
289
293
  "--keep-weekly",
290
- opts.keepWeekly,
294
+ opts.keepWeekly ?? String(prunePolicy.keepWeekly),
291
295
  "--keep-monthly",
292
- opts.keepMonthly,
296
+ opts.keepMonthly ?? String(prunePolicy.keepMonthly),
293
297
  ];
294
298
  if (!opts.dryRun) args.push("--prune");
295
299
  else args.push("--dry-run");
@@ -28,6 +28,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
28
28
 
29
29
  session
30
30
  .command("status")
31
+ .description("Report whether the opted-in browser session is reachable")
31
32
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
32
33
  .action((opts: ControlFileOpts) => runAction(emit, opts.controlFile, "status", {}));
33
34
 
@@ -43,6 +44,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
43
44
 
44
45
  session
45
46
  .command("screenshot")
47
+ .description("Capture the active tab to a new PNG file")
46
48
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
47
49
  .requiredOption("--out <path>", "New PNG path in an existing directory")
48
50
  .action((opts: ControlFileOpts & { out: string }) =>
@@ -51,11 +53,13 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
51
53
 
52
54
  session
53
55
  .command("tabs")
56
+ .description("List open tabs with stable session-local indexes")
54
57
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
55
58
  .action((opts: ControlFileOpts) => runAction(emit, opts.controlFile, "tabs", {}));
56
59
 
57
60
  session
58
61
  .command("select-tab")
62
+ .description("Select an open tab by its stable session-local index")
59
63
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
60
64
  .requiredOption("--index <n>", "Stable session-local tab index", parseIndex)
61
65
  .action((opts: ControlFileOpts & { index: number }) =>
@@ -64,6 +68,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
64
68
 
65
69
  session
66
70
  .command("open-tab <url>")
71
+ .description("Open a URL in a new tab and select it")
67
72
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
68
73
  .action((url: string, opts: ControlFileOpts) =>
69
74
  runAction(emit, opts.controlFile, "open_tab", { url }),
@@ -71,6 +76,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
71
76
 
72
77
  session
73
78
  .command("close-tab")
79
+ .description("Close an open tab by its stable session-local index")
74
80
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
75
81
  .requiredOption("--index <n>", "Stable session-local tab index", parseIndex)
76
82
  .action((opts: ControlFileOpts & { index: number }) =>
@@ -79,6 +85,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
79
85
 
80
86
  session
81
87
  .command("goto <url>")
88
+ .description("Navigate the active tab to a URL")
82
89
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
83
90
  .action((url: string, opts: ControlFileOpts) =>
84
91
  runAction(emit, opts.controlFile, "goto", { url }),
@@ -86,12 +93,14 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
86
93
 
87
94
  session
88
95
  .command("reload")
96
+ .description("Reload the active tab")
89
97
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
90
98
  .action((opts: ControlFileOpts) => runAction(emit, opts.controlFile, "reload", {}));
91
99
 
92
100
  addLocatorOptions(
93
101
  session
94
102
  .command("click")
103
+ .description("Click one strict locator in the active tab")
95
104
  .requiredOption("--control-file <path>", "Owner-only session descriptor"),
96
105
  ).action((opts: LocatorOpts) =>
97
106
  runAction(emit, opts.controlFile, "click", { locator: parseLocatorOptions(opts, true) }),
@@ -112,6 +121,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
112
121
 
113
122
  session
114
123
  .command("press <key>")
124
+ .description("Press a keyboard key in the active tab")
115
125
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
116
126
  .action((key: string, opts: ControlFileOpts) =>
117
127
  runAction(emit, opts.controlFile, "press", { key }),
@@ -120,6 +130,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
120
130
  addLocatorOptions(
121
131
  session
122
132
  .command("wait")
133
+ .description("Wait for one strict locator in the active tab")
123
134
  .requiredOption("--control-file <path>", "Owner-only session descriptor"),
124
135
  ).action((opts: LocatorOpts) =>
125
136
  runAction(emit, opts.controlFile, "wait", { locator: parseLocatorOptions(opts, true) }),
@@ -127,6 +138,7 @@ export function registerBrowseSessionCommand(program: Command, emit: EmitContext
127
138
 
128
139
  session
129
140
  .command("close")
141
+ .description("Close the opted-in browser session")
130
142
  .requiredOption("--control-file <path>", "Owner-only session descriptor")
131
143
  .action((opts: ControlFileOpts) => runAction(emit, opts.controlFile, "close", {}));
132
144
  }
@@ -117,6 +117,7 @@ interface BrowseOpts {
117
117
  store?: string;
118
118
  profile?: string;
119
119
  viewport?: string;
120
+ colorScheme?: string;
120
121
  waitUntil: string;
121
122
  timeout: string;
122
123
  json?: boolean;
@@ -230,6 +231,7 @@ export function registerBrowseCommand(
230
231
  program: Command,
231
232
  emitParam: EmitContext,
232
233
  context?: HarneryProgramContext,
234
+ binName = resolveBinName(),
233
235
  ): void {
234
236
  emit = emitParam;
235
237
  program
@@ -246,7 +248,7 @@ export function registerBrowseCommand(
246
248
  .option("--snapshot", "Print body innerText to stdout (skips file writes)")
247
249
  .option(
248
250
  "--html",
249
- `Print raw outer HTML to stdout (skips file writes; pair with \`${resolveBinName()} read -\`)`,
251
+ `Print raw outer HTML to stdout (skips file writes; pair with \`${binName} read -\`)`,
250
252
  )
251
253
  .option("--json", "Print full JSON envelope to stdout (skips file writes)")
252
254
  .option("--selector <css>", "Scope --html / --snapshot to one element")
@@ -274,6 +276,12 @@ export function registerBrowseCommand(
274
276
  "Viewport: mobile (390x844), tablet (820x1180), desktop (1280x800), hd (1920x1080), or explicit '1920x1080'",
275
277
  "desktop",
276
278
  )
279
+ .option(
280
+ "--color-scheme <scheme>",
281
+ "Emulate prefers-color-scheme for the whole session: light | dark. " +
282
+ "Renders theme-aware pages in that scheme without page-specific toggles. " +
283
+ "Absent = browser default (unchanged behavior).",
284
+ )
277
285
  .option("--login", "Headed mode for one-time auth flow (cookies persist in profile)")
278
286
  .option(
279
287
  "--login-close-file <path>",
@@ -733,6 +741,13 @@ async function runBrowse(
733
741
  : new CookieJar({ path: opts.store ?? DEFAULT_STORE, source: "harn-browse" });
734
742
  const headed = opts.login || opts.headed;
735
743
  const viewport = parseViewport(opts.viewport ?? "desktop");
744
+ let colorScheme: "light" | "dark" | undefined;
745
+ if (opts.colorScheme !== undefined) {
746
+ if (opts.colorScheme !== "light" && opts.colorScheme !== "dark") {
747
+ throw new Error(`--color-scheme must be light or dark (got: ${opts.colorScheme}).`);
748
+ }
749
+ colorScheme = opts.colorScheme;
750
+ }
736
751
  const proxy = opts.proxyFromEnv ? browserProxyFromEnv() : undefined;
737
752
  const proxyGate = opts.proxyFromEnv ? browserProxyGateFromEnv() : null;
738
753
  if (opts.loginCloseFile && !opts.login) {
@@ -753,6 +768,7 @@ async function runBrowse(
753
768
  headed,
754
769
  jar,
755
770
  viewport,
771
+ ...(colorScheme ? { colorScheme } : {}),
756
772
  navigationTimeout: Number.parseInt(opts.timeout, 10),
757
773
  waitUntil: opts.waitUntil as BrowseOpts["waitUntil"] as never,
758
774
  recordHarPath: opts.networkHar ? resolve(opts.networkHar) : undefined,
@@ -932,12 +948,10 @@ async function runBrowse(
932
948
  let critiqueTiles: CritiqueTile[] | undefined;
933
949
  let critiqueFullPage: Buffer | undefined;
934
950
  if (opts.checkCritique !== undefined) {
951
+ const critiqueProvider =
952
+ context?.critiqueProvider ?? (await context?.critiqueProviderLoader?.());
935
953
  const rubric = opts.checkCritiqueRubric ?? DEFAULT_CRITIQUE_RUBRIC;
936
- const captured = await captureCritiqueTiles(
937
- browser,
938
- opts,
939
- context?.critiqueProvider?.tileBudgetPx,
940
- );
954
+ const captured = await captureCritiqueTiles(browser, opts, critiqueProvider?.tileBudgetPx);
941
955
  critiqueTiles = captured.tiles;
942
956
  critiqueFullPage = captured.fullPage;
943
957
  let tilesToReview = captured.tiles;
@@ -984,7 +998,7 @@ async function runBrowse(
984
998
  url: navResult.url,
985
999
  rubric,
986
1000
  tiles: tilesToReview,
987
- provider: context?.critiqueProvider,
1001
+ provider: critiqueProvider,
988
1002
  });
989
1003
  }
990
1004
  // Persist the QA baseline AFTER critique so a passing run's verdicts ride
@@ -0,0 +1,279 @@
1
+ import type { Command } from "commander";
2
+ import type { EmitContext } from "../commander.ts";
3
+ import type { HarneryConversationCatalog } from "../core/conversations/catalog.ts";
4
+ import { buildConversationContextPack } from "../core/conversations/context-pack.ts";
5
+ import type {
6
+ HarneryConversationQueryRequest,
7
+ HarneryConversationRecordV1,
8
+ HarneryConversationRole,
9
+ } from "../core/conversations/contract.ts";
10
+ import {
11
+ type HarneryConversationPurgePlan,
12
+ planConversationPurge,
13
+ validatePurgeExecutionRequest,
14
+ } from "../core/conversations/lifecycle.ts";
15
+ import { queryConversationCatalog } from "../core/conversations/query.ts";
16
+
17
+ export interface RegisterConversationsOptions {
18
+ project_scope_id: string;
19
+ records?: () => readonly HarneryConversationRecordV1[];
20
+ }
21
+
22
+ export function registerConversationsCommand(
23
+ program: Command,
24
+ emit: EmitContext,
25
+ catalog?: HarneryConversationCatalog,
26
+ dependencies?: RegisterConversationsOptions,
27
+ ): void {
28
+ const pendingPlans = new Map<string, HarneryConversationPurgePlan>();
29
+ const conversations = program.command("conversations").description("Query conversation evidence");
30
+
31
+ conversations
32
+ .command("list")
33
+ .option("--provider <id>")
34
+ .option("--project <id>")
35
+ .option("--json")
36
+ .action(async (options: { provider?: string; project?: string; json?: boolean }) => {
37
+ await run(emit, async () => {
38
+ const configured = requireConversations(catalog, dependencies);
39
+ const project = exactProject(configured.dependencies.project_scope_id, options.project);
40
+ const providers = options.provider
41
+ ? [configured.catalog.require(options.provider)]
42
+ : configured.catalog.list();
43
+ const rows = (
44
+ await Promise.all(
45
+ providers.map(async (provider) =>
46
+ provider.capabilities.can_list ? provider.list(project) : [],
47
+ ),
48
+ )
49
+ ).flat();
50
+ if (options.json) {
51
+ emit.config({ format: "json" });
52
+ emit.data({ schema: "harnery.conversation-list/v1", project_scope_id: project, rows });
53
+ } else emit.rows(rows as unknown as Record<string, unknown>[]);
54
+ });
55
+ });
56
+
57
+ addQueryOptions(conversations.command("query"))
58
+ .option("--json")
59
+ .action(async (options: QueryOptions) => {
60
+ await run(emit, async () => {
61
+ const configured = requireConversations(catalog, dependencies);
62
+ const result = await queryConversationCatalog(
63
+ configured.catalog,
64
+ request(configured.dependencies, options),
65
+ );
66
+ if (options.json) {
67
+ emit.config({ format: "json" });
68
+ emit.data(result);
69
+ } else {
70
+ emit.rows(
71
+ result.hits.map(({ record, citation }) => ({
72
+ ...citation,
73
+ content: record.content,
74
+ })),
75
+ );
76
+ }
77
+ });
78
+ });
79
+
80
+ addQueryOptions(conversations.command("context"))
81
+ .option("--max-tokens <count>", "Token ceiling", parsePositive, 2_000)
82
+ .option("--max-bytes <count>", "Byte ceiling", parsePositive, 16_000)
83
+ .option("--json")
84
+ .action(
85
+ async (options: QueryOptions & { maxTokens: number; maxBytes: number; json?: boolean }) => {
86
+ await run(emit, async () => {
87
+ const configured = requireConversations(catalog, dependencies);
88
+ const result = await queryConversationCatalog(
89
+ configured.catalog,
90
+ request(configured.dependencies, options),
91
+ );
92
+ const pack = buildConversationContextPack(result, {
93
+ max_tokens: options.maxTokens,
94
+ max_bytes: options.maxBytes,
95
+ });
96
+ if (options.json) emit.config({ format: "json" });
97
+ emit.data(pack);
98
+ });
99
+ },
100
+ );
101
+
102
+ conversations
103
+ .command("archive")
104
+ .requiredOption("--mode <mode>", "off | source | archive")
105
+ .option("--authority <mode>", "shadow | cutover | rollback", "shadow")
106
+ .option("--yes", "Reserved for a future checked capture transaction")
107
+ .action((options: { mode: string; authority: string; yes?: boolean }) => {
108
+ const validMode = ["off", "source", "archive"].includes(options.mode);
109
+ const validAuthority = ["shadow", "cutover", "rollback"].includes(options.authority);
110
+ if (!validMode || !validAuthority) {
111
+ emit.error({ code: "conversation_archive_mode_invalid", message: "invalid archive mode" });
112
+ emit.setExitCode(1);
113
+ return;
114
+ }
115
+ emit.data({
116
+ schema: "harnery.conversation-archive-plan/v1",
117
+ access_mode: options.mode,
118
+ authority_mode: options.authority,
119
+ dry_run: true,
120
+ writes: false,
121
+ execution_enabled: false,
122
+ });
123
+ });
124
+
125
+ conversations
126
+ .command("purge")
127
+ .option("--conversation <id>")
128
+ .option("--before <time>")
129
+ .option("--transaction <id>")
130
+ .option("--yes")
131
+ .option("--json")
132
+ .action(
133
+ (options: {
134
+ conversation?: string;
135
+ before?: string;
136
+ transaction?: string;
137
+ yes?: boolean;
138
+ json?: boolean;
139
+ }) => {
140
+ try {
141
+ const configured = requireConversations(catalog, dependencies);
142
+ if (options.transaction) {
143
+ const plan = pendingPlans.get(options.transaction);
144
+ if (!plan) throw new Error(`unknown purge transaction: ${options.transaction}`);
145
+ const result = validatePurgeExecutionRequest(
146
+ plan,
147
+ options.transaction,
148
+ options.yes ?? false,
149
+ );
150
+ if (options.json) emit.config({ format: "json" });
151
+ emit.data({ schema: "harnery.conversation-purge-result/v1", ...result });
152
+ if (result.reason_code !== "execution_disabled") emit.setExitCode(1);
153
+ return;
154
+ }
155
+ const plan = planConversationPurge({
156
+ records: configured.dependencies.records?.() ?? [],
157
+ project_scope_id: configured.dependencies.project_scope_id,
158
+ ...(options.conversation ? { conversation_id: options.conversation } : {}),
159
+ ...(options.before ? { before: options.before } : {}),
160
+ });
161
+ pendingPlans.set(plan.transaction_id, plan);
162
+ if (options.json) emit.config({ format: "json" });
163
+ emit.data(plan);
164
+ } catch (error) {
165
+ emit.error({
166
+ code: "conversation_purge_failed",
167
+ message: error instanceof Error ? error.message : String(error),
168
+ });
169
+ emit.setExitCode(1);
170
+ }
171
+ },
172
+ );
173
+ }
174
+
175
+ function requireConversations(
176
+ catalog?: HarneryConversationCatalog,
177
+ dependencies?: RegisterConversationsOptions,
178
+ ): {
179
+ catalog: HarneryConversationCatalog;
180
+ dependencies: RegisterConversationsOptions;
181
+ } {
182
+ if (!catalog || !dependencies)
183
+ throw new Error("conversation providers are not configured by this host");
184
+ return { catalog, dependencies };
185
+ }
186
+
187
+ interface QueryOptions {
188
+ text?: string;
189
+ regex?: string;
190
+ role?: string;
191
+ since?: string;
192
+ until?: string;
193
+ project?: string;
194
+ provider?: string;
195
+ session?: string;
196
+ conversation?: string;
197
+ record?: string;
198
+ limit: number;
199
+ contextBefore: number;
200
+ contextAfter: number;
201
+ json?: boolean;
202
+ }
203
+
204
+ function addQueryOptions(command: Command): Command {
205
+ return command
206
+ .option("--text <literal>")
207
+ .option("--regex <pattern>")
208
+ .option("--role <role>")
209
+ .option("--since <time>")
210
+ .option("--until <time>")
211
+ .option("--project <id>")
212
+ .option("--provider <id>")
213
+ .option("--session <id>")
214
+ .option("--conversation <id>")
215
+ .option("--record <id>")
216
+ .option("--limit <count>", "Match ceiling", parsePositive, 20)
217
+ .option("--context-before <count>", "Earlier neighbors", parseNonnegative, 0)
218
+ .option("--context-after <count>", "Later neighbors", parseNonnegative, 0);
219
+ }
220
+
221
+ function request(
222
+ dependencies: RegisterConversationsOptions,
223
+ options: QueryOptions,
224
+ ): HarneryConversationQueryRequest {
225
+ const role = options.role as HarneryConversationRole | undefined;
226
+ return {
227
+ project_scope_id: exactProject(dependencies.project_scope_id, options.project),
228
+ limit: options.limit,
229
+ context_before: options.contextBefore,
230
+ context_after: options.contextAfter,
231
+ budgets: {
232
+ max_source_records: 10_000,
233
+ max_decoded_bytes: 16 * 1_024 * 1_024,
234
+ max_matches: options.limit,
235
+ max_wall_ms: 5_000,
236
+ max_regex_chars: 256,
237
+ },
238
+ ...(options.text ? { text: options.text } : {}),
239
+ ...(options.regex ? { regex: options.regex } : {}),
240
+ ...(role ? { role } : {}),
241
+ ...(options.since ? { since: options.since } : {}),
242
+ ...(options.until ? { until: options.until } : {}),
243
+ ...(options.provider ? { provider_id: options.provider } : {}),
244
+ ...(options.session ? { session_id: options.session } : {}),
245
+ ...(options.conversation ? { conversation_id: options.conversation } : {}),
246
+ ...(options.record ? { record_id: options.record } : {}),
247
+ };
248
+ }
249
+
250
+ function exactProject(expected: string, requested?: string): string {
251
+ if (requested && requested !== expected)
252
+ throw new Error("cross-project conversation access denied");
253
+ return expected;
254
+ }
255
+
256
+ function parsePositive(value: string): number {
257
+ const parsed = Number(value);
258
+ if (!Number.isSafeInteger(parsed) || parsed <= 0) throw new Error("expected a positive integer");
259
+ return parsed;
260
+ }
261
+
262
+ function parseNonnegative(value: string): number {
263
+ const parsed = Number(value);
264
+ if (!Number.isSafeInteger(parsed) || parsed < 0)
265
+ throw new Error("expected a nonnegative integer");
266
+ return parsed;
267
+ }
268
+
269
+ async function run(emit: EmitContext, action: () => Promise<void>): Promise<void> {
270
+ try {
271
+ await action();
272
+ } catch (error) {
273
+ emit.error({
274
+ code: "conversation_command_failed",
275
+ message: error instanceof Error ? error.message : String(error),
276
+ });
277
+ emit.setExitCode(1);
278
+ }
279
+ }
@@ -35,6 +35,7 @@ import type { EmitContext } from "../commander.ts";
35
35
  import { DEFAULT_BIN_NAME } from "../core/config.ts";
36
36
  import { ADAPTER_SPECS, type AdapterId } from "../core/hooks/adapter/events.ts";
37
37
  import type { SettingsFile } from "../core/hooks/adapter/wiring.ts";
38
+ import { removeIndexerExclusions } from "../lib/indexer-exclusions.ts";
38
39
  import { removeInstructions } from "../lib/instructions/apply.ts";
39
40
  import { removeGitHooks } from "../lib/instructions/git-hooks.ts";
40
41
  import { unwireHooks } from "./init.ts";
@@ -136,6 +137,11 @@ export function registerDeinitCommand(program: Command, emit: EmitContext, binNa
136
137
  }
137
138
  }
138
139
 
140
+ // ── 1a′. editor indexer exclusions ─────────────────────────────────────
141
+ // Reverse only what init wrote: the managed .cursorindexingignore entry
142
+ // and the files.watcherExclude key. Consumer-authored entries stay.
143
+ actions.push(...removeIndexerExclusions(projectRoot, dryRun));
144
+
139
145
  // ── 1b. agent-facing instructions block + skills ───────────────────────
140
146
  const removed = removeInstructions(projectRoot, { adapter, dryRun });
141
147
  actions.push(...removed.actions, ...removed.warnings.map((w) => `! ${w}`));