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
@@ -0,0 +1,243 @@
1
+ import { realpathSync, statSync } from "node:fs";
2
+ import path from "node:path";
3
+ import type { Command } from "commander";
4
+ import type { EmitContext, HarneryProgramContext } from "../commander.ts";
5
+ import { resolveCoordRoot } from "../core/agents/coord-client.ts";
6
+ import { DEFAULT_WEB_PORT, resolveWebPort } from "../core/config.ts";
7
+ import { coordRootId, localCoordRootIdUrl } from "../lib/coord-root-id.ts";
8
+ import { localFilesOriginUrl, localFileViewerUrl } from "../lib/local-file-url.ts";
9
+
10
+ export { FILES_ORIGIN_HOST } from "../lib/local-file-url.ts";
11
+
12
+ export type LocalFileUrlMode = "auto" | "raw" | "viewer";
13
+
14
+ export interface LocalFileUrlOptions {
15
+ coordRoot: string;
16
+ port: number;
17
+ mode?: LocalFileUrlMode;
18
+ }
19
+
20
+ export interface LocalFileUrl {
21
+ url: string;
22
+ relPath: string;
23
+ mode: Exclude<LocalFileUrlMode, "auto">;
24
+ }
25
+
26
+ export type DashboardRootErrorCode =
27
+ | "dashboard_unreachable"
28
+ | "dashboard_identity_unavailable"
29
+ | "dashboard_root_mismatch";
30
+
31
+ export class DashboardRootError extends Error {
32
+ constructor(
33
+ readonly code: DashboardRootErrorCode,
34
+ message: string,
35
+ readonly hint: string,
36
+ ) {
37
+ super(message);
38
+ this.name = "DashboardRootError";
39
+ }
40
+ }
41
+
42
+ interface DashboardRootPayload {
43
+ root_id?: unknown;
44
+ }
45
+
46
+ export type DashboardRootFetch = (
47
+ input: string | URL | Request,
48
+ init?: RequestInit,
49
+ ) => Promise<Response>;
50
+
51
+ /**
52
+ * Prove that the dashboard on the selected port serves the same canonical
53
+ * coordination root used to mint the file URL.
54
+ */
55
+ export async function verifyDashboardRoot(
56
+ coordRoot: string,
57
+ port: number,
58
+ fetchImpl: DashboardRootFetch = fetch,
59
+ ): Promise<void> {
60
+ const url = localCoordRootIdUrl(port);
61
+ let response: Response;
62
+ try {
63
+ response = await fetchImpl(url, {
64
+ headers: { accept: "application/json" },
65
+ signal: AbortSignal.timeout(5_000),
66
+ });
67
+ } catch {
68
+ throw new DashboardRootError(
69
+ "dashboard_unreachable",
70
+ `dashboard is not reachable at http://localhost:${port}`,
71
+ "Start the dashboard for this repository, then retry.",
72
+ );
73
+ }
74
+
75
+ if (!response.ok) {
76
+ throw new DashboardRootError(
77
+ "dashboard_identity_unavailable",
78
+ `dashboard at http://localhost:${port} cannot report its repository identity (HTTP ${response.status})`,
79
+ "Update and restart the dashboard, then retry.",
80
+ );
81
+ }
82
+
83
+ let payload: DashboardRootPayload;
84
+ try {
85
+ payload = (await response.json()) as DashboardRootPayload;
86
+ } catch {
87
+ throw new DashboardRootError(
88
+ "dashboard_identity_unavailable",
89
+ `dashboard at http://localhost:${port} returned an invalid repository identity`,
90
+ "Update and restart the dashboard, then retry.",
91
+ );
92
+ }
93
+
94
+ if (typeof payload.root_id !== "string") {
95
+ throw new DashboardRootError(
96
+ "dashboard_identity_unavailable",
97
+ `dashboard at http://localhost:${port} returned an invalid repository identity`,
98
+ "Update and restart the dashboard, then retry.",
99
+ );
100
+ }
101
+
102
+ const expected = coordRootId(coordRoot);
103
+ if (payload.root_id !== expected) {
104
+ throw new DashboardRootError(
105
+ "dashboard_root_mismatch",
106
+ `dashboard at http://localhost:${port} serves a different repository`,
107
+ "Stop that dashboard and start this repository's dashboard, then retry.",
108
+ );
109
+ }
110
+ }
111
+
112
+ function isOutsideRoot(relPath: string): boolean {
113
+ return relPath === "" || relPath === ".." || relPath.startsWith(`..${path.sep}`);
114
+ }
115
+
116
+ function canonicalRepoPath(input: string, coordRoot: string): string {
117
+ if (input.trim() === "") throw new Error("path must not be empty");
118
+ // biome-ignore lint/suspicious/noControlCharactersInRegex: URL output must stay one clean line
119
+ if (/[\u0000-\u001f\u007f]/.test(input)) throw new Error("path contains control bytes");
120
+
121
+ let root: string;
122
+ try {
123
+ root = realpathSync(coordRoot);
124
+ } catch {
125
+ throw new Error(`coord root does not exist: ${coordRoot}`);
126
+ }
127
+
128
+ const candidate = path.isAbsolute(input) ? input : path.resolve(root, input);
129
+ let canonical: string;
130
+ try {
131
+ canonical = realpathSync(candidate);
132
+ } catch {
133
+ throw new Error(`file does not exist: ${input}`);
134
+ }
135
+
136
+ const relPath = path.relative(root, canonical);
137
+ if (isOutsideRoot(relPath) || path.isAbsolute(relPath)) {
138
+ throw new Error(`file is outside the coord root: ${input}`);
139
+ }
140
+ if (!statSync(canonical).isFile()) throw new Error(`path is not a file: ${input}`);
141
+ return relPath.split(path.sep).join("/");
142
+ }
143
+
144
+ function isHtmlPath(relPath: string): boolean {
145
+ const lower = relPath.toLowerCase();
146
+ return lower.endsWith(".html") || lower.endsWith(".htm");
147
+ }
148
+
149
+ /**
150
+ * Mint the local browser URL for a file under the dashboard's coord root.
151
+ * HTML defaults to the isolated files origin so scripts and relative assets
152
+ * work. Other files default to the dashboard viewer.
153
+ */
154
+ export function mintLocalFileUrl(input: string, options: LocalFileUrlOptions): LocalFileUrl {
155
+ const relPath = canonicalRepoPath(input, options.coordRoot);
156
+ const requestedMode = options.mode ?? "auto";
157
+ const mode = requestedMode === "auto" ? (isHtmlPath(relPath) ? "raw" : "viewer") : requestedMode;
158
+ const url =
159
+ mode === "raw"
160
+ ? localFilesOriginUrl(relPath, options.port)
161
+ : localFileViewerUrl(relPath, options.port);
162
+ return { url, relPath, mode };
163
+ }
164
+
165
+ export function registerFilesCommand(
166
+ program: Command,
167
+ emit: EmitContext,
168
+ context?: HarneryProgramContext,
169
+ ): void {
170
+ const files = program
171
+ .command("files")
172
+ .description("Mint browser links for files served by the local dashboard");
173
+
174
+ files
175
+ .command("url")
176
+ .description("Mint the local browser URL for a repo file")
177
+ .argument("<path>", "Repo-relative path, or an absolute path inside the coord root")
178
+ .option("-p, --port <port>", `Dashboard port (default ${DEFAULT_WEB_PORT})`)
179
+ .option("--coord-root <dir>", "Override the coord root")
180
+ .option("--raw", "Use the isolated files origin, regardless of extension")
181
+ .option("--viewer", "Use the dashboard file viewer, regardless of extension")
182
+ .option("--no-verify", "Mint without checking the running dashboard's repository identity")
183
+ .action(
184
+ async (
185
+ filePath: string,
186
+ opts: {
187
+ port?: string;
188
+ coordRoot?: string;
189
+ raw?: boolean;
190
+ viewer?: boolean;
191
+ verify?: boolean;
192
+ },
193
+ ) => {
194
+ if (opts.raw && opts.viewer) {
195
+ emit.error({
196
+ code: "conflicting_url_modes",
197
+ message: "--raw and --viewer cannot be used together",
198
+ });
199
+ emit.setExitCode(1);
200
+ return;
201
+ }
202
+ const coordRoot =
203
+ opts.coordRoot ??
204
+ context?.resolveCoordRoot?.() ??
205
+ context?.repoRoot ??
206
+ resolveCoordRoot(process.cwd()) ??
207
+ process.cwd();
208
+ let port: number;
209
+ try {
210
+ port = resolveWebPort(opts.port, coordRoot);
211
+ } catch (error) {
212
+ emit.error({
213
+ code: "invalid_web_port",
214
+ message: error instanceof Error ? error.message : "invalid web port",
215
+ hint: `Use an integer from 1024 through 65535; the default is ${DEFAULT_WEB_PORT}.`,
216
+ });
217
+ emit.setExitCode(1);
218
+ return;
219
+ }
220
+ try {
221
+ const result = mintLocalFileUrl(filePath, {
222
+ coordRoot,
223
+ port,
224
+ mode: opts.raw ? "raw" : opts.viewer ? "viewer" : "auto",
225
+ });
226
+ if (opts.verify !== false) await verifyDashboardRoot(coordRoot, port);
227
+ emit.text(`${result.url}\n`);
228
+ } catch (error) {
229
+ if (error instanceof DashboardRootError) {
230
+ emit.error({ code: error.code, message: error.message, hint: error.hint });
231
+ emit.setExitCode(1);
232
+ return;
233
+ }
234
+ emit.error({
235
+ code: "invalid_local_file",
236
+ message: error instanceof Error ? error.message : "invalid local file path",
237
+ hint: "Pass an existing file inside the dashboard coord root.",
238
+ });
239
+ emit.setExitCode(1);
240
+ }
241
+ },
242
+ );
243
+ }
@@ -1,4 +1,4 @@
1
- import { existsSync, readFileSync } from "node:fs";
1
+ import { readFileSync } from "node:fs";
2
2
  import { dirname, isAbsolute, resolve } from "node:path";
3
3
  import type { Command } from "commander";
4
4
  import type { EmitContext } from "../commander.ts";
@@ -8,6 +8,7 @@ import {
8
8
  probeBinaryVersion,
9
9
  readAttestation,
10
10
  } from "../core/adapters/index.ts";
11
+ import { resolveCoordRoot } from "../core/agents/coord-client.ts";
11
12
  import { workflowSubscriptionOnly } from "../core/config.ts";
12
13
  import { inspectAdapterSpread } from "../core/governor/adapter-spread.ts";
13
14
  import {
@@ -22,7 +23,6 @@ import {
22
23
  type GovernorRunReport,
23
24
  type GovernorServiceConfig,
24
25
  type GovernorServiceStatus,
25
- governorServiceLogPath,
26
26
  listGovernorsWithWarnings,
27
27
  readGovernor,
28
28
  readGovernorPlan,
@@ -35,7 +35,7 @@ import {
35
35
  runGovernorServiceDaemon,
36
36
  spawnGovernorService,
37
37
  } from "../core/governor/index.ts";
38
- import { findCoordRoot } from "../core/hooks/resolve/coord-root.ts";
38
+ import { readGovernorServiceLogs } from "../core/governor/service-read.ts";
39
39
  import type { PolicyIsolation } from "../core/policy/index.ts";
40
40
  import { loadPolicyFile } from "../core/policy/index.ts";
41
41
  import type { WorkflowSpecialistProfile } from "../core/workflow/index.ts";
@@ -62,6 +62,7 @@ interface CreateOpts {
62
62
  interface RunOpts {
63
63
  adapter?: string;
64
64
  cwd?: string;
65
+ observePressure?: boolean;
65
66
  subscriptionOnly?: boolean;
66
67
  allowApiBilling?: boolean;
67
68
  policy?: string;
@@ -401,16 +402,17 @@ function registerServiceCommand(
401
402
  withGovernorRoot(emit, (coordRoot) => {
402
403
  const lines = integer(opts.lines) ?? 50;
403
404
  if (lines > 10_000) throw new Error("service log lines must not exceed 10000");
404
- const path = governorServiceLogPath(coordRoot);
405
- if (!existsSync(path)) {
405
+ const result = readGovernorServiceLogs(coordRoot, {
406
+ max_bytes: 512 * 1024,
407
+ max_records: 10_000,
408
+ });
409
+ if (result.lines.length === 0) {
406
410
  emit.text("no governor service log\n");
407
411
  return;
408
412
  }
409
- const selected = readFileSync(path, "utf8")
410
- .split("\n")
411
- .slice(-(lines + 1))
412
- .join("\n");
413
- emit.text(selected.endsWith("\n") ? selected : `${selected}\n`);
413
+ emit.text(`${result.lines.slice(-lines).join("\n")}\n`);
414
+ if (result.truncated)
415
+ emit.log("governor service log read stopped at its bounded budget", "warn");
414
416
  });
415
417
  });
416
418
 
@@ -437,6 +439,10 @@ function addServiceOptions(command: Command): Command {
437
439
  .option("--error-backoff-max-ms <n>", "Maximum service-error backoff (default 300000)")
438
440
  .option("--adapter <name>", "Fallback adapter for agent calls without a specialist")
439
441
  .option("--cwd <dir>", "Working directory for child agents")
442
+ .option(
443
+ "--observe-pressure",
444
+ "Record observer-only local pressure before each workflow's first real child dispatch",
445
+ )
440
446
  .option("--subscription-only", "Require stored adapter-login billing")
441
447
  .option("--allow-api-billing", "Permit API-key override billing")
442
448
  .option("--policy <file>", "Host policy JSON/JSONC")
@@ -595,6 +601,9 @@ function registerRunCommand(
595
601
  spawners: registry.spawners(),
596
602
  defaultAdapter: opts.adapter,
597
603
  cwd: opts.cwd,
604
+ diagnosticAdmission: opts.observePressure
605
+ ? { schema_version: 1, mode: "shadow" }
606
+ : undefined,
598
607
  subscriptionOnly:
599
608
  opts.subscriptionOnly === true ? true : workflowSubscriptionOnly(coordRoot),
600
609
  allowApiBilling: opts.allowApiBilling,
@@ -922,7 +931,7 @@ function delay(ms: number): Promise<void> {
922
931
  }
923
932
 
924
933
  function withGovernorRoot(emit: EmitContext, fn: (coordRoot: string) => void): void {
925
- const coordRoot = findCoordRoot();
934
+ const coordRoot = resolveCoordRoot();
926
935
  if (!coordRoot) {
927
936
  emit.error({
928
937
  code: "no_coord_root",
@@ -943,7 +952,7 @@ async function withGovernorRootAsync(
943
952
  emit: EmitContext,
944
953
  fn: (coordRoot: string) => Promise<void>,
945
954
  ): Promise<void> {
946
- const coordRoot = findCoordRoot();
955
+ const coordRoot = resolveCoordRoot();
947
956
  if (!coordRoot) {
948
957
  emit.error({
949
958
  code: "no_coord_root",
@@ -0,0 +1,61 @@
1
+ import type { Command } from "commander";
2
+ import type { EmitContext } from "../commander.ts";
3
+ import type { HarneryInboxService } from "../core/inbox/service.ts";
4
+
5
+ export function registerInboxCommand(
6
+ program: Command,
7
+ emit: EmitContext,
8
+ service?: HarneryInboxService,
9
+ ): void {
10
+ const inbox = program.command("inbox").description("Inspect private coordination inbox state");
11
+ inbox
12
+ .command("list <recipient>")
13
+ .option("--json", "Emit stable JSON")
14
+ .action((recipient: string, options: { json?: boolean }) => {
15
+ run(emit, () => {
16
+ const rows = requireInboxService(service)
17
+ .pending(recipient)
18
+ .map((record) => ({
19
+ message_id: record.message_id,
20
+ sender_instance_id: record.sender_instance_id,
21
+ sender_display_name: record.sender_display_name,
22
+ created_at: record.created_at,
23
+ body_bytes: record.body_bytes,
24
+ body: record.body,
25
+ }));
26
+ if (options.json) {
27
+ emit.config({ format: "json" });
28
+ emit.data({ schema: "harnery.inbox-list/v1", recipient_instance_id: recipient, rows });
29
+ } else emit.rows(rows);
30
+ });
31
+ });
32
+ inbox
33
+ .command("status <recipient>")
34
+ .option("--json", "Emit stable JSON")
35
+ .action((recipient: string, options: { json?: boolean }) => {
36
+ run(emit, () => {
37
+ const status = requireInboxService(service).status(recipient);
38
+ if (options.json) {
39
+ emit.config({ format: "json" });
40
+ emit.data(status);
41
+ } else emit.rows([status as unknown as Record<string, unknown>]);
42
+ });
43
+ });
44
+ }
45
+
46
+ function requireInboxService(service?: HarneryInboxService): HarneryInboxService {
47
+ if (!service) throw new Error("coordination inbox is not configured by this host");
48
+ return service;
49
+ }
50
+
51
+ function run(emit: EmitContext, action: () => void): void {
52
+ try {
53
+ action();
54
+ } catch (error) {
55
+ emit.error({
56
+ code: "inbox_failed",
57
+ message: error instanceof Error ? error.message : String(error),
58
+ });
59
+ emit.setExitCode(1);
60
+ }
61
+ }
@@ -33,7 +33,6 @@ import {
33
33
  readEventV3ControlState,
34
34
  sha256V3,
35
35
  } from "../core/events/v3/index.ts";
36
- import { liveEventV3BuildId } from "../core/events/v3/live-routing.ts";
37
36
  import { ADAPTER_SPECS, type AdapterId, type AdapterSpec } from "../core/hooks/adapter/events.ts";
38
37
  import {
39
38
  agentHookPathForProject,
@@ -46,6 +45,7 @@ import {
46
45
  makeEntry,
47
46
  type SettingsFile,
48
47
  } from "../core/hooks/adapter/wiring.ts";
48
+ import { applyIndexerExclusions } from "../lib/indexer-exclusions.ts";
49
49
  import {
50
50
  type ApplyResult,
51
51
  applyInstructions,
@@ -61,6 +61,7 @@ interface InitOpts {
61
61
  adapter: string;
62
62
  dryRun?: boolean;
63
63
  check?: boolean;
64
+ instructionsOnly?: boolean;
64
65
  projectRoot?: string;
65
66
  }
66
67
 
@@ -75,7 +76,11 @@ export function registerInitCommand(program: Command, emit: EmitContext, binName
75
76
  )
76
77
  .option("--adapter <id>", "claude-code | cursor | codex", "claude-code")
77
78
  .option("--dry-run", "Show what would change without writing")
78
- .option("--check", "Report instructions/skills drift without writing; exit 0/2/1")
79
+ .option("--check", "Report managed-surface drift without writing; exit 0/2/1")
80
+ .option(
81
+ "--instructions-only",
82
+ "Refresh only AGENTS.md regions and Harnery-owned skills; leave runtime wiring untouched",
83
+ )
79
84
  .option("--project-root <path>", "Project root (default: git toplevel, else cwd)")
80
85
  .action((opts: InitOpts) => {
81
86
  const adapter = opts.adapter as AdapterId;
@@ -94,6 +99,44 @@ export function registerInitCommand(program: Command, emit: EmitContext, binName
94
99
  // CLI re-stamps the host's name into committed agent-facing surfaces.
95
100
  const bin = pinnedBinName(projectRoot) ?? (binName?.trim() ? binName : DEFAULT_BIN_NAME);
96
101
 
102
+ // ── --instructions-only: committed guidance, never runtime wiring ────
103
+ // Some hosts consume Harnery's managed instruction bundle without
104
+ // enabling local adapter hooks or an event ledger. Keep this branch
105
+ // before every coord-root, config, ledger, adapter-settings, and Git-hook
106
+ // operation so its no-runtime-writes contract is structural.
107
+ if (opts.instructionsOnly === true) {
108
+ if (opts.check === true) {
109
+ const { status, issues } = checkInstructions(projectRoot, { binName: bin, adapter });
110
+ const head =
111
+ status === "fresh"
112
+ ? `${bin} init --instructions-only --check: instructions + skills are current`
113
+ : status === "drift"
114
+ ? `${bin} init --instructions-only --check: drift found (re-run \`init --instructions-only\` to refresh)`
115
+ : `${bin} init --instructions-only --check: error`;
116
+ const lines = issues.length
117
+ ? `\n${issues.map((issue) => ` ✗ ${issue}`).join("\n")}`
118
+ : "";
119
+ emit.text(`${head}${lines}`);
120
+ emit.setExitCode(status === "fresh" ? 0 : status === "drift" ? 2 : 1);
121
+ return;
122
+ }
123
+
124
+ const dryRun = opts.dryRun === true;
125
+ let applied: ApplyResult;
126
+ try {
127
+ applied = applyInstructions(projectRoot, { binName: bin, adapter, dryRun });
128
+ } catch (err) {
129
+ if (!(err instanceof HostAddendumError)) throw err;
130
+ emit.text(`${bin} init --instructions-only: ${err.message}`);
131
+ emit.setExitCode(1);
132
+ return;
133
+ }
134
+ emit.text(
135
+ renderInstructionsOnly(projectRoot, bin, dryRun, applied.actions, applied.warnings),
136
+ );
137
+ return;
138
+ }
139
+
97
140
  // ── --check: read-only drift report on every init-managed surface ─────
98
141
  if (opts.check === true) {
99
142
  const { status, issues } = checkInstructions(projectRoot, { binName: bin, adapter });
@@ -158,7 +201,7 @@ export function registerInitCommand(program: Command, emit: EmitContext, binName
158
201
  if (gitHooks.status !== "fresh") issues.push(...gitHooks.issues);
159
202
  const ledger = readEventV3ControlState(projectRoot);
160
203
  if (ledger.state !== "active") issues.push(`event ledger V3 is ${ledger.state}`);
161
- const ledgerRuntimeIssues = eventLedgerV3RuntimeIssues(ledger, gitBuild(HARNERY_ROOT));
204
+ const ledgerRuntimeIssues = eventLedgerV3RuntimeIssues(ledger);
162
205
  if (ledgerRuntimeIssues.length > 0) {
163
206
  issues.push(`event ledger V3 is runtime-stale (${ledgerRuntimeIssues.join(", ")})`);
164
207
  }
@@ -199,6 +242,13 @@ export function registerInitCommand(program: Command, emit: EmitContext, binName
199
242
  actions.push("+ created .harnery/ (+ .harnery/.gitignore)");
200
243
  }
201
244
 
245
+ // ── 1a′. editor indexer exclusions ─────────────────────────────────────
246
+ // .harnery/.gitignore keeps git-aware tools out, but Cursor's codebase
247
+ // indexer and the VS Code/Cursor file watcher do not respect gitignore.
248
+ // A busy coord root holds enough ledger events and artifacts to become a
249
+ // boot-time indexing storm, so exclude it from both here.
250
+ actions.push(...applyIndexerExclusions(projectRoot, dryRun));
251
+
202
252
  // ── 1b. stamp the host bin name ────────────────────────────────────────
203
253
  // The coord binaries (agent-hook/agent-coord) and web UI run as harnery
204
254
  // itself, so they can't see a consumer CLI's name; they read it back from
@@ -225,7 +275,7 @@ export function registerInitCommand(program: Command, emit: EmitContext, binName
225
275
  // ── 1d. universal V3 event ledger ────────────────────────────────────
226
276
  if (dryRun) {
227
277
  const ledger = readEventV3ControlState(projectRoot);
228
- const runtimeIssues = eventLedgerV3RuntimeIssues(ledger, gitBuild(HARNERY_ROOT));
278
+ const runtimeIssues = eventLedgerV3RuntimeIssues(ledger);
229
279
  actions.push(
230
280
  ledger.state === "active" && runtimeIssues.length === 0
231
281
  ? "· event ledger V3 is active"
@@ -236,7 +286,7 @@ export function registerInitCommand(program: Command, emit: EmitContext, binName
236
286
  } else {
237
287
  const harneryBuild = gitBuild(HARNERY_ROOT);
238
288
  const ledgerBefore = readEventV3ControlState(projectRoot);
239
- const runtimeIssues = eventLedgerV3RuntimeIssues(ledgerBefore, harneryBuild);
289
+ const runtimeIssues = eventLedgerV3RuntimeIssues(ledgerBefore);
240
290
  const initialized = initializeEventLedgerV3({
241
291
  coordRoot: projectRoot,
242
292
  harneryBuild,
@@ -337,23 +387,16 @@ function digestConfig(path: string): `sha256:${string}` {
337
387
  }
338
388
 
339
389
  /**
340
- * Runtime gates bound into an immutable V3 epoch. `init` is the explicit
341
- * upgrade boundary: when code or capability profiles change, it archives the
342
- * old epoch intact and activates a compatible one instead of letting upgraded
343
- * hooks fail closed against stale approvals.
390
+ * Runtime contracts bound into an immutable V3 epoch. `init` replaces the
391
+ * epoch only when the schema or adapter capability contract changed. A new
392
+ * Harnery build alone keeps the current epoch and its live session generations.
344
393
  */
345
- export function eventLedgerV3RuntimeIssues(
346
- control: EventV3ControlState,
347
- harneryBuild: string,
348
- ): string[] {
394
+ export function eventLedgerV3RuntimeIssues(control: EventV3ControlState): string[] {
349
395
  if (control.state !== "active") return [];
350
396
  const issues: string[] = [];
351
397
  const profile = control.genesis.profile;
352
398
  if (profile.initial_schema_digest !== EVENT_V3_SCHEMA_DIGEST) issues.push("schema digest");
353
399
  if (profile.contract_source_digest !== EVENT_V3_SCHEMA_DIGEST) issues.push("contract digest");
354
- if (!profile.producer_build_ids.includes(liveEventV3BuildId(harneryBuild))) {
355
- issues.push("producer build");
356
- }
357
400
  const expectedCapabilities = Object.values(ADAPTER_CAPABILITY_PROFILES_V3).map((value) =>
358
401
  sha256V3(canonicalJsonV3(value)),
359
402
  );
@@ -699,6 +742,25 @@ function render(
699
742
  return `${head}\n root: ${projectRoot}\n${actions.map((a) => ` ${a}`).join("\n")}${warnBlock}${tail}`;
700
743
  }
701
744
 
745
+ function renderInstructionsOnly(
746
+ projectRoot: string,
747
+ binName: string,
748
+ dryRun: boolean,
749
+ actions: string[],
750
+ warnings: string[] = [],
751
+ ): string {
752
+ const head = dryRun
753
+ ? `${binName} init --instructions-only (dry run): no changes written`
754
+ : `${binName} init --instructions-only`;
755
+ const warnBlock = warnings.length
756
+ ? `\n${warnings.map((warning) => ` ! ${warning}`).join("\n")}`
757
+ : "";
758
+ const tail = dryRun
759
+ ? "\nRe-run without --dry-run to apply."
760
+ : "\nDone. Adapter hooks, managed Git hooks, configuration, and event ledger state were left unchanged.";
761
+ return `${head}\n root: ${projectRoot}\n${actions.map((action) => ` ${action}`).join("\n")}${warnBlock}${tail}`;
762
+ }
763
+
702
764
  function gitTopLevel(): string | null {
703
765
  const r = spawnSync("git", ["rev-parse", "--show-toplevel"], { encoding: "utf8" });
704
766
  const out = r.status === 0 ? r.stdout.trim() : "";