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,101 @@
1
+ import { resolve } from "node:path";
2
+ import { readSupervisorHookHealth } from "../core/supervisor/hook-health-storage.js";
3
+ import { requestSupervisorStop, runSupervisor, spawnSupervisor, } from "../core/supervisor/service.js";
4
+ import { readSupervisorStatus } from "../core/supervisor/status.js";
5
+ import { readSupervisorFindings, readSupervisorHistory, readSupervisorLogFeed, readSupervisorSnapshot, } from "../core/supervisor/storage.js";
6
+ export function registerSupervisorCommand(program, emit, context) {
7
+ const supervisor = program
8
+ .command("supervisor")
9
+ .description("Run Harnery's optional local diagnostic supervisor");
10
+ supervisor
11
+ .command("start")
12
+ .description("Start the detached local supervisor")
13
+ .option("--root <path>", "Explicit coordination root")
14
+ .option("--interval-ms <milliseconds>", "Collection interval from 500 to 60000 ms", integer)
15
+ .option("--idle-exit-ms <milliseconds>", "Exit after this long without a live dashboard consumer or attributed agent", integer)
16
+ .option("--keep-alive", "Remain resident until explicitly stopped")
17
+ .action(async (options) => {
18
+ try {
19
+ emit.data(await spawnSupervisor(resolve(options.root ?? coordRoot(context)), {
20
+ intervalMs: options.intervalMs,
21
+ idleExitMs: options.idleExitMs,
22
+ keepAlive: options.keepAlive,
23
+ }));
24
+ }
25
+ catch (error) {
26
+ fail(emit, "supervisor_start_failed", error);
27
+ }
28
+ });
29
+ supervisor
30
+ .command("status")
31
+ .description("Show supervisor liveness and its latest bounded projections")
32
+ .option("--root <path>", "Explicit coordination root")
33
+ .action((options) => {
34
+ try {
35
+ const root = resolve(options.root ?? coordRoot(context));
36
+ emit.data({
37
+ service: readSupervisorStatus(root),
38
+ snapshot: readSupervisorSnapshot(root),
39
+ history: readSupervisorHistory(root),
40
+ findings: readSupervisorFindings(root),
41
+ hook_health: readSupervisorHookHealth(root),
42
+ log_feed: readSupervisorLogFeed(root),
43
+ });
44
+ }
45
+ catch (error) {
46
+ fail(emit, "supervisor_status_failed", error);
47
+ }
48
+ });
49
+ supervisor
50
+ .command("stop")
51
+ .description("Request a graceful supervisor stop")
52
+ .option("--root <path>", "Explicit coordination root")
53
+ .action(async (options) => {
54
+ try {
55
+ const root = resolve(options.root ?? coordRoot(context));
56
+ let status = requestSupervisorStop(root);
57
+ const deadline = Date.now() + 5_000;
58
+ while (status.running && Date.now() < deadline) {
59
+ await new Promise((done) => setTimeout(done, 50));
60
+ status = readSupervisorStatus(root);
61
+ }
62
+ emit.data(status);
63
+ }
64
+ catch (error) {
65
+ fail(emit, "supervisor_stop_failed", error);
66
+ }
67
+ });
68
+ supervisor
69
+ .command("daemon", { hidden: true })
70
+ .description("Internal detached local supervisor entrypoint")
71
+ .option("--root <path>", "Explicit coordination root")
72
+ .option("--interval-ms <milliseconds>", "Collection interval", integer)
73
+ .option("--idle-exit-ms <milliseconds>", "Idle exit interval", integer)
74
+ .option("--keep-alive", "Remain resident until explicitly stopped")
75
+ .action(async (options) => {
76
+ try {
77
+ emit.data(await runSupervisor({
78
+ coordRoot: resolve(options.root ?? coordRoot(context)),
79
+ intervalMs: options.intervalMs,
80
+ idleExitMs: options.idleExitMs,
81
+ keepAlive: options.keepAlive,
82
+ }));
83
+ }
84
+ catch (error) {
85
+ fail(emit, "supervisor_daemon_failed", error);
86
+ }
87
+ });
88
+ }
89
+ function coordRoot(context) {
90
+ return context?.resolveCoordRoot?.() ?? context?.repoRoot ?? process.cwd();
91
+ }
92
+ function integer(value) {
93
+ const parsed = Number(value);
94
+ if (!Number.isInteger(parsed))
95
+ throw new Error(`expected an integer, got ${value}`);
96
+ return parsed;
97
+ }
98
+ function fail(emit, code, error) {
99
+ emit.error({ code, message: error instanceof Error ? error.message : String(error) });
100
+ emit.setExitCode(1);
101
+ }
@@ -1,6 +1,10 @@
1
1
  import type { Command } from "commander";
2
2
  import type { EmitContext, HarneryProgramContext } from "../commander.js";
3
- import { type TunnelState } from "../lib/tunnel/state.js";
3
+ import { type TunnelProvider, type TunnelState } from "../lib/tunnel/state.js";
4
+ export declare function tunnelLogDestinations(name: string, provider: TunnelProvider, env?: NodeJS.ProcessEnv, root?: string): {
5
+ gate: string;
6
+ provider: string;
7
+ };
4
8
  /**
5
9
  * Restart ONE instance's gate in place, deliberately leaving the provider
6
10
  * process running.
@@ -1 +1 @@
1
- {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAa1E,OAAO,EAYL,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AA8rBhC;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsE7F;AA+MD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,YAAY,CAAC,EAAE,qBAAqB,GACnC,IAAI,CA2EN"}
1
+ {"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../src/commands/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQ1E,OAAO,EAWL,KAAK,cAAc,EACnB,KAAK,WAAW,EAGjB,MAAM,wBAAwB,CAAC;AAoDhC,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,cAAc,EACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,SAAgB,GACnB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAcpC;AAuoBD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAsE7F;AA+MD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,YAAY,CAAC,EAAE,qBAAqB,GACnC,IAAI,CA2EN"}
@@ -1,12 +1,8 @@
1
- // Inline cachePath; see lib/tunnel/state.ts for rationale.
2
- function cachePath(tool, filename) {
3
- const dir = resolve(process.cwd(), ".cache", tool);
4
- return resolve(dir, filename);
5
- }
6
- import { spawn, spawnSync } from "node:child_process";
7
- import { existsSync, openSync, readFileSync, writeFileSync } from "node:fs";
1
+ import { spawnSync } from "node:child_process";
2
+ import { existsSync, readFileSync } from "node:fs";
8
3
  import { resolve } from "node:path";
9
4
  import { resolveBinName } from "../core/config.js";
5
+ import { processLogDestination, runRotatingProcessSync, spawnRotatingProcess, } from "../core/storage/process-log.js";
10
6
  import { clearState, DEFAULT_INSTANCE, ensureCloudflared, gateLogFile, isProcessAlive, listStates, providerLogFile, readConfig, readState, writeConfig, writeState, } from "../lib/tunnel/state.js";
11
7
  /**
12
8
  * `tunnel`: provider-backed tunnel in front of a local upstream.
@@ -24,6 +20,20 @@ const DEFAULT_TARGET = "127.0.0.1:8001";
24
20
  const DEFAULT_VHOST = "localhost";
25
21
  const DEFAULT_GATE_PORT = 9001;
26
22
  const MAX_GATE_PORT = DEFAULT_GATE_PORT + 99; // auto-allocation scan ceiling
23
+ export function tunnelLogDestinations(name, provider, env = process.env, root = process.cwd()) {
24
+ const destination = (filename) => processLogDestination({
25
+ coord_root: root,
26
+ project_root: root,
27
+ family_id: "tunnel-process-log",
28
+ filename,
29
+ legacy_path: resolve(root, ".cache", "tunnel", filename),
30
+ env,
31
+ });
32
+ return {
33
+ gate: destination(gateLogFile(name)),
34
+ provider: destination(providerLogFile(name, provider)),
35
+ };
36
+ }
27
37
  /**
28
38
  * Validate + normalize an instance name. Names become filename fragments
29
39
  * (state-<name>.json) and pgrep patterns, so they're restricted to a safe
@@ -270,7 +280,6 @@ function tailscaleCommand(mode) {
270
280
  return mode === "funnel" ? "funnel" : "serve";
271
281
  }
272
282
  function runTailscaleShare(mode, targetUrl, path, httpsPort, logPath) {
273
- const fd = openSync(logPath, "a");
274
283
  const args = [
275
284
  tailscaleCommand(mode),
276
285
  "--bg",
@@ -279,31 +288,36 @@ function runTailscaleShare(mode, targetUrl, path, httpsPort, logPath) {
279
288
  `--set-path=${path}`,
280
289
  targetUrl,
281
290
  ];
282
- const r = spawnSync("tailscale", args, {
283
- stdio: ["ignore", fd, fd],
291
+ const status = runRotatingProcessSync({
292
+ path: logPath,
293
+ command: "tailscale",
294
+ arguments: args,
284
295
  });
285
- if (r.status !== 0) {
296
+ if (status !== 0) {
286
297
  emit.error({
287
298
  code: "tunnel_tailscale_failed",
288
299
  message: `tailscale ${tailscaleCommand(mode)} failed. Check log: ${logPath}`,
289
300
  });
290
- process.exit(r.status ?? 1);
301
+ process.exit(status ?? 1);
291
302
  }
292
303
  }
293
304
  function stopTailscaleShare(state) {
294
305
  if (state.provider !== "tailscale" || !state.tailscale_mode)
295
306
  return true;
296
307
  const cmd = tailscaleCommand(state.tailscale_mode);
297
- const logPath = cachePath("tunnel", providerLogFile(state.name, "tailscale"));
298
- const fd = openSync(logPath, "a");
308
+ const logPath = tunnelLogDestinations(state.name, "tailscale").provider;
299
309
  const args = [
300
310
  cmd,
301
311
  `--https=${state.tailscale_https_port ?? 443}`,
302
312
  `--set-path=${state.tailscale_path ?? "/"}`,
303
313
  "off",
304
314
  ];
305
- const r = spawnSync("tailscale", args, { stdio: ["ignore", fd, fd] });
306
- if (r.status !== 0) {
315
+ const status = runRotatingProcessSync({
316
+ path: logPath,
317
+ command: "tailscale",
318
+ arguments: args,
319
+ });
320
+ if (status !== 0) {
307
321
  // The gate is torn down and its port is freed for reuse regardless, so a
308
322
  // surviving serve/funnel mapping could later re-expose whatever next binds
309
323
  // that port. Surface it loudly so the operator can clear it by hand.
@@ -339,12 +353,12 @@ function tunnelIsAlive(state) {
339
353
  * re-reads — that snapshot is precisely why `reload` has to exist.
340
354
  */
341
355
  function spawnGate(o) {
342
- const gateFd = openSync(o.gateLogPath, "a");
343
356
  // `--name`/`--port` on argv mirror the env vars; they're what makes the gate
344
357
  // process distinguishable per-instance in `pgrep -f` (see sweepStrays).
345
- const gateProc = spawn("bun", ["run", gateScriptPath(), "--name", o.name, "--port", String(o.gatePort)], {
346
- detached: true,
347
- stdio: ["ignore", gateFd, gateFd],
358
+ const gateProc = spawnRotatingProcess({
359
+ path: o.gateLogPath,
360
+ command: "bun",
361
+ arguments: ["run", gateScriptPath(), "--name", o.name, "--port", String(o.gatePort)],
348
362
  env: {
349
363
  ...process.env,
350
364
  HARNERY_TUNNEL_ALLOW: o.allowedIps.join(","),
@@ -414,10 +428,9 @@ async function up(opts) {
414
428
  });
415
429
  process.exit(1);
416
430
  }
417
- const gateLogPath = cachePath("tunnel", gateLogFile(name));
418
- const providerLogPath = cachePath("tunnel", providerLogFile(name, provider));
419
- writeFileSync(gateLogPath, "");
420
- writeFileSync(providerLogPath, "");
431
+ const logPaths = tunnelLogDestinations(name, provider);
432
+ const gateLogPath = logPaths.gate;
433
+ const providerLogPath = logPaths.provider;
421
434
  const gateProc = spawnGate({
422
435
  name,
423
436
  gatePort,
@@ -439,15 +452,15 @@ async function up(opts) {
439
452
  let registered = true;
440
453
  let cloudflaredPid;
441
454
  if (provider === "cloudflare") {
442
- const cfdFd = openSync(providerLogPath, "a");
443
455
  // Force HTTP/2 transport. The default QUIC transport wedges at precheck on
444
456
  // constrained hosts (e.g. WSL, where UDP receive buffers can't grow and ICMP
445
457
  // is restricted): the URL prints but the edge never registers. HTTP/2 is
446
458
  // marginally higher-latency but registers reliably, which is what a dev
447
459
  // tunnel needs.
448
- const cfdProc = spawn(cloudflaredBin, ["tunnel", "--protocol", "http2", "--url", `http://localhost:${gatePort}`], {
449
- detached: true,
450
- stdio: ["ignore", cfdFd, cfdFd],
460
+ const cfdProc = spawnRotatingProcess({
461
+ path: providerLogPath,
462
+ command: cloudflaredBin,
463
+ arguments: ["tunnel", "--protocol", "http2", "--url", `http://localhost:${gatePort}`],
451
464
  });
452
465
  cfdProc.unref();
453
466
  cloudflaredPid = cfdProc.pid;
@@ -649,7 +662,7 @@ export async function reloadOne(state) {
649
662
  vhost: state.vhost,
650
663
  provider: state.provider,
651
664
  allowedIps: cfg.allowed_ips,
652
- gateLogPath: cachePath("tunnel", gateLogFile(name)),
665
+ gateLogPath: tunnelLogDestinations(name, state.provider).gate,
653
666
  });
654
667
  await sleep(800);
655
668
  const pid = gateProc.pid;
@@ -794,8 +807,8 @@ function logs(opts) {
794
807
  const name = resolveName(opts.name);
795
808
  const state = readState(name);
796
809
  const provider = state?.provider ?? "cloudflare";
797
- const which = opts.provider ? providerLogFile(name, provider) : gateLogFile(name);
798
- const path = cachePath("tunnel", which);
810
+ const destinations = tunnelLogDestinations(name, provider);
811
+ const path = opts.provider ? destinations.provider : destinations.gate;
799
812
  if (!existsSync(path)) {
800
813
  emit.error({ code: "tunnel_no_log", message: `No log file at ${path}` });
801
814
  process.exit(1);
@@ -19,6 +19,9 @@ export declare function resolveMaxOldSpaceMb(flag?: string): number;
19
19
  * wins without clobbering flags the caller set (source maps, inspector, …).
20
20
  */
21
21
  export declare function nodeOptionsWithHeapCap(mb: number): string | undefined;
22
+ /** Preload the request diagnostics hook without replacing Next's HTTP server. */
23
+ export declare function nodeOptionsWithWebDiagnostics(webDir: string, mb: number): string;
24
+ export declare function webPerformanceLogDestination(coordRoot: string, env?: Readonly<Record<string, string | undefined>>): string;
22
25
  /**
23
26
  * Probe the exact localhost socket Next will claim. This is deliberately a
24
27
  * check-and-report step, not an alternate-port allocator: Harnery keeps one
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAkCnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAyCD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAevE;AAsBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA6K5E"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8CnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAQR;AAmDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAevE;AAsBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA2N5E"}
@@ -2,9 +2,13 @@ import { spawn, spawnSync } from "node:child_process";
2
2
  import { existsSync } from "node:fs";
3
3
  import { createServer } from "node:net";
4
4
  import path from "node:path";
5
- import { fileURLToPath } from "node:url";
5
+ import { fileURLToPath, pathToFileURL } from "node:url";
6
6
  import { DEFAULT_WEB_PORT, resolveWebPort } from "../core/config.js";
7
7
  import { ensureSemanticServiceRunning } from "../core/semantic/service.js";
8
+ import { processLogDestination } from "../core/storage/process-log.js";
9
+ import { ensureSupervisorRunning } from "../core/supervisor/service.js";
10
+ import { registerSupervisorConsumer, unregisterSupervisorConsumer, } from "../core/supervisor/services.js";
11
+ import { parsePerformanceWindow, readWebPerformanceReport, WEB_PERFORMANCE_LOG, } from "../lib/web-performance.js";
8
12
  import { lazyFetchWebRoot, webRunner } from "./web-fetch.js";
9
13
  /**
10
14
  * `harn web`: Next.js dashboard for harnery's coord state.
@@ -13,6 +17,7 @@ import { lazyFetchWebRoot, webRunner } from "./web-fetch.js";
13
17
  * up [--prod]: start the server (dev mode default; --prod runs next start)
14
18
  * build: next build (production bundle)
15
19
  * start: next start (must `harn web build` first)
20
+ * performance: summarize request latency and event-loop delays
16
21
  *
17
22
  * Launches the Next.js app under `harnery/web/` against the user's current
18
23
  * working directory. The web app reads `.harnery/` via `HARNERY_COORD_ROOT`;
@@ -66,6 +71,23 @@ export function nodeOptionsWithHeapCap(mb) {
66
71
  return inherited;
67
72
  return `${inherited} --max-old-space-size=${mb}`.trim();
68
73
  }
74
+ /** Preload the request diagnostics hook without replacing Next's HTTP server. */
75
+ export function nodeOptionsWithWebDiagnostics(webDir, mb) {
76
+ const inherited = nodeOptionsWithHeapCap(mb) ?? "";
77
+ if (inherited.includes("server-performance.mjs"))
78
+ return inherited;
79
+ const preload = pathToFileURL(path.join(webDir, "server-performance.mjs")).href;
80
+ return `${inherited} --import=${preload}`.trim();
81
+ }
82
+ export function webPerformanceLogDestination(coordRoot, env = process.env) {
83
+ return processLogDestination({
84
+ coord_root: coordRoot,
85
+ family_id: "web-performance-log",
86
+ filename: "active.jsonl",
87
+ legacy_path: path.join(coordRoot, ".harnery", "logs", WEB_PERFORMANCE_LOG),
88
+ env,
89
+ });
90
+ }
69
91
  async function startSemanticServiceWithWeb(coordRoot, emit) {
70
92
  const result = await ensureSemanticServiceRunning(coordRoot);
71
93
  if (result.state === "started")
@@ -80,6 +102,17 @@ async function startSemanticServiceWithWeb(coordRoot, emit) {
80
102
  emit.log(`semantic reader · unavailable (${result.error ?? "startup failed"})`, "warn");
81
103
  }
82
104
  }
105
+ async function startSupervisorWithWeb(coordRoot, emit) {
106
+ registerSupervisorConsumer(coordRoot, { id: "dashboard" });
107
+ const result = await ensureSupervisorRunning(coordRoot);
108
+ if (result.state === "started")
109
+ emit.log("local supervisor · started automatically", "info");
110
+ if (result.state === "running")
111
+ emit.log("local supervisor · already running", "info");
112
+ if (result.state === "unavailable") {
113
+ emit.log(`local supervisor · unavailable (${result.error})`, "warn");
114
+ }
115
+ }
83
116
  /**
84
117
  * Resolve the web app root. A local `web/` (source checkout / submodule) wins.
85
118
  * Otherwise, on an npm install, lazy-fetch it (clone + install) unless the
@@ -183,11 +216,15 @@ export function registerWebCommand(program, emit) {
183
216
  }
184
217
  if (!(await requireAvailablePort(emit, port)))
185
218
  return;
219
+ await startSupervisorWithWeb(coordRoot, emit);
186
220
  await startSemanticServiceWithWeb(coordRoot, emit);
187
221
  const heapMb = resolveMaxOldSpaceMb(opts.maxOldSpace);
222
+ const nodeOptions = nodeOptionsWithWebDiagnostics(root, heapMb);
223
+ const performanceLogPath = webPerformanceLogDestination(coordRoot);
188
224
  emit.log(`harn web · http://localhost:${port} (${mode})`, "info");
189
225
  emit.log(`files origin · http://harnery-files.localhost:${port}`, "info");
190
226
  emit.log(`reading .harnery/ from: ${coordRoot}`, "info");
227
+ emit.log(`performance log · ${performanceLogPath}`, "info");
191
228
  if (heapMb > 0)
192
229
  emit.log(`heap ceiling · ${heapMb} MB`, "info");
193
230
  const child = spawn(webRunner(), ["run", mode], {
@@ -196,9 +233,9 @@ export function registerWebCommand(program, emit) {
196
233
  ...process.env,
197
234
  HARNERY_COORD_ROOT: coordRoot,
198
235
  HARNERY_WEB_PORT: String(port),
199
- ...(nodeOptionsWithHeapCap(heapMb)
200
- ? { NODE_OPTIONS: nodeOptionsWithHeapCap(heapMb) }
201
- : {}),
236
+ HARNERY_WEB_MODE: mode,
237
+ HARNERY_WEB_PERFORMANCE_LOG_PATH: performanceLogPath,
238
+ NODE_OPTIONS: nodeOptions,
202
239
  },
203
240
  stdio: "inherit",
204
241
  });
@@ -209,6 +246,7 @@ export function registerWebCommand(program, emit) {
209
246
  process.on("SIGINT", () => cleanup("SIGINT"));
210
247
  process.on("SIGTERM", () => cleanup("SIGTERM"));
211
248
  child.on("exit", (code, sig) => {
249
+ unregisterSupervisorConsumer(coordRoot, "dashboard");
212
250
  if (sig) {
213
251
  emit.log(`web exited on ${sig}`, "info");
214
252
  }
@@ -269,10 +307,14 @@ export function registerWebCommand(program, emit) {
269
307
  }
270
308
  if (!(await requireAvailablePort(emit, port)))
271
309
  return;
310
+ await startSupervisorWithWeb(coordRoot, emit);
272
311
  await startSemanticServiceWithWeb(coordRoot, emit);
273
312
  const heapMb = resolveMaxOldSpaceMb(opts.maxOldSpace);
313
+ const nodeOptions = nodeOptionsWithWebDiagnostics(root, heapMb);
314
+ const performanceLogPath = webPerformanceLogDestination(coordRoot);
274
315
  emit.log(`harn web · http://localhost:${port} (start)`, "info");
275
316
  emit.log(`reading .harnery/ from: ${coordRoot}`, "info");
317
+ emit.log(`performance log · ${performanceLogPath}`, "info");
276
318
  if (heapMb > 0)
277
319
  emit.log(`heap ceiling · ${heapMb} MB`, "info");
278
320
  const child = spawn(webRunner(), ["run", "start"], {
@@ -281,9 +323,9 @@ export function registerWebCommand(program, emit) {
281
323
  ...process.env,
282
324
  HARNERY_COORD_ROOT: coordRoot,
283
325
  HARNERY_WEB_PORT: String(port),
284
- ...(nodeOptionsWithHeapCap(heapMb)
285
- ? { NODE_OPTIONS: nodeOptionsWithHeapCap(heapMb) }
286
- : {}),
326
+ HARNERY_WEB_MODE: "start",
327
+ HARNERY_WEB_PERFORMANCE_LOG_PATH: performanceLogPath,
328
+ NODE_OPTIONS: nodeOptions,
287
329
  },
288
330
  stdio: "inherit",
289
331
  });
@@ -294,7 +336,42 @@ export function registerWebCommand(program, emit) {
294
336
  process.on("SIGINT", () => cleanup("SIGINT"));
295
337
  process.on("SIGTERM", () => cleanup("SIGTERM"));
296
338
  child.on("exit", (code) => {
339
+ unregisterSupervisorConsumer(coordRoot, "dashboard");
297
340
  process.exitCode = code ?? 0;
298
341
  });
299
342
  });
343
+ web
344
+ .command("performance")
345
+ .description("Summarize dashboard request, event-loop, memory, and GC diagnostics")
346
+ .option("--coord-root <dir>", "Override the coordination root", process.cwd())
347
+ .option("--since <window>", "Include the last Nm, Nh, or Nd", "1h")
348
+ .option("--limit <n>", "Keep the N slowest requests and delays", "20")
349
+ .option("--json", "Emit structured JSON")
350
+ .action((opts) => {
351
+ const windowMs = parsePerformanceWindow(opts.since);
352
+ if (windowMs === null) {
353
+ emit.error({
354
+ code: "invalid_web_performance_window",
355
+ message: `invalid --since value '${opts.since}'`,
356
+ hint: "Use Nm, Nh, or Nd, for example 30m, 1h, or 7d.",
357
+ });
358
+ return;
359
+ }
360
+ const limit = Number(opts.limit);
361
+ if (!Number.isSafeInteger(limit) || limit < 1 || limit > 500) {
362
+ emit.error({
363
+ code: "invalid_web_performance_limit",
364
+ message: `invalid --limit value '${opts.limit}'`,
365
+ hint: "Use an integer from 1 through 500.",
366
+ });
367
+ return;
368
+ }
369
+ if (opts.json)
370
+ emit.config({ format: "json" });
371
+ emit.data(readWebPerformanceReport({
372
+ root: opts.coordRoot,
373
+ since: opts.since,
374
+ limit,
375
+ }));
376
+ });
300
377
  }
@@ -1,8 +1,8 @@
1
1
  import { resolve } from "node:path";
2
2
  import { adapterProofInputs, createBuiltinAdapterRegistry, probeBinaryVersion, } from "../core/adapters/index.js";
3
+ import { resolveCoordRoot } from "../core/agents/coord-client.js";
3
4
  import { workflowSubscriptionOnly } from "../core/config.js";
4
5
  import { findCompletedMissionGoverning, reopenGovernorMission } from "../core/governor/index.js";
5
- import { findCoordRoot } from "../core/hooks/resolve/coord-root.js";
6
6
  import { loadPolicyFile } from "../core/policy/index.js";
7
7
  import { acceptWorkItem, cancelWorkItem, createWorkItem, listWorkItemsWithWarnings, readWorkItem, reconcileAllWorkItems, reconcileWorkItem, reopenWorkItem, runWorkItem, } from "../core/work/index.js";
8
8
  import { WorkflowParkedError } from "../core/workflow/index.js";
@@ -344,7 +344,7 @@ export function renderAttemptBudget(record) {
344
344
  return uncharged > 0 ? `${base} (+${uncharged} uncharged)` : base;
345
345
  }
346
346
  function withWorkRoot(emit, fn) {
347
- const coordRoot = findCoordRoot();
347
+ const coordRoot = resolveCoordRoot();
348
348
  if (!coordRoot) {
349
349
  emit.error({
350
350
  code: "no_coord_root",
@@ -362,7 +362,7 @@ function withWorkRoot(emit, fn) {
362
362
  }
363
363
  }
364
364
  async function withWorkRootAsync(emit, fn) {
365
- const coordRoot = findCoordRoot();
365
+ const coordRoot = resolveCoordRoot();
366
366
  if (!coordRoot) {
367
367
  emit.error({
368
368
  code: "no_coord_root",
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAyEnD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA4uBjF"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA0EnD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAmvBjF"}
@@ -1,8 +1,8 @@
1
1
  import { existsSync } from "node:fs";
2
2
  import { join, resolve } from "node:path";
3
3
  import { adapterProofInputs, createBuiltinAdapterRegistry, probeBinaryVersion, } from "../core/adapters/index.js";
4
+ import { resolveCoordRoot } from "../core/agents/coord-client.js";
4
5
  import { resolveBinName, workflowSubscriptionOnly } from "../core/config.js";
5
- import { findCoordRoot } from "../core/hooks/resolve/coord-root.js";
6
6
  import { loadPolicyFile } from "../core/policy/index.js";
7
7
  import { WorkflowParkedError } from "../core/workflow/engine.js";
8
8
  export function registerWorkflowCommand(program, emit) {
@@ -24,6 +24,7 @@ export function registerWorkflowCommand(program, emit) {
24
24
  .description("Workflow script (plain JS: `export default async ({agent, parallel, stage, log, evidence, authorize}) => …`)")
25
25
  .option("--max-agents <n>", "Total-agent ceiling for the run (default 50)")
26
26
  .option("--concurrency <n>", "Concurrent-subagent cap (default 4)")
27
+ .option("--observe-pressure", "Record observer-only local pressure before the first real child dispatch")
27
28
  .option("--cwd <dir>", "Working directory children spawn in (default: coord root)")
28
29
  .option("--adapter <name>", `Default adapter for agent() calls: ${adapters.join(" | ")} (default claude-code); scripts can override per agent via opts.adapter`)
29
30
  .option("--resume-from <run-id>", "Reuse completed agent results from a prior run's transcript; only changed/failed calls re-run")
@@ -37,7 +38,7 @@ export function registerWorkflowCommand(program, emit) {
37
38
  .option("--approval-to <address>", "Address durable ASK requests (default: operator)")
38
39
  .option("--json", "Emit the full RunReport as JSON")
39
40
  .action(async (script, opts) => {
40
- const coordRoot = findCoordRoot();
41
+ const coordRoot = resolveCoordRoot();
41
42
  if (!coordRoot) {
42
43
  emit.error({
43
44
  code: "no_coord_root",
@@ -94,6 +95,9 @@ export function registerWorkflowCommand(program, emit) {
94
95
  allowApiBilling: opts.allowApiBilling,
95
96
  maxAgents: opts.maxAgents ? Number.parseInt(opts.maxAgents, 10) : undefined,
96
97
  concurrency: opts.concurrency ? Number.parseInt(opts.concurrency, 10) : undefined,
98
+ diagnosticAdmission: opts.observePressure
99
+ ? { schema_version: 1, mode: "shadow" }
100
+ : undefined,
97
101
  cwd: opts.cwd,
98
102
  ...adapterProofInputs(registry.list().map((adapter) => adapter.profile), { versionProbe: probeBinaryVersion }),
99
103
  policy: opts.policy ? loadPolicyFile(opts.policy) : undefined,
@@ -156,7 +160,7 @@ export function registerWorkflowCommand(program, emit) {
156
160
  .description("Resume a parked workflow after its durable approval has been resolved.")
157
161
  .option("--json", "Emit the full RunReport or parked result as JSON")
158
162
  .action(async (runId, opts) => {
159
- const coordRoot = findCoordRoot();
163
+ const coordRoot = resolveCoordRoot();
160
164
  if (!coordRoot) {
161
165
  emit.error({
162
166
  code: "no_coord_root",
@@ -228,7 +232,7 @@ export function registerWorkflowCommand(program, emit) {
228
232
  .description("Show validated allocation, verification, integration, and cleanup state.")
229
233
  .option("--json", "Emit the validated workspace status as JSON")
230
234
  .action(async (runId, opts) => {
231
- const coordRoot = findCoordRoot();
235
+ const coordRoot = resolveCoordRoot();
232
236
  if (!coordRoot) {
233
237
  emit.error({
234
238
  code: "no_coord_root",
@@ -254,7 +258,7 @@ export function registerWorkflowCommand(program, emit) {
254
258
  .description("List validated isolated and shared-compatibility workspace decisions.")
255
259
  .option("--json", "Emit workspace inspections as JSON")
256
260
  .action(async (opts) => {
257
- const coordRoot = findCoordRoot();
261
+ const coordRoot = resolveCoordRoot();
258
262
  if (!coordRoot) {
259
263
  emit.error({
260
264
  code: "no_coord_root",
@@ -300,7 +304,7 @@ export function registerWorkflowCommand(program, emit) {
300
304
  .option("--approval-to <address>", "Address a durable policy ASK request")
301
305
  .option("--json", "Emit the durable integration plan as JSON")
302
306
  .action(async (runId, opts) => {
303
- const coordRoot = findCoordRoot();
307
+ const coordRoot = resolveCoordRoot();
304
308
  if (!coordRoot) {
305
309
  emit.error({
306
310
  code: "no_coord_root",
@@ -384,7 +388,7 @@ export function registerWorkflowCommand(program, emit) {
384
388
  .option("--yes", "Confirm the target-branch mutation")
385
389
  .option("--json", "Emit the durable integration receipt as JSON")
386
390
  .action(async (runId, opts) => {
387
- const coordRoot = findCoordRoot();
391
+ const coordRoot = resolveCoordRoot();
388
392
  if (!coordRoot) {
389
393
  emit.error({
390
394
  code: "no_coord_root",
@@ -426,7 +430,7 @@ export function registerWorkflowCommand(program, emit) {
426
430
  .option("--yes", "Confirm the worktree and provider-branch removal attempt")
427
431
  .option("--json", "Emit the cleanup attempt or receipt as JSON")
428
432
  .action(async (runId, opts) => {
429
- const coordRoot = findCoordRoot();
433
+ const coordRoot = resolveCoordRoot();
430
434
  if (!coordRoot) {
431
435
  emit.error({
432
436
  code: "no_coord_root",
@@ -473,7 +477,7 @@ export function registerWorkflowCommand(program, emit) {
473
477
  .option("--discard", "Throw the uncommitted work away instead of salvaging it")
474
478
  .option("--json", "Emit the reclaim preparation and cleanup result as JSON")
475
479
  .action(async (runId, opts) => {
476
- const coordRoot = findCoordRoot();
480
+ const coordRoot = resolveCoordRoot();
477
481
  if (!coordRoot) {
478
482
  emit.error({
479
483
  code: "no_coord_root",
@@ -539,7 +543,7 @@ export function registerWorkflowCommand(program, emit) {
539
543
  .option("--status <status>", "Filter: pending | approved | denied")
540
544
  .option("--json", "Emit approval records as JSON")
541
545
  .action(async (opts) => {
542
- const coordRoot = findCoordRoot();
546
+ const coordRoot = resolveCoordRoot();
543
547
  if (!coordRoot) {
544
548
  emit.error({ code: "no_coord_root", message: "no .harnery/ coordination root found" });
545
549
  process.exit(1);
@@ -571,7 +575,7 @@ export function registerWorkflowCommand(program, emit) {
571
575
  .description("Show one durable workflow approval.")
572
576
  .option("--json", "Emit the approval record as JSON")
573
577
  .action(async (approvalId, opts) => {
574
- const coordRoot = findCoordRoot();
578
+ const coordRoot = resolveCoordRoot();
575
579
  if (!coordRoot) {
576
580
  emit.error({ code: "no_coord_root", message: "no .harnery/ coordination root found" });
577
581
  process.exit(1);
@@ -600,7 +604,7 @@ export function registerWorkflowCommand(program, emit) {
600
604
  .option("--reason <text>", "Bounded decision reason")
601
605
  .option("--json", "Emit the resolved approval as JSON")
602
606
  .action(async (approvalId, opts) => {
603
- const coordRoot = findCoordRoot();
607
+ const coordRoot = resolveCoordRoot();
604
608
  if (!coordRoot) {
605
609
  emit.error({ code: "no_coord_root", message: "no .harnery/ coordination root found" });
606
610
  process.exit(1);
@@ -640,7 +644,7 @@ export function registerWorkflowCommand(program, emit) {
640
644
  .description("Show the bounded proof packet for a completed workflow run.")
641
645
  .option("--json", "Emit the stored proof packet as JSON")
642
646
  .action(async (runId, opts) => {
643
- const coordRoot = findCoordRoot();
647
+ const coordRoot = resolveCoordRoot();
644
648
  if (!coordRoot) {
645
649
  emit.error({
646
650
  code: "no_coord_root",
@@ -62,7 +62,7 @@ export declare const BUILTIN_ADAPTER_PROFILES: {
62
62
  };
63
63
  };
64
64
  export type BuiltinAdapterId = keyof typeof BUILTIN_ADAPTER_PROFILES;
65
- export declare const BUILTIN_ADAPTER_IDS: readonly ("claude-code" | "cursor" | "codex")[];
65
+ export declare const BUILTIN_ADAPTER_IDS: readonly ("cursor" | "claude-code" | "codex")[];
66
66
  export declare function isBuiltinAdapter(id: string): id is BuiltinAdapterId;
67
67
  export declare function builtinAdapterProfile(id: string): AdapterProfile | undefined;
68
68
  export declare function validateAdapterEffort(id: string, effort: string | undefined): void;