harnery 0.32.0 → 0.34.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 (665) hide show
  1. package/README.md +2 -0
  2. package/dist/commander.d.ts.map +1 -1
  3. package/dist/commander.js +7 -1
  4. package/dist/commands/adapter.js +2 -2
  5. package/dist/commands/agents.d.ts +144 -1
  6. package/dist/commands/agents.d.ts.map +1 -1
  7. package/dist/commands/agents.js +1408 -565
  8. package/dist/commands/artifacts.d.ts.map +1 -1
  9. package/dist/commands/artifacts.js +7 -6
  10. package/dist/commands/backup.d.ts +1 -1
  11. package/dist/commands/backup.d.ts.map +1 -1
  12. package/dist/commands/backup.js +29 -16
  13. package/dist/commands/browse.d.ts.map +1 -1
  14. package/dist/commands/browse.js +234 -12
  15. package/dist/commands/checkpoint.d.ts.map +1 -1
  16. package/dist/commands/checkpoint.js +3 -2
  17. package/dist/commands/claude-desktop.d.ts +2 -2
  18. package/dist/commands/claude-desktop.d.ts.map +1 -1
  19. package/dist/commands/claude-desktop.js +2 -2
  20. package/dist/commands/context.js +1 -6
  21. package/dist/commands/decision.d.ts.map +1 -1
  22. package/dist/commands/decision.js +22 -38
  23. package/dist/commands/docs.d.ts.map +1 -1
  24. package/dist/commands/docs.js +91 -28
  25. package/dist/commands/doctor.d.ts +4 -2
  26. package/dist/commands/doctor.d.ts.map +1 -1
  27. package/dist/commands/doctor.js +55 -7
  28. package/dist/commands/events.d.ts +5 -0
  29. package/dist/commands/events.d.ts.map +1 -0
  30. package/dist/commands/events.js +189 -0
  31. package/dist/commands/governor.d.ts.map +1 -1
  32. package/dist/commands/governor.js +13 -4
  33. package/dist/commands/init.d.ts +10 -2
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +233 -51
  36. package/dist/commands/instructions.d.ts +4 -0
  37. package/dist/commands/instructions.d.ts.map +1 -0
  38. package/dist/commands/instructions.js +100 -0
  39. package/dist/commands/journal.d.ts.map +1 -1
  40. package/dist/commands/journal.js +4 -13
  41. package/dist/commands/ledger-v3.d.ts +5 -0
  42. package/dist/commands/ledger-v3.d.ts.map +1 -0
  43. package/dist/commands/ledger-v3.js +91 -0
  44. package/dist/commands/presence.d.ts.map +1 -1
  45. package/dist/commands/presence.js +15 -6
  46. package/dist/commands/sync.d.ts +1 -1
  47. package/dist/commands/sync.js +1 -1
  48. package/dist/commands/web.d.ts +6 -0
  49. package/dist/commands/web.d.ts.map +1 -1
  50. package/dist/commands/web.js +67 -7
  51. package/dist/commands/work.d.ts.map +1 -1
  52. package/dist/commands/work.js +22 -5
  53. package/dist/core/adapter.d.ts +5 -0
  54. package/dist/core/adapter.d.ts.map +1 -0
  55. package/dist/core/adapter.js +1 -0
  56. package/dist/core/adapters/attest.d.ts +5 -2
  57. package/dist/core/adapters/attest.d.ts.map +1 -1
  58. package/dist/core/adapters/attest.js +8 -3
  59. package/dist/core/adapters/profiles.d.ts +6 -6
  60. package/dist/core/adapters/profiles.d.ts.map +1 -1
  61. package/dist/core/adapters/profiles.js +4 -4
  62. package/dist/core/agents/canonical-emit.d.ts +17 -15
  63. package/dist/core/agents/canonical-emit.d.ts.map +1 -1
  64. package/dist/core/agents/canonical-emit.js +27 -25
  65. package/dist/core/agents/cli.js +212 -235
  66. package/dist/core/agents/codex-archive-v3.d.ts +14 -0
  67. package/dist/core/agents/codex-archive-v3.d.ts.map +1 -0
  68. package/dist/core/agents/codex-archive-v3.js +110 -0
  69. package/dist/core/agents/coord-client.d.ts +19 -70
  70. package/dist/core/agents/coord-client.d.ts.map +1 -1
  71. package/dist/core/agents/coord-client.js +65 -155
  72. package/dist/core/agents/finalization.d.ts +4 -1
  73. package/dist/core/agents/finalization.d.ts.map +1 -1
  74. package/dist/core/agents/finalization.js +89 -32
  75. package/dist/core/agents/index.d.ts +5 -5
  76. package/dist/core/agents/index.d.ts.map +1 -1
  77. package/dist/core/agents/index.js +5 -5
  78. package/dist/core/agents/live-authority-v3.d.ts +59 -0
  79. package/dist/core/agents/live-authority-v3.d.ts.map +1 -0
  80. package/dist/core/agents/live-authority-v3.js +233 -0
  81. package/dist/core/agents/live-lifecycle-v3.d.ts +20 -0
  82. package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -0
  83. package/dist/core/agents/live-lifecycle-v3.js +91 -0
  84. package/dist/core/agents/live-observation-v3.d.ts +25 -0
  85. package/dist/core/agents/live-observation-v3.d.ts.map +1 -0
  86. package/dist/core/agents/live-observation-v3.js +157 -0
  87. package/dist/core/agents/render/prompt-context.d.ts +10 -4
  88. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  89. package/dist/core/agents/render/prompt-context.js +61 -55
  90. package/dist/core/agents/render/session-context.d.ts +1 -1
  91. package/dist/core/agents/render/session-context.d.ts.map +1 -1
  92. package/dist/core/agents/render/session-context.js +15 -33
  93. package/dist/core/agents/rules/claim-conflict.d.ts +3 -3
  94. package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
  95. package/dist/core/agents/rules/claim-conflict.js +79 -127
  96. package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
  97. package/dist/core/agents/rules/commit-conflict.js +3 -18
  98. package/dist/core/agents/rules/stop-hook.d.ts +9 -50
  99. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  100. package/dist/core/agents/rules/stop-hook.js +193 -236
  101. package/dist/core/agents/session-events.d.ts +5 -7
  102. package/dist/core/agents/session-events.d.ts.map +1 -1
  103. package/dist/core/agents/session-events.js +127 -95
  104. package/dist/core/agents/session-finalization-state-v3.d.ts +30 -0
  105. package/dist/core/agents/session-finalization-state-v3.d.ts.map +1 -0
  106. package/dist/core/agents/session-finalization-state-v3.js +40 -0
  107. package/dist/core/agents/session-finalizer-v3.d.ts +107 -0
  108. package/dist/core/agents/session-finalizer-v3.d.ts.map +1 -0
  109. package/dist/core/agents/session-finalizer-v3.js +734 -0
  110. package/dist/core/agents/session-name-display.d.ts +40 -0
  111. package/dist/core/agents/session-name-display.d.ts.map +1 -0
  112. package/dist/core/agents/session-name-display.js +119 -0
  113. package/dist/core/agents/state/activity-log.d.ts +3 -3
  114. package/dist/core/agents/state/activity-log.d.ts.map +1 -1
  115. package/dist/core/agents/state/activity-log.js +7 -16
  116. package/dist/core/agents/state/heartbeat-writer.d.ts +29 -46
  117. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  118. package/dist/core/agents/state/heartbeat-writer.js +59 -199
  119. package/dist/core/agents/state/live-coordination-view.d.ts +31 -0
  120. package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -0
  121. package/dist/core/agents/state/live-coordination-view.js +209 -0
  122. package/dist/core/agents/state/session-state.d.ts +45 -0
  123. package/dist/core/agents/state/session-state.d.ts.map +1 -0
  124. package/dist/core/agents/state/session-state.js +90 -0
  125. package/dist/core/agents/state/stale-sweep.d.ts +1 -1
  126. package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
  127. package/dist/core/agents/state/stale-sweep.js +26 -15
  128. package/dist/core/artifacts/index.d.ts.map +1 -1
  129. package/dist/core/artifacts/index.js +5 -7
  130. package/dist/core/config.d.ts +33 -2
  131. package/dist/core/config.d.ts.map +1 -1
  132. package/dist/core/config.js +98 -2
  133. package/dist/core/context/index.d.ts +1 -4
  134. package/dist/core/context/index.d.ts.map +1 -1
  135. package/dist/core/context/index.js +9 -9
  136. package/dist/core/events/span-parent.d.ts +15 -0
  137. package/dist/core/events/span-parent.d.ts.map +1 -0
  138. package/dist/core/events/span-parent.js +34 -0
  139. package/dist/core/events/v3/advance.d.ts +14 -0
  140. package/dist/core/events/v3/advance.d.ts.map +1 -0
  141. package/dist/core/events/v3/advance.js +134 -0
  142. package/dist/core/events/v3/authority-outbox.d.ts +78 -0
  143. package/dist/core/events/v3/authority-outbox.d.ts.map +1 -0
  144. package/dist/core/events/v3/authority-outbox.js +399 -0
  145. package/dist/core/events/v3/base-builder.d.ts +20 -0
  146. package/dist/core/events/v3/base-builder.d.ts.map +1 -0
  147. package/dist/core/events/v3/base-builder.js +29 -0
  148. package/dist/core/events/v3/base-contract.d.ts +7576 -0
  149. package/dist/core/events/v3/base-contract.d.ts.map +1 -0
  150. package/dist/core/events/v3/base-contract.js +647 -0
  151. package/dist/core/events/v3/bootstrap.d.ts +34 -0
  152. package/dist/core/events/v3/bootstrap.d.ts.map +1 -0
  153. package/dist/core/events/v3/bootstrap.js +175 -0
  154. package/dist/core/events/v3/builder.d.ts +20 -0
  155. package/dist/core/events/v3/builder.d.ts.map +1 -0
  156. package/dist/core/events/v3/builder.js +28 -0
  157. package/dist/core/events/v3/canonical.d.ts +31 -0
  158. package/dist/core/events/v3/canonical.d.ts.map +1 -0
  159. package/dist/core/events/v3/canonical.js +100 -0
  160. package/dist/core/events/v3/capabilities.d.ts +31 -0
  161. package/dist/core/events/v3/capabilities.d.ts.map +1 -0
  162. package/dist/core/events/v3/capabilities.js +107 -0
  163. package/dist/core/events/v3/capability-drift.d.ts +22 -0
  164. package/dist/core/events/v3/capability-drift.d.ts.map +1 -0
  165. package/dist/core/events/v3/capability-drift.js +134 -0
  166. package/dist/core/events/v3/catalog.d.ts +38 -0
  167. package/dist/core/events/v3/catalog.d.ts.map +1 -0
  168. package/dist/core/events/v3/catalog.js +135 -0
  169. package/dist/core/events/v3/clock-order.d.ts +34 -0
  170. package/dist/core/events/v3/clock-order.d.ts.map +1 -0
  171. package/dist/core/events/v3/clock-order.js +35 -0
  172. package/dist/core/events/v3/contract.d.ts +171 -0
  173. package/dist/core/events/v3/contract.d.ts.map +1 -0
  174. package/dist/core/events/v3/contract.js +180 -0
  175. package/dist/core/events/v3/control.d.ts +111 -0
  176. package/dist/core/events/v3/control.d.ts.map +1 -0
  177. package/dist/core/events/v3/control.js +419 -0
  178. package/dist/core/events/v3/coordination-view.d.ts +69 -0
  179. package/dist/core/events/v3/coordination-view.d.ts.map +1 -0
  180. package/dist/core/events/v3/coordination-view.js +119 -0
  181. package/dist/core/events/v3/economics.d.ts +77 -0
  182. package/dist/core/events/v3/economics.d.ts.map +1 -0
  183. package/dist/core/events/v3/economics.js +274 -0
  184. package/dist/core/events/v3/finalization-view.d.ts +26 -0
  185. package/dist/core/events/v3/finalization-view.d.ts.map +1 -0
  186. package/dist/core/events/v3/finalization-view.js +37 -0
  187. package/dist/core/events/v3/fingerprint-keys.d.ts +25 -0
  188. package/dist/core/events/v3/fingerprint-keys.d.ts.map +1 -0
  189. package/dist/core/events/v3/fingerprint-keys.js +217 -0
  190. package/dist/core/events/v3/generated.d.ts +4 -0
  191. package/dist/core/events/v3/generated.d.ts.map +1 -0
  192. package/dist/core/events/v3/generated.js +47 -0
  193. package/dist/core/events/v3/ids.d.ts +9 -0
  194. package/dist/core/events/v3/ids.d.ts.map +1 -0
  195. package/dist/core/events/v3/ids.js +25 -0
  196. package/dist/core/events/v3/index.d.ts +35 -0
  197. package/dist/core/events/v3/index.d.ts.map +1 -0
  198. package/dist/core/events/v3/index.js +33 -0
  199. package/dist/core/events/v3/latency.d.ts +63 -0
  200. package/dist/core/events/v3/latency.d.ts.map +1 -0
  201. package/dist/core/events/v3/latency.js +412 -0
  202. package/dist/core/events/v3/live-feed.d.ts +45 -0
  203. package/dist/core/events/v3/live-feed.d.ts.map +1 -0
  204. package/dist/core/events/v3/live-feed.js +246 -0
  205. package/dist/core/events/v3/live-observation.d.ts +35 -0
  206. package/dist/core/events/v3/live-observation.d.ts.map +1 -0
  207. package/dist/core/events/v3/live-observation.js +1 -0
  208. package/dist/core/events/v3/live-routing.d.ts +57 -0
  209. package/dist/core/events/v3/live-routing.d.ts.map +1 -0
  210. package/dist/core/events/v3/live-routing.js +107 -0
  211. package/dist/core/events/v3/producers/command-recorder.d.ts +67 -0
  212. package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -0
  213. package/dist/core/events/v3/producers/command-recorder.js +477 -0
  214. package/dist/core/events/v3/producers/command.d.ts +50 -0
  215. package/dist/core/events/v3/producers/command.d.ts.map +1 -0
  216. package/dist/core/events/v3/producers/command.js +135 -0
  217. package/dist/core/events/v3/producers/coordination-recorder.d.ts +53 -0
  218. package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -0
  219. package/dist/core/events/v3/producers/coordination-recorder.js +376 -0
  220. package/dist/core/events/v3/producers/coordination.d.ts +90 -0
  221. package/dist/core/events/v3/producers/coordination.d.ts.map +1 -0
  222. package/dist/core/events/v3/producers/coordination.js +229 -0
  223. package/dist/core/events/v3/producers/hook-base.d.ts +54 -0
  224. package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -0
  225. package/dist/core/events/v3/producers/hook-base.js +424 -0
  226. package/dist/core/events/v3/producers/hook.d.ts +29 -0
  227. package/dist/core/events/v3/producers/hook.d.ts.map +1 -0
  228. package/dist/core/events/v3/producers/hook.js +71 -0
  229. package/dist/core/events/v3/producers/intake.d.ts +65 -0
  230. package/dist/core/events/v3/producers/intake.d.ts.map +1 -0
  231. package/dist/core/events/v3/producers/intake.js +244 -0
  232. package/dist/core/events/v3/producers/recorder.d.ts +240 -0
  233. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -0
  234. package/dist/core/events/v3/producers/recorder.js +2176 -0
  235. package/dist/core/events/v3/projection.d.ts +101 -0
  236. package/dist/core/events/v3/projection.d.ts.map +1 -0
  237. package/dist/core/events/v3/projection.js +479 -0
  238. package/dist/core/events/v3/reader.d.ts +75 -0
  239. package/dist/core/events/v3/reader.d.ts.map +1 -0
  240. package/dist/core/events/v3/reader.js +778 -0
  241. package/dist/core/events/v3/recovery-record.d.ts +47 -0
  242. package/dist/core/events/v3/recovery-record.d.ts.map +1 -0
  243. package/dist/core/events/v3/recovery-record.js +167 -0
  244. package/dist/core/events/v3/recovery.d.ts +22 -0
  245. package/dist/core/events/v3/recovery.d.ts.map +1 -0
  246. package/dist/core/events/v3/recovery.js +227 -0
  247. package/dist/core/events/v3/span-state.d.ts +52 -0
  248. package/dist/core/events/v3/span-state.d.ts.map +1 -0
  249. package/dist/core/events/v3/span-state.js +142 -0
  250. package/dist/core/events/v3/targets.d.ts +23 -0
  251. package/dist/core/events/v3/targets.d.ts.map +1 -0
  252. package/dist/core/events/v3/targets.js +134 -0
  253. package/dist/core/events/v3/turn-telemetry.d.ts +41 -0
  254. package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -0
  255. package/dist/core/events/v3/turn-telemetry.js +168 -0
  256. package/dist/core/events/v3/validate.d.ts +9 -0
  257. package/dist/core/events/v3/validate.d.ts.map +1 -0
  258. package/dist/core/events/v3/validate.js +281 -0
  259. package/dist/core/events/v3/writer.d.ts +56 -0
  260. package/dist/core/events/v3/writer.d.ts.map +1 -0
  261. package/dist/core/events/v3/writer.js +335 -0
  262. package/dist/core/governor/index.d.ts +1 -1
  263. package/dist/core/governor/index.d.ts.map +1 -1
  264. package/dist/core/governor/index.js +1 -1
  265. package/dist/core/governor/plan-api.d.ts +2 -1
  266. package/dist/core/governor/plan-api.d.ts.map +1 -1
  267. package/dist/core/governor/plan-api.js +6 -3
  268. package/dist/core/governor/read.d.ts +1 -1
  269. package/dist/core/governor/read.d.ts.map +1 -1
  270. package/dist/core/governor/read.js +1 -1
  271. package/dist/core/governor/state.d.ts +9 -0
  272. package/dist/core/governor/state.d.ts.map +1 -1
  273. package/dist/core/governor/state.js +40 -3
  274. package/dist/core/guard/config.d.ts +5 -0
  275. package/dist/core/guard/config.d.ts.map +1 -0
  276. package/dist/core/guard/config.js +157 -0
  277. package/dist/core/guard/coordinator.d.ts +14 -0
  278. package/dist/core/guard/coordinator.d.ts.map +1 -0
  279. package/dist/core/guard/coordinator.js +173 -0
  280. package/dist/core/guard/evaluator.d.ts +4 -0
  281. package/dist/core/guard/evaluator.d.ts.map +1 -0
  282. package/dist/core/guard/evaluator.js +242 -0
  283. package/dist/core/guard/evidence-v3.d.ts +15 -0
  284. package/dist/core/guard/evidence-v3.d.ts.map +1 -0
  285. package/dist/core/guard/evidence-v3.js +171 -0
  286. package/dist/core/guard/index.d.ts +10 -0
  287. package/dist/core/guard/index.d.ts.map +1 -0
  288. package/dist/core/guard/index.js +6 -0
  289. package/dist/core/guard/live-source-v3.d.ts +40 -0
  290. package/dist/core/guard/live-source-v3.d.ts.map +1 -0
  291. package/dist/core/guard/live-source-v3.js +128 -0
  292. package/dist/core/guard/storage.d.ts +27 -0
  293. package/dist/core/guard/storage.d.ts.map +1 -0
  294. package/dist/core/guard/storage.js +140 -0
  295. package/dist/core/guard/types.d.ts +119 -0
  296. package/dist/core/guard/types.d.ts.map +1 -0
  297. package/dist/core/guard/types.js +1 -0
  298. package/dist/core/hooks/adapter/detect.d.ts +18 -1
  299. package/dist/core/hooks/adapter/detect.d.ts.map +1 -1
  300. package/dist/core/hooks/adapter/detect.js +29 -0
  301. package/dist/core/hooks/adapter/events.d.ts +7 -4
  302. package/dist/core/hooks/adapter/events.d.ts.map +1 -1
  303. package/dist/core/hooks/adapter/events.js +13 -4
  304. package/dist/core/hooks/adapter/output.d.ts +2 -2
  305. package/dist/core/hooks/adapter/output.d.ts.map +1 -1
  306. package/dist/core/hooks/adapter/parse.d.ts +7 -4
  307. package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
  308. package/dist/core/hooks/adapter/parse.js +64 -24
  309. package/dist/core/hooks/adapter/wiring.d.ts +30 -4
  310. package/dist/core/hooks/adapter/wiring.d.ts.map +1 -1
  311. package/dist/core/hooks/adapter/wiring.js +89 -11
  312. package/dist/core/hooks/cli.d.ts +1 -1
  313. package/dist/core/hooks/cli.js +345 -400
  314. package/dist/core/hooks/codex-authorization.d.ts +30 -0
  315. package/dist/core/hooks/codex-authorization.d.ts.map +1 -0
  316. package/dist/core/hooks/codex-authorization.js +199 -0
  317. package/dist/core/hooks/effects/image-capture.d.ts +20 -34
  318. package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
  319. package/dist/core/hooks/effects/image-capture.js +212 -221
  320. package/dist/core/hooks/effects/index.d.ts +1 -9
  321. package/dist/core/hooks/effects/index.d.ts.map +1 -1
  322. package/dist/core/hooks/effects/index.js +1 -24
  323. package/dist/core/hooks/events/input-hash.d.ts +7 -0
  324. package/dist/core/hooks/events/input-hash.d.ts.map +1 -0
  325. package/dist/core/hooks/events/input-hash.js +43 -0
  326. package/dist/core/hooks/index.d.ts +4 -3
  327. package/dist/core/hooks/index.d.ts.map +1 -1
  328. package/dist/core/hooks/index.js +2 -3
  329. package/dist/core/hooks/resolve/coord-root.d.ts +1 -1
  330. package/dist/core/hooks/resolve/coord-root.js +1 -1
  331. package/dist/core/hooks/resolve/owner.d.ts +16 -15
  332. package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
  333. package/dist/core/hooks/resolve/owner.js +51 -42
  334. package/dist/core/hooks/resolve/transcript.d.ts +33 -3
  335. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  336. package/dist/core/hooks/resolve/transcript.js +155 -14
  337. package/dist/core/hooks/session-name-presence.d.ts +9 -10
  338. package/dist/core/hooks/session-name-presence.d.ts.map +1 -1
  339. package/dist/core/hooks/session-name-presence.js +15 -15
  340. package/dist/core/hooks/unsafe-cross-shell.d.ts +1 -1
  341. package/dist/core/hooks/unsafe-cross-shell.d.ts.map +1 -1
  342. package/dist/core/journal/index.d.ts +2 -2
  343. package/dist/core/journal/index.d.ts.map +1 -1
  344. package/dist/core/journal/index.js +9 -22
  345. package/dist/core/presence/blob.d.ts +8 -3
  346. package/dist/core/presence/blob.d.ts.map +1 -1
  347. package/dist/core/presence/blob.js +54 -41
  348. package/dist/core/presence/codec-digest.d.ts +29 -0
  349. package/dist/core/presence/codec-digest.d.ts.map +1 -0
  350. package/dist/core/presence/codec-digest.js +170 -0
  351. package/dist/core/presence/index.js +15 -1
  352. package/dist/core/presence/relay-client.d.ts +1 -1
  353. package/dist/core/presence/relay-client.d.ts.map +1 -1
  354. package/dist/core/presence/relay-client.js +5 -5
  355. package/dist/core/work/index.d.ts +1 -1
  356. package/dist/core/work/index.d.ts.map +1 -1
  357. package/dist/core/work/index.js +1 -1
  358. package/dist/core/work/read.d.ts +1 -1
  359. package/dist/core/work/read.d.ts.map +1 -1
  360. package/dist/core/work/read.js +1 -1
  361. package/dist/core/work/runner.d.ts.map +1 -1
  362. package/dist/core/work/runner.js +6 -0
  363. package/dist/core/work/state.d.ts +9 -0
  364. package/dist/core/work/state.d.ts.map +1 -1
  365. package/dist/core/work/state.js +17 -3
  366. package/dist/core/workflow/engine.js +24 -25
  367. package/dist/core/workflow/live-session-v3.d.ts +19 -0
  368. package/dist/core/workflow/live-session-v3.d.ts.map +1 -0
  369. package/dist/core/workflow/live-session-v3.js +86 -0
  370. package/dist/core/workflow/scope-id.d.ts +3 -0
  371. package/dist/core/workflow/scope-id.d.ts.map +1 -0
  372. package/dist/core/workflow/scope-id.js +5 -0
  373. package/dist/core/workflow/workspaces/leases.d.ts +4 -0
  374. package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
  375. package/dist/core/workflow/workspaces/leases.js +53 -19
  376. package/dist/index.d.ts +1 -1
  377. package/dist/index.js +1 -1
  378. package/dist/lib/browser/client.d.ts +41 -0
  379. package/dist/lib/browser/client.d.ts.map +1 -1
  380. package/dist/lib/browser/client.js +203 -0
  381. package/dist/lib/browser/critique.d.ts +28 -2
  382. package/dist/lib/browser/critique.d.ts.map +1 -1
  383. package/dist/lib/browser/critique.js +74 -18
  384. package/dist/lib/browser/geometry.d.ts +1 -1
  385. package/dist/lib/browser/geometry.d.ts.map +1 -1
  386. package/dist/lib/browser/geometry.js +130 -6
  387. package/dist/lib/browser/index.d.ts +3 -0
  388. package/dist/lib/browser/index.d.ts.map +1 -1
  389. package/dist/lib/browser/index.js +3 -0
  390. package/dist/lib/browser/qa-plan.d.ts +174 -0
  391. package/dist/lib/browser/qa-plan.d.ts.map +1 -0
  392. package/dist/lib/browser/qa-plan.js +321 -0
  393. package/dist/lib/browser/qa-reuse.d.ts +99 -0
  394. package/dist/lib/browser/qa-reuse.d.ts.map +1 -0
  395. package/dist/lib/browser/qa-reuse.js +222 -0
  396. package/dist/lib/browser/qa-snapshot.d.ts +64 -0
  397. package/dist/lib/browser/qa-snapshot.d.ts.map +1 -0
  398. package/dist/lib/browser/qa-snapshot.js +171 -0
  399. package/dist/lib/browser/runts.d.ts.map +1 -1
  400. package/dist/lib/browser/runts.js +22 -1
  401. package/dist/lib/browser/tiling.d.ts +71 -0
  402. package/dist/lib/browser/tiling.d.ts.map +1 -0
  403. package/dist/lib/browser/tiling.js +118 -0
  404. package/dist/lib/context/index.d.ts +0 -3
  405. package/dist/lib/context/index.d.ts.map +1 -1
  406. package/dist/lib/context/index.js +20 -42
  407. package/dist/lib/council/index.d.ts +2 -2
  408. package/dist/lib/council/index.d.ts.map +1 -1
  409. package/dist/lib/council/index.js +9 -20
  410. package/dist/lib/docs-frontmatter.d.ts +1 -6
  411. package/dist/lib/docs-frontmatter.d.ts.map +1 -1
  412. package/dist/lib/docs-frontmatter.js +12 -78
  413. package/dist/lib/docs-index.d.ts +9 -0
  414. package/dist/lib/docs-index.d.ts.map +1 -1
  415. package/dist/lib/docs-index.js +32 -3
  416. package/dist/lib/docs-lint.d.ts.map +1 -1
  417. package/dist/lib/docs-lint.js +14 -30
  418. package/dist/lib/docs-metadata-audit.d.ts +19 -0
  419. package/dist/lib/docs-metadata-audit.d.ts.map +1 -0
  420. package/dist/lib/docs-metadata-audit.js +132 -0
  421. package/dist/lib/docs-metadata-managed.d.ts +23 -0
  422. package/dist/lib/docs-metadata-managed.d.ts.map +1 -0
  423. package/dist/lib/docs-metadata-managed.js +78 -0
  424. package/dist/lib/docs-metadata-sync.d.ts +20 -0
  425. package/dist/lib/docs-metadata-sync.d.ts.map +1 -0
  426. package/dist/lib/docs-metadata-sync.js +222 -0
  427. package/dist/lib/docs-metadata-v2-schema.d.ts +273 -0
  428. package/dist/lib/docs-metadata-v2-schema.d.ts.map +1 -0
  429. package/dist/lib/docs-metadata-v2-schema.js +134 -0
  430. package/dist/lib/docs-metadata-v2.d.ts +21 -0
  431. package/dist/lib/docs-metadata-v2.d.ts.map +1 -0
  432. package/dist/lib/docs-metadata-v2.js +424 -0
  433. package/dist/lib/docs-new.d.ts +11 -0
  434. package/dist/lib/docs-new.d.ts.map +1 -0
  435. package/dist/lib/docs-new.js +52 -0
  436. package/dist/lib/docs-sweep.d.ts.map +1 -1
  437. package/dist/lib/docs-sweep.js +45 -29
  438. package/dist/lib/headless/index.d.ts +98 -0
  439. package/dist/lib/headless/index.d.ts.map +1 -0
  440. package/dist/lib/headless/index.js +211 -0
  441. package/dist/lib/identities/assume.d.ts +4 -4
  442. package/dist/lib/identities/assume.d.ts.map +1 -1
  443. package/dist/lib/identities/assume.js +52 -68
  444. package/dist/lib/instructions/apply.d.ts +5 -4
  445. package/dist/lib/instructions/apply.d.ts.map +1 -1
  446. package/dist/lib/instructions/apply.js +32 -20
  447. package/dist/lib/instructions/bundle.d.ts +33 -0
  448. package/dist/lib/instructions/bundle.d.ts.map +1 -0
  449. package/dist/lib/instructions/bundle.js +149 -0
  450. package/dist/lib/instructions/splice.d.ts +0 -1
  451. package/dist/lib/instructions/splice.d.ts.map +1 -1
  452. package/dist/lib/instructions/splice.js +22 -6
  453. package/dist/lib/instructions/templates.d.ts +7 -5
  454. package/dist/lib/instructions/templates.d.ts.map +1 -1
  455. package/dist/lib/instructions/templates.js +79 -9
  456. package/package.json +27 -6
  457. package/schemas/config.schema.json +120 -2
  458. package/schemas/docs-metadata-v2.schema.json +441 -0
  459. package/schemas/event-v3.schema.json +24472 -0
  460. package/src/commander.ts +7 -1
  461. package/src/commands/adapter.ts +2 -2
  462. package/src/commands/agents.ts +1737 -570
  463. package/src/commands/artifacts.ts +7 -6
  464. package/src/commands/backup.ts +29 -21
  465. package/src/commands/browse.ts +349 -8
  466. package/src/commands/checkpoint.ts +4 -3
  467. package/src/commands/claude-desktop.ts +7 -5
  468. package/src/commands/context.ts +1 -6
  469. package/src/commands/decision.ts +27 -44
  470. package/src/commands/docs.ts +100 -33
  471. package/src/commands/doctor.ts +73 -8
  472. package/src/commands/events.ts +256 -0
  473. package/src/commands/governor.ts +18 -4
  474. package/src/commands/init.ts +264 -57
  475. package/src/commands/instructions.ts +129 -0
  476. package/src/commands/journal.ts +4 -13
  477. package/src/commands/ledger-v3.ts +111 -0
  478. package/src/commands/presence.ts +18 -11
  479. package/src/commands/sync.ts +1 -1
  480. package/src/commands/web.ts +67 -8
  481. package/src/commands/work.ts +28 -5
  482. package/src/core/adapter.ts +5 -0
  483. package/src/core/adapters/attest.ts +8 -3
  484. package/src/core/adapters/profiles.ts +4 -6
  485. package/src/core/agents/canonical-emit.ts +39 -28
  486. package/src/core/agents/cli.ts +242 -263
  487. package/src/core/agents/codex-archive-v3.ts +138 -0
  488. package/src/core/agents/coord-client.ts +75 -177
  489. package/src/core/agents/finalization.ts +120 -38
  490. package/src/core/agents/index.ts +5 -5
  491. package/src/core/agents/live-authority-v3.ts +375 -0
  492. package/src/core/agents/live-lifecycle-v3.ts +140 -0
  493. package/src/core/agents/live-observation-v3.ts +216 -0
  494. package/src/core/agents/render/prompt-context.ts +89 -55
  495. package/src/core/agents/render/session-context.ts +23 -32
  496. package/src/core/agents/rules/claim-conflict.ts +85 -126
  497. package/src/core/agents/rules/commit-conflict.ts +3 -14
  498. package/src/core/agents/rules/stop-hook.ts +239 -293
  499. package/src/core/agents/session-events.ts +137 -104
  500. package/src/core/agents/session-finalization-state-v3.ts +90 -0
  501. package/src/core/agents/session-finalizer-v3.ts +953 -0
  502. package/src/core/agents/session-name-display.ts +149 -0
  503. package/src/core/agents/state/activity-log.ts +6 -14
  504. package/src/core/agents/state/heartbeat-writer.ts +98 -242
  505. package/src/core/agents/state/live-coordination-view.ts +290 -0
  506. package/src/core/agents/state/session-state.ts +143 -0
  507. package/src/core/agents/state/stale-sweep.ts +40 -17
  508. package/src/core/artifacts/index.ts +4 -5
  509. package/src/core/config.ts +148 -3
  510. package/src/core/context/index.ts +9 -17
  511. package/src/core/events/span-parent.ts +46 -0
  512. package/src/core/events/v3/advance.ts +168 -0
  513. package/src/core/events/v3/authority-outbox.ts +548 -0
  514. package/src/core/events/v3/base-builder.ts +60 -0
  515. package/src/core/events/v3/base-contract.ts +882 -0
  516. package/src/core/events/v3/bootstrap.ts +226 -0
  517. package/src/core/events/v3/builder.ts +59 -0
  518. package/src/core/events/v3/canonical.ts +153 -0
  519. package/src/core/events/v3/capabilities.ts +171 -0
  520. package/src/core/events/v3/capability-drift.ts +177 -0
  521. package/src/core/events/v3/catalog.ts +202 -0
  522. package/src/core/events/v3/clock-order.ts +41 -0
  523. package/src/core/events/v3/contract.ts +365 -0
  524. package/src/core/events/v3/control.ts +576 -0
  525. package/src/core/events/v3/coordination-view.ts +193 -0
  526. package/src/core/events/v3/economics.ts +384 -0
  527. package/src/core/events/v3/finalization-view.ts +67 -0
  528. package/src/core/events/v3/fingerprint-keys.ts +260 -0
  529. package/src/core/events/v3/generated.ts +48 -0
  530. package/src/core/events/v3/ids.ts +33 -0
  531. package/src/core/events/v3/index.ts +322 -0
  532. package/src/core/events/v3/latency.ts +551 -0
  533. package/src/core/events/v3/live-feed.ts +319 -0
  534. package/src/core/events/v3/live-observation.ts +39 -0
  535. package/src/core/events/v3/live-routing.ts +135 -0
  536. package/src/core/events/v3/producers/command-recorder.ts +631 -0
  537. package/src/core/events/v3/producers/command.ts +201 -0
  538. package/src/core/events/v3/producers/coordination-recorder.ts +538 -0
  539. package/src/core/events/v3/producers/coordination.ts +355 -0
  540. package/src/core/events/v3/producers/hook-base.ts +578 -0
  541. package/src/core/events/v3/producers/hook.ts +119 -0
  542. package/src/core/events/v3/producers/intake.ts +319 -0
  543. package/src/core/events/v3/producers/recorder.ts +2805 -0
  544. package/src/core/events/v3/projection.ts +653 -0
  545. package/src/core/events/v3/reader.ts +1127 -0
  546. package/src/core/events/v3/recovery-record.ts +244 -0
  547. package/src/core/events/v3/recovery.ts +271 -0
  548. package/src/core/events/v3/span-state.ts +187 -0
  549. package/src/core/events/v3/targets.ts +182 -0
  550. package/src/core/events/v3/turn-telemetry.ts +259 -0
  551. package/src/core/events/v3/validate.ts +361 -0
  552. package/src/core/events/v3/writer.ts +419 -0
  553. package/src/core/governor/index.ts +3 -0
  554. package/src/core/governor/plan-api.ts +10 -2
  555. package/src/core/governor/read.ts +3 -0
  556. package/src/core/governor/state.ts +52 -5
  557. package/src/core/guard/config.ts +206 -0
  558. package/src/core/guard/coordinator.ts +227 -0
  559. package/src/core/guard/evaluator.ts +343 -0
  560. package/src/core/guard/evidence-v3.ts +227 -0
  561. package/src/core/guard/index.ts +35 -0
  562. package/src/core/guard/live-source-v3.ts +204 -0
  563. package/src/core/guard/storage.ts +188 -0
  564. package/src/core/guard/types.ts +152 -0
  565. package/src/core/hooks/adapter/detect.ts +28 -1
  566. package/src/core/hooks/adapter/events.ts +15 -6
  567. package/src/core/hooks/adapter/output.ts +7 -2
  568. package/src/core/hooks/adapter/parse.ts +81 -36
  569. package/src/core/hooks/adapter/wiring.ts +119 -13
  570. package/src/core/hooks/cli.ts +398 -422
  571. package/src/core/hooks/codex-authorization.ts +253 -0
  572. package/src/core/hooks/effects/image-capture.ts +228 -238
  573. package/src/core/hooks/effects/index.ts +1 -36
  574. package/src/core/hooks/events/input-hash.ts +47 -0
  575. package/src/core/hooks/index.ts +4 -11
  576. package/src/core/hooks/resolve/coord-root.ts +1 -1
  577. package/src/core/hooks/resolve/owner.ts +52 -45
  578. package/src/core/hooks/resolve/transcript.ts +165 -14
  579. package/src/core/hooks/session-name-presence.ts +14 -15
  580. package/src/core/hooks/unsafe-cross-shell.ts +1 -1
  581. package/src/core/journal/index.ts +15 -22
  582. package/src/core/presence/blob.ts +63 -38
  583. package/src/core/presence/codec-digest.ts +215 -0
  584. package/src/core/presence/index.ts +18 -1
  585. package/src/core/presence/relay-client.ts +5 -5
  586. package/src/core/work/index.ts +3 -0
  587. package/src/core/work/read.ts +3 -0
  588. package/src/core/work/runner.ts +6 -0
  589. package/src/core/work/state.ts +27 -3
  590. package/src/core/workflow/engine.ts +24 -24
  591. package/src/core/workflow/live-session-v3.ts +126 -0
  592. package/src/core/workflow/scope-id.ts +6 -0
  593. package/src/core/workflow/workspaces/leases.ts +56 -19
  594. package/src/index.ts +1 -1
  595. package/src/lib/browser/client.ts +230 -0
  596. package/src/lib/browser/critique.ts +104 -27
  597. package/src/lib/browser/geometry.ts +143 -14
  598. package/src/lib/browser/index.ts +34 -0
  599. package/src/lib/browser/qa-plan.ts +501 -0
  600. package/src/lib/browser/qa-reuse.ts +306 -0
  601. package/src/lib/browser/qa-snapshot.ts +223 -0
  602. package/src/lib/browser/runts.ts +27 -2
  603. package/src/lib/browser/tiling.ts +164 -0
  604. package/src/lib/context/index.ts +22 -46
  605. package/src/lib/council/index.ts +9 -21
  606. package/src/lib/docs-frontmatter.ts +8 -79
  607. package/src/lib/docs-index.ts +33 -3
  608. package/src/lib/docs-lint.ts +15 -29
  609. package/src/lib/docs-metadata-audit.ts +166 -0
  610. package/src/lib/docs-metadata-managed.ts +83 -0
  611. package/src/lib/docs-metadata-sync.ts +262 -0
  612. package/src/lib/docs-metadata-v2-schema.ts +138 -0
  613. package/src/lib/docs-metadata-v2.ts +646 -0
  614. package/src/lib/docs-new.ts +63 -0
  615. package/src/lib/docs-sweep.ts +42 -28
  616. package/src/lib/headless/index.ts +287 -0
  617. package/src/lib/identities/assume.ts +67 -86
  618. package/src/lib/instructions/apply.ts +33 -20
  619. package/src/lib/instructions/bundle.ts +199 -0
  620. package/src/lib/instructions/splice.ts +21 -7
  621. package/src/lib/instructions/templates.ts +85 -13
  622. package/dist/core/agents/cli-emit.d.ts +0 -27
  623. package/dist/core/agents/cli-emit.d.ts.map +0 -1
  624. package/dist/core/agents/cli-emit.js +0 -57
  625. package/dist/core/agents/codex-replay.d.ts +0 -29
  626. package/dist/core/agents/codex-replay.d.ts.map +0 -1
  627. package/dist/core/agents/codex-replay.js +0 -138
  628. package/dist/core/agents/events/consume.d.ts +0 -82
  629. package/dist/core/agents/events/consume.d.ts.map +0 -1
  630. package/dist/core/agents/events/consume.js +0 -195
  631. package/dist/core/agents/events/emit.d.ts +0 -42
  632. package/dist/core/agents/events/emit.d.ts.map +0 -1
  633. package/dist/core/agents/events/emit.js +0 -75
  634. package/dist/core/agents/events/ulid.d.ts +0 -11
  635. package/dist/core/agents/events/ulid.d.ts.map +0 -1
  636. package/dist/core/agents/events/ulid.js +0 -47
  637. package/dist/core/agents/state/heartbeat-projector.d.ts +0 -65
  638. package/dist/core/agents/state/heartbeat-projector.d.ts.map +0 -1
  639. package/dist/core/agents/state/heartbeat-projector.js +0 -527
  640. package/dist/core/hooks/events/emit.d.ts +0 -31
  641. package/dist/core/hooks/events/emit.d.ts.map +0 -1
  642. package/dist/core/hooks/events/emit.js +0 -93
  643. package/dist/core/hooks/events/rotate.d.ts +0 -43
  644. package/dist/core/hooks/events/rotate.d.ts.map +0 -1
  645. package/dist/core/hooks/events/rotate.js +0 -142
  646. package/dist/core/hooks/events/schema.d.ts +0 -312
  647. package/dist/core/hooks/events/schema.d.ts.map +0 -1
  648. package/dist/core/hooks/events/schema.js +0 -12
  649. package/dist/core/hooks/events/ulid.d.ts +0 -10
  650. package/dist/core/hooks/events/ulid.d.ts.map +0 -1
  651. package/dist/core/hooks/events/ulid.js +0 -47
  652. package/dist/lib/docs-frontmatter-migrate.d.ts +0 -33
  653. package/dist/lib/docs-frontmatter-migrate.d.ts.map +0 -1
  654. package/dist/lib/docs-frontmatter-migrate.js +0 -364
  655. package/src/core/agents/cli-emit.ts +0 -64
  656. package/src/core/agents/codex-replay.ts +0 -163
  657. package/src/core/agents/events/consume.ts +0 -254
  658. package/src/core/agents/events/emit.ts +0 -115
  659. package/src/core/agents/events/ulid.ts +0 -51
  660. package/src/core/agents/state/heartbeat-projector.ts +0 -582
  661. package/src/core/hooks/events/emit.ts +0 -125
  662. package/src/core/hooks/events/rotate.ts +0 -151
  663. package/src/core/hooks/events/schema.ts +0 -538
  664. package/src/core/hooks/events/ulid.ts +0 -51
  665. package/src/lib/docs-frontmatter-migrate.ts +0 -427
@@ -0,0 +1,246 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { chmodSync, closeSync, existsSync, mkdirSync, openSync, readdirSync, readFileSync, rmSync, statSync, writeSync, } from "node:fs";
3
+ import { basename, join, resolve } from "node:path";
4
+ const DEFAULT_TTL_MS = 15 * 60 * 1_000;
5
+ const HARD_MAX_TTL_MS = 60 * 60 * 1_000;
6
+ const MAX_INTENT_CHARS = 240;
7
+ const MAX_TARGET_LABELS = 16;
8
+ const MAX_TARGET_CHARS = 160;
9
+ const MAX_ROW_BYTES = 8 * 1_024;
10
+ const GENERATION_PATTERN = /^gen_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
11
+ const EVENT_PATTERN = /^evt_[0-9a-f]{8}-[0-9a-f]{4}-7[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/;
12
+ const EXECUTABLE_PATTERN = /^[a-zA-Z0-9][a-zA-Z0-9._+-]{0,63}$/;
13
+ const TARGET_PATTERN = /^[a-zA-Z0-9._@+-]+(?:\/[a-zA-Z0-9._@+ -]+)*$/;
14
+ export const EVENT_V3_LIVE_RELATIVE_ROOT = ".harnery/live/v3";
15
+ /**
16
+ * Append one best-effort operator-display row. The narrow input shape has no
17
+ * fields for prompts, argv, tool input, output, exception bodies, or messages.
18
+ */
19
+ export function writeLiveDisplayV3(coordRoot, input, now = () => new Date()) {
20
+ assertLiveIds(input.generation_id, input.event_id);
21
+ const ttlMs = input.ttl_ms ?? DEFAULT_TTL_MS;
22
+ if (!Number.isSafeInteger(ttlMs) || ttlMs <= 0 || ttlMs > HARD_MAX_TTL_MS) {
23
+ throw new Error("V3 live-display TTL must be between 1 ms and 1 hour");
24
+ }
25
+ if (input.executable !== undefined && !EXECUTABLE_PATTERN.test(input.executable)) {
26
+ throw new Error("V3 live-display executable is invalid");
27
+ }
28
+ const writtenAt = now();
29
+ const intentDisplay = safeIntentDisplayV3(input.intent_display);
30
+ const targetLabels = safeTargetLabels(input.target_labels);
31
+ const row = {
32
+ format: "harnery-event-v3-live-display",
33
+ format_version: 1,
34
+ row_id: `live_${randomUUID()}`,
35
+ generation_id: input.generation_id,
36
+ event_id: input.event_id,
37
+ written_at: writtenAt.toISOString(),
38
+ expires_at: new Date(writtenAt.getTime() + ttlMs).toISOString(),
39
+ ...(input.executable ? { executable: input.executable } : {}),
40
+ ...(intentDisplay ? { intent_display: intentDisplay } : {}),
41
+ ...(targetLabels.length > 0 ? { target_labels: targetLabels } : {}),
42
+ };
43
+ const serialized = `${JSON.stringify(row)}\n`;
44
+ if (Buffer.byteLength(serialized, "utf8") > MAX_ROW_BYTES) {
45
+ throw new Error("V3 live-display row exceeds its bounded size");
46
+ }
47
+ const root = liveRoot(coordRoot);
48
+ mkdirSync(root, { recursive: true, mode: 0o700 });
49
+ chmodSync(root, 0o700);
50
+ const path = join(root, `${input.generation_id}.ndjson`);
51
+ const fd = openSync(path, "a", 0o600);
52
+ try {
53
+ writeSync(fd, serialized, undefined, "utf8");
54
+ }
55
+ finally {
56
+ closeSync(fd);
57
+ }
58
+ chmodSync(path, 0o600);
59
+ return row;
60
+ }
61
+ /**
62
+ * Best-effort overlay write for producers. Never throws: the live feed is
63
+ * presentation-only and must not fail a durable ledger append.
64
+ */
65
+ export function tryWriteLiveDisplayV3(coordRoot, input, now = () => new Date()) {
66
+ try {
67
+ return writeLiveDisplayV3(coordRoot, input, now);
68
+ }
69
+ catch {
70
+ return undefined;
71
+ }
72
+ }
73
+ /** Return every unexpired live-display row across generations. */
74
+ export function listLiveDisplayV3(coordRoot, now = () => new Date()) {
75
+ const root = liveRoot(coordRoot);
76
+ if (!existsSync(root))
77
+ return [];
78
+ const rows = [];
79
+ for (const name of readdirSync(root)) {
80
+ if (!name.endsWith(".ndjson"))
81
+ continue;
82
+ const generationId = name.slice(0, -".ndjson".length);
83
+ if (!GENERATION_PATTERN.test(generationId))
84
+ continue;
85
+ rows.push(...readLiveDisplayV3(coordRoot, generationId, now));
86
+ }
87
+ return rows;
88
+ }
89
+ /** Return only unexpired, structurally valid rows. Expiry is enforced before cleanup. */
90
+ export function readLiveDisplayV3(coordRoot, generationId, now = () => new Date()) {
91
+ if (!GENERATION_PATTERN.test(generationId))
92
+ throw new Error("V3 live-display generation ID is invalid");
93
+ const path = join(liveRoot(coordRoot), `${generationId}.ndjson`);
94
+ if (!existsSync(path))
95
+ return [];
96
+ const nowMs = now().getTime();
97
+ return readFileSync(path, "utf8")
98
+ .split("\n")
99
+ .filter(Boolean)
100
+ .flatMap((frame) => {
101
+ try {
102
+ const row = validateLiveRow(JSON.parse(frame));
103
+ const writtenMs = Date.parse(row.written_at);
104
+ const expiresMs = Date.parse(row.expires_at);
105
+ if (expiresMs <= nowMs || writtenMs + HARD_MAX_TTL_MS <= nowMs)
106
+ return [];
107
+ return [row];
108
+ }
109
+ catch {
110
+ return [];
111
+ }
112
+ });
113
+ }
114
+ /** Remove fully expired generation files; malformed residue is bounded by the hard maximum. */
115
+ export function janitorLiveDisplayV3(coordRoot, now = () => new Date()) {
116
+ const root = liveRoot(coordRoot);
117
+ if (!existsSync(root))
118
+ return { scanned: 0, removed: 0, retained: 0 };
119
+ const nowMs = now().getTime();
120
+ let scanned = 0;
121
+ let removed = 0;
122
+ let retained = 0;
123
+ for (const name of readdirSync(root)) {
124
+ if (!name.endsWith(".ndjson"))
125
+ continue;
126
+ scanned += 1;
127
+ const path = join(root, basename(name));
128
+ const visible = GENERATION_PATTERN.test(name.slice(0, -".ndjson".length))
129
+ ? readLiveDisplayV3(coordRoot, name.slice(0, -".ndjson".length), now)
130
+ : [];
131
+ const hardExpired = statSync(path).mtimeMs + HARD_MAX_TTL_MS <= nowMs;
132
+ if (visible.length === 0 || hardExpired) {
133
+ rmSync(path, { force: true });
134
+ removed += 1;
135
+ }
136
+ else {
137
+ retained += 1;
138
+ }
139
+ }
140
+ return { scanned, removed, retained };
141
+ }
142
+ /** Conservative allowlist scrubber: uncertainty omits the display instead of partially rendering it. */
143
+ export function safeIntentDisplayV3(value) {
144
+ if (value === undefined)
145
+ return undefined;
146
+ const normalized = value.normalize("NFC").replace(/\s+/g, " ").trim();
147
+ if (normalized.length === 0 || normalized.length > MAX_INTENT_CHARS)
148
+ return undefined;
149
+ if ([...normalized].some((character) => {
150
+ const codePoint = character.codePointAt(0) ?? 0;
151
+ return codePoint < 32 || codePoint === 127;
152
+ })) {
153
+ return undefined;
154
+ }
155
+ if (/\b(?:password|passwd|secret|token|api[_-]?key|authorization|cookie)\s*[:=]/i.test(normalized)) {
156
+ return undefined;
157
+ }
158
+ if (/\b(?:sk-[a-z0-9_-]{8,}|gh[pousr]_[a-z0-9]{8,}|xox[baprs]-|AKIA[A-Z0-9]{12}|AIza[\w-]{12,})/i.test(normalized)) {
159
+ return undefined;
160
+ }
161
+ if (/-----BEGIN [A-Z ]+PRIVATE KEY-----|\beyJ[A-Za-z0-9_-]{12,}\.[A-Za-z0-9_-]{8,}/.test(normalized)) {
162
+ return undefined;
163
+ }
164
+ if (/\b[A-Za-z0-9_+/=-]{32,}\b/.test(normalized))
165
+ return undefined;
166
+ if (/\b[\w.+-]+@[\w.-]+\.[A-Za-z]{2,}\b/.test(normalized))
167
+ return undefined;
168
+ if (/(?:^|\s)(?:\/[A-Za-z]|[A-Za-z]:\\|\\\\|\/\/wsl)/.test(normalized))
169
+ return undefined;
170
+ if (/[`]|\$\(|&&|\|\||(?:^|\s)--[a-z]/.test(normalized))
171
+ return undefined;
172
+ return normalized;
173
+ }
174
+ function safeTargetLabels(values) {
175
+ if (!values || values.length > MAX_TARGET_LABELS)
176
+ return [];
177
+ const safe = values
178
+ .map((value) => value.normalize("NFC").trim())
179
+ .filter((value) => value.length > 0 &&
180
+ value.length <= MAX_TARGET_CHARS &&
181
+ TARGET_PATTERN.test(value) &&
182
+ !value.startsWith("/") &&
183
+ !value.split("/").includes("..") &&
184
+ safeIntentDisplayV3(value) !== undefined);
185
+ return [...new Set(safe)];
186
+ }
187
+ function validateLiveRow(value) {
188
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
189
+ throw new Error("invalid live-display row");
190
+ }
191
+ const row = value;
192
+ const allowed = new Set([
193
+ "format",
194
+ "format_version",
195
+ "row_id",
196
+ "generation_id",
197
+ "event_id",
198
+ "written_at",
199
+ "expires_at",
200
+ "executable",
201
+ "intent_display",
202
+ "target_labels",
203
+ ]);
204
+ if (Object.keys(row).some((key) => !allowed.has(key)))
205
+ throw new Error("invalid live-display row");
206
+ if (row.format !== "harnery-event-v3-live-display" ||
207
+ row.format_version !== 1 ||
208
+ typeof row.row_id !== "string" ||
209
+ !/^live_[0-9a-f-]{36}$/.test(row.row_id) ||
210
+ typeof row.generation_id !== "string" ||
211
+ typeof row.event_id !== "string" ||
212
+ typeof row.written_at !== "string" ||
213
+ typeof row.expires_at !== "string") {
214
+ throw new Error("invalid live-display row");
215
+ }
216
+ assertLiveIds(row.generation_id, row.event_id);
217
+ if (typeof row.executable === "string" && !EXECUTABLE_PATTERN.test(row.executable)) {
218
+ throw new Error("invalid live-display row");
219
+ }
220
+ if (typeof row.intent_display === "string" &&
221
+ safeIntentDisplayV3(row.intent_display) !== row.intent_display) {
222
+ throw new Error("invalid live-display row");
223
+ }
224
+ if (row.target_labels !== undefined &&
225
+ (!Array.isArray(row.target_labels) ||
226
+ safeTargetLabels(row.target_labels).length !== row.target_labels.length)) {
227
+ throw new Error("invalid live-display row");
228
+ }
229
+ const writtenMs = Date.parse(row.written_at);
230
+ const expiresMs = Date.parse(row.expires_at);
231
+ if (Number.isNaN(writtenMs) ||
232
+ Number.isNaN(expiresMs) ||
233
+ expiresMs <= writtenMs ||
234
+ expiresMs - writtenMs > HARD_MAX_TTL_MS) {
235
+ throw new Error("invalid live-display row");
236
+ }
237
+ return row;
238
+ }
239
+ function assertLiveIds(generationId, eventId) {
240
+ if (!GENERATION_PATTERN.test(generationId) || !EVENT_PATTERN.test(eventId)) {
241
+ throw new Error("V3 live-display identity is invalid");
242
+ }
243
+ }
244
+ function liveRoot(coordRoot) {
245
+ return join(resolve(coordRoot), EVENT_V3_LIVE_RELATIVE_ROOT);
246
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Privacy-bounded coordination observations accepted by live V3 emitters.
3
+ *
4
+ * This is a dependency-free shared contract so downstream mirrors can type
5
+ * their emit surfaces without importing the authority implementation.
6
+ */
7
+ export type LiveCoordinationObservationV3 = {
8
+ event_type: "coord.status_observed";
9
+ status: string;
10
+ subject?: string;
11
+ } | {
12
+ event_type: "coord.presence_changed";
13
+ prior_state?: string;
14
+ new_state: string;
15
+ reason: string;
16
+ } | {
17
+ event_type: "coord.message_observed";
18
+ message_id?: string;
19
+ direction: "sent" | "received";
20
+ body: string;
21
+ subject?: string;
22
+ } | {
23
+ event_type: "council.state_changed";
24
+ council_id: string;
25
+ prior_state?: string;
26
+ new_state: string;
27
+ record: unknown;
28
+ } | {
29
+ event_type: "decision.state_changed";
30
+ decision_id: string;
31
+ prior_state?: string;
32
+ new_state: string;
33
+ record: unknown;
34
+ };
35
+ //# sourceMappingURL=live-observation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-observation.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/live-observation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,MAAM,6BAA6B,GACrC;IACE,UAAU,EAAE,uBAAuB,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACE,UAAU,EAAE,wBAAwB,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GACD;IACE,UAAU,EAAE,wBAAwB,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,GAAG,UAAU,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACD;IACE,UAAU,EAAE,uBAAuB,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB,GACD;IACE,UAAU,EAAE,wBAAwB,CAAC;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,57 @@
1
+ import type { Adapter } from "../../adapter.js";
2
+ import type { ParsedPayload } from "../../hooks/adapter/parse.js";
3
+ import { type EventV3WriteMode } from "./control.js";
4
+ import type { HookSignalV3 } from "./producers/hook.js";
5
+ import type { TurnRitualEvidenceV3 } from "./producers/hook-base.js";
6
+ import { type RecordHookSignalV3Result } from "./producers/recorder.js";
7
+ export declare const LIVE_HOOK_V3_PRODUCER_ID: "prd_agent-hook";
8
+ export declare const LIVE_COMMAND_V3_PRODUCER_ID: "prd_session-tee";
9
+ export type LiveEventLedgerRouteV3 = {
10
+ state: "v3";
11
+ mode: EventV3WriteMode;
12
+ build_id: `build_${string}`;
13
+ } | {
14
+ state: "blocked";
15
+ reason: string;
16
+ };
17
+ /**
18
+ * Resolve the V3-only ledger route. A root without an initialized V3 control
19
+ * packet is blocked; no producer or consumer may fall back to an older ledger.
20
+ * Manifest-first crashes are repaired from the immutable packet and every
21
+ * other invalid state closes the writer gate.
22
+ */
23
+ export declare function resolveLiveEventLedgerRouteV3(coordRoot: string): LiveEventLedgerRouteV3;
24
+ export declare function liveEventV3BuildId(harneryCommit: string): `build_${string}`;
25
+ export declare function liveInstanceIdV3(instanceId: string): `inst_${string}`;
26
+ /**
27
+ * The adapter-native id a canonical `inst_*` id carries, for display and for
28
+ * joins against native-keyed records. Only the direct prefix form round-trips:
29
+ * a hashed id has no recoverable native form and is returned unchanged, so
30
+ * never treat this as a guaranteed inverse of `liveInstanceIdV3`.
31
+ */
32
+ export declare function nativeInstanceIdV3(instanceId: string): string;
33
+ export declare function hookSignalV3(eventName: string): HookSignalV3 | undefined;
34
+ export declare function recordLiveHookSignalV3(input: {
35
+ coordRoot: string;
36
+ route: Extract<LiveEventLedgerRouteV3, {
37
+ state: "v3";
38
+ }>;
39
+ eventName: string;
40
+ payload: ParsedPayload | null;
41
+ adapter: Adapter;
42
+ instanceId: string;
43
+ run_id?: `run_${string}`;
44
+ workflow_id?: `wf_${string}`;
45
+ workflow_agent_id?: string;
46
+ bridge?: "codex-wsl";
47
+ monotonic_ns?: string;
48
+ hook_name?: string;
49
+ hook_duration_ms?: number;
50
+ stop_remediation?: boolean;
51
+ turn_ritual?: TurnRitualEvidenceV3;
52
+ defer_drain?: boolean;
53
+ }): RecordHookSignalV3Result | {
54
+ state: "ignored";
55
+ };
56
+ export declare function livePlatformV3(): "linux" | "windows" | "macos" | "unknown";
57
+ //# sourceMappingURL=live-routing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"live-routing.d.ts","sourceRoot":"","sources":["../../../../src/core/events/v3/live-routing.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,KAAK,wBAAwB,EAAsB,MAAM,yBAAyB,CAAC;AAE5F,eAAO,MAAM,wBAAwB,EAAG,gBAAyB,CAAC;AAClE,eAAO,MAAM,2BAA2B,EAAG,iBAA0B,CAAC;AAEtE,MAAM,MAAM,sBAAsB,GAC9B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GACpE;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB,CAYvF;AAED,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAI3E;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,QAAQ,MAAM,EAAE,CAIrE;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAuBxE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC,sBAAsB,EAAE;QAAE,KAAK,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GAAG,wBAAwB,GAAG;IAAE,KAAK,EAAE,SAAS,CAAA;CAAE,CAwBlD;AAED,wBAAgB,cAAc,IAAI,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAK1E"}
@@ -0,0 +1,107 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readEventV3ControlState, repairEventV3ControlPair, } from "./control.js";
3
+ import { recordHookSignalV3 } from "./producers/recorder.js";
4
+ export const LIVE_HOOK_V3_PRODUCER_ID = "prd_agent-hook";
5
+ export const LIVE_COMMAND_V3_PRODUCER_ID = "prd_session-tee";
6
+ /**
7
+ * Resolve the V3-only ledger route. A root without an initialized V3 control
8
+ * packet is blocked; no producer or consumer may fall back to an older ledger.
9
+ * Manifest-first crashes are repaired from the immutable packet and every
10
+ * other invalid state closes the writer gate.
11
+ */
12
+ export function resolveLiveEventLedgerRouteV3(coordRoot) {
13
+ let control = readEventV3ControlState(coordRoot);
14
+ if (control.state === "closed")
15
+ return { state: "blocked", reason: "v3_not_initialized" };
16
+ if (control.state === "repairable")
17
+ control = repairEventV3ControlPair(coordRoot);
18
+ if (control.state !== "candidate" && control.state !== "active") {
19
+ return { state: "blocked", reason: `${control.state}:${control.reason}` };
20
+ }
21
+ const buildId = liveEventV3BuildId(control.genesis.profile.harnery_commit);
22
+ if (!control.genesis.profile.producer_build_ids.includes(buildId)) {
23
+ return { state: "blocked", reason: "live_producer_build_not_approved" };
24
+ }
25
+ return { state: "v3", mode: control.state, build_id: buildId };
26
+ }
27
+ export function liveEventV3BuildId(harneryCommit) {
28
+ const exact = harneryCommit.normalize("NFC");
29
+ if (/^[a-zA-Z0-9._-]{1,120}$/.test(exact))
30
+ return `build_${exact}`;
31
+ return `build_${createHash("sha256").update(exact).digest("hex")}`;
32
+ }
33
+ export function liveInstanceIdV3(instanceId) {
34
+ if (/^inst_[a-zA-Z0-9._-]{1,128}$/.test(instanceId))
35
+ return instanceId;
36
+ if (/^[a-zA-Z0-9._-]{1,128}$/.test(instanceId))
37
+ return `inst_${instanceId}`;
38
+ return `inst_${createHash("sha256").update(instanceId.normalize("NFC")).digest("hex")}`;
39
+ }
40
+ /**
41
+ * The adapter-native id a canonical `inst_*` id carries, for display and for
42
+ * joins against native-keyed records. Only the direct prefix form round-trips:
43
+ * a hashed id has no recoverable native form and is returned unchanged, so
44
+ * never treat this as a guaranteed inverse of `liveInstanceIdV3`.
45
+ */
46
+ export function nativeInstanceIdV3(instanceId) {
47
+ return instanceId.startsWith("inst_") ? instanceId.slice("inst_".length) : instanceId;
48
+ }
49
+ export function hookSignalV3(eventName) {
50
+ switch (eventName) {
51
+ case "session-start":
52
+ case "session-end":
53
+ case "user-prompt-submit":
54
+ case "stop":
55
+ case "stop-failure":
56
+ case "pre-tool-use":
57
+ case "post-tool-use":
58
+ case "post-tool-use-failure":
59
+ case "permission-request":
60
+ case "sub-agent-start":
61
+ case "sub-agent-stop":
62
+ case "pre-compact":
63
+ case "post-compact":
64
+ return eventName;
65
+ case "before-shell-execution":
66
+ return "pre-tool-use";
67
+ case "after-shell-execution":
68
+ return "post-tool-use";
69
+ default:
70
+ return undefined;
71
+ }
72
+ }
73
+ export function recordLiveHookSignalV3(input) {
74
+ const signal = hookSignalV3(input.eventName);
75
+ if (!signal)
76
+ return { state: "ignored" };
77
+ return recordHookSignalV3({
78
+ coordRoot: input.coordRoot,
79
+ mode: input.route.mode,
80
+ signal,
81
+ payload: input.payload ?? { raw: {} },
82
+ adapter: input.adapter,
83
+ instance_id: liveInstanceIdV3(input.instanceId),
84
+ run_id: input.run_id,
85
+ workflow_id: input.workflow_id,
86
+ workflow_agent_id: input.workflow_agent_id,
87
+ producer_id: LIVE_HOOK_V3_PRODUCER_ID,
88
+ build_id: input.route.build_id,
89
+ platform: livePlatformV3(),
90
+ ...(input.bridge ? { bridge: input.bridge } : {}),
91
+ monotonic_ns: input.monotonic_ns,
92
+ hook_name: input.hook_name,
93
+ hook_duration_ms: input.hook_duration_ms,
94
+ stop_remediation: input.stop_remediation,
95
+ turn_ritual: input.turn_ritual,
96
+ ...(input.defer_drain ? { writerOptions: { deferDrain: true } } : {}),
97
+ });
98
+ }
99
+ export function livePlatformV3() {
100
+ if (process.platform === "linux")
101
+ return "linux";
102
+ if (process.platform === "win32")
103
+ return "windows";
104
+ if (process.platform === "darwin")
105
+ return "macos";
106
+ return "unknown";
107
+ }
@@ -0,0 +1,67 @@
1
+ import type { Adapter } from "../../../adapter.js";
2
+ import type { EventV3 } from "../contract.js";
3
+ import { type EventV3WriteMode } from "../control.js";
4
+ import { type WriteEventV3Options, type WriteEventV3Result } from "../writer.js";
5
+ import { type CommandObservationV3, type CommandSignalV3 } from "./command.js";
6
+ export interface RecordCommandSignalV3Input {
7
+ coordRoot: string;
8
+ mode: EventV3WriteMode;
9
+ signal: CommandSignalV3;
10
+ observation: CommandObservationV3;
11
+ adapter: Adapter;
12
+ instance_id: `inst_${string}`;
13
+ producer_id: `prd_${string}`;
14
+ build_id: `build_${string}`;
15
+ platform: "linux" | "windows" | "macos" | "unknown";
16
+ bridge?: "codex-wsl";
17
+ monotonic_ns?: string;
18
+ observed_at?: string;
19
+ writerOptions?: WriteEventV3Options;
20
+ }
21
+ export type RecordCommandSignalV3Result = {
22
+ state: "gate_closed";
23
+ reason: string;
24
+ } | {
25
+ state: "generation_unavailable";
26
+ reason: string;
27
+ } | {
28
+ state: "command_span_unstarted";
29
+ } | {
30
+ state: "missing_observation_id";
31
+ } | {
32
+ state: "already_recorded";
33
+ event_id: string;
34
+ } | {
35
+ state: "recorded";
36
+ event: EventV3;
37
+ durability: WriteEventV3Result;
38
+ recovered: boolean;
39
+ };
40
+ /**
41
+ * Join a CLI/session-tee command to an already-started hook generation and
42
+ * record it through its own crash-recoverable producer sequence. This is
43
+ * inert until the exact candidate or active control gate is open.
44
+ */
45
+ export declare function recordCommandSignalV3(input: RecordCommandSignalV3Input): RecordCommandSignalV3Result;
46
+ export interface CloseAbandonedCommandSpansV3Input {
47
+ coordRoot: string;
48
+ mode: EventV3WriteMode;
49
+ generation_id: `gen_${string}`;
50
+ build_id: `build_${string}`;
51
+ platform: "linux" | "windows" | "macos" | "unknown";
52
+ observed_at: string;
53
+ writerOptions?: WriteEventV3Options;
54
+ }
55
+ export interface CloseAbandonedCommandSpansV3Result {
56
+ closed: number;
57
+ skipped: number;
58
+ }
59
+ /**
60
+ * Session-end command closer (ADR 0078): every non-terminal command span of
61
+ * the ending generation gets a derived `command.completed` with an unknown
62
+ * outcome, so a `process.exit` or SIGKILL that outran the CLI's finalize can
63
+ * no longer leave the generation with an unpaired command forever. Command
64
+ * spans never block turns; this exists for corpus honesty and invariant 11.
65
+ */
66
+ export declare function closeAbandonedCommandSpansV3(input: CloseAbandonedCommandSpansV3Input): CloseAbandonedCommandSpansV3Result;
67
+ //# sourceMappingURL=command-recorder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-recorder.d.ts","sourceRoot":"","sources":["../../../../../src/core/events/v3/producers/command-recorder.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAOnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,KAAK,gBAAgB,EAA2B,MAAM,eAAe,CAAC;AAM/E,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EAExB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,eAAe,EAErB,MAAM,cAAc,CAAC;AA0CtB,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,MAAM,EAAE,eAAe,CAAC;IACxB,WAAW,EAAE,oBAAoB,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,QAAQ,MAAM,EAAE,CAAC;IAC9B,WAAW,EAAE,OAAO,MAAM,EAAE,CAAC;IAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,MAAM,2BAA2B,GACnC;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,KAAK,EAAE,wBAAwB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,KAAK,EAAE,wBAAwB,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,wBAAwB,CAAA;CAAE,GACnC;IAAE,KAAK,EAAE,kBAAkB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,KAAK,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,kBAAkB,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAAC;AAE9F;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,0BAA0B,GAChC,2BAA2B,CAgI7B;AAED,MAAM,WAAW,iCAAiC;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,gBAAgB,CAAC;IACvB,aAAa,EAAE,OAAO,MAAM,EAAE,CAAC;IAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,mBAAmB,CAAC;CACrC;AAED,MAAM,WAAW,kCAAkC;IACjD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAC1C,KAAK,EAAE,iCAAiC,GACvC,kCAAkC,CA8HpC"}