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,129 @@
1
+ /**
2
+ * Producer-side bound on duplicate diagnostic file creation.
3
+ *
4
+ * A producer fault can emit the same diagnostic thousands of times per day,
5
+ * and every emission used to become one loose file in the diagnostics spool.
6
+ * This module keeps the first bounded loose exemplars per
7
+ * (category, reason, instance) key and UTC day unchanged, then coalesces
8
+ * further identical emissions into one deterministic summary file per key and
9
+ * window, preserving the exact logical count, first and last times,
10
+ * represented bytes, hourly rate buckets, and bounded exemplar digests.
11
+ *
12
+ * Below the bound the gate creates no state at all: admitted loose filenames
13
+ * carry the key digest as a suffix, and the gate counts a key's emissions for
14
+ * the window from those filenames alone. A summary file and its short-lived
15
+ * per-key lease exist only for a key that actually crossed the bound, so a
16
+ * healthy spool gains zero files and zero directories from this mitigation.
17
+ *
18
+ * The mitigation is fail-open: any count, lease, read, or publish failure
19
+ * admits the loose diagnostic exactly as before and appends to a lock-free,
20
+ * size-capped emergency log. It never deletes, moves, or rewrites an existing
21
+ * loose diagnostic, and it never calls back into the diagnostic writer.
22
+ */
23
+ export declare const DIAGNOSTIC_SUMMARY_FORMAT: "harnery-v3-diagnostic-summary";
24
+ export declare const DIAGNOSTIC_SUMMARY_VERSION: 1;
25
+ /**
26
+ * Loose exemplars admitted per (category, reason, instance) key per UTC day
27
+ * before identical emissions coalesce into the key's summary. Frozen from a
28
+ * whole-history measurement: healthy categories peak well under this value
29
+ * per day across ALL keys combined, while a producer fault exceeds it within
30
+ * minutes. The bound is enforced from filename counts without cross-process
31
+ * locking, so simultaneous writers straddling the crossing can admit a few
32
+ * extra exemplars; the bound is a flood stop, not an exact quota.
33
+ */
34
+ export declare const DIAGNOSTIC_LOOSE_EXEMPLAR_LIMIT = 32;
35
+ export declare const DIAGNOSTIC_MITIGATION_HEALTH_FILE = "mitigation-health.ndjson";
36
+ export interface DiagnosticContentFingerprint {
37
+ bytes: number;
38
+ sha256: string;
39
+ }
40
+ export interface DiagnosticGateInputV3 {
41
+ /** Already sanitized by the diagnostic writer. */
42
+ category: string;
43
+ reason?: string;
44
+ instanceId?: string;
45
+ fingerprint: DiagnosticContentFingerprint;
46
+ /** Approved scalar metadata only; stored once per summary. */
47
+ metadata: Record<string, string | number | boolean | null>;
48
+ }
49
+ export type DiagnosticGateDecisionV3 = {
50
+ admit: true;
51
+ /**
52
+ * Appended to the loose filename before `.json` so future gate calls
53
+ * can count the key's admitted exemplars from the directory listing.
54
+ * Empty when the gate is disabled.
55
+ */
56
+ loose_name_suffix: string;
57
+ } | {
58
+ admit: false;
59
+ /** The summary file the emission was durably coalesced into. */
60
+ summary_path: string;
61
+ };
62
+ export interface DiagnosticSummaryV3 {
63
+ format: typeof DIAGNOSTIC_SUMMARY_FORMAT;
64
+ format_version: typeof DIAGNOSTIC_SUMMARY_VERSION;
65
+ category: string;
66
+ reason: string;
67
+ instance_id: string;
68
+ /** UTC day this summary covers, as YYYY-MM-DD. */
69
+ window: string;
70
+ /** Loose exemplar files observed for the key when the bound was crossed. */
71
+ loose_count: number;
72
+ /** Identical emissions coalesced here instead of becoming loose files. */
73
+ summarized_count: number;
74
+ first_summarized_at: string | null;
75
+ last_summarized_at: string | null;
76
+ /** Sum of content-fingerprint bytes across summarized emissions. */
77
+ represented_bytes: number;
78
+ /** Digests of the first summarized emissions, bounded. */
79
+ exemplars: DiagnosticContentFingerprint[];
80
+ /** Approved scalar metadata from the first summarized emission. */
81
+ metadata: Record<string, string | number | boolean | null>;
82
+ /** Summarized-only counts per UTC hour ("YYYY-MM-DDTHH"), pruned. */
83
+ recent_hours: Record<string, number>;
84
+ }
85
+ /** Aggregate of the append-only emergency fail-open log. */
86
+ export interface DiagnosticMitigationHealthV3 {
87
+ fail_open_count: number;
88
+ last_fail_open_at: string | null;
89
+ by_stage: Record<string, number>;
90
+ /** True when the log hit its size cap and later fail-opens were dropped. */
91
+ truncated: boolean;
92
+ }
93
+ export declare function diagnosticSummariesRootV3(coordRoot: string): string;
94
+ export declare function diagnosticSummariesEnabledV3(): boolean;
95
+ /**
96
+ * Decide whether one diagnostic emission may become a loose file.
97
+ *
98
+ * Below the per-key bound (counted from digest-suffixed loose filenames) the
99
+ * emission is admitted with the suffix to append, and no summary or lease
100
+ * state is created. At or past the bound the emission is durably coalesced
101
+ * into the key's summary under a short per-key lease and `admit: false` is
102
+ * returned with the summary path. Any mitigation failure, and the disabled
103
+ * gate, admit the loose write exactly as before.
104
+ */
105
+ export declare function gateProducerDiagnosticV3(coordRoot: string, input: DiagnosticGateInputV3, nowMs?: number): DiagnosticGateDecisionV3;
106
+ export interface DiagnosticSummaryListingV3 {
107
+ summaries: DiagnosticSummaryV3[];
108
+ /** Physical summary files, including any that failed validation. */
109
+ file_count: number;
110
+ unreadable_count: number;
111
+ mitigation_health: DiagnosticMitigationHealthV3 | null;
112
+ }
113
+ /**
114
+ * Read every summary in the active epoch's `diagnostic-summaries/` subtree.
115
+ * Skips lease state, temp files, and the mitigation health log (which is
116
+ * aggregated into `mitigation_health` instead). Never throws; a missing
117
+ * subtree returns an empty listing.
118
+ */
119
+ export declare function listDiagnosticSummariesV3(coordRoot: string): DiagnosticSummaryListingV3;
120
+ /**
121
+ * Sum summarized-only occurrences inside a lookback window, from hour
122
+ * buckets. Hour-granular and conservative: a bucket is counted only when its
123
+ * whole hour lies inside `[sinceMs, nowMs]`, so a boundary bucket is excluded
124
+ * (up to 59 minutes undercounted) rather than fully included (up to 59
125
+ * minutes overcounted), and a future-dated bucket from clock skew never
126
+ * inflates a window.
127
+ */
128
+ export declare function countSummarizedSinceV3(summaries: readonly DiagnosticSummaryV3[], sinceMs: number, filter?: (summary: DiagnosticSummaryV3) => boolean, nowMs?: number): number;
129
+ //# sourceMappingURL=diagnostic-summaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostic-summaries.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/diagnostic-summaries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,499 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { appendFileSync, chmodSync, closeSync, existsSync, fsyncSync, lstatSync, mkdirSync, openSync, readdirSync, readFileSync, renameSync, rmdirSync, statSync, unlinkSync, writeFileSync, } from "node:fs";
3
+ import { hostname } from "node:os";
4
+ import { join, resolve } from "node:path";
5
+ import { coordEnv } from "../../../../lib/env.js";
6
+ import { fsyncParentDirectory } from "../../../workflow/durable-record.js";
7
+ import { acquireNoClobberLease } from "../../../workflow/workspaces/leases.js";
8
+ import { EVENT_V3_LEDGER_RELATIVE_ROOT } from "../writer.js";
9
+ /**
10
+ * Producer-side bound on duplicate diagnostic file creation.
11
+ *
12
+ * A producer fault can emit the same diagnostic thousands of times per day,
13
+ * and every emission used to become one loose file in the diagnostics spool.
14
+ * This module keeps the first bounded loose exemplars per
15
+ * (category, reason, instance) key and UTC day unchanged, then coalesces
16
+ * further identical emissions into one deterministic summary file per key and
17
+ * window, preserving the exact logical count, first and last times,
18
+ * represented bytes, hourly rate buckets, and bounded exemplar digests.
19
+ *
20
+ * Below the bound the gate creates no state at all: admitted loose filenames
21
+ * carry the key digest as a suffix, and the gate counts a key's emissions for
22
+ * the window from those filenames alone. A summary file and its short-lived
23
+ * per-key lease exist only for a key that actually crossed the bound, so a
24
+ * healthy spool gains zero files and zero directories from this mitigation.
25
+ *
26
+ * The mitigation is fail-open: any count, lease, read, or publish failure
27
+ * admits the loose diagnostic exactly as before and appends to a lock-free,
28
+ * size-capped emergency log. It never deletes, moves, or rewrites an existing
29
+ * loose diagnostic, and it never calls back into the diagnostic writer.
30
+ */
31
+ export const DIAGNOSTIC_SUMMARY_FORMAT = "harnery-v3-diagnostic-summary";
32
+ export const DIAGNOSTIC_SUMMARY_VERSION = 1;
33
+ /**
34
+ * Loose exemplars admitted per (category, reason, instance) key per UTC day
35
+ * before identical emissions coalesce into the key's summary. Frozen from a
36
+ * whole-history measurement: healthy categories peak well under this value
37
+ * per day across ALL keys combined, while a producer fault exceeds it within
38
+ * minutes. The bound is enforced from filename counts without cross-process
39
+ * locking, so simultaneous writers straddling the crossing can admit a few
40
+ * extra exemplars; the bound is a flood stop, not an exact quota.
41
+ */
42
+ export const DIAGNOSTIC_LOOSE_EXEMPLAR_LIMIT = 32;
43
+ /** Bounded exemplar digests retained inside one summary. */
44
+ const SUMMARY_EXEMPLAR_LIMIT = 4;
45
+ /**
46
+ * Hourly rate buckets retained inside one summary. One summary covers one UTC
47
+ * day, so at most 24 buckets are reachable; the margin absorbs clock skew.
48
+ * Consumer windows wider than a day (doctor reads 48h) span multiple
49
+ * day-scoped summary files, not more buckets in one file.
50
+ */
51
+ const SUMMARY_HOUR_BUCKET_LIMIT = 26;
52
+ /** Refuse to publish a summary larger than this; falls open to loose writes. */
53
+ const SUMMARY_MAX_BYTES = 128 * 1024;
54
+ /** Coalesce updates fsync only every Nth increment; a crash between durable
55
+ * points can lose at most this many recent increments from the summary. */
56
+ const SUMMARY_DURABLE_EVERY = 32;
57
+ /** Stop appending to the emergency fail-open log past this size. */
58
+ const MITIGATION_HEALTH_MAX_BYTES = 256 * 1024;
59
+ export const DIAGNOSTIC_MITIGATION_HEALTH_FILE = "mitigation-health.ndjson";
60
+ const LEASE_STALE_AFTER_MS = 5_000;
61
+ const LEASE_RETRIES = 4;
62
+ const LEASE_RETRY_MS = 10;
63
+ const METADATA_KEY_LIMIT = 16;
64
+ const METADATA_VALUE_LIMIT = 256;
65
+ /** Extracts the 15-digit epoch-ms segment of a loose diagnostic order key. */
66
+ const LOOSE_ORDER_KEY_TIMESTAMP = /-(\d{15})-\d{20}-/;
67
+ const sleepCell = new Int32Array(new SharedArrayBuffer(4));
68
+ export function diagnosticSummariesRootV3(coordRoot) {
69
+ return join(resolve(coordRoot), EVENT_V3_LEDGER_RELATIVE_ROOT, "diagnostic-summaries");
70
+ }
71
+ function looseDiagnosticsRootV3(coordRoot) {
72
+ return join(resolve(coordRoot), EVENT_V3_LEDGER_RELATIVE_ROOT, "diagnostics");
73
+ }
74
+ export function diagnosticSummariesEnabledV3() {
75
+ return coordEnv("V3_DIAGNOSTIC_SUMMARIES") !== "0";
76
+ }
77
+ function sanitizeComponent(value, fallback) {
78
+ if (typeof value !== "string" || value.length === 0)
79
+ return fallback;
80
+ const safe = value.replace(/[^a-zA-Z0-9._-]/g, "_").slice(0, 128);
81
+ return safe.length > 0 ? safe : fallback;
82
+ }
83
+ function keyDigest(category, reason, instanceId) {
84
+ return createHash("sha256")
85
+ .update(`${category}\n${reason}\n${instanceId}`)
86
+ .digest("hex")
87
+ .slice(0, 16);
88
+ }
89
+ function utcDay(nowMs) {
90
+ return new Date(nowMs).toISOString().slice(0, 10);
91
+ }
92
+ function utcHour(nowMs) {
93
+ return new Date(nowMs).toISOString().slice(0, 13);
94
+ }
95
+ function summaryPath(root, category, window, digest) {
96
+ return join(root, `${category}-${window.replaceAll("-", "")}-${digest}.json`);
97
+ }
98
+ function ensureOwnerOnlyDirectory(path) {
99
+ mkdirSync(path, { recursive: true, mode: 0o700 });
100
+ chmodSync(path, 0o700);
101
+ }
102
+ function publishOwnerOnlyJson(path, value, durable) {
103
+ const contents = `${JSON.stringify(value)}\n`;
104
+ if (Buffer.byteLength(contents, "utf8") > SUMMARY_MAX_BYTES) {
105
+ throw new Error("diagnostic summary exceeds its size bound");
106
+ }
107
+ const temporary = `${path}.tmp-${process.pid}-${randomUUID()}`;
108
+ let fd;
109
+ try {
110
+ fd = openSync(temporary, "wx", 0o600);
111
+ writeFileSync(fd, contents, "utf8");
112
+ if (durable)
113
+ fsyncSync(fd);
114
+ closeSync(fd);
115
+ fd = undefined;
116
+ renameSync(temporary, path);
117
+ if (durable)
118
+ fsyncParentDirectory(path);
119
+ }
120
+ finally {
121
+ if (fd !== undefined)
122
+ closeSync(fd);
123
+ if (existsSync(temporary))
124
+ unlinkSync(temporary);
125
+ }
126
+ }
127
+ function pidIsAlive(pid) {
128
+ if (!Number.isSafeInteger(pid) || pid < 1)
129
+ return false;
130
+ try {
131
+ process.kill(pid, 0);
132
+ return true;
133
+ }
134
+ catch (error) {
135
+ return error.code !== "ESRCH";
136
+ }
137
+ }
138
+ function withKeyLease(root, digest, operation) {
139
+ const leasesDir = join(root, "leases");
140
+ ensureOwnerOnlyDirectory(leasesDir);
141
+ const leaseDir = join(leasesDir, digest);
142
+ const authority = createHash("sha256").update(resolve(root)).digest("hex");
143
+ let lease;
144
+ for (let attempt = 0; attempt < LEASE_RETRIES; attempt += 1) {
145
+ try {
146
+ lease = acquireNoClobberLease({
147
+ path: leaseDir,
148
+ scope: "event-v3-diagnostic-summary",
149
+ authoritySha256: authority,
150
+ staleAfterMs: LEASE_STALE_AFTER_MS,
151
+ validateStaleOwner: (owner) => owner.host === hostname() && !pidIsAlive(owner.pid),
152
+ });
153
+ break;
154
+ }
155
+ catch (error) {
156
+ if (attempt === LEASE_RETRIES - 1)
157
+ throw error;
158
+ Atomics.wait(sleepCell, 0, 0, LEASE_RETRY_MS);
159
+ }
160
+ }
161
+ if (!lease)
162
+ throw new Error("diagnostic summary lease is busy");
163
+ try {
164
+ return operation();
165
+ }
166
+ finally {
167
+ // A durably published result must survive release-time faults (an epoch
168
+ // rotation can remove the lease state mid-operation); stale takeover
169
+ // recovers any residue. The empty lease directory is removed so per-key
170
+ // lease state never outlives the contention that needed it.
171
+ try {
172
+ lease.release();
173
+ }
174
+ catch {
175
+ // Swallowed: the operation's outcome already stands.
176
+ }
177
+ try {
178
+ rmdirSync(leaseDir);
179
+ }
180
+ catch {
181
+ // A concurrent acquirer repopulated it, or release left residue.
182
+ }
183
+ }
184
+ }
185
+ /**
186
+ * Count the key's admitted loose exemplars for a UTC-day window from their
187
+ * digest-suffixed filenames. Files written before this mitigation carry no
188
+ * suffix and are not counted, so a pre-existing flood does not consume the
189
+ * window's exemplar budget.
190
+ */
191
+ function countLooseExemplars(coordRoot, digest, window) {
192
+ const directory = looseDiagnosticsRootV3(coordRoot);
193
+ if (!existsSync(directory))
194
+ return 0;
195
+ const windowStartMs = Date.parse(`${window}T00:00:00.000Z`);
196
+ const windowEndMs = windowStartMs + 24 * 60 * 60 * 1000;
197
+ const suffix = `-${digest}.json`;
198
+ let count = 0;
199
+ for (const name of readdirSync(directory)) {
200
+ if (!name.endsWith(suffix))
201
+ continue;
202
+ const epochMs = Number(LOOSE_ORDER_KEY_TIMESTAMP.exec(name)?.[1]);
203
+ if (Number.isFinite(epochMs) && epochMs >= windowStartMs && epochMs < windowEndMs) {
204
+ count += 1;
205
+ }
206
+ }
207
+ return count;
208
+ }
209
+ function boundedMetadata(metadata) {
210
+ const bounded = {};
211
+ let kept = 0;
212
+ for (const [key, value] of Object.entries(metadata)) {
213
+ if (kept >= METADATA_KEY_LIMIT)
214
+ break;
215
+ if (typeof value === "string" && value.length > METADATA_VALUE_LIMIT)
216
+ continue;
217
+ bounded[key] = value;
218
+ kept += 1;
219
+ }
220
+ return bounded;
221
+ }
222
+ function pruneHourBuckets(buckets, nowMs) {
223
+ const keys = Object.keys(buckets).sort();
224
+ const horizon = utcHour(nowMs - SUMMARY_HOUR_BUCKET_LIMIT * 60 * 60 * 1000);
225
+ const pruned = {};
226
+ for (const key of keys) {
227
+ if (key >= horizon)
228
+ pruned[key] = buckets[key];
229
+ }
230
+ // A pathological clock can still grow the map; hard-cap by newest keys.
231
+ const capped = Object.keys(pruned).sort().slice(-SUMMARY_HOUR_BUCKET_LIMIT);
232
+ const result = {};
233
+ for (const key of capped)
234
+ result[key] = pruned[key];
235
+ return result;
236
+ }
237
+ function freshSummary(category, reason, instanceId, window) {
238
+ return {
239
+ format: DIAGNOSTIC_SUMMARY_FORMAT,
240
+ format_version: DIAGNOSTIC_SUMMARY_VERSION,
241
+ category,
242
+ reason,
243
+ instance_id: instanceId,
244
+ window,
245
+ loose_count: 0,
246
+ summarized_count: 0,
247
+ first_summarized_at: null,
248
+ last_summarized_at: null,
249
+ represented_bytes: 0,
250
+ exemplars: [],
251
+ metadata: {},
252
+ recent_hours: {},
253
+ };
254
+ }
255
+ function readSummaryFile(path) {
256
+ let parsed;
257
+ try {
258
+ const metadata = lstatSync(path);
259
+ if (!metadata.isFile() || metadata.isSymbolicLink())
260
+ return undefined;
261
+ parsed = JSON.parse(readFileSync(path, "utf8"));
262
+ }
263
+ catch {
264
+ return undefined;
265
+ }
266
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
267
+ return undefined;
268
+ const summary = parsed;
269
+ if (summary.format !== DIAGNOSTIC_SUMMARY_FORMAT ||
270
+ summary.format_version !== DIAGNOSTIC_SUMMARY_VERSION ||
271
+ typeof summary.category !== "string" ||
272
+ typeof summary.reason !== "string" ||
273
+ typeof summary.instance_id !== "string" ||
274
+ !/^\d{4}-\d{2}-\d{2}$/.test(summary.window) ||
275
+ !Number.isSafeInteger(summary.loose_count) ||
276
+ summary.loose_count < 0 ||
277
+ !Number.isSafeInteger(summary.summarized_count) ||
278
+ summary.summarized_count < 0 ||
279
+ !Number.isSafeInteger(summary.represented_bytes) ||
280
+ summary.represented_bytes < 0 ||
281
+ !Array.isArray(summary.exemplars) ||
282
+ !summary.recent_hours ||
283
+ typeof summary.recent_hours !== "object" ||
284
+ Array.isArray(summary.recent_hours)) {
285
+ return undefined;
286
+ }
287
+ // Drop malformed rate buckets so a corrupt value can neither poison later
288
+ // increments nor silently diverge windowed counts from the total.
289
+ const hours = {};
290
+ for (const [key, value] of Object.entries(summary.recent_hours)) {
291
+ if (/^\d{4}-\d{2}-\d{2}T\d{2}$/.test(key) && Number.isSafeInteger(value) && value >= 0) {
292
+ hours[key] = value;
293
+ }
294
+ }
295
+ summary.recent_hours = hours;
296
+ return summary;
297
+ }
298
+ /**
299
+ * Append one line to the emergency fail-open log. Lock-free by design: an
300
+ * O_APPEND write of one small line is atomic, so concurrent fail-opens never
301
+ * serialize on shared state. Best-effort, size-capped, and nonrecursive: a
302
+ * failure here is swallowed, never diagnosed, and never blocks the loose
303
+ * fallback write.
304
+ */
305
+ function recordFailOpen(root, stage, nowMs) {
306
+ try {
307
+ ensureOwnerOnlyDirectory(root);
308
+ const path = join(root, DIAGNOSTIC_MITIGATION_HEALTH_FILE);
309
+ try {
310
+ if (statSync(path).size >= MITIGATION_HEALTH_MAX_BYTES)
311
+ return;
312
+ }
313
+ catch {
314
+ // Missing log starts fresh.
315
+ }
316
+ const line = JSON.stringify({ at: new Date(nowMs).toISOString(), stage, pid: process.pid });
317
+ appendFileSync(path, `${line}\n`, { mode: 0o600 });
318
+ }
319
+ catch {
320
+ // The emergency log may undercount when storage is unavailable; it is a
321
+ // signal, not accounting, and must never throw into the producer path.
322
+ }
323
+ }
324
+ function readMitigationHealth(path) {
325
+ let contents;
326
+ let size = 0;
327
+ try {
328
+ const metadata = lstatSync(path);
329
+ if (!metadata.isFile() || metadata.isSymbolicLink())
330
+ return null;
331
+ size = metadata.size;
332
+ contents = readFileSync(path, "utf8");
333
+ }
334
+ catch {
335
+ return null;
336
+ }
337
+ const health = {
338
+ fail_open_count: 0,
339
+ last_fail_open_at: null,
340
+ by_stage: {},
341
+ truncated: size >= MITIGATION_HEALTH_MAX_BYTES,
342
+ };
343
+ for (const line of contents.split("\n")) {
344
+ if (line.trim().length === 0)
345
+ continue;
346
+ // Every non-empty line was one fail-open, even a torn one.
347
+ health.fail_open_count += 1;
348
+ try {
349
+ const row = JSON.parse(line);
350
+ if (typeof row.at === "string")
351
+ health.last_fail_open_at = row.at;
352
+ if (typeof row.stage === "string" && row.stage.length <= 32) {
353
+ if (Object.keys(health.by_stage).length < 16 || health.by_stage[row.stage] !== undefined) {
354
+ health.by_stage[row.stage] = (health.by_stage[row.stage] ?? 0) + 1;
355
+ }
356
+ }
357
+ }
358
+ catch {
359
+ // A torn tail line still counts above.
360
+ }
361
+ }
362
+ return health;
363
+ }
364
+ /**
365
+ * Decide whether one diagnostic emission may become a loose file.
366
+ *
367
+ * Below the per-key bound (counted from digest-suffixed loose filenames) the
368
+ * emission is admitted with the suffix to append, and no summary or lease
369
+ * state is created. At or past the bound the emission is durably coalesced
370
+ * into the key's summary under a short per-key lease and `admit: false` is
371
+ * returned with the summary path. Any mitigation failure, and the disabled
372
+ * gate, admit the loose write exactly as before.
373
+ */
374
+ export function gateProducerDiagnosticV3(coordRoot, input, nowMs = Date.now()) {
375
+ if (!diagnosticSummariesEnabledV3())
376
+ return { admit: true, loose_name_suffix: "" };
377
+ const at = Number.isFinite(nowMs) ? nowMs : Date.now();
378
+ const category = sanitizeComponent(input.category, "unknown");
379
+ const reason = sanitizeComponent(input.reason, "none");
380
+ const instanceId = sanitizeComponent(input.instanceId, "unknown");
381
+ const window = utcDay(at);
382
+ const digest = keyDigest(category, reason, instanceId);
383
+ const admitLoose = { admit: true, loose_name_suffix: `-${digest}` };
384
+ const root = diagnosticSummariesRootV3(coordRoot);
385
+ let stage = "peek";
386
+ try {
387
+ const path = summaryPath(root, category, window, digest);
388
+ if (!readSummaryFile(path)) {
389
+ stage = "count";
390
+ if (countLooseExemplars(coordRoot, digest, window) < DIAGNOSTIC_LOOSE_EXEMPLAR_LIMIT) {
391
+ return admitLoose;
392
+ }
393
+ }
394
+ stage = "coalesce";
395
+ ensureOwnerOnlyDirectory(root);
396
+ return withKeyLease(root, digest, () => {
397
+ const existing = readSummaryFile(path);
398
+ const state = existing ?? freshSummary(category, reason, instanceId, window);
399
+ if (!existing)
400
+ state.loose_count = countLooseExemplars(coordRoot, digest, window);
401
+ const atIso = new Date(at).toISOString();
402
+ state.summarized_count += 1;
403
+ state.first_summarized_at ??= atIso;
404
+ state.last_summarized_at = atIso;
405
+ if (Number.isSafeInteger(input.fingerprint?.bytes) && input.fingerprint.bytes >= 0) {
406
+ state.represented_bytes += input.fingerprint.bytes;
407
+ }
408
+ if (state.exemplars.length < SUMMARY_EXEMPLAR_LIMIT && input.fingerprint) {
409
+ state.exemplars.push({
410
+ bytes: input.fingerprint.bytes,
411
+ sha256: input.fingerprint.sha256,
412
+ });
413
+ }
414
+ if (Object.keys(state.metadata).length === 0) {
415
+ state.metadata = boundedMetadata(input.metadata ?? {});
416
+ }
417
+ const hour = utcHour(at);
418
+ state.recent_hours[hour] = (state.recent_hours[hour] ?? 0) + 1;
419
+ state.recent_hours = pruneHourBuckets(state.recent_hours, at);
420
+ const durable = !existing || state.summarized_count % SUMMARY_DURABLE_EVERY === 0;
421
+ publishOwnerOnlyJson(path, state, durable);
422
+ return { admit: false, summary_path: path };
423
+ });
424
+ }
425
+ catch {
426
+ recordFailOpen(root, stage, at);
427
+ return admitLoose;
428
+ }
429
+ }
430
+ /**
431
+ * Read every summary in the active epoch's `diagnostic-summaries/` subtree.
432
+ * Skips lease state, temp files, and the mitigation health log (which is
433
+ * aggregated into `mitigation_health` instead). Never throws; a missing
434
+ * subtree returns an empty listing.
435
+ */
436
+ export function listDiagnosticSummariesV3(coordRoot) {
437
+ const root = diagnosticSummariesRootV3(coordRoot);
438
+ const listing = {
439
+ summaries: [],
440
+ file_count: 0,
441
+ unreadable_count: 0,
442
+ mitigation_health: null,
443
+ };
444
+ let names;
445
+ try {
446
+ const metadata = lstatSync(root);
447
+ if (!metadata.isDirectory() || metadata.isSymbolicLink())
448
+ return listing;
449
+ names = readdirSync(root);
450
+ }
451
+ catch {
452
+ return listing;
453
+ }
454
+ for (const name of names.sort()) {
455
+ if (name === "leases" || name.includes(".tmp-"))
456
+ continue;
457
+ if (name.startsWith("mitigation-health")) {
458
+ if (name === DIAGNOSTIC_MITIGATION_HEALTH_FILE) {
459
+ listing.mitigation_health = readMitigationHealth(join(root, name));
460
+ }
461
+ continue;
462
+ }
463
+ if (!name.endsWith(".json"))
464
+ continue;
465
+ listing.file_count += 1;
466
+ const summary = readSummaryFile(join(root, name));
467
+ if (summary)
468
+ listing.summaries.push(summary);
469
+ else
470
+ listing.unreadable_count += 1;
471
+ }
472
+ return listing;
473
+ }
474
+ /**
475
+ * Sum summarized-only occurrences inside a lookback window, from hour
476
+ * buckets. Hour-granular and conservative: a bucket is counted only when its
477
+ * whole hour lies inside `[sinceMs, nowMs]`, so a boundary bucket is excluded
478
+ * (up to 59 minutes undercounted) rather than fully included (up to 59
479
+ * minutes overcounted), and a future-dated bucket from clock skew never
480
+ * inflates a window.
481
+ */
482
+ export function countSummarizedSinceV3(summaries, sinceMs, filter, nowMs = Date.now()) {
483
+ let count = 0;
484
+ for (const summary of summaries) {
485
+ if (filter && !filter(summary))
486
+ continue;
487
+ for (const [hour, value] of Object.entries(summary.recent_hours)) {
488
+ const hourStartMs = Date.parse(`${hour}:00:00.000Z`);
489
+ if (Number.isFinite(hourStartMs) &&
490
+ hourStartMs >= sinceMs &&
491
+ hourStartMs <= nowMs &&
492
+ Number.isSafeInteger(value) &&
493
+ value > 0) {
494
+ count += value;
495
+ }
496
+ }
497
+ }
498
+ return count;
499
+ }
@@ -4,7 +4,7 @@ import type { EventV3Base, RuntimeAttestationV3Base } from "../base-contract.js"
4
4
  import { type FingerprintContextV3 } from "../canonical.js";
5
5
  import { type CursorExecutionModeV3 } from "../capabilities.js";
6
6
  import { type RuntimeTelemetryCapabilitiesV3 } from "../runtime-telemetry-capabilities.js";
7
- export type HookSignalV3Base = "session-start" | "session-end" | "user-prompt-submit" | "stop" | "stop-failure" | "pre-tool-use" | "post-tool-use" | "post-tool-use-failure" | "permission-request" | "sub-agent-start" | "sub-agent-stop" | "pre-compact" | "post-compact";
7
+ export type HookSignalV3Base = "session-start" | "session-end" | "user-prompt-submit" | "after-agent-response" | "stop" | "stop-failure" | "pre-tool-use" | "post-tool-use" | "post-tool-use-failure" | "permission-request" | "sub-agent-start" | "sub-agent-stop" | "pre-compact" | "post-compact";
8
8
  export interface HookProducerContextV3Base {
9
9
  coordRoot: string;
10
10
  adapter: Adapter;
@@ -1 +1 @@
1
- {"version":3,"file":"hook-base.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/hook-base.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hook-base.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/hook-base.ts"],"names":[],"mappings":"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"}