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
@@ -1,29 +0,0 @@
1
- /**
2
- * Codex JSONL → canonical event replay.
3
- *
4
- * Production codex sessions emit canonical events from each `harn` invocation
5
- * via the in-process session-tee middleware (which calls `agent-coord
6
- * emit-event` for state.task_set / state.status_checked). But the codex
7
- * adapter itself doesn't wire agent-hook on preToolUse, so user_prompt.submit
8
- * + tool.pre_use + turn.stop aren't emitted live.
9
- *
10
- * This module parses the Codex JSONL transcript at stop time and emits the
11
- * missing canonical events so the verdict has a complete turn-window view.
12
- *
13
- * Scope: just the events the stop-hook verdict reads: user_prompt.submit,
14
- * tool.pre_use (for exec_command function calls), state.status_checked
15
- * (when the cmd contains `<bin> agents status`), state.task_set (when the cmd
16
- * contains `<bin> agents set-task`), turn.stop (with status_box_present derived
17
- * from the last_assistant_message).
18
- */
19
- export interface CodexReplayOpts {
20
- coordRoot: string;
21
- sessionId: string;
22
- instanceId: string;
23
- jsonlPath: string;
24
- lastAssistantMessage?: string;
25
- }
26
- export declare function replayCodexJsonl(opts: CodexReplayOpts): {
27
- emitted: number;
28
- };
29
- //# sourceMappingURL=codex-replay.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex-replay.d.ts","sourceRoot":"","sources":["../../../src/core/agents/codex-replay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAkBH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,eAAe,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAkH3E"}
@@ -1,138 +0,0 @@
1
- /**
2
- * Codex JSONL → canonical event replay.
3
- *
4
- * Production codex sessions emit canonical events from each `harn` invocation
5
- * via the in-process session-tee middleware (which calls `agent-coord
6
- * emit-event` for state.task_set / state.status_checked). But the codex
7
- * adapter itself doesn't wire agent-hook on preToolUse, so user_prompt.submit
8
- * + tool.pre_use + turn.stop aren't emitted live.
9
- *
10
- * This module parses the Codex JSONL transcript at stop time and emits the
11
- * missing canonical events so the verdict has a complete turn-window view.
12
- *
13
- * Scope: just the events the stop-hook verdict reads: user_prompt.submit,
14
- * tool.pre_use (for exec_command function calls), state.status_checked
15
- * (when the cmd contains `<bin> agents status`), state.task_set (when the cmd
16
- * contains `<bin> agents set-task`), turn.stop (with status_box_present derived
17
- * from the last_assistant_message).
18
- */
19
- import { existsSync, readFileSync } from "node:fs";
20
- import { emit } from "./events/emit.js";
21
- const STATUS_BOX_PREFIX = "┌─ agent-";
22
- export function replayCodexJsonl(opts) {
23
- const { coordRoot, sessionId, instanceId, jsonlPath, lastAssistantMessage } = opts;
24
- if (!existsSync(jsonlPath))
25
- return { emitted: 0 };
26
- let raw;
27
- try {
28
- raw = readFileSync(jsonlPath, "utf8");
29
- }
30
- catch {
31
- return { emitted: 0 };
32
- }
33
- let emitted = 0;
34
- const lines = raw.split("\n");
35
- for (const line of lines) {
36
- if (!line.trim())
37
- continue;
38
- let entry;
39
- try {
40
- entry = JSON.parse(line);
41
- }
42
- catch {
43
- continue;
44
- }
45
- const ts = entry.timestamp;
46
- const t = entry.type;
47
- if (t === "event_msg" && entry.payload?.type === "user_message") {
48
- emit(coordRoot, {
49
- event_type: "user_prompt.submit",
50
- instance_id: instanceId,
51
- session_id: sessionId,
52
- adapter: "codex",
53
- ts,
54
- data: {
55
- prompt_text: clamp(entry.payload.message ?? "", 4000),
56
- },
57
- });
58
- emitted += 1;
59
- continue;
60
- }
61
- if (t === "response_item" && entry.payload?.type === "function_call") {
62
- const name = entry.payload.name ?? "";
63
- let cmd = "";
64
- if (entry.payload.arguments) {
65
- try {
66
- const parsed = JSON.parse(entry.payload.arguments);
67
- cmd = parsed.cmd ?? "";
68
- }
69
- catch {
70
- /* skip */
71
- }
72
- }
73
- // Emit tool.pre_use for every function call.
74
- emit(coordRoot, {
75
- event_type: "tool.pre_use",
76
- instance_id: instanceId,
77
- session_id: sessionId,
78
- adapter: "codex",
79
- ts,
80
- data: {
81
- tool_name: name === "exec_command" ? "Bash" : name,
82
- tool_input: JSON.stringify({ command: cmd }),
83
- intent: "",
84
- intent_source: "codex-replay",
85
- },
86
- });
87
- emitted += 1;
88
- // Match `<bin> agents status` / `<bin> agents set-task`, bin-agnostic, so
89
- // it works for harn or any host CLI that composes harnery (a consumer's own
90
- // binary). Wrapped invocations (cd && <bin> ...; PATH=... <bin> ...) pass
91
- // because we scan the whole cmd string and anchor on the token before `agents`.
92
- if (/(^|\s|;|&&)[\w./-]+\s+agents\s+status(\b|$)/.test(cmd)) {
93
- emit(coordRoot, {
94
- event_type: "state.status_checked",
95
- instance_id: instanceId,
96
- session_id: sessionId,
97
- adapter: "codex",
98
- ts,
99
- data: { source: "codex-replay" },
100
- });
101
- emitted += 1;
102
- }
103
- if (/(^|\s|;|&&)[\w./-]+\s+agents\s+set-task(\b|$)/.test(cmd)) {
104
- emit(coordRoot, {
105
- event_type: "state.task_set",
106
- instance_id: instanceId,
107
- session_id: sessionId,
108
- adapter: "codex",
109
- ts,
110
- data: { source: "codex-replay" },
111
- });
112
- emitted += 1;
113
- }
114
- }
115
- }
116
- // Finally, emit turn.stop with status_box_present derived from the last
117
- // assistant message (codex's stop payload carries the assistant text
118
- // directly, unlike CC which only has transcript_path).
119
- const boxPresent = !!lastAssistantMessage && lastAssistantMessage.includes(STATUS_BOX_PREFIX);
120
- emit(coordRoot, {
121
- event_type: "turn.stop",
122
- instance_id: instanceId,
123
- session_id: sessionId,
124
- adapter: "codex",
125
- data: {
126
- status_box_present: boxPresent,
127
- tool_call_count: -1,
128
- text_length: lastAssistantMessage?.length ?? 0,
129
- },
130
- });
131
- emitted += 1;
132
- return { emitted };
133
- }
134
- function clamp(s, max) {
135
- if (s.length <= max)
136
- return s;
137
- return s.slice(0, max);
138
- }
@@ -1,82 +0,0 @@
1
- /**
2
- * Incremental consumer for the canonical event stream at
3
- * `.harnery/events.ndjson`.
4
- *
5
- * A small `.harnery/.events-cursor` file persists the last-projected event_id;
6
- * subsequent runs skip everything up to and including that id and return only
7
- * the new tail.
8
- *
9
- * Read strategy: the global cursor is advanced on every agent's turn.stop, so
10
- * it almost always sits within the last few KB of the stream. We exploit that
11
- * with a bounded **tail read** (reading only the last `tailBytes` of the file
12
- * and locating the cursor there) which turns an O(file-size) read into
13
- * O(window). If the cursor is older than the window (a long-idle system, or a
14
- * cursor that's been rotated out) we fall back to a wider read that is itself
15
- * capped (`fallbackCapBytes`): the stream is an append-only ledger that grows
16
- * without bound, so a whole-file `readFileSync` throws V8's max-string-length
17
- * error ("Cannot create a string longer than 0x1fffffe8 characters") once it
18
- * passes ~512MB, which would abort the projection. Events older than the cap are
19
- * stale for coord-state purposes, so a bounded replay is the correct fallback.
20
- *
21
- * Idempotency: projectors are idempotent by `event_id`. The
22
- * cursor file makes this cheap (we never replay an already-projected event by
23
- * accident) and the projector tolerates the rare full-replay (cursor rotated
24
- * out) without double-applying.
25
- */
26
- export interface CanonicalEvent {
27
- schema_version: number;
28
- event_id: string;
29
- event_type: string;
30
- ts: string;
31
- instance_id: string;
32
- session_id: string;
33
- parent_session_id?: string;
34
- turn_id?: string;
35
- parent_turn_id?: string;
36
- adapter: string;
37
- source: string;
38
- data: Record<string, unknown>;
39
- }
40
- export interface ConsumeResult {
41
- events: CanonicalEvent[];
42
- /** event_id of the last event the caller successfully projected. */
43
- lastEventId: string | null;
44
- /** Total bytes in the stream file at read time (for diagnostics). */
45
- streamBytes: number;
46
- }
47
- export interface ConsumeOpts {
48
- /** Ignore the cursor and return everything, useful for backfill. */
49
- replayAll?: boolean;
50
- /**
51
- * Tail-window size in bytes for the fast-path read. Defaults to
52
- * `HARNERY_AGENT_COORD_TAIL_BYTES` env or 2 MiB. Mainly a test seam; production
53
- * callers should leave it unset.
54
- */
55
- tailBytes?: number;
56
- /**
57
- * Cap in bytes for the fall-through read (cursor missed the tail window).
58
- * Defaults to `HARNERY_AGENT_COORD_FALLBACK_CAP_BYTES` env or 64 MiB. Bounds
59
- * the read so the unbounded ledger can never overflow V8's max string length.
60
- * Mainly a test seam; production callers should leave it unset.
61
- */
62
- fallbackCapBytes?: number;
63
- }
64
- /**
65
- * Read all events after the persisted cursor, in chronological (file) order.
66
- */
67
- export declare function consumeSince(coordRoot: string, opts?: ConsumeOpts): ConsumeResult;
68
- /**
69
- * Read at most `capBytes` from the tail of the event stream as UTF-8, dropping
70
- * the (partial) leading line when the file is larger than the cap. Shared
71
- * bounded reader for CLI consumers (`agents trace` / `agents health`) that must
72
- * never `readFileSync` the whole unbounded ledger — a >512MB read throws V8's
73
- * max-string-length error. `truncated` is true when older bytes were skipped, so
74
- * callers can surface the cap rather than silently under-reporting.
75
- */
76
- export declare function readStreamTailBounded(streamPath: string, capBytes: number): {
77
- text: string;
78
- truncated: boolean;
79
- };
80
- export declare function readCursor(coordRoot: string): string | null;
81
- export declare function writeCursor(coordRoot: string, eventId: string): void;
82
- //# sourceMappingURL=consume.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/events/consume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAwBH,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qEAAqE;IACrE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,oEAAoE;IACpE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,aAAa,CAuDrF;AAgBD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAWtC;AAiDD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAS3D;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQpE"}
@@ -1,195 +0,0 @@
1
- /**
2
- * Incremental consumer for the canonical event stream at
3
- * `.harnery/events.ndjson`.
4
- *
5
- * A small `.harnery/.events-cursor` file persists the last-projected event_id;
6
- * subsequent runs skip everything up to and including that id and return only
7
- * the new tail.
8
- *
9
- * Read strategy: the global cursor is advanced on every agent's turn.stop, so
10
- * it almost always sits within the last few KB of the stream. We exploit that
11
- * with a bounded **tail read** (reading only the last `tailBytes` of the file
12
- * and locating the cursor there) which turns an O(file-size) read into
13
- * O(window). If the cursor is older than the window (a long-idle system, or a
14
- * cursor that's been rotated out) we fall back to a wider read that is itself
15
- * capped (`fallbackCapBytes`): the stream is an append-only ledger that grows
16
- * without bound, so a whole-file `readFileSync` throws V8's max-string-length
17
- * error ("Cannot create a string longer than 0x1fffffe8 characters") once it
18
- * passes ~512MB, which would abort the projection. Events older than the cap are
19
- * stale for coord-state purposes, so a bounded replay is the correct fallback.
20
- *
21
- * Idempotency: projectors are idempotent by `event_id`. The
22
- * cursor file makes this cheap (we never replay an already-projected event by
23
- * accident) and the projector tolerates the rare full-replay (cursor rotated
24
- * out) without double-applying.
25
- */
26
- import { closeSync, existsSync, mkdirSync, openSync, readFileSync, readSync, statSync, writeFileSync, } from "node:fs";
27
- import { dirname, join } from "node:path";
28
- import { coordEnv } from "../../../lib/env.js";
29
- const STREAM_REL = ".harnery/events.ndjson";
30
- const CURSOR_REL = ".harnery/.events-cursor";
31
- const DEFAULT_TAIL_BYTES = 2 * 1024 * 1024; // 2 MiB, thousands of events of headroom
32
- /** Cap for the fall-through read when the cursor misses the tail window. Well
33
- * under V8's ~512MB max string length so it never throws on the unbounded
34
- * ledger; comfortably larger than any realistic cursor drift (the global cursor
35
- * advances on every agent's turn.stop, so it sits near EOF in practice). */
36
- const DEFAULT_FALLBACK_CAP_BYTES = 64 * 1024 * 1024; // 64 MiB
37
- /**
38
- * Read all events after the persisted cursor, in chronological (file) order.
39
- */
40
- export function consumeSince(coordRoot, opts = {}) {
41
- const streamPath = join(coordRoot, STREAM_REL);
42
- if (!existsSync(streamPath)) {
43
- return { events: [], lastEventId: null, streamBytes: 0 };
44
- }
45
- const cursor = opts.replayAll ? null : readCursor(coordRoot);
46
- const fileSize = statSync(streamPath).size;
47
- const windowBytes = resolveTailBytes(opts.tailBytes);
48
- // Tail fast-path: a cursor exists and the file is larger than the window.
49
- // Read only the trailing window, drop the (likely partial) first line, and
50
- // look for the cursor. A hit returns just the new events without ever
51
- // touching the bulk of the file.
52
- if (cursor !== null && fileSize > windowBytes) {
53
- const tail = readTailUtf8(streamPath, fileSize, windowBytes);
54
- const firstNl = tail.indexOf("\n");
55
- const usable = firstNl >= 0 ? tail.slice(firstNl + 1) : "";
56
- const parsed = eventsAfterCursor(parseLines(usable), cursor);
57
- if (parsed.foundCursor) {
58
- return {
59
- events: parsed.events,
60
- lastEventId: parsed.events.at(-1)?.event_id ?? cursor,
61
- streamBytes: fileSize,
62
- };
63
- }
64
- // Cursor older than the tail window → fall through to a full read.
65
- }
66
- // Bounded fall-through: first run, replayAll, small file, or cursor not found
67
- // in the tail. This must NEVER read the whole file: the stream grows without
68
- // bound and a >512MB readFileSync throws V8's max-string-length error, which
69
- // would abort the projection. Read at most `cap` bytes from the tail; when we
70
- // start mid-file, drop the (likely partial) first line.
71
- const cap = resolveFallbackCap(opts.fallbackCapBytes);
72
- const readBytes = Math.min(fileSize, cap);
73
- let text = readTailUtf8(streamPath, fileSize, readBytes);
74
- if (readBytes < fileSize) {
75
- const firstNl = text.indexOf("\n");
76
- text = firstNl >= 0 ? text.slice(firstNl + 1) : "";
77
- }
78
- const all = parseLines(text);
79
- const parsed = eventsAfterCursor(all, cursor);
80
- if (parsed.foundCursor) {
81
- return {
82
- events: parsed.events,
83
- lastEventId: parsed.events.at(-1)?.event_id ?? cursor,
84
- streamBytes: fileSize,
85
- };
86
- }
87
- // The cursor names an event older than the capped window (or rotated out), so
88
- // replay what the window holds (safer than silent state drift; the projector
89
- // is idempotent by event_id). lastEventId null keeps the cursor put.
90
- return { events: all, lastEventId: null, streamBytes: fileSize };
91
- }
92
- function resolveFallbackCap(override) {
93
- if (override !== undefined && override > 0)
94
- return override;
95
- const env = coordEnv("AGENT_COORD_FALLBACK_CAP_BYTES");
96
- const n = env ? Number(env) : Number.NaN;
97
- return Number.isFinite(n) && n > 0 ? n : DEFAULT_FALLBACK_CAP_BYTES;
98
- }
99
- function resolveTailBytes(override) {
100
- if (override !== undefined && override > 0)
101
- return override;
102
- const env = coordEnv("AGENT_COORD_TAIL_BYTES");
103
- const n = env ? Number(env) : Number.NaN;
104
- return Number.isFinite(n) && n > 0 ? n : DEFAULT_TAIL_BYTES;
105
- }
106
- /**
107
- * Read at most `capBytes` from the tail of the event stream as UTF-8, dropping
108
- * the (partial) leading line when the file is larger than the cap. Shared
109
- * bounded reader for CLI consumers (`agents trace` / `agents health`) that must
110
- * never `readFileSync` the whole unbounded ledger — a >512MB read throws V8's
111
- * max-string-length error. `truncated` is true when older bytes were skipped, so
112
- * callers can surface the cap rather than silently under-reporting.
113
- */
114
- export function readStreamTailBounded(streamPath, capBytes) {
115
- if (!existsSync(streamPath))
116
- return { text: "", truncated: false };
117
- const fileSize = statSync(streamPath).size;
118
- const readBytes = Math.min(fileSize, capBytes);
119
- let text = readTailUtf8(streamPath, fileSize, readBytes);
120
- const truncated = readBytes < fileSize;
121
- if (truncated) {
122
- const nl = text.indexOf("\n");
123
- text = nl >= 0 ? text.slice(nl + 1) : "";
124
- }
125
- return { text, truncated };
126
- }
127
- /** Read the trailing `windowBytes` of a file as UTF-8 without loading the rest. */
128
- function readTailUtf8(streamPath, fileSize, windowBytes) {
129
- const start = Math.max(0, fileSize - windowBytes);
130
- const len = fileSize - start;
131
- const buf = Buffer.allocUnsafe(len);
132
- const fd = openSync(streamPath, "r");
133
- try {
134
- let read = 0;
135
- while (read < len) {
136
- const n = readSync(fd, buf, read, len - read, start + read);
137
- if (n === 0)
138
- break;
139
- read += n;
140
- }
141
- return buf.toString("utf8", 0, read);
142
- }
143
- finally {
144
- closeSync(fd);
145
- }
146
- }
147
- function parseLines(raw) {
148
- const out = [];
149
- for (const line of raw.split("\n")) {
150
- if (!line.trim())
151
- continue;
152
- try {
153
- out.push(JSON.parse(line));
154
- }
155
- catch {
156
- /* skip malformed line */
157
- }
158
- }
159
- return out;
160
- }
161
- /**
162
- * Events strictly after `cursor` (or all events when `cursor` is null). When a
163
- * non-null cursor isn't present in `all`, returns `foundCursor: false` so the
164
- * caller can decide between a wider read and a full replay.
165
- */
166
- function eventsAfterCursor(all, cursor) {
167
- if (cursor === null)
168
- return { events: all, foundCursor: true };
169
- const idx = all.findIndex((e) => e.event_id === cursor);
170
- if (idx < 0)
171
- return { events: [], foundCursor: false };
172
- return { events: all.slice(idx + 1), foundCursor: true };
173
- }
174
- export function readCursor(coordRoot) {
175
- const path = join(coordRoot, CURSOR_REL);
176
- if (!existsSync(path))
177
- return null;
178
- try {
179
- const v = readFileSync(path, "utf8").trim();
180
- return v.length > 0 ? v : null;
181
- }
182
- catch {
183
- return null;
184
- }
185
- }
186
- export function writeCursor(coordRoot, eventId) {
187
- const path = join(coordRoot, CURSOR_REL);
188
- try {
189
- mkdirSync(dirname(path), { recursive: true });
190
- writeFileSync(path, eventId, "utf8");
191
- }
192
- catch {
193
- /* swallow; next run replays */
194
- }
195
- }
@@ -1,42 +0,0 @@
1
- /**
2
- * Canonical-event writer for agent-coord. Mirrors the agent-hooks emitter:
3
- * both modules write the same envelope shape to the same
4
- * `.harnery/events.ndjson` file but stay independent (shared code limited to
5
- * event/schema types).
6
- *
7
- * Phase 4: agent-coord uses this from CLI handlers (state.task_set,
8
- * state.status_checked, state.journal_append, council.*, decision.*,
9
- * presence.*).
10
- */
11
- declare const SCHEMA_VERSION: 1;
12
- export type { Adapter, Source } from "../../hooks/events/schema.js";
13
- import type { Adapter, Source } from "../../hooks/events/schema.js";
14
- export interface Envelope {
15
- schema_version: typeof SCHEMA_VERSION;
16
- event_id: string;
17
- event_type: string;
18
- ts: string;
19
- instance_id: string;
20
- session_id: string;
21
- parent_session_id?: string;
22
- turn_id?: string;
23
- parent_turn_id?: string;
24
- adapter: Adapter;
25
- source: Source;
26
- data: Record<string, unknown>;
27
- }
28
- export interface EmitInput {
29
- event_type: string;
30
- instance_id: string;
31
- session_id: string;
32
- adapter: Adapter;
33
- source?: Source;
34
- parent_session_id?: string;
35
- turn_id?: string;
36
- parent_turn_id?: string;
37
- ts?: string;
38
- data: Record<string, unknown>;
39
- }
40
- export declare function buildEnvelope(input: EmitInput): Envelope;
41
- export declare function emit(coordRoot: string, input: EmitInput): Envelope;
42
- //# sourceMappingURL=emit.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"emit.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/events/emit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,QAAA,MAAM,cAAc,EAAG,CAAU,CAAC;AAKlC,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEpE,MAAM,WAAW,QAAQ;IACvB,cAAc,EAAE,OAAO,cAAc,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAexD;AAED,wBAAgB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,QAAQ,CA4BlE"}
@@ -1,75 +0,0 @@
1
- /**
2
- * Canonical-event writer for agent-coord. Mirrors the agent-hooks emitter:
3
- * both modules write the same envelope shape to the same
4
- * `.harnery/events.ndjson` file but stay independent (shared code limited to
5
- * event/schema types).
6
- *
7
- * Phase 4: agent-coord uses this from CLI handlers (state.task_set,
8
- * state.status_checked, state.journal_append, council.*, decision.*,
9
- * presence.*).
10
- */
11
- import { appendFileSync, closeSync, mkdirSync, openSync } from "node:fs";
12
- import { dirname, join } from "node:path";
13
- import { maybeRotateEventStream } from "../../hooks/events/rotate.js";
14
- import { ulid } from "./ulid.js";
15
- const SCHEMA_VERSION = 1;
16
- const STREAM_FILE = ".harnery/events.ndjson";
17
- const LOCK_FILE = ".harnery/events.ndjson.lock";
18
- const MAX_LINE_BYTES = 64 * 1024;
19
- export function buildEnvelope(input) {
20
- return {
21
- schema_version: SCHEMA_VERSION,
22
- event_id: ulid(),
23
- event_type: input.event_type,
24
- ts: input.ts ?? new Date().toISOString(),
25
- instance_id: input.instance_id,
26
- session_id: input.session_id,
27
- parent_session_id: input.parent_session_id,
28
- turn_id: input.turn_id,
29
- parent_turn_id: input.parent_turn_id,
30
- adapter: input.adapter,
31
- source: input.source ?? "agent-coord",
32
- data: input.data,
33
- };
34
- }
35
- export function emit(coordRoot, input) {
36
- const envelope = buildEnvelope(input);
37
- const streamPath = join(coordRoot, STREAM_FILE);
38
- const lockPath = join(coordRoot, LOCK_FILE);
39
- // Size-triggered rotation (shared with the agent-hooks emitter): roll the
40
- // active file to a dated archive when it crosses the cap. Fail-soft.
41
- maybeRotateEventStream(coordRoot);
42
- ensureDir(dirname(streamPath));
43
- ensureFile(lockPath);
44
- let line = `${JSON.stringify(envelope)}\n`;
45
- if (Buffer.byteLength(line, "utf8") > MAX_LINE_BYTES) {
46
- line = `${JSON.stringify({
47
- ...envelope,
48
- data: { __over_size_limit: true, original_bytes: Buffer.byteLength(line, "utf8") },
49
- })}\n`;
50
- }
51
- const lockFd = openSync(lockPath, "r+");
52
- try {
53
- appendFileSync(streamPath, line, { encoding: "utf8", flag: "a" });
54
- }
55
- finally {
56
- closeSync(lockFd);
57
- }
58
- return envelope;
59
- }
60
- function ensureDir(path) {
61
- try {
62
- mkdirSync(path, { recursive: true });
63
- }
64
- catch {
65
- /* swallow */
66
- }
67
- }
68
- function ensureFile(path) {
69
- try {
70
- closeSync(openSync(path, "a"));
71
- }
72
- catch {
73
- /* swallow */
74
- }
75
- }
@@ -1,11 +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
- * Intentionally duplicated from the agent-hooks ULID generator: agent-hooks
6
- * and agent-coord stay strictly-separated packages, sharing only event/schema
7
- * types. The writer side reimplements per-module so neither depends on the
8
- * other's runtime code.
9
- */
10
- export declare function ulid(): string;
11
- //# sourceMappingURL=ulid.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ulid.d.ts","sourceRoot":"","sources":["../../../../src/core/agents/events/ulid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,wBAAgB,IAAI,IAAI,MAAM,CAI7B"}
@@ -1,47 +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
- * Intentionally duplicated from the agent-hooks ULID generator: agent-hooks
6
- * and agent-coord stay strictly-separated packages, sharing only event/schema
7
- * types. The writer side reimplements per-module so neither depends on the
8
- * other's runtime code.
9
- */
10
- const ALPHABET = "0123456789ABCDEFGHJKMNPQRSTVWXYZ";
11
- export function ulid() {
12
- const ts = encodeTime(Date.now());
13
- const rnd = encodeRandom();
14
- return ts + rnd;
15
- }
16
- function encodeTime(ms) {
17
- let out = "";
18
- let n = BigInt(ms);
19
- const base = BigInt(32);
20
- for (let i = 0; i < 10; i++) {
21
- const mod = Number(n % base);
22
- out = ALPHABET[mod] + out;
23
- n = n / base;
24
- }
25
- return out;
26
- }
27
- function encodeRandom() {
28
- const bytes = new Uint8Array(10);
29
- crypto.getRandomValues(bytes);
30
- let out = "";
31
- let buf = 0n;
32
- let bits = 0;
33
- for (const b of bytes) {
34
- buf = (buf << 8n) | BigInt(b);
35
- bits += 8;
36
- while (bits >= 5) {
37
- bits -= 5;
38
- const idx = Number((buf >> BigInt(bits)) & 0x1fn);
39
- out += ALPHABET[idx];
40
- }
41
- }
42
- if (bits > 0) {
43
- const idx = Number((buf << BigInt(5 - bits)) & 0x1fn);
44
- out += ALPHABET[idx];
45
- }
46
- return out.slice(0, 16);
47
- }