harnery 0.33.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 (657) hide show
  1. package/dist/commander.d.ts.map +1 -1
  2. package/dist/commander.js +4 -0
  3. package/dist/commands/adapter.js +2 -2
  4. package/dist/commands/agents.d.ts +144 -1
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +1220 -588
  7. package/dist/commands/artifacts.d.ts.map +1 -1
  8. package/dist/commands/artifacts.js +7 -6
  9. package/dist/commands/backup.d.ts +1 -1
  10. package/dist/commands/backup.d.ts.map +1 -1
  11. package/dist/commands/backup.js +29 -16
  12. package/dist/commands/browse.d.ts.map +1 -1
  13. package/dist/commands/browse.js +234 -12
  14. package/dist/commands/checkpoint.d.ts.map +1 -1
  15. package/dist/commands/checkpoint.js +3 -2
  16. package/dist/commands/claude-desktop.d.ts +1 -1
  17. package/dist/commands/claude-desktop.d.ts.map +1 -1
  18. package/dist/commands/claude-desktop.js +3 -74
  19. package/dist/commands/context.js +1 -6
  20. package/dist/commands/decision.d.ts.map +1 -1
  21. package/dist/commands/decision.js +22 -38
  22. package/dist/commands/docs.d.ts.map +1 -1
  23. package/dist/commands/docs.js +91 -28
  24. package/dist/commands/doctor.js +10 -1
  25. package/dist/commands/events.d.ts +5 -0
  26. package/dist/commands/events.d.ts.map +1 -0
  27. package/dist/commands/events.js +189 -0
  28. package/dist/commands/governor.d.ts.map +1 -1
  29. package/dist/commands/governor.js +13 -4
  30. package/dist/commands/init.d.ts +9 -2
  31. package/dist/commands/init.d.ts.map +1 -1
  32. package/dist/commands/init.js +223 -51
  33. package/dist/commands/journal.d.ts.map +1 -1
  34. package/dist/commands/journal.js +4 -13
  35. package/dist/commands/ledger-v3.d.ts +5 -0
  36. package/dist/commands/ledger-v3.d.ts.map +1 -0
  37. package/dist/commands/ledger-v3.js +91 -0
  38. package/dist/commands/presence.d.ts.map +1 -1
  39. package/dist/commands/presence.js +11 -5
  40. package/dist/commands/sync.d.ts +1 -1
  41. package/dist/commands/sync.js +1 -1
  42. package/dist/commands/web.d.ts +6 -0
  43. package/dist/commands/web.d.ts.map +1 -1
  44. package/dist/commands/web.js +67 -7
  45. package/dist/commands/work.d.ts.map +1 -1
  46. package/dist/commands/work.js +22 -5
  47. package/dist/core/adapter.d.ts +5 -0
  48. package/dist/core/adapter.d.ts.map +1 -0
  49. package/dist/core/adapter.js +1 -0
  50. package/dist/core/adapters/attest.d.ts +5 -2
  51. package/dist/core/adapters/attest.d.ts.map +1 -1
  52. package/dist/core/adapters/attest.js +8 -3
  53. package/dist/core/adapters/profiles.d.ts +6 -6
  54. package/dist/core/adapters/profiles.d.ts.map +1 -1
  55. package/dist/core/adapters/profiles.js +4 -4
  56. package/dist/core/agents/canonical-emit.d.ts +17 -15
  57. package/dist/core/agents/canonical-emit.d.ts.map +1 -1
  58. package/dist/core/agents/canonical-emit.js +22 -22
  59. package/dist/core/agents/cli.js +207 -234
  60. package/dist/core/agents/codex-archive-v3.d.ts +14 -0
  61. package/dist/core/agents/codex-archive-v3.d.ts.map +1 -0
  62. package/dist/core/agents/codex-archive-v3.js +110 -0
  63. package/dist/core/agents/coord-client.d.ts +19 -81
  64. package/dist/core/agents/coord-client.d.ts.map +1 -1
  65. package/dist/core/agents/coord-client.js +65 -155
  66. package/dist/core/agents/finalization.d.ts +4 -1
  67. package/dist/core/agents/finalization.d.ts.map +1 -1
  68. package/dist/core/agents/finalization.js +89 -32
  69. package/dist/core/agents/index.d.ts +4 -5
  70. package/dist/core/agents/index.d.ts.map +1 -1
  71. package/dist/core/agents/index.js +4 -5
  72. package/dist/core/agents/live-authority-v3.d.ts +59 -0
  73. package/dist/core/agents/live-authority-v3.d.ts.map +1 -0
  74. package/dist/core/agents/live-authority-v3.js +233 -0
  75. package/dist/core/agents/live-lifecycle-v3.d.ts +20 -0
  76. package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -0
  77. package/dist/core/agents/live-lifecycle-v3.js +91 -0
  78. package/dist/core/agents/live-observation-v3.d.ts +25 -0
  79. package/dist/core/agents/live-observation-v3.d.ts.map +1 -0
  80. package/dist/core/agents/live-observation-v3.js +157 -0
  81. package/dist/core/agents/render/prompt-context.d.ts +4 -4
  82. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  83. package/dist/core/agents/render/prompt-context.js +23 -58
  84. package/dist/core/agents/render/session-context.d.ts +1 -1
  85. package/dist/core/agents/render/session-context.d.ts.map +1 -1
  86. package/dist/core/agents/render/session-context.js +8 -32
  87. package/dist/core/agents/rules/claim-conflict.d.ts +3 -3
  88. package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
  89. package/dist/core/agents/rules/claim-conflict.js +79 -127
  90. package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
  91. package/dist/core/agents/rules/commit-conflict.js +3 -18
  92. package/dist/core/agents/rules/stop-hook.d.ts +9 -50
  93. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  94. package/dist/core/agents/rules/stop-hook.js +193 -236
  95. package/dist/core/agents/session-events.d.ts +5 -7
  96. package/dist/core/agents/session-events.d.ts.map +1 -1
  97. package/dist/core/agents/session-events.js +127 -95
  98. package/dist/core/agents/session-finalization-state-v3.d.ts +30 -0
  99. package/dist/core/agents/session-finalization-state-v3.d.ts.map +1 -0
  100. package/dist/core/agents/session-finalization-state-v3.js +40 -0
  101. package/dist/core/agents/session-finalizer-v3.d.ts +107 -0
  102. package/dist/core/agents/session-finalizer-v3.d.ts.map +1 -0
  103. package/dist/core/agents/session-finalizer-v3.js +734 -0
  104. package/dist/core/agents/session-name-display.d.ts +40 -0
  105. package/dist/core/agents/session-name-display.d.ts.map +1 -0
  106. package/dist/core/agents/session-name-display.js +119 -0
  107. package/dist/core/agents/state/activity-log.d.ts +3 -3
  108. package/dist/core/agents/state/activity-log.d.ts.map +1 -1
  109. package/dist/core/agents/state/activity-log.js +7 -16
  110. package/dist/core/agents/state/heartbeat-writer.d.ts +23 -55
  111. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  112. package/dist/core/agents/state/heartbeat-writer.js +56 -228
  113. package/dist/core/agents/state/live-coordination-view.d.ts +31 -0
  114. package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -0
  115. package/dist/core/agents/state/live-coordination-view.js +209 -0
  116. package/dist/core/agents/state/session-state.d.ts +4 -3
  117. package/dist/core/agents/state/session-state.d.ts.map +1 -1
  118. package/dist/core/agents/state/session-state.js +18 -9
  119. package/dist/core/agents/state/stale-sweep.d.ts +1 -1
  120. package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
  121. package/dist/core/agents/state/stale-sweep.js +26 -15
  122. package/dist/core/artifacts/index.d.ts.map +1 -1
  123. package/dist/core/artifacts/index.js +5 -7
  124. package/dist/core/config.d.ts +33 -2
  125. package/dist/core/config.d.ts.map +1 -1
  126. package/dist/core/config.js +98 -2
  127. package/dist/core/context/index.d.ts +1 -4
  128. package/dist/core/context/index.d.ts.map +1 -1
  129. package/dist/core/context/index.js +9 -9
  130. package/dist/core/events/span-parent.d.ts +15 -0
  131. package/dist/core/events/span-parent.d.ts.map +1 -0
  132. package/dist/core/events/span-parent.js +34 -0
  133. package/dist/core/events/v3/advance.d.ts +14 -0
  134. package/dist/core/events/v3/advance.d.ts.map +1 -0
  135. package/dist/core/events/v3/advance.js +134 -0
  136. package/dist/core/events/v3/authority-outbox.d.ts +78 -0
  137. package/dist/core/events/v3/authority-outbox.d.ts.map +1 -0
  138. package/dist/core/events/v3/authority-outbox.js +399 -0
  139. package/dist/core/events/v3/base-builder.d.ts +20 -0
  140. package/dist/core/events/v3/base-builder.d.ts.map +1 -0
  141. package/dist/core/events/v3/base-builder.js +29 -0
  142. package/dist/core/events/v3/base-contract.d.ts +7576 -0
  143. package/dist/core/events/v3/base-contract.d.ts.map +1 -0
  144. package/dist/core/events/v3/base-contract.js +647 -0
  145. package/dist/core/events/v3/bootstrap.d.ts +34 -0
  146. package/dist/core/events/v3/bootstrap.d.ts.map +1 -0
  147. package/dist/core/events/v3/bootstrap.js +175 -0
  148. package/dist/core/events/v3/builder.d.ts +20 -0
  149. package/dist/core/events/v3/builder.d.ts.map +1 -0
  150. package/dist/core/events/v3/builder.js +28 -0
  151. package/dist/core/events/v3/canonical.d.ts +31 -0
  152. package/dist/core/events/v3/canonical.d.ts.map +1 -0
  153. package/dist/core/events/v3/canonical.js +100 -0
  154. package/dist/core/events/v3/capabilities.d.ts +31 -0
  155. package/dist/core/events/v3/capabilities.d.ts.map +1 -0
  156. package/dist/core/events/v3/capabilities.js +107 -0
  157. package/dist/core/events/v3/capability-drift.d.ts +22 -0
  158. package/dist/core/events/v3/capability-drift.d.ts.map +1 -0
  159. package/dist/core/events/v3/capability-drift.js +134 -0
  160. package/dist/core/events/v3/catalog.d.ts +38 -0
  161. package/dist/core/events/v3/catalog.d.ts.map +1 -0
  162. package/dist/core/events/v3/catalog.js +135 -0
  163. package/dist/core/events/v3/clock-order.d.ts +34 -0
  164. package/dist/core/events/v3/clock-order.d.ts.map +1 -0
  165. package/dist/core/events/v3/clock-order.js +35 -0
  166. package/dist/core/events/v3/contract.d.ts +171 -0
  167. package/dist/core/events/v3/contract.d.ts.map +1 -0
  168. package/dist/core/events/v3/contract.js +180 -0
  169. package/dist/core/events/v3/control.d.ts +111 -0
  170. package/dist/core/events/v3/control.d.ts.map +1 -0
  171. package/dist/core/events/v3/control.js +419 -0
  172. package/dist/core/events/v3/coordination-view.d.ts +69 -0
  173. package/dist/core/events/v3/coordination-view.d.ts.map +1 -0
  174. package/dist/core/events/v3/coordination-view.js +119 -0
  175. package/dist/core/events/v3/economics.d.ts +77 -0
  176. package/dist/core/events/v3/economics.d.ts.map +1 -0
  177. package/dist/core/events/v3/economics.js +274 -0
  178. package/dist/core/events/v3/finalization-view.d.ts +26 -0
  179. package/dist/core/events/v3/finalization-view.d.ts.map +1 -0
  180. package/dist/core/events/v3/finalization-view.js +37 -0
  181. package/dist/core/events/v3/fingerprint-keys.d.ts +25 -0
  182. package/dist/core/events/v3/fingerprint-keys.d.ts.map +1 -0
  183. package/dist/core/events/v3/fingerprint-keys.js +217 -0
  184. package/dist/core/events/v3/generated.d.ts +4 -0
  185. package/dist/core/events/v3/generated.d.ts.map +1 -0
  186. package/dist/core/events/v3/generated.js +47 -0
  187. package/dist/core/events/v3/ids.d.ts +9 -0
  188. package/dist/core/events/v3/ids.d.ts.map +1 -0
  189. package/dist/core/events/v3/ids.js +25 -0
  190. package/dist/core/events/v3/index.d.ts +35 -0
  191. package/dist/core/events/v3/index.d.ts.map +1 -0
  192. package/dist/core/events/v3/index.js +33 -0
  193. package/dist/core/events/v3/latency.d.ts +63 -0
  194. package/dist/core/events/v3/latency.d.ts.map +1 -0
  195. package/dist/core/events/v3/latency.js +412 -0
  196. package/dist/core/events/v3/live-feed.d.ts +45 -0
  197. package/dist/core/events/v3/live-feed.d.ts.map +1 -0
  198. package/dist/core/events/v3/live-feed.js +246 -0
  199. package/dist/core/events/v3/live-observation.d.ts +35 -0
  200. package/dist/core/events/v3/live-observation.d.ts.map +1 -0
  201. package/dist/core/events/v3/live-observation.js +1 -0
  202. package/dist/core/events/v3/live-routing.d.ts +57 -0
  203. package/dist/core/events/v3/live-routing.d.ts.map +1 -0
  204. package/dist/core/events/v3/live-routing.js +107 -0
  205. package/dist/core/events/v3/producers/command-recorder.d.ts +67 -0
  206. package/dist/core/events/v3/producers/command-recorder.d.ts.map +1 -0
  207. package/dist/core/events/v3/producers/command-recorder.js +477 -0
  208. package/dist/core/events/v3/producers/command.d.ts +50 -0
  209. package/dist/core/events/v3/producers/command.d.ts.map +1 -0
  210. package/dist/core/events/v3/producers/command.js +135 -0
  211. package/dist/core/events/v3/producers/coordination-recorder.d.ts +53 -0
  212. package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -0
  213. package/dist/core/events/v3/producers/coordination-recorder.js +376 -0
  214. package/dist/core/events/v3/producers/coordination.d.ts +90 -0
  215. package/dist/core/events/v3/producers/coordination.d.ts.map +1 -0
  216. package/dist/core/events/v3/producers/coordination.js +229 -0
  217. package/dist/core/events/v3/producers/hook-base.d.ts +54 -0
  218. package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -0
  219. package/dist/core/events/v3/producers/hook-base.js +424 -0
  220. package/dist/core/events/v3/producers/hook.d.ts +29 -0
  221. package/dist/core/events/v3/producers/hook.d.ts.map +1 -0
  222. package/dist/core/events/v3/producers/hook.js +71 -0
  223. package/dist/core/events/v3/producers/intake.d.ts +65 -0
  224. package/dist/core/events/v3/producers/intake.d.ts.map +1 -0
  225. package/dist/core/events/v3/producers/intake.js +244 -0
  226. package/dist/core/events/v3/producers/recorder.d.ts +240 -0
  227. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -0
  228. package/dist/core/events/v3/producers/recorder.js +2176 -0
  229. package/dist/core/events/v3/projection.d.ts +101 -0
  230. package/dist/core/events/v3/projection.d.ts.map +1 -0
  231. package/dist/core/events/v3/projection.js +479 -0
  232. package/dist/core/events/v3/reader.d.ts +75 -0
  233. package/dist/core/events/v3/reader.d.ts.map +1 -0
  234. package/dist/core/events/v3/reader.js +778 -0
  235. package/dist/core/events/v3/recovery-record.d.ts +47 -0
  236. package/dist/core/events/v3/recovery-record.d.ts.map +1 -0
  237. package/dist/core/events/v3/recovery-record.js +167 -0
  238. package/dist/core/events/v3/recovery.d.ts +22 -0
  239. package/dist/core/events/v3/recovery.d.ts.map +1 -0
  240. package/dist/core/events/v3/recovery.js +227 -0
  241. package/dist/core/events/v3/span-state.d.ts +52 -0
  242. package/dist/core/events/v3/span-state.d.ts.map +1 -0
  243. package/dist/core/events/v3/span-state.js +142 -0
  244. package/dist/core/events/v3/targets.d.ts +23 -0
  245. package/dist/core/events/v3/targets.d.ts.map +1 -0
  246. package/dist/core/events/v3/targets.js +134 -0
  247. package/dist/core/events/v3/turn-telemetry.d.ts +41 -0
  248. package/dist/core/events/v3/turn-telemetry.d.ts.map +1 -0
  249. package/dist/core/events/v3/turn-telemetry.js +168 -0
  250. package/dist/core/events/v3/validate.d.ts +9 -0
  251. package/dist/core/events/v3/validate.d.ts.map +1 -0
  252. package/dist/core/events/v3/validate.js +281 -0
  253. package/dist/core/events/v3/writer.d.ts +56 -0
  254. package/dist/core/events/v3/writer.d.ts.map +1 -0
  255. package/dist/core/events/v3/writer.js +335 -0
  256. package/dist/core/governor/index.d.ts +1 -1
  257. package/dist/core/governor/index.d.ts.map +1 -1
  258. package/dist/core/governor/index.js +1 -1
  259. package/dist/core/governor/plan-api.d.ts +2 -1
  260. package/dist/core/governor/plan-api.d.ts.map +1 -1
  261. package/dist/core/governor/plan-api.js +6 -3
  262. package/dist/core/governor/read.d.ts +1 -1
  263. package/dist/core/governor/read.d.ts.map +1 -1
  264. package/dist/core/governor/read.js +1 -1
  265. package/dist/core/governor/state.d.ts +9 -0
  266. package/dist/core/governor/state.d.ts.map +1 -1
  267. package/dist/core/governor/state.js +40 -3
  268. package/dist/core/guard/config.d.ts +5 -0
  269. package/dist/core/guard/config.d.ts.map +1 -0
  270. package/dist/core/guard/config.js +157 -0
  271. package/dist/core/guard/coordinator.d.ts +14 -0
  272. package/dist/core/guard/coordinator.d.ts.map +1 -0
  273. package/dist/core/guard/coordinator.js +173 -0
  274. package/dist/core/guard/evaluator.d.ts +4 -0
  275. package/dist/core/guard/evaluator.d.ts.map +1 -0
  276. package/dist/core/guard/evaluator.js +242 -0
  277. package/dist/core/guard/evidence-v3.d.ts +15 -0
  278. package/dist/core/guard/evidence-v3.d.ts.map +1 -0
  279. package/dist/core/guard/evidence-v3.js +171 -0
  280. package/dist/core/guard/index.d.ts +10 -0
  281. package/dist/core/guard/index.d.ts.map +1 -0
  282. package/dist/core/guard/index.js +6 -0
  283. package/dist/core/guard/live-source-v3.d.ts +40 -0
  284. package/dist/core/guard/live-source-v3.d.ts.map +1 -0
  285. package/dist/core/guard/live-source-v3.js +128 -0
  286. package/dist/core/guard/storage.d.ts +27 -0
  287. package/dist/core/guard/storage.d.ts.map +1 -0
  288. package/dist/core/guard/storage.js +140 -0
  289. package/dist/core/guard/types.d.ts +119 -0
  290. package/dist/core/guard/types.d.ts.map +1 -0
  291. package/dist/core/guard/types.js +1 -0
  292. package/dist/core/hooks/adapter/detect.d.ts +18 -1
  293. package/dist/core/hooks/adapter/detect.d.ts.map +1 -1
  294. package/dist/core/hooks/adapter/detect.js +29 -0
  295. package/dist/core/hooks/adapter/events.d.ts +7 -4
  296. package/dist/core/hooks/adapter/events.d.ts.map +1 -1
  297. package/dist/core/hooks/adapter/events.js +12 -4
  298. package/dist/core/hooks/adapter/output.d.ts +2 -2
  299. package/dist/core/hooks/adapter/output.d.ts.map +1 -1
  300. package/dist/core/hooks/adapter/parse.d.ts +7 -4
  301. package/dist/core/hooks/adapter/parse.d.ts.map +1 -1
  302. package/dist/core/hooks/adapter/parse.js +63 -25
  303. package/dist/core/hooks/adapter/wiring.d.ts +30 -4
  304. package/dist/core/hooks/adapter/wiring.d.ts.map +1 -1
  305. package/dist/core/hooks/adapter/wiring.js +89 -11
  306. package/dist/core/hooks/cli.d.ts +1 -1
  307. package/dist/core/hooks/cli.js +305 -444
  308. package/dist/core/hooks/effects/image-capture.d.ts +20 -34
  309. package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
  310. package/dist/core/hooks/effects/image-capture.js +212 -221
  311. package/dist/core/hooks/effects/index.d.ts +1 -9
  312. package/dist/core/hooks/effects/index.d.ts.map +1 -1
  313. package/dist/core/hooks/effects/index.js +1 -24
  314. package/dist/core/hooks/events/input-hash.d.ts +7 -0
  315. package/dist/core/hooks/events/input-hash.d.ts.map +1 -0
  316. package/dist/core/hooks/events/input-hash.js +43 -0
  317. package/dist/core/hooks/index.d.ts +4 -3
  318. package/dist/core/hooks/index.d.ts.map +1 -1
  319. package/dist/core/hooks/index.js +2 -3
  320. package/dist/core/hooks/resolve/coord-root.d.ts +1 -1
  321. package/dist/core/hooks/resolve/coord-root.js +1 -1
  322. package/dist/core/hooks/resolve/owner.d.ts +16 -15
  323. package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
  324. package/dist/core/hooks/resolve/owner.js +51 -42
  325. package/dist/core/hooks/resolve/transcript.d.ts +33 -3
  326. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  327. package/dist/core/hooks/resolve/transcript.js +155 -14
  328. package/dist/core/hooks/session-name-presence.d.ts +9 -10
  329. package/dist/core/hooks/session-name-presence.d.ts.map +1 -1
  330. package/dist/core/hooks/session-name-presence.js +15 -15
  331. package/dist/core/hooks/unsafe-cross-shell.d.ts +1 -1
  332. package/dist/core/hooks/unsafe-cross-shell.d.ts.map +1 -1
  333. package/dist/core/journal/index.d.ts +2 -2
  334. package/dist/core/journal/index.d.ts.map +1 -1
  335. package/dist/core/journal/index.js +9 -22
  336. package/dist/core/presence/blob.d.ts +4 -3
  337. package/dist/core/presence/blob.d.ts.map +1 -1
  338. package/dist/core/presence/blob.js +45 -44
  339. package/dist/core/presence/codec-digest.d.ts +29 -0
  340. package/dist/core/presence/codec-digest.d.ts.map +1 -0
  341. package/dist/core/presence/codec-digest.js +170 -0
  342. package/dist/core/presence/relay-client.d.ts +1 -1
  343. package/dist/core/presence/relay-client.d.ts.map +1 -1
  344. package/dist/core/presence/relay-client.js +5 -5
  345. package/dist/core/work/index.d.ts +1 -1
  346. package/dist/core/work/index.d.ts.map +1 -1
  347. package/dist/core/work/index.js +1 -1
  348. package/dist/core/work/read.d.ts +1 -1
  349. package/dist/core/work/read.d.ts.map +1 -1
  350. package/dist/core/work/read.js +1 -1
  351. package/dist/core/work/runner.d.ts.map +1 -1
  352. package/dist/core/work/runner.js +6 -0
  353. package/dist/core/work/state.d.ts +9 -0
  354. package/dist/core/work/state.d.ts.map +1 -1
  355. package/dist/core/work/state.js +17 -3
  356. package/dist/core/workflow/engine.js +24 -25
  357. package/dist/core/workflow/live-session-v3.d.ts +19 -0
  358. package/dist/core/workflow/live-session-v3.d.ts.map +1 -0
  359. package/dist/core/workflow/live-session-v3.js +86 -0
  360. package/dist/core/workflow/scope-id.d.ts +3 -0
  361. package/dist/core/workflow/scope-id.d.ts.map +1 -0
  362. package/dist/core/workflow/scope-id.js +5 -0
  363. package/dist/core/workflow/workspaces/leases.d.ts +4 -0
  364. package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
  365. package/dist/core/workflow/workspaces/leases.js +53 -19
  366. package/dist/index.d.ts +1 -1
  367. package/dist/index.js +1 -1
  368. package/dist/lib/browser/client.d.ts +41 -0
  369. package/dist/lib/browser/client.d.ts.map +1 -1
  370. package/dist/lib/browser/client.js +203 -0
  371. package/dist/lib/browser/critique.d.ts +28 -2
  372. package/dist/lib/browser/critique.d.ts.map +1 -1
  373. package/dist/lib/browser/critique.js +74 -18
  374. package/dist/lib/browser/geometry.d.ts +1 -1
  375. package/dist/lib/browser/geometry.d.ts.map +1 -1
  376. package/dist/lib/browser/geometry.js +130 -6
  377. package/dist/lib/browser/index.d.ts +3 -0
  378. package/dist/lib/browser/index.d.ts.map +1 -1
  379. package/dist/lib/browser/index.js +3 -0
  380. package/dist/lib/browser/qa-plan.d.ts +174 -0
  381. package/dist/lib/browser/qa-plan.d.ts.map +1 -0
  382. package/dist/lib/browser/qa-plan.js +321 -0
  383. package/dist/lib/browser/qa-reuse.d.ts +99 -0
  384. package/dist/lib/browser/qa-reuse.d.ts.map +1 -0
  385. package/dist/lib/browser/qa-reuse.js +222 -0
  386. package/dist/lib/browser/qa-snapshot.d.ts +64 -0
  387. package/dist/lib/browser/qa-snapshot.d.ts.map +1 -0
  388. package/dist/lib/browser/qa-snapshot.js +171 -0
  389. package/dist/lib/browser/runts.d.ts.map +1 -1
  390. package/dist/lib/browser/runts.js +22 -1
  391. package/dist/lib/browser/tiling.d.ts +71 -0
  392. package/dist/lib/browser/tiling.d.ts.map +1 -0
  393. package/dist/lib/browser/tiling.js +118 -0
  394. package/dist/lib/claude-desktop.d.ts +0 -47
  395. package/dist/lib/claude-desktop.d.ts.map +1 -1
  396. package/dist/lib/claude-desktop.js +1 -169
  397. package/dist/lib/context/index.d.ts +0 -3
  398. package/dist/lib/context/index.d.ts.map +1 -1
  399. package/dist/lib/context/index.js +20 -42
  400. package/dist/lib/council/index.d.ts +2 -2
  401. package/dist/lib/council/index.d.ts.map +1 -1
  402. package/dist/lib/council/index.js +9 -20
  403. package/dist/lib/docs-frontmatter.d.ts +1 -6
  404. package/dist/lib/docs-frontmatter.d.ts.map +1 -1
  405. package/dist/lib/docs-frontmatter.js +12 -78
  406. package/dist/lib/docs-index.d.ts +9 -0
  407. package/dist/lib/docs-index.d.ts.map +1 -1
  408. package/dist/lib/docs-index.js +32 -3
  409. package/dist/lib/docs-lint.d.ts.map +1 -1
  410. package/dist/lib/docs-lint.js +14 -30
  411. package/dist/lib/docs-metadata-audit.d.ts +19 -0
  412. package/dist/lib/docs-metadata-audit.d.ts.map +1 -0
  413. package/dist/lib/docs-metadata-audit.js +132 -0
  414. package/dist/lib/docs-metadata-managed.d.ts +23 -0
  415. package/dist/lib/docs-metadata-managed.d.ts.map +1 -0
  416. package/dist/lib/docs-metadata-managed.js +78 -0
  417. package/dist/lib/docs-metadata-sync.d.ts +20 -0
  418. package/dist/lib/docs-metadata-sync.d.ts.map +1 -0
  419. package/dist/lib/docs-metadata-sync.js +222 -0
  420. package/dist/lib/docs-metadata-v2-schema.d.ts +273 -0
  421. package/dist/lib/docs-metadata-v2-schema.d.ts.map +1 -0
  422. package/dist/lib/docs-metadata-v2-schema.js +134 -0
  423. package/dist/lib/docs-metadata-v2.d.ts +21 -0
  424. package/dist/lib/docs-metadata-v2.d.ts.map +1 -0
  425. package/dist/lib/docs-metadata-v2.js +424 -0
  426. package/dist/lib/docs-new.d.ts +11 -0
  427. package/dist/lib/docs-new.d.ts.map +1 -0
  428. package/dist/lib/docs-new.js +52 -0
  429. package/dist/lib/docs-sweep.d.ts.map +1 -1
  430. package/dist/lib/docs-sweep.js +45 -29
  431. package/dist/lib/headless/index.d.ts +98 -0
  432. package/dist/lib/headless/index.d.ts.map +1 -0
  433. package/dist/lib/headless/index.js +211 -0
  434. package/dist/lib/identities/assume.d.ts +4 -4
  435. package/dist/lib/identities/assume.d.ts.map +1 -1
  436. package/dist/lib/identities/assume.js +52 -68
  437. package/dist/lib/instructions/apply.d.ts +5 -4
  438. package/dist/lib/instructions/apply.d.ts.map +1 -1
  439. package/dist/lib/instructions/apply.js +32 -20
  440. package/dist/lib/instructions/bundle.d.ts +1 -1
  441. package/dist/lib/instructions/bundle.d.ts.map +1 -1
  442. package/dist/lib/instructions/bundle.js +1 -1
  443. package/dist/lib/instructions/splice.d.ts +0 -1
  444. package/dist/lib/instructions/splice.d.ts.map +1 -1
  445. package/dist/lib/instructions/splice.js +22 -6
  446. package/dist/lib/instructions/templates.d.ts +7 -5
  447. package/dist/lib/instructions/templates.d.ts.map +1 -1
  448. package/dist/lib/instructions/templates.js +79 -9
  449. package/package.json +26 -5
  450. package/schemas/config.schema.json +120 -2
  451. package/schemas/docs-metadata-v2.schema.json +441 -0
  452. package/schemas/event-v3.schema.json +24472 -0
  453. package/src/commander.ts +4 -0
  454. package/src/commands/adapter.ts +2 -2
  455. package/src/commands/agents.ts +1512 -592
  456. package/src/commands/artifacts.ts +7 -6
  457. package/src/commands/backup.ts +29 -21
  458. package/src/commands/browse.ts +349 -8
  459. package/src/commands/checkpoint.ts +4 -3
  460. package/src/commands/claude-desktop.ts +2 -101
  461. package/src/commands/context.ts +1 -6
  462. package/src/commands/decision.ts +27 -44
  463. package/src/commands/docs.ts +100 -33
  464. package/src/commands/doctor.ts +14 -1
  465. package/src/commands/events.ts +256 -0
  466. package/src/commands/governor.ts +18 -4
  467. package/src/commands/init.ts +253 -57
  468. package/src/commands/instructions.ts +1 -1
  469. package/src/commands/journal.ts +4 -13
  470. package/src/commands/ledger-v3.ts +111 -0
  471. package/src/commands/presence.ts +11 -10
  472. package/src/commands/sync.ts +1 -1
  473. package/src/commands/web.ts +67 -8
  474. package/src/commands/work.ts +28 -5
  475. package/src/core/adapter.ts +5 -0
  476. package/src/core/adapters/attest.ts +8 -3
  477. package/src/core/adapters/profiles.ts +4 -6
  478. package/src/core/agents/canonical-emit.ts +34 -25
  479. package/src/core/agents/cli.ts +236 -262
  480. package/src/core/agents/codex-archive-v3.ts +138 -0
  481. package/src/core/agents/coord-client.ts +75 -188
  482. package/src/core/agents/finalization.ts +120 -38
  483. package/src/core/agents/index.ts +4 -5
  484. package/src/core/agents/live-authority-v3.ts +375 -0
  485. package/src/core/agents/live-lifecycle-v3.ts +140 -0
  486. package/src/core/agents/live-observation-v3.ts +216 -0
  487. package/src/core/agents/render/prompt-context.ts +29 -60
  488. package/src/core/agents/render/session-context.ts +10 -31
  489. package/src/core/agents/rules/claim-conflict.ts +85 -126
  490. package/src/core/agents/rules/commit-conflict.ts +3 -14
  491. package/src/core/agents/rules/stop-hook.ts +239 -293
  492. package/src/core/agents/session-events.ts +137 -104
  493. package/src/core/agents/session-finalization-state-v3.ts +90 -0
  494. package/src/core/agents/session-finalizer-v3.ts +953 -0
  495. package/src/core/agents/session-name-display.ts +149 -0
  496. package/src/core/agents/state/activity-log.ts +6 -14
  497. package/src/core/agents/state/heartbeat-writer.ts +82 -277
  498. package/src/core/agents/state/live-coordination-view.ts +290 -0
  499. package/src/core/agents/state/session-state.ts +24 -12
  500. package/src/core/agents/state/stale-sweep.ts +40 -17
  501. package/src/core/artifacts/index.ts +4 -5
  502. package/src/core/config.ts +148 -3
  503. package/src/core/context/index.ts +9 -17
  504. package/src/core/events/span-parent.ts +46 -0
  505. package/src/core/events/v3/advance.ts +168 -0
  506. package/src/core/events/v3/authority-outbox.ts +548 -0
  507. package/src/core/events/v3/base-builder.ts +60 -0
  508. package/src/core/events/v3/base-contract.ts +882 -0
  509. package/src/core/events/v3/bootstrap.ts +226 -0
  510. package/src/core/events/v3/builder.ts +59 -0
  511. package/src/core/events/v3/canonical.ts +153 -0
  512. package/src/core/events/v3/capabilities.ts +171 -0
  513. package/src/core/events/v3/capability-drift.ts +177 -0
  514. package/src/core/events/v3/catalog.ts +202 -0
  515. package/src/core/events/v3/clock-order.ts +41 -0
  516. package/src/core/events/v3/contract.ts +365 -0
  517. package/src/core/events/v3/control.ts +576 -0
  518. package/src/core/events/v3/coordination-view.ts +193 -0
  519. package/src/core/events/v3/economics.ts +384 -0
  520. package/src/core/events/v3/finalization-view.ts +67 -0
  521. package/src/core/events/v3/fingerprint-keys.ts +260 -0
  522. package/src/core/events/v3/generated.ts +48 -0
  523. package/src/core/events/v3/ids.ts +33 -0
  524. package/src/core/events/v3/index.ts +322 -0
  525. package/src/core/events/v3/latency.ts +551 -0
  526. package/src/core/events/v3/live-feed.ts +319 -0
  527. package/src/core/events/v3/live-observation.ts +39 -0
  528. package/src/core/events/v3/live-routing.ts +135 -0
  529. package/src/core/events/v3/producers/command-recorder.ts +631 -0
  530. package/src/core/events/v3/producers/command.ts +201 -0
  531. package/src/core/events/v3/producers/coordination-recorder.ts +538 -0
  532. package/src/core/events/v3/producers/coordination.ts +355 -0
  533. package/src/core/events/v3/producers/hook-base.ts +578 -0
  534. package/src/core/events/v3/producers/hook.ts +119 -0
  535. package/src/core/events/v3/producers/intake.ts +319 -0
  536. package/src/core/events/v3/producers/recorder.ts +2805 -0
  537. package/src/core/events/v3/projection.ts +653 -0
  538. package/src/core/events/v3/reader.ts +1127 -0
  539. package/src/core/events/v3/recovery-record.ts +244 -0
  540. package/src/core/events/v3/recovery.ts +271 -0
  541. package/src/core/events/v3/span-state.ts +187 -0
  542. package/src/core/events/v3/targets.ts +182 -0
  543. package/src/core/events/v3/turn-telemetry.ts +259 -0
  544. package/src/core/events/v3/validate.ts +361 -0
  545. package/src/core/events/v3/writer.ts +419 -0
  546. package/src/core/governor/index.ts +3 -0
  547. package/src/core/governor/plan-api.ts +10 -2
  548. package/src/core/governor/read.ts +3 -0
  549. package/src/core/governor/state.ts +52 -5
  550. package/src/core/guard/config.ts +206 -0
  551. package/src/core/guard/coordinator.ts +227 -0
  552. package/src/core/guard/evaluator.ts +343 -0
  553. package/src/core/guard/evidence-v3.ts +227 -0
  554. package/src/core/guard/index.ts +35 -0
  555. package/src/core/guard/live-source-v3.ts +204 -0
  556. package/src/core/guard/storage.ts +188 -0
  557. package/src/core/guard/types.ts +152 -0
  558. package/src/core/hooks/adapter/detect.ts +28 -1
  559. package/src/core/hooks/adapter/events.ts +14 -6
  560. package/src/core/hooks/adapter/output.ts +7 -2
  561. package/src/core/hooks/adapter/parse.ts +80 -38
  562. package/src/core/hooks/adapter/wiring.ts +119 -13
  563. package/src/core/hooks/cli.ts +351 -466
  564. package/src/core/hooks/effects/image-capture.ts +228 -238
  565. package/src/core/hooks/effects/index.ts +1 -36
  566. package/src/core/hooks/events/input-hash.ts +47 -0
  567. package/src/core/hooks/index.ts +4 -11
  568. package/src/core/hooks/resolve/coord-root.ts +1 -1
  569. package/src/core/hooks/resolve/owner.ts +52 -45
  570. package/src/core/hooks/resolve/transcript.ts +165 -14
  571. package/src/core/hooks/session-name-presence.ts +14 -15
  572. package/src/core/hooks/unsafe-cross-shell.ts +1 -1
  573. package/src/core/journal/index.ts +15 -22
  574. package/src/core/presence/blob.ts +48 -41
  575. package/src/core/presence/codec-digest.ts +215 -0
  576. package/src/core/presence/relay-client.ts +5 -5
  577. package/src/core/work/index.ts +3 -0
  578. package/src/core/work/read.ts +3 -0
  579. package/src/core/work/runner.ts +6 -0
  580. package/src/core/work/state.ts +27 -3
  581. package/src/core/workflow/engine.ts +24 -24
  582. package/src/core/workflow/live-session-v3.ts +126 -0
  583. package/src/core/workflow/scope-id.ts +6 -0
  584. package/src/core/workflow/workspaces/leases.ts +56 -19
  585. package/src/index.ts +1 -1
  586. package/src/lib/browser/client.ts +230 -0
  587. package/src/lib/browser/critique.ts +104 -27
  588. package/src/lib/browser/geometry.ts +143 -14
  589. package/src/lib/browser/index.ts +34 -0
  590. package/src/lib/browser/qa-plan.ts +501 -0
  591. package/src/lib/browser/qa-reuse.ts +306 -0
  592. package/src/lib/browser/qa-snapshot.ts +223 -0
  593. package/src/lib/browser/runts.ts +27 -2
  594. package/src/lib/browser/tiling.ts +164 -0
  595. package/src/lib/claude-desktop.ts +1 -232
  596. package/src/lib/context/index.ts +22 -46
  597. package/src/lib/council/index.ts +9 -21
  598. package/src/lib/docs-frontmatter.ts +8 -79
  599. package/src/lib/docs-index.ts +33 -3
  600. package/src/lib/docs-lint.ts +15 -29
  601. package/src/lib/docs-metadata-audit.ts +166 -0
  602. package/src/lib/docs-metadata-managed.ts +83 -0
  603. package/src/lib/docs-metadata-sync.ts +262 -0
  604. package/src/lib/docs-metadata-v2-schema.ts +138 -0
  605. package/src/lib/docs-metadata-v2.ts +646 -0
  606. package/src/lib/docs-new.ts +63 -0
  607. package/src/lib/docs-sweep.ts +42 -28
  608. package/src/lib/headless/index.ts +287 -0
  609. package/src/lib/identities/assume.ts +67 -86
  610. package/src/lib/instructions/apply.ts +33 -20
  611. package/src/lib/instructions/bundle.ts +2 -2
  612. package/src/lib/instructions/splice.ts +21 -7
  613. package/src/lib/instructions/templates.ts +85 -13
  614. package/dist/core/agents/cli-emit.d.ts +0 -27
  615. package/dist/core/agents/cli-emit.d.ts.map +0 -1
  616. package/dist/core/agents/cli-emit.js +0 -57
  617. package/dist/core/agents/codex-replay.d.ts +0 -29
  618. package/dist/core/agents/codex-replay.d.ts.map +0 -1
  619. package/dist/core/agents/codex-replay.js +0 -138
  620. package/dist/core/agents/events/consume.d.ts +0 -82
  621. package/dist/core/agents/events/consume.d.ts.map +0 -1
  622. package/dist/core/agents/events/consume.js +0 -195
  623. package/dist/core/agents/events/emit.d.ts +0 -42
  624. package/dist/core/agents/events/emit.d.ts.map +0 -1
  625. package/dist/core/agents/events/emit.js +0 -75
  626. package/dist/core/agents/events/ulid.d.ts +0 -11
  627. package/dist/core/agents/events/ulid.d.ts.map +0 -1
  628. package/dist/core/agents/events/ulid.js +0 -47
  629. package/dist/core/agents/state/heartbeat-projector.d.ts +0 -76
  630. package/dist/core/agents/state/heartbeat-projector.d.ts.map +0 -1
  631. package/dist/core/agents/state/heartbeat-projector.js +0 -581
  632. package/dist/core/hooks/events/emit.d.ts +0 -31
  633. package/dist/core/hooks/events/emit.d.ts.map +0 -1
  634. package/dist/core/hooks/events/emit.js +0 -93
  635. package/dist/core/hooks/events/rotate.d.ts +0 -43
  636. package/dist/core/hooks/events/rotate.d.ts.map +0 -1
  637. package/dist/core/hooks/events/rotate.js +0 -142
  638. package/dist/core/hooks/events/schema.d.ts +0 -341
  639. package/dist/core/hooks/events/schema.d.ts.map +0 -1
  640. package/dist/core/hooks/events/schema.js +0 -12
  641. package/dist/core/hooks/events/ulid.d.ts +0 -10
  642. package/dist/core/hooks/events/ulid.d.ts.map +0 -1
  643. package/dist/core/hooks/events/ulid.js +0 -47
  644. package/dist/lib/docs-frontmatter-migrate.d.ts +0 -33
  645. package/dist/lib/docs-frontmatter-migrate.d.ts.map +0 -1
  646. package/dist/lib/docs-frontmatter-migrate.js +0 -364
  647. package/src/core/agents/cli-emit.ts +0 -64
  648. package/src/core/agents/codex-replay.ts +0 -163
  649. package/src/core/agents/events/consume.ts +0 -254
  650. package/src/core/agents/events/emit.ts +0 -115
  651. package/src/core/agents/events/ulid.ts +0 -51
  652. package/src/core/agents/state/heartbeat-projector.ts +0 -645
  653. package/src/core/hooks/events/emit.ts +0 -125
  654. package/src/core/hooks/events/rotate.ts +0 -151
  655. package/src/core/hooks/events/schema.ts +0 -582
  656. package/src/core/hooks/events/ulid.ts +0 -51
  657. package/src/lib/docs-frontmatter-migrate.ts +0 -427
@@ -1,582 +0,0 @@
1
- /**
2
- * Canonical event schema v1. Inter-module contract between agent-hooks (writer)
3
- * and agent-coord (consumer + projector).
4
- *
5
- * Schema evolution rules:
6
- * - Forward-compatible only within a major version. Consumers ignore unknown
7
- * fields. Adding an optional field is a minor bump; removing or retyping a
8
- * field is a major bump.
9
- * - Mixed-version streams are legal during migrations; consumers branch on
10
- * `schema_version`.
11
- */
12
-
13
- export const SCHEMA_VERSION = 1 as const;
14
-
15
- /** The adapters harnery ships first-party hook wiring for. The registry's open
16
- * `AdapterId` covers any adapter a host registers; this is the closed set, and
17
- * it is declared exactly once. Re-exported by the two event modules that used
18
- * to keep their own byte-identical copy. */
19
- export type Adapter = "claude-code" | "cursor" | "codex";
20
-
21
- export type Source = "agent-hooks" | "agent-coord" | "user" | "system";
22
-
23
- /**
24
- * Common envelope every event carries. Tool events, `user_prompt.submit`, and
25
- * `turn.stop` MUST carry `turn_id`; CLI/state/council/presence/health/session
26
- * events MAY carry `turn_id` when agent-coord can bind them to the active turn
27
- * for that owner.
28
- */
29
- export interface EventEnvelope<TType extends string, TData> {
30
- schema_version: typeof SCHEMA_VERSION;
31
- event_id: string; // ULID, sortable, unique
32
- event_type: TType;
33
- ts: string; // ISO-8601 with milliseconds
34
- instance_id: string; // resolved by agent-hooks
35
- session_id: string; // adapter-level session
36
- parent_session_id?: string; // present iff event is from a subagent
37
- turn_id?: string; // present when event is bound to an assistant turn
38
- parent_turn_id?: string; // present iff this turn is nested under another
39
- adapter: Adapter;
40
- source: Source;
41
- data: TData;
42
- }
43
-
44
- // ── event catalog ───────────────────────────────────────────────────────
45
-
46
- // Lifecycle
47
- export type SessionStart = EventEnvelope<
48
- "session.start",
49
- {
50
- started_at: string;
51
- cwd: string;
52
- model?: string;
53
- pid: number;
54
- /** Content hash of every repo-authored instruction/config file this
55
- * adapter can load for the session's working-path profile. */
56
- instruction_bundle_id?: string;
57
- /** Parallel hash of canonical AGENTS.md + .agents sources. This diagnoses
58
- * sync drift without splitting behavior cohorts when rendered bytes match. */
59
- instruction_source_id?: string;
60
- instruction_profile_root?: string;
61
- instruction_component_count?: number;
62
- /** Present iff this session is a `workflow run` child: the run id whose
63
- * transcript owns it (child env HARNERY_WORKFLOW_RUN_ID). Optional-field
64
- * addition per the schema evolution rules (minor bump). */
65
- workflow_run_id?: string;
66
- /** Which agent row of that run this session is running (`a1`, `a2`, …), from
67
- * child env HARNERY_WORKFLOW_AGENT_ID. Lets a dashboard attribute in-flight
68
- * child activity to one agent instead of only to the run. */
69
- workflow_agent_id?: string;
70
- }
71
- >;
72
-
73
- export type SessionEnd = EventEnvelope<
74
- "session.end",
75
- {
76
- ended_at: string;
77
- clean_exit: boolean;
78
- }
79
- >;
80
-
81
- export type SubagentStart = EventEnvelope<
82
- "subagent.start",
83
- {
84
- agent_type: string;
85
- prompt_summary?: string;
86
- }
87
- >;
88
-
89
- export type SubagentStop = EventEnvelope<
90
- "subagent.stop",
91
- {
92
- exit_status: "ok" | "error" | "interrupted";
93
- }
94
- >;
95
-
96
- export type UserPromptSubmit = EventEnvelope<
97
- "user_prompt.submit",
98
- {
99
- prompt_text: string; // clamped
100
- truncated?: boolean;
101
- }
102
- >;
103
-
104
- /** Direct adapter evidence that the session is waiting for operator input. */
105
- export type InteractionInputRequested = EventEnvelope<
106
- "interaction.input_requested",
107
- {
108
- request_kind: "permission";
109
- tool_name?: string;
110
- reason?: string;
111
- }
112
- >;
113
-
114
- export type TurnStop = EventEnvelope<
115
- "turn.stop",
116
- {
117
- tool_call_count: number;
118
- text_length: number;
119
- status_box_present: boolean; // adapter sets via transcript scan for `┌─ agent-` prefix
120
- /** Strict variant of status_box_present: assistant text blocks only, so a
121
- * tool_result carrying the box (the status command's own output) does not
122
- * count. Shadow telemetry while the rule-2/3 detector decision is open;
123
- * the Stop verdict does not read it yet. */
124
- status_box_present_strict?: boolean;
125
- /** Whether the session's suggested name is satisfied as of this turn:
126
- * either this reply showed it, or an earlier reply did. Present whenever a
127
- * suggested name exists, since the Stop verdict reads it per turn. */
128
- session_name_present?: boolean;
129
- /** Which suggested name `session_name_present` refers to. A projector
130
- * rebuild attributes the sighting to this name instead of to whichever
131
- * name is current during the replay. */
132
- session_name_present_for?: string;
133
- /** Shadow telemetry for Windows-hosted Codex workspaces: Markdown link
134
- * destinations that still use the Linux coordination root. */
135
- wsl_linux_file_link_count?: number;
136
- /** Up to three bounded examples for diagnosing the mismatches locally. */
137
- wsl_linux_file_link_examples?: string[];
138
- }
139
- >;
140
-
141
- /** The evaluated end-turn policy outcome. One row per Stop evaluation makes
142
- * the future bounce denominator explicit and keeps repeated remediation nags
143
- * from being mistaken for additional human turns. */
144
- export type StopVerdict = EventEnvelope<
145
- "stop.verdict",
146
- {
147
- allow: boolean;
148
- rule: string;
149
- reason?: string;
150
- enforcement_mode: "enforced" | "observe_only" | "exempt" | "fail_open";
151
- eligible: boolean;
152
- nag_delivered: boolean;
153
- }
154
- >;
155
-
156
- // Session-telemetry (merge path)
157
- export type CommandStart = EventEnvelope<
158
- "command.start",
159
- {
160
- cmd_id: string;
161
- intent?: string;
162
- cmd: string;
163
- }
164
- >;
165
-
166
- export type CommandOutput = EventEnvelope<
167
- "command.output",
168
- {
169
- cmd_id: string;
170
- stream: "stdout" | "stderr";
171
- line: string;
172
- }
173
- >;
174
-
175
- export type CommandEnd = EventEnvelope<
176
- "command.end",
177
- {
178
- cmd_id: string;
179
- exit: number;
180
- duration_ms: number;
181
- signal?: string;
182
- }
183
- >;
184
-
185
- export type Narration = EventEnvelope<
186
- "narration",
187
- {
188
- message: string;
189
- }
190
- >;
191
-
192
- // Tools
193
- export type ToolPreUse = EventEnvelope<
194
- "tool.pre_use",
195
- {
196
- tool_name: string;
197
- tool_input: unknown; // clamped to 8000 chars when stringified
198
- intent?: string;
199
- truncated?: boolean;
200
- }
201
- >;
202
-
203
- export type ToolPostUse = EventEnvelope<
204
- "tool.post_use",
205
- {
206
- tool_name: string;
207
- output_summary: string; // first 500 + last 500
208
- exit_status: "ok" | "error";
209
- duration_ms: number;
210
- truncated?: boolean;
211
- }
212
- >;
213
-
214
- export type ToolPostUseFailure = EventEnvelope<
215
- "tool.post_use_failure",
216
- {
217
- tool_name: string;
218
- error: string;
219
- duration_ms: number;
220
- }
221
- >;
222
-
223
- export type ToolOutputChunk = EventEnvelope<
224
- "tool.output_chunk",
225
- {
226
- chunk: string;
227
- chunk_no: number;
228
- stream: "stdout" | "stderr";
229
- truncated?: boolean;
230
- }
231
- >;
232
-
233
- /**
234
- * An image an agent viewed (Read tool) or produced (a Bash command wrote it).
235
- * Emitted by agent-hooks as a side-effect of a tool event when the tool
236
- * references an image path on disk; the bytes are content-addressed into
237
- * `.harnery/images/<hash>.<ext>` (dedup) and this event records the provenance
238
- * for the web image feed. Grouped by `hash` downstream → one card per distinct
239
- * image with a touch timeline.
240
- */
241
- export type ImageCaptured = EventEnvelope<
242
- "image.captured",
243
- {
244
- hash: string; // sha256 of the file bytes, also the blob's basename
245
- ext: string; // png | jpg | jpeg | gif | webp | bmp | svg
246
- bytes: number;
247
- role: "viewed" | "produced";
248
- source_path: string; // repo-relative when under coordRoot, else absolute
249
- tool_name: string; // "Read" (viewed) | "Bash" (produced)
250
- tool_use_id?: string;
251
- intent?: string; // present for viewed (carried from the tool event)
252
- command_head?: string; // present for produced (first ~120 chars of the cmd)
253
- }
254
- >;
255
-
256
- // Context continuity
257
- export type ContextSampled = EventEnvelope<
258
- "context.sampled",
259
- {
260
- model?: string;
261
- used_tokens?: number;
262
- window_tokens?: number;
263
- used_percent?: number;
264
- telemetry_source: "hook" | "native_event" | "result" | "transcript" | "estimate";
265
- confidence: "exact" | "reported" | "estimated";
266
- }
267
- >;
268
-
269
- export type ContextCheckpointCreated = EventEnvelope<
270
- "context.checkpoint.created",
271
- {
272
- capsule_id: string;
273
- generation: number;
274
- path: string;
275
- reason: "manual" | "pressure" | "pre_compact" | "session_end";
276
- reused: boolean;
277
- }
278
- >;
279
-
280
- export type ContextCompactionStarted = EventEnvelope<
281
- "context.compaction.started",
282
- {
283
- trigger?: string;
284
- pre_tokens?: number;
285
- }
286
- >;
287
-
288
- export type ContextCompactionCompleted = EventEnvelope<
289
- "context.compaction.completed",
290
- {
291
- trigger?: string;
292
- pre_tokens?: number;
293
- post_tokens?: number;
294
- }
295
- >;
296
-
297
- export type ContextRecoveryInjected = EventEnvelope<
298
- "context.recovery.injected",
299
- {
300
- capsule_id: string;
301
- generation: number;
302
- injection_event: "SessionStart" | "UserPromptSubmit";
303
- }
304
- >;
305
-
306
- // File claims
307
- export type ClaimAcquire = EventEnvelope<
308
- "claim.acquire",
309
- {
310
- path: string;
311
- mode: "read" | "write";
312
- finalization?: {
313
- disposition: "git" | "output";
314
- root: string;
315
- };
316
- }
317
- >;
318
-
319
- export type ClaimRelease = EventEnvelope<
320
- "claim.release",
321
- {
322
- path: string;
323
- reason: "explicit" | "turn_end" | "session_end" | "heal";
324
- }
325
- >;
326
-
327
- export type ClaimConflict = EventEnvelope<
328
- "claim.conflict",
329
- {
330
- path: string;
331
- peer_instance_id: string;
332
- reason?: "ordering_violation" | "concurrent_write";
333
- }
334
- >;
335
-
336
- // Coord state
337
- export type StateTaskSet = EventEnvelope<
338
- "state.task_set",
339
- {
340
- task: string;
341
- cleared: boolean;
342
- /** True exactly when this call produced the session name (first non-empty
343
- * declaration of a human-facing session); never true with a null name. */
344
- first_of_session?: boolean;
345
- /** The name produced by this call, for the Stop-hook naming rule. */
346
- suggested_session_name?: string | null;
347
- }
348
- >;
349
-
350
- export type StateTaskState = EventEnvelope<
351
- "state.task_state",
352
- {
353
- state: "active" | "blocked" | "done";
354
- reason?: string;
355
- }
356
- >;
357
-
358
- export type StateStatusChecked = EventEnvelope<
359
- "state.status_checked",
360
- {
361
- format: "box" | "json" | "table";
362
- agent_count: number;
363
- included_self: boolean;
364
- }
365
- >;
366
-
367
- export type StateJournalAppend = EventEnvelope<
368
- "state.journal_append",
369
- {
370
- category: "note" | "plan" | "decision" | "blocker" | "question" | "done" | "handoff";
371
- body_summary: string;
372
- }
373
- >;
374
-
375
- export type StatePresenceChange = EventEnvelope<
376
- "state.presence_change",
377
- {
378
- from: "mobile" | "office";
379
- to: "mobile" | "office";
380
- source: "hook" | "cli" | "user";
381
- }
382
- >;
383
-
384
- export type StateHeartbeat = EventEnvelope<"state.heartbeat", Record<string, never>>;
385
-
386
- /** A live session adopted a durable persona/role. The event is authoritative
387
- * for replay; `.name-history` carries the same binding for heartbeat healing. */
388
- export type IdentityAssumed = EventEnvelope<
389
- "identity.assumed",
390
- {
391
- name: string;
392
- agent_id: string;
393
- previous_name?: string;
394
- previous_agent_id?: string;
395
- }
396
- >;
397
-
398
- // Council
399
- export type CouncilOpen = EventEnvelope<
400
- "council.open",
401
- {
402
- council_id: string;
403
- topic: string;
404
- members: string[];
405
- target_doc?: string;
406
- }
407
- >;
408
-
409
- export type CouncilRoundOpen = EventEnvelope<
410
- "council.round_open",
411
- {
412
- council_id: string;
413
- round_no: number;
414
- }
415
- >;
416
-
417
- export type CouncilContribution = EventEnvelope<
418
- "council.contribution",
419
- {
420
- council_id: string;
421
- round_no: number;
422
- member: string;
423
- body_summary: string;
424
- }
425
- >;
426
-
427
- export type CouncilRoundClose = EventEnvelope<
428
- "council.round_close",
429
- {
430
- council_id: string;
431
- round_no: number;
432
- }
433
- >;
434
-
435
- export type CouncilClose = EventEnvelope<
436
- "council.close",
437
- {
438
- council_id: string;
439
- closed_at: string;
440
- }
441
- >;
442
-
443
- export type CouncilArchive = EventEnvelope<
444
- "council.archive",
445
- {
446
- council_id: string;
447
- }
448
- >;
449
-
450
- // Decisions (rule-engine verdicts emitted by agent-coord)
451
- export type DecisionBlock = EventEnvelope<
452
- "decision.block",
453
- {
454
- rule: string;
455
- reason: string;
456
- }
457
- >;
458
-
459
- export type DecisionWarn = EventEnvelope<
460
- "decision.warn",
461
- {
462
- rule: string;
463
- reason: string;
464
- }
465
- >;
466
-
467
- export type DecisionAllow = EventEnvelope<
468
- "decision.allow",
469
- {
470
- rule: string;
471
- }
472
- >;
473
-
474
- // Health
475
- export type HealthHeartbeatHeal = EventEnvelope<
476
- "health.heartbeat_heal",
477
- {
478
- reason: string;
479
- }
480
- >;
481
-
482
- export type HealthPidmapHeal = EventEnvelope<
483
- "health.pidmap_heal",
484
- {
485
- reason: string;
486
- }
487
- >;
488
-
489
- /**
490
- * A heartbeat file was removed by stale-sweep or an operator kill. Symmetric
491
- * with `health.heartbeat_heal` so the full lifecycle (created → healed →
492
- * swept) is auditable from the event stream alone. Sweeps were silent before,
493
- * which made "why did this agent vanish?" un-answerable without guesswork.
494
- * `reason`: "stale" (last_heartbeat past the freshness cutoff) | "unparseable"
495
- * (JSON.parse failed AND mtime was old) | "missing_ts" (no last_heartbeat AND
496
- * mtime was old) | "killed" (operator `kill-heartbeat` / `agents heal --kind
497
- * kill`). Fresh-mtime files are never auto-swept regardless of content.
498
- */
499
- export type HealthHeartbeatSwept = EventEnvelope<
500
- "health.heartbeat_swept",
501
- {
502
- reason: "stale" | "unparseable" | "missing_ts" | "killed";
503
- age_secs?: number;
504
- }
505
- >;
506
-
507
- /**
508
- * fail-open verdict failure mode. Emitted by agent-hooks when
509
- * `agent-coord verdict` fails to spawn / exits non-zero / returns malformed
510
- * JSON / times out. Adapter falls through to ALLOW; the event preserves the
511
- * fail-open for audit.
512
- */
513
- export type HealthVerdictFailure = EventEnvelope<
514
- "health.verdict_failure",
515
- {
516
- failure_kind: "spawn_failed" | "nonzero_exit" | "malformed_json" | "timeout";
517
- timeout_ms?: number;
518
- fallback: "allow";
519
- }
520
- >;
521
-
522
- // ── Discriminated union over every event_type ────────────────────────────────
523
-
524
- export type Event =
525
- | SessionStart
526
- | SessionEnd
527
- | SubagentStart
528
- | SubagentStop
529
- | UserPromptSubmit
530
- | InteractionInputRequested
531
- | TurnStop
532
- | StopVerdict
533
- | CommandStart
534
- | CommandOutput
535
- | CommandEnd
536
- | Narration
537
- | ToolPreUse
538
- | ToolPostUse
539
- | ToolPostUseFailure
540
- | ToolOutputChunk
541
- | ImageCaptured
542
- | ContextSampled
543
- | ContextCheckpointCreated
544
- | ContextCompactionStarted
545
- | ContextCompactionCompleted
546
- | ContextRecoveryInjected
547
- | ClaimAcquire
548
- | ClaimRelease
549
- | ClaimConflict
550
- | StateTaskSet
551
- | StateTaskState
552
- | StateStatusChecked
553
- | StateJournalAppend
554
- | StatePresenceChange
555
- | StateHeartbeat
556
- | IdentityAssumed
557
- | CouncilOpen
558
- | CouncilRoundOpen
559
- | CouncilContribution
560
- | CouncilRoundClose
561
- | CouncilClose
562
- | CouncilArchive
563
- | DecisionBlock
564
- | DecisionWarn
565
- | DecisionAllow
566
- | HealthHeartbeatHeal
567
- | HealthPidmapHeal
568
- | HealthHeartbeatSwept
569
- | HealthVerdictFailure;
570
-
571
- export type EventType = Event["event_type"];
572
-
573
- /**
574
- * Redaction marker that may be attached to any `data` payload during emission.
575
- * Tracked here so the schema documents the convention; the actual
576
- * shape lives inside `data` so it doesn't widen the envelope.
577
- */
578
- export interface RedactionMarker {
579
- field: string;
580
- kind: "secret_signature" | "env_secret_match" | "length_clamp";
581
- count: number;
582
- }
@@ -1,51 +0,0 @@
1
- /**
2
- * Tiny ULID generator. Crockford-base32, 10-char timestamp (48-bit ms epoch)
3
- * + 16-char random (80-bit). 26 chars total, monotonically-sortable.
4
- *
5
- * Library-free so the module stays dep-free (no `ulid` package). Quality is
6
- * sufficient for event_id uniqueness: the kth event in a millisecond uses a
7
- * fresh 80-bit random, collision probability negligible.
8
- */
9
-
10
- const ALPHABET = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
11
-
12
- export function ulid(): string {
13
- const ts = encodeTime(Date.now());
14
- const rnd = encodeRandom();
15
- return ts + rnd;
16
- }
17
-
18
- function encodeTime(ms: number): string {
19
- let out = "";
20
- let n = BigInt(ms);
21
- const base = BigInt(32);
22
- for (let i = 0; i < 10; i++) {
23
- const mod = Number(n % base);
24
- out = ALPHABET[mod] + out;
25
- n = n / base;
26
- }
27
- return out;
28
- }
29
-
30
- function encodeRandom(): string {
31
- const bytes = new Uint8Array(10);
32
- crypto.getRandomValues(bytes);
33
- // Map each pair of bytes to 3 alphabet chars (5 bits per char, 16 chars).
34
- let out = "";
35
- let buf = 0n;
36
- let bits = 0;
37
- for (const b of bytes) {
38
- buf = (buf << 8n) | BigInt(b);
39
- bits += 8;
40
- while (bits >= 5) {
41
- bits -= 5;
42
- const idx = Number((buf >> BigInt(bits)) & 0x1fn);
43
- out += ALPHABET[idx];
44
- }
45
- }
46
- if (bits > 0) {
47
- const idx = Number((buf << BigInt(5 - bits)) & 0x1fn);
48
- out += ALPHABET[idx];
49
- }
50
- return out.slice(0, 16);
51
- }