harnery 0.36.0 → 0.37.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/dist/commander.js +4 -0
  2. package/dist/commands/agents.d.ts.map +1 -1
  3. package/dist/commands/agents.js +87 -46
  4. package/dist/commands/artifacts.d.ts.map +1 -1
  5. package/dist/commands/artifacts.js +26 -1
  6. package/dist/commands/browse.d.ts.map +1 -1
  7. package/dist/commands/browse.js +11 -0
  8. package/dist/commands/diagnostics.d.ts +4 -0
  9. package/dist/commands/diagnostics.d.ts.map +1 -0
  10. package/dist/commands/diagnostics.js +229 -0
  11. package/dist/commands/files.d.ts +12 -0
  12. package/dist/commands/files.d.ts.map +1 -1
  13. package/dist/commands/files.js +54 -1
  14. package/dist/commands/governor.d.ts.map +1 -1
  15. package/dist/commands/governor.js +4 -0
  16. package/dist/commands/ledger-v3.d.ts.map +1 -1
  17. package/dist/commands/ledger-v3.js +71 -2
  18. package/dist/commands/qa-run.d.ts +4 -0
  19. package/dist/commands/qa-run.d.ts.map +1 -0
  20. package/dist/commands/qa-run.js +141 -0
  21. package/dist/commands/resources.d.ts +4 -0
  22. package/dist/commands/resources.d.ts.map +1 -0
  23. package/dist/commands/resources.js +29 -0
  24. package/dist/commands/supervisor.d.ts +4 -0
  25. package/dist/commands/supervisor.d.ts.map +1 -0
  26. package/dist/commands/supervisor.js +101 -0
  27. package/dist/commands/web.d.ts.map +1 -1
  28. package/dist/commands/web.js +17 -0
  29. package/dist/commands/workflow.d.ts.map +1 -1
  30. package/dist/commands/workflow.js +4 -0
  31. package/dist/core/agents/cli.js +7 -3
  32. package/dist/core/agents/health.d.ts +17 -0
  33. package/dist/core/agents/health.d.ts.map +1 -0
  34. package/dist/core/agents/health.js +109 -0
  35. package/dist/core/agents/mailbox.d.ts +92 -0
  36. package/dist/core/agents/mailbox.d.ts.map +1 -0
  37. package/dist/core/agents/mailbox.js +325 -0
  38. package/dist/core/agents/reconcile-coordination-v3.d.ts +44 -0
  39. package/dist/core/agents/reconcile-coordination-v3.d.ts.map +1 -0
  40. package/dist/core/agents/reconcile-coordination-v3.js +58 -0
  41. package/dist/core/agents/render/prompt-context.d.ts +5 -0
  42. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  43. package/dist/core/agents/render/prompt-context.js +34 -13
  44. package/dist/core/agents/render/session-context.d.ts +8 -0
  45. package/dist/core/agents/render/session-context.d.ts.map +1 -1
  46. package/dist/core/agents/render/session-context.js +34 -3
  47. package/dist/core/agents/rules/commit-conflict.d.ts.map +1 -1
  48. package/dist/core/agents/rules/commit-conflict.js +50 -1
  49. package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
  50. package/dist/core/agents/rules/stop-hook.js +6 -10
  51. package/dist/core/agents/session-finalizer-v3.js +4 -1
  52. package/dist/core/artifacts/index.d.ts +26 -1
  53. package/dist/core/artifacts/index.d.ts.map +1 -1
  54. package/dist/core/artifacts/index.js +146 -6
  55. package/dist/core/config.d.ts +12 -0
  56. package/dist/core/config.d.ts.map +1 -1
  57. package/dist/core/config.js +43 -0
  58. package/dist/core/diagnostics/advice.d.ts +9 -0
  59. package/dist/core/diagnostics/advice.d.ts.map +1 -0
  60. package/dist/core/diagnostics/advice.js +112 -0
  61. package/dist/core/diagnostics/bundle.d.ts +35 -0
  62. package/dist/core/diagnostics/bundle.d.ts.map +1 -0
  63. package/dist/core/diagnostics/bundle.js +874 -0
  64. package/dist/core/diagnostics/comparison.d.ts +5 -0
  65. package/dist/core/diagnostics/comparison.d.ts.map +1 -0
  66. package/dist/core/diagnostics/comparison.js +444 -0
  67. package/dist/core/diagnostics/contract.d.ts +245 -0
  68. package/dist/core/diagnostics/contract.d.ts.map +1 -0
  69. package/dist/core/diagnostics/contract.js +18 -0
  70. package/dist/core/diagnostics/identity.d.ts +3 -0
  71. package/dist/core/diagnostics/identity.d.ts.map +1 -0
  72. package/dist/core/diagnostics/identity.js +10 -0
  73. package/dist/core/diagnostics/index.d.ts +8 -0
  74. package/dist/core/diagnostics/index.d.ts.map +1 -0
  75. package/dist/core/diagnostics/index.js +7 -0
  76. package/dist/core/diagnostics/replay.d.ts +8 -0
  77. package/dist/core/diagnostics/replay.d.ts.map +1 -0
  78. package/dist/core/diagnostics/replay.js +213 -0
  79. package/dist/core/diagnostics/sanitize.d.ts +9 -0
  80. package/dist/core/diagnostics/sanitize.d.ts.map +1 -0
  81. package/dist/core/diagnostics/sanitize.js +84 -0
  82. package/dist/core/events/legacy-storage/compression.d.ts +13 -0
  83. package/dist/core/events/legacy-storage/compression.d.ts.map +1 -0
  84. package/dist/core/events/legacy-storage/compression.js +107 -0
  85. package/dist/core/events/legacy-storage/index.d.ts +1 -0
  86. package/dist/core/events/legacy-storage/index.d.ts.map +1 -1
  87. package/dist/core/events/legacy-storage/index.js +1 -0
  88. package/dist/core/events/v3/archive-retention.d.ts +33 -0
  89. package/dist/core/events/v3/archive-retention.d.ts.map +1 -0
  90. package/dist/core/events/v3/archive-retention.js +195 -0
  91. package/dist/core/events/v3/capabilities.d.ts +1 -1
  92. package/dist/core/events/v3/capabilities.d.ts.map +1 -1
  93. package/dist/core/events/v3/capabilities.js +1 -0
  94. package/dist/core/events/v3/index.d.ts +1 -0
  95. package/dist/core/events/v3/index.d.ts.map +1 -1
  96. package/dist/core/events/v3/index.js +1 -0
  97. package/dist/core/events/v3/live-routing.d.ts.map +1 -1
  98. package/dist/core/events/v3/live-routing.js +1 -0
  99. package/dist/core/events/v3/producers/hook-base.d.ts +1 -1
  100. package/dist/core/events/v3/producers/hook-base.d.ts.map +1 -1
  101. package/dist/core/events/v3/producers/hook-base.js +13 -2
  102. package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
  103. package/dist/core/events/v3/producers/intake.js +1 -0
  104. package/dist/core/events/v3/producers/recorder.d.ts +16 -0
  105. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
  106. package/dist/core/events/v3/producers/recorder.js +88 -1
  107. package/dist/core/hooks/adapter/output.d.ts +8 -0
  108. package/dist/core/hooks/adapter/output.d.ts.map +1 -1
  109. package/dist/core/hooks/adapter/output.js +11 -1
  110. package/dist/core/hooks/cli.js +183 -192
  111. package/dist/core/hooks/health.d.ts +59 -0
  112. package/dist/core/hooks/health.d.ts.map +1 -0
  113. package/dist/core/hooks/health.js +84 -0
  114. package/dist/core/resources/contract.d.ts +90 -0
  115. package/dist/core/resources/contract.d.ts.map +1 -0
  116. package/dist/core/resources/contract.js +2 -0
  117. package/dist/core/resources/index.d.ts +6 -0
  118. package/dist/core/resources/index.d.ts.map +1 -0
  119. package/dist/core/resources/index.js +5 -0
  120. package/dist/core/resources/sampler.d.ts +27 -0
  121. package/dist/core/resources/sampler.d.ts.map +1 -0
  122. package/dist/core/resources/sampler.js +357 -0
  123. package/dist/core/resources/service-status.d.ts +3 -0
  124. package/dist/core/resources/service-status.d.ts.map +1 -0
  125. package/dist/core/resources/service-status.js +48 -0
  126. package/dist/core/resources/service.d.ts +26 -0
  127. package/dist/core/resources/service.d.ts.map +1 -0
  128. package/dist/core/resources/service.js +292 -0
  129. package/dist/core/resources/storage.d.ts +13 -0
  130. package/dist/core/resources/storage.d.ts.map +1 -0
  131. package/dist/core/resources/storage.js +30 -0
  132. package/dist/core/storage/atomic-json.d.ts +3 -0
  133. package/dist/core/storage/atomic-json.d.ts.map +1 -0
  134. package/dist/core/storage/atomic-json.js +15 -0
  135. package/dist/core/storage/builtins.d.ts.map +1 -1
  136. package/dist/core/storage/builtins.js +45 -6
  137. package/dist/core/storage/logger.d.ts +2 -0
  138. package/dist/core/storage/logger.d.ts.map +1 -1
  139. package/dist/core/storage/logger.js +2 -0
  140. package/dist/core/storage/query.d.ts +14 -0
  141. package/dist/core/storage/query.d.ts.map +1 -1
  142. package/dist/core/storage/query.js +51 -0
  143. package/dist/core/supervisor/activity.d.ts +4 -0
  144. package/dist/core/supervisor/activity.d.ts.map +1 -0
  145. package/dist/core/supervisor/activity.js +141 -0
  146. package/dist/core/supervisor/contract.d.ts +268 -0
  147. package/dist/core/supervisor/contract.d.ts.map +1 -0
  148. package/dist/core/supervisor/contract.js +35 -0
  149. package/dist/core/supervisor/explanations.d.ts +4 -0
  150. package/dist/core/supervisor/explanations.d.ts.map +1 -0
  151. package/dist/core/supervisor/explanations.js +71 -0
  152. package/dist/core/supervisor/findings.d.ts +20 -0
  153. package/dist/core/supervisor/findings.d.ts.map +1 -0
  154. package/dist/core/supervisor/findings.js +399 -0
  155. package/dist/core/supervisor/history.d.ts +9 -0
  156. package/dist/core/supervisor/history.d.ts.map +1 -0
  157. package/dist/core/supervisor/history.js +46 -0
  158. package/dist/core/supervisor/hook-health-alerts.d.ts +14 -0
  159. package/dist/core/supervisor/hook-health-alerts.d.ts.map +1 -0
  160. package/dist/core/supervisor/hook-health-alerts.js +70 -0
  161. package/dist/core/supervisor/hook-health-storage.d.ts +5 -0
  162. package/dist/core/supervisor/hook-health-storage.d.ts.map +1 -0
  163. package/dist/core/supervisor/hook-health-storage.js +24 -0
  164. package/dist/core/supervisor/hook-health.d.ts +72 -0
  165. package/dist/core/supervisor/hook-health.d.ts.map +1 -0
  166. package/dist/core/supervisor/hook-health.js +203 -0
  167. package/dist/core/supervisor/hooks.d.ts +10 -0
  168. package/dist/core/supervisor/hooks.d.ts.map +1 -0
  169. package/dist/core/supervisor/hooks.js +28 -0
  170. package/dist/core/supervisor/index.d.ts +15 -0
  171. package/dist/core/supervisor/index.d.ts.map +1 -0
  172. package/dist/core/supervisor/index.js +14 -0
  173. package/dist/core/supervisor/log-feed.d.ts +9 -0
  174. package/dist/core/supervisor/log-feed.d.ts.map +1 -0
  175. package/dist/core/supervisor/log-feed.js +103 -0
  176. package/dist/core/supervisor/service.d.ts +29 -0
  177. package/dist/core/supervisor/service.d.ts.map +1 -0
  178. package/dist/core/supervisor/service.js +450 -0
  179. package/dist/core/supervisor/services.d.ts +11 -0
  180. package/dist/core/supervisor/services.d.ts.map +1 -0
  181. package/dist/core/supervisor/services.js +155 -0
  182. package/dist/core/supervisor/status.d.ts +3 -0
  183. package/dist/core/supervisor/status.d.ts.map +1 -0
  184. package/dist/core/supervisor/status.js +48 -0
  185. package/dist/core/supervisor/storage.d.ts +30 -0
  186. package/dist/core/supervisor/storage.d.ts.map +1 -0
  187. package/dist/core/supervisor/storage.js +73 -0
  188. package/dist/core/supervisor/timeline.d.ts +3 -0
  189. package/dist/core/supervisor/timeline.d.ts.map +1 -0
  190. package/dist/core/supervisor/timeline.js +87 -0
  191. package/dist/core/workflow/admission.d.ts +23 -0
  192. package/dist/core/workflow/admission.d.ts.map +1 -0
  193. package/dist/core/workflow/admission.js +136 -0
  194. package/dist/core/workflow/engine.d.ts.map +1 -1
  195. package/dist/core/workflow/engine.js +77 -2
  196. package/dist/core/workflow/index.d.ts +3 -2
  197. package/dist/core/workflow/index.d.ts.map +1 -1
  198. package/dist/core/workflow/index.js +2 -1
  199. package/dist/core/workflow/proof.d.ts +2 -1
  200. package/dist/core/workflow/proof.d.ts.map +1 -1
  201. package/dist/core/workflow/proof.js +39 -1
  202. package/dist/core/workflow/run-state.d.ts +3 -2
  203. package/dist/core/workflow/run-state.d.ts.map +1 -1
  204. package/dist/core/workflow/run-state.js +8 -1
  205. package/dist/core/workflow/types.d.ts +33 -1
  206. package/dist/core/workflow/types.d.ts.map +1 -1
  207. package/dist/core/workflow/types.js +2 -1
  208. package/dist/lib/browser/client.d.ts +5 -0
  209. package/dist/lib/browser/client.d.ts.map +1 -1
  210. package/dist/lib/browser/client.js +1 -0
  211. package/dist/lib/browser/index.d.ts +2 -0
  212. package/dist/lib/browser/index.d.ts.map +1 -1
  213. package/dist/lib/browser/index.js +2 -0
  214. package/dist/lib/browser/qa-run-contracts.d.ts +173 -0
  215. package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -0
  216. package/dist/lib/browser/qa-run-contracts.js +226 -0
  217. package/dist/lib/browser/qa-run.d.ts +51 -0
  218. package/dist/lib/browser/qa-run.d.ts.map +1 -0
  219. package/dist/lib/browser/qa-run.js +684 -0
  220. package/dist/lib/coord-root-id.d.ts +9 -0
  221. package/dist/lib/coord-root-id.d.ts.map +1 -0
  222. package/dist/lib/coord-root-id.js +17 -0
  223. package/dist/lib/instructions/apply.d.ts +3 -1
  224. package/dist/lib/instructions/apply.d.ts.map +1 -1
  225. package/dist/lib/instructions/apply.js +74 -3
  226. package/dist/lib/instructions/templates.d.ts.map +1 -1
  227. package/dist/lib/instructions/templates.js +6 -0
  228. package/package.json +12 -1
  229. package/src/commander.ts +26 -0
  230. package/src/commands/agents.ts +102 -49
  231. package/src/commands/artifacts.ts +40 -2
  232. package/src/commands/browse.ts +15 -0
  233. package/src/commands/diagnostics.ts +271 -0
  234. package/src/commands/files.ts +102 -2
  235. package/src/commands/governor.ts +8 -0
  236. package/src/commands/ledger-v3.ts +82 -0
  237. package/src/commands/qa-run.ts +184 -0
  238. package/src/commands/resources.ts +38 -0
  239. package/src/commands/supervisor.ts +141 -0
  240. package/src/commands/web.ts +19 -0
  241. package/src/commands/workflow.ts +8 -0
  242. package/src/core/agents/cli.ts +7 -3
  243. package/src/core/agents/health.ts +142 -0
  244. package/src/core/agents/mailbox.ts +373 -0
  245. package/src/core/agents/reconcile-coordination-v3.ts +77 -0
  246. package/src/core/agents/render/prompt-context.ts +42 -12
  247. package/src/core/agents/render/session-context.ts +37 -3
  248. package/src/core/agents/rules/commit-conflict.ts +58 -1
  249. package/src/core/agents/rules/stop-hook.ts +6 -12
  250. package/src/core/agents/session-finalizer-v3.ts +4 -1
  251. package/src/core/artifacts/index.ts +196 -10
  252. package/src/core/config.ts +111 -2
  253. package/src/core/diagnostics/advice.ts +147 -0
  254. package/src/core/diagnostics/bundle.ts +1142 -0
  255. package/src/core/diagnostics/comparison.ts +565 -0
  256. package/src/core/diagnostics/contract.ts +311 -0
  257. package/src/core/diagnostics/identity.ts +11 -0
  258. package/src/core/diagnostics/index.ts +7 -0
  259. package/src/core/diagnostics/replay.ts +314 -0
  260. package/src/core/diagnostics/sanitize.ts +97 -0
  261. package/src/core/events/legacy-storage/compression.ts +130 -0
  262. package/src/core/events/legacy-storage/index.ts +1 -0
  263. package/src/core/events/v3/archive-retention.ts +251 -0
  264. package/src/core/events/v3/capabilities.ts +2 -0
  265. package/src/core/events/v3/index.ts +9 -0
  266. package/src/core/events/v3/live-routing.ts +1 -0
  267. package/src/core/events/v3/producers/hook-base.ts +14 -2
  268. package/src/core/events/v3/producers/intake.ts +1 -0
  269. package/src/core/events/v3/producers/recorder.ts +110 -1
  270. package/src/core/hooks/adapter/output.ts +12 -1
  271. package/src/core/hooks/cli.ts +192 -215
  272. package/src/core/hooks/health.ts +146 -0
  273. package/src/core/resources/contract.ts +98 -0
  274. package/src/core/resources/index.ts +5 -0
  275. package/src/core/resources/sampler.ts +458 -0
  276. package/src/core/resources/service-status.ts +62 -0
  277. package/src/core/resources/service.ts +337 -0
  278. package/src/core/resources/storage.ts +44 -0
  279. package/src/core/storage/atomic-json.ts +15 -0
  280. package/src/core/storage/builtins.ts +62 -6
  281. package/src/core/storage/logger.ts +2 -0
  282. package/src/core/storage/query.ts +58 -0
  283. package/src/core/supervisor/activity.ts +193 -0
  284. package/src/core/supervisor/contract.ts +312 -0
  285. package/src/core/supervisor/explanations.ts +104 -0
  286. package/src/core/supervisor/findings.ts +788 -0
  287. package/src/core/supervisor/history.ts +61 -0
  288. package/src/core/supervisor/hook-health-alerts.ts +108 -0
  289. package/src/core/supervisor/hook-health-storage.ts +25 -0
  290. package/src/core/supervisor/hook-health.ts +301 -0
  291. package/src/core/supervisor/hooks.ts +35 -0
  292. package/src/core/supervisor/index.ts +14 -0
  293. package/src/core/supervisor/log-feed.ts +131 -0
  294. package/src/core/supervisor/service.ts +511 -0
  295. package/src/core/supervisor/services.ts +203 -0
  296. package/src/core/supervisor/status.ts +59 -0
  297. package/src/core/supervisor/storage.ts +126 -0
  298. package/src/core/supervisor/timeline.ts +133 -0
  299. package/src/core/workflow/admission.ts +215 -0
  300. package/src/core/workflow/engine.ts +93 -1
  301. package/src/core/workflow/index.ts +10 -0
  302. package/src/core/workflow/proof.ts +54 -1
  303. package/src/core/workflow/run-state.ts +13 -1
  304. package/src/core/workflow/types.ts +39 -1
  305. package/src/lib/browser/client.ts +6 -0
  306. package/src/lib/browser/index.ts +29 -0
  307. package/src/lib/browser/qa-run-contracts.ts +380 -0
  308. package/src/lib/browser/qa-run.ts +784 -0
  309. package/src/lib/coord-root-id.ts +23 -0
  310. package/src/lib/instructions/apply.ts +81 -2
  311. package/src/lib/instructions/templates.ts +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.d.ts","sourceRoot":"","sources":["../../src/commands/supervisor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAe1E,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAwGN"}
@@ -0,0 +1,101 @@
1
+ import { resolve } from "node:path";
2
+ import { readSupervisorHookHealth } from "../core/supervisor/hook-health-storage.js";
3
+ import { requestSupervisorStop, runSupervisor, spawnSupervisor, } from "../core/supervisor/service.js";
4
+ import { readSupervisorStatus } from "../core/supervisor/status.js";
5
+ import { readSupervisorFindings, readSupervisorHistory, readSupervisorLogFeed, readSupervisorSnapshot, } from "../core/supervisor/storage.js";
6
+ export function registerSupervisorCommand(program, emit, context) {
7
+ const supervisor = program
8
+ .command("supervisor")
9
+ .description("Run Harnery's optional local diagnostic supervisor");
10
+ supervisor
11
+ .command("start")
12
+ .description("Start the detached local supervisor")
13
+ .option("--root <path>", "Explicit coordination root")
14
+ .option("--interval-ms <milliseconds>", "Collection interval from 500 to 60000 ms", integer)
15
+ .option("--idle-exit-ms <milliseconds>", "Exit after this long without a live dashboard consumer or attributed agent", integer)
16
+ .option("--keep-alive", "Remain resident until explicitly stopped")
17
+ .action(async (options) => {
18
+ try {
19
+ emit.data(await spawnSupervisor(resolve(options.root ?? coordRoot(context)), {
20
+ intervalMs: options.intervalMs,
21
+ idleExitMs: options.idleExitMs,
22
+ keepAlive: options.keepAlive,
23
+ }));
24
+ }
25
+ catch (error) {
26
+ fail(emit, "supervisor_start_failed", error);
27
+ }
28
+ });
29
+ supervisor
30
+ .command("status")
31
+ .description("Show supervisor liveness and its latest bounded projections")
32
+ .option("--root <path>", "Explicit coordination root")
33
+ .action((options) => {
34
+ try {
35
+ const root = resolve(options.root ?? coordRoot(context));
36
+ emit.data({
37
+ service: readSupervisorStatus(root),
38
+ snapshot: readSupervisorSnapshot(root),
39
+ history: readSupervisorHistory(root),
40
+ findings: readSupervisorFindings(root),
41
+ hook_health: readSupervisorHookHealth(root),
42
+ log_feed: readSupervisorLogFeed(root),
43
+ });
44
+ }
45
+ catch (error) {
46
+ fail(emit, "supervisor_status_failed", error);
47
+ }
48
+ });
49
+ supervisor
50
+ .command("stop")
51
+ .description("Request a graceful supervisor stop")
52
+ .option("--root <path>", "Explicit coordination root")
53
+ .action(async (options) => {
54
+ try {
55
+ const root = resolve(options.root ?? coordRoot(context));
56
+ let status = requestSupervisorStop(root);
57
+ const deadline = Date.now() + 5_000;
58
+ while (status.running && Date.now() < deadline) {
59
+ await new Promise((done) => setTimeout(done, 50));
60
+ status = readSupervisorStatus(root);
61
+ }
62
+ emit.data(status);
63
+ }
64
+ catch (error) {
65
+ fail(emit, "supervisor_stop_failed", error);
66
+ }
67
+ });
68
+ supervisor
69
+ .command("daemon", { hidden: true })
70
+ .description("Internal detached local supervisor entrypoint")
71
+ .option("--root <path>", "Explicit coordination root")
72
+ .option("--interval-ms <milliseconds>", "Collection interval", integer)
73
+ .option("--idle-exit-ms <milliseconds>", "Idle exit interval", integer)
74
+ .option("--keep-alive", "Remain resident until explicitly stopped")
75
+ .action(async (options) => {
76
+ try {
77
+ emit.data(await runSupervisor({
78
+ coordRoot: resolve(options.root ?? coordRoot(context)),
79
+ intervalMs: options.intervalMs,
80
+ idleExitMs: options.idleExitMs,
81
+ keepAlive: options.keepAlive,
82
+ }));
83
+ }
84
+ catch (error) {
85
+ fail(emit, "supervisor_daemon_failed", error);
86
+ }
87
+ });
88
+ }
89
+ function coordRoot(context) {
90
+ return context?.resolveCoordRoot?.() ?? context?.repoRoot ?? process.cwd();
91
+ }
92
+ function integer(value) {
93
+ const parsed = Number(value);
94
+ if (!Number.isInteger(parsed))
95
+ throw new Error(`expected an integer, got ${value}`);
96
+ return parsed;
97
+ }
98
+ function fail(emit, code, error) {
99
+ emit.error({ code, message: error instanceof Error ? error.message : String(error) });
100
+ emit.setExitCode(1);
101
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAyCnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAQR;AAyCD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAevE;AAsBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAuN5E"}
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/commands/web.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA8CnD;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAM1D;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED,iFAAiF;AACjF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAKhF;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,MAAM,EACjB,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAQR;AAmDD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAevE;AAsBD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA2N5E"}
@@ -6,6 +6,8 @@ import { fileURLToPath, pathToFileURL } from "node:url";
6
6
  import { DEFAULT_WEB_PORT, resolveWebPort } from "../core/config.js";
7
7
  import { ensureSemanticServiceRunning } from "../core/semantic/service.js";
8
8
  import { processLogDestination } from "../core/storage/process-log.js";
9
+ import { ensureSupervisorRunning } from "../core/supervisor/service.js";
10
+ import { registerSupervisorConsumer, unregisterSupervisorConsumer, } from "../core/supervisor/services.js";
9
11
  import { parsePerformanceWindow, readWebPerformanceReport, WEB_PERFORMANCE_LOG, } from "../lib/web-performance.js";
10
12
  import { lazyFetchWebRoot, webRunner } from "./web-fetch.js";
11
13
  /**
@@ -100,6 +102,17 @@ async function startSemanticServiceWithWeb(coordRoot, emit) {
100
102
  emit.log(`semantic reader · unavailable (${result.error ?? "startup failed"})`, "warn");
101
103
  }
102
104
  }
105
+ async function startSupervisorWithWeb(coordRoot, emit) {
106
+ registerSupervisorConsumer(coordRoot, { id: "dashboard" });
107
+ const result = await ensureSupervisorRunning(coordRoot);
108
+ if (result.state === "started")
109
+ emit.log("local supervisor · started automatically", "info");
110
+ if (result.state === "running")
111
+ emit.log("local supervisor · already running", "info");
112
+ if (result.state === "unavailable") {
113
+ emit.log(`local supervisor · unavailable (${result.error})`, "warn");
114
+ }
115
+ }
103
116
  /**
104
117
  * Resolve the web app root. A local `web/` (source checkout / submodule) wins.
105
118
  * Otherwise, on an npm install, lazy-fetch it (clone + install) unless the
@@ -203,6 +216,7 @@ export function registerWebCommand(program, emit) {
203
216
  }
204
217
  if (!(await requireAvailablePort(emit, port)))
205
218
  return;
219
+ await startSupervisorWithWeb(coordRoot, emit);
206
220
  await startSemanticServiceWithWeb(coordRoot, emit);
207
221
  const heapMb = resolveMaxOldSpaceMb(opts.maxOldSpace);
208
222
  const nodeOptions = nodeOptionsWithWebDiagnostics(root, heapMb);
@@ -232,6 +246,7 @@ export function registerWebCommand(program, emit) {
232
246
  process.on("SIGINT", () => cleanup("SIGINT"));
233
247
  process.on("SIGTERM", () => cleanup("SIGTERM"));
234
248
  child.on("exit", (code, sig) => {
249
+ unregisterSupervisorConsumer(coordRoot, "dashboard");
235
250
  if (sig) {
236
251
  emit.log(`web exited on ${sig}`, "info");
237
252
  }
@@ -292,6 +307,7 @@ export function registerWebCommand(program, emit) {
292
307
  }
293
308
  if (!(await requireAvailablePort(emit, port)))
294
309
  return;
310
+ await startSupervisorWithWeb(coordRoot, emit);
295
311
  await startSemanticServiceWithWeb(coordRoot, emit);
296
312
  const heapMb = resolveMaxOldSpaceMb(opts.maxOldSpace);
297
313
  const nodeOptions = nodeOptionsWithWebDiagnostics(root, heapMb);
@@ -320,6 +336,7 @@ export function registerWebCommand(program, emit) {
320
336
  process.on("SIGINT", () => cleanup("SIGINT"));
321
337
  process.on("SIGTERM", () => cleanup("SIGTERM"));
322
338
  child.on("exit", (code) => {
339
+ unregisterSupervisorConsumer(coordRoot, "dashboard");
323
340
  process.exitCode = code ?? 0;
324
341
  });
325
342
  });
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAyEnD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CA4uBjF"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AA0EnD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAmvBjF"}
@@ -24,6 +24,7 @@ export function registerWorkflowCommand(program, emit) {
24
24
  .description("Workflow script (plain JS: `export default async ({agent, parallel, stage, log, evidence, authorize}) => …`)")
25
25
  .option("--max-agents <n>", "Total-agent ceiling for the run (default 50)")
26
26
  .option("--concurrency <n>", "Concurrent-subagent cap (default 4)")
27
+ .option("--observe-pressure", "Record observer-only local pressure before the first real child dispatch")
27
28
  .option("--cwd <dir>", "Working directory children spawn in (default: coord root)")
28
29
  .option("--adapter <name>", `Default adapter for agent() calls: ${adapters.join(" | ")} (default claude-code); scripts can override per agent via opts.adapter`)
29
30
  .option("--resume-from <run-id>", "Reuse completed agent results from a prior run's transcript; only changed/failed calls re-run")
@@ -94,6 +95,9 @@ export function registerWorkflowCommand(program, emit) {
94
95
  allowApiBilling: opts.allowApiBilling,
95
96
  maxAgents: opts.maxAgents ? Number.parseInt(opts.maxAgents, 10) : undefined,
96
97
  concurrency: opts.concurrency ? Number.parseInt(opts.concurrency, 10) : undefined,
98
+ diagnosticAdmission: opts.observePressure
99
+ ? { schema_version: 1, mode: "shadow" }
100
+ : undefined,
97
101
  cwd: opts.cwd,
98
102
  ...adapterProofInputs(registry.list().map((adapter) => adapter.profile), { versionProbe: probeBinaryVersion }),
99
103
  policy: opts.policy ? loadPolicyFile(opts.policy) : undefined,
@@ -621,8 +621,10 @@ async function handleStaleSweep(root, _rest) {
621
621
  return 0;
622
622
  }
623
623
  async function handleReconcileFinalization(root) {
624
- const { reconcileSessionFinalizationV3 } = await import("./session-finalizer-v3.js");
625
- const result = reconcileSessionFinalizationV3(root);
624
+ // Shares the supervisor composition with `agents reconcile` so session start
625
+ // sweeps the stale cache in the same pass, as ADR 0077 specified.
626
+ const { reconcileCoordinationV3 } = await import("./reconcile-coordination-v3.js");
627
+ const result = reconcileCoordinationV3(root);
626
628
  process.stdout.write(`${JSON.stringify(result)}\n`);
627
629
  return result.diagnostics.some((item) => item === "ledger_not_authority_safe") ? 2 : 0;
628
630
  }
@@ -671,6 +673,7 @@ async function handlePromptContext(root, rest) {
671
673
  const instanceId = args.instance;
672
674
  const sessionId = args.session ?? instanceId;
673
675
  const agentName = args.name;
676
+ const adapter = args.adapter;
674
677
  const sessionNameNudge = args["session-name-nudge"] === "true";
675
678
  const taskNudge = args["task-nudge"] === "true";
676
679
  const hostPromptReminder = args["host-prompt-reminder"] === "true";
@@ -679,7 +682,7 @@ async function handlePromptContext(root, rest) {
679
682
  // reminder with the adapter-neutral wording.
680
683
  const turnRitualNudge = args["turn-ritual-nudge"] === "true" ? "generic" : args["turn-ritual-nudge"];
681
684
  if (!instanceId) {
682
- process.stderr.write("agent-coord prompt-context --instance <id> [--session <id>] [--name <agent-name>] [--session-name-nudge] [--task-nudge] [--host-prompt-reminder] [--status-footer-nudge] [--turn-ritual-nudge <adapter>]\n");
685
+ process.stderr.write("agent-coord prompt-context --instance <id> [--session <id>] [--name <agent-name>] [--adapter <id>] [--session-name-nudge] [--task-nudge] [--host-prompt-reminder] [--status-footer-nudge] [--turn-ritual-nudge <adapter>]\n");
683
686
  return 2;
684
687
  }
685
688
  const { renderPromptContext } = await import("./render/prompt-context.js");
@@ -693,6 +696,7 @@ async function handlePromptContext(root, rest) {
693
696
  hostPromptReminder,
694
697
  statusFooterNudge,
695
698
  turnRitualNudge,
699
+ adapter,
696
700
  });
697
701
  process.stdout.write(text);
698
702
  return 0;
@@ -0,0 +1,17 @@
1
+ import type { SupervisorCapability, SupervisorSourceReference } from "../supervisor/contract.js";
2
+ export interface CoordinationHealthDiagnostic {
3
+ code: "malformed_json" | "invalid_contract";
4
+ byte_offset: number;
5
+ segment_ordinal: number;
6
+ event_id?: string;
7
+ }
8
+ export interface CoordinationHealthSnapshot {
9
+ observed_at: string;
10
+ capability: SupervisorCapability;
11
+ recent_events: readonly SupervisorSourceReference[];
12
+ diagnostics: readonly CoordinationHealthDiagnostic[];
13
+ omitted_event_count: number;
14
+ }
15
+ /** Read bounded V3 references without retaining event payloads or the full ledger reader. */
16
+ export declare function collectCoordinationHealthSnapshot(coordRoot: string, now?: Date): CoordinationHealthSnapshot;
17
+ //# sourceMappingURL=health.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/core/agents/health.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AAEjG,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,gBAAgB,GAAG,kBAAkB,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,oBAAoB,CAAC;IACjC,aAAa,EAAE,SAAS,yBAAyB,EAAE,CAAC;IACpD,WAAW,EAAE,SAAS,4BAA4B,EAAE,CAAC;IACrD,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,6FAA6F;AAC7F,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,MAAM,EACjB,GAAG,OAAa,GACf,0BAA0B,CA4C5B"}
@@ -0,0 +1,109 @@
1
+ import { closeSync, existsSync, lstatSync, openSync, readSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ const MAX_EVENT_REFERENCES = 64;
4
+ const MAX_DIAGNOSTICS = 16;
5
+ const MAX_TAIL_BYTES = 256 * 1_024;
6
+ /** Read bounded V3 references without retaining event payloads or the full ledger reader. */
7
+ export function collectCoordinationHealthSnapshot(coordRoot, now = new Date()) {
8
+ const observedAt = now.toISOString();
9
+ const active = join(resolve(coordRoot), ".harnery", "ledgers", "v3", "active.ndjson");
10
+ if (!existsSync(active))
11
+ return unavailable(observedAt, "ledger-missing");
12
+ let handle;
13
+ try {
14
+ const stat = lstatSync(active);
15
+ if (stat.isSymbolicLink() || !stat.isFile())
16
+ return unavailable(observedAt, "ledger-unsafe");
17
+ if (stat.size === 0)
18
+ return available(observedAt, [], [], 0);
19
+ const start = Math.max(0, stat.size - MAX_TAIL_BYTES);
20
+ const bytes = Buffer.allocUnsafe(stat.size - start);
21
+ handle = openSync(active, "r");
22
+ const count = readSync(handle, bytes, 0, bytes.length, start);
23
+ const lines = bytes.subarray(0, count).toString("utf8").split("\n");
24
+ if (start > 0)
25
+ lines.shift();
26
+ const completeLines = lines.filter((line) => line.length > 0);
27
+ const diagnostics = [];
28
+ const references = [];
29
+ let byteOffset = start;
30
+ for (const line of completeLines) {
31
+ const reference = parseReference(line);
32
+ if (reference)
33
+ references.push(reference);
34
+ else if (diagnostics.length < MAX_DIAGNOSTICS) {
35
+ diagnostics.push({
36
+ code: line.trimStart().startsWith("{") ? "invalid_contract" : "malformed_json",
37
+ byte_offset: byteOffset,
38
+ segment_ordinal: 1,
39
+ });
40
+ }
41
+ byteOffset += Buffer.byteLength(line) + 1;
42
+ }
43
+ const recent = references.slice(-MAX_EVENT_REFERENCES);
44
+ return available(observedAt, recent, diagnostics, Math.max(0, references.length - recent.length) + (start > 0 ? 1 : 0));
45
+ }
46
+ catch {
47
+ return unavailable(observedAt, "tail-read-failed", "error");
48
+ }
49
+ finally {
50
+ if (handle !== undefined)
51
+ closeSync(handle);
52
+ }
53
+ }
54
+ function parseReference(line) {
55
+ try {
56
+ const value = JSON.parse(line);
57
+ const contract = object(value.contract);
58
+ const time = object(value.time);
59
+ const producer = object(value.producer);
60
+ if (contract.major !== 3 ||
61
+ typeof value.event_id !== "string" ||
62
+ typeof value.event_type !== "string" ||
63
+ typeof time.observed_at !== "string" ||
64
+ typeof producer.sequence !== "number" ||
65
+ !Number.isSafeInteger(producer.sequence))
66
+ return undefined;
67
+ return {
68
+ id: `v3:${value.event_id}`,
69
+ source_kind: "coordination.v3",
70
+ source_id: value.event_type,
71
+ record_id: value.event_id,
72
+ sequence: producer.sequence,
73
+ schema_version: 3,
74
+ observed_at: time.observed_at,
75
+ capability: "supported",
76
+ };
77
+ }
78
+ catch {
79
+ return undefined;
80
+ }
81
+ }
82
+ function object(value) {
83
+ return value && typeof value === "object" && !Array.isArray(value)
84
+ ? value
85
+ : {};
86
+ }
87
+ function available(observedAt, recentEvents, diagnostics, omittedEventCount) {
88
+ const state = diagnostics.length === 0 ? "supported" : "partial";
89
+ return {
90
+ observed_at: observedAt,
91
+ capability: {
92
+ source_kind: "coordination.v3.references",
93
+ state,
94
+ ...(state === "partial" ? { reason_code: diagnostics[0]?.code ?? "tail-invalid" } : {}),
95
+ },
96
+ recent_events: recentEvents.map((reference) => ({ ...reference, capability: state })),
97
+ diagnostics,
98
+ omitted_event_count: omittedEventCount,
99
+ };
100
+ }
101
+ function unavailable(observedAt, reasonCode, state = "unsupported") {
102
+ return {
103
+ observed_at: observedAt,
104
+ capability: { source_kind: "coordination.v3.references", state, reason_code: reasonCode },
105
+ recent_events: [],
106
+ diagnostics: [],
107
+ omitted_event_count: 0,
108
+ };
109
+ }
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Name-addressed durable mailbox.
3
+ *
4
+ * Peer messaging used to require a live recipient: the sender resolved a name
5
+ * to a running instance and wrote into that instance's journal. Two failures
6
+ * followed from that. A message to a name whose session had ended was refused
7
+ * outright, so the sender spent a long sequence of discovery calls looking for
8
+ * somewhere else to put it. A message to a live peer was accepted but never
9
+ * shown to them, because nothing surfaces another session's journal.
10
+ *
11
+ * This module addresses the durable persona name instead of the instance, so a
12
+ * message can be queued before its recipient exists. Delivery happens on the
13
+ * recipient's side: their next SessionStart or prompt drains the queue, shows
14
+ * the messages, and records them in their journal.
15
+ *
16
+ * Storage: `.harnery/mailbox/<slug>.jsonl`, one JSON record per line, appended
17
+ * by senders and removed by an atomic claim on the recipient's side. Delivered
18
+ * records are appended to `.harnery/mailbox/delivered/<slug>.jsonl` for audit.
19
+ *
20
+ * Related but distinct: `core/inbox` is an instance-keyed transport with a
21
+ * storage-framework service behind it. This mailbox is name-keyed, file-only,
22
+ * and follows the same shape as council manifests and journals.
23
+ */
24
+ export declare const MAILBOX_MESSAGE_SCHEMA: "harnery.mailbox-message/v1";
25
+ /** Per-message body ceiling. Larger payloads belong in a managed artifact, with
26
+ * the path sent as the message. */
27
+ export declare const MAX_BODY_BYTES = 4000;
28
+ /** Pending messages held for one name before senders are refused. */
29
+ export declare const MAX_PENDING = 25;
30
+ export interface MailboxMessageV1 {
31
+ schema: typeof MAILBOX_MESSAGE_SCHEMA;
32
+ message_id: string;
33
+ /** Bare display name the sender addressed (registry casing when known). */
34
+ to_name: string;
35
+ from_name: string;
36
+ from_instance_id: string;
37
+ created_at: string;
38
+ body: string;
39
+ /** True when the sender already appended this to a live recipient's journal,
40
+ * so the drain surfaces it without writing a duplicate entry. */
41
+ journaled: boolean;
42
+ }
43
+ export type MailboxCapacityReason = "body_limit" | "pending_limit";
44
+ export declare class MailboxCapacityError extends Error {
45
+ readonly reason_code: MailboxCapacityReason;
46
+ readonly current: number;
47
+ readonly limit: number;
48
+ constructor(reason_code: MailboxCapacityReason, current: number, limit: number);
49
+ }
50
+ /** Strip an `agent-` prefix and normalize to the registry's bare form. */
51
+ export declare function bareAgentName(raw: string): string;
52
+ export declare function mailboxDir(coordRoot: string): string;
53
+ export declare function mailboxPath(coordRoot: string, name: string): string;
54
+ /** Every name a message may be addressed to: live sessions, the durable
55
+ * identity registry, and the built-in name pool. A name outside all three is a
56
+ * typo, and queueing it would silently swallow the message. */
57
+ export declare function isAddressableName(coordRoot: string, name: string): boolean;
58
+ /** Names close enough to a miss to be worth suggesting (prefix or one edit). */
59
+ export declare function suggestNames(coordRoot: string, name: string, limit?: number): string[];
60
+ export interface QueueInput {
61
+ coordRoot: string;
62
+ toName: string;
63
+ fromName: string;
64
+ fromInstanceId: string;
65
+ body: string;
66
+ journaled?: boolean;
67
+ }
68
+ export interface QueueResult {
69
+ message: MailboxMessageV1;
70
+ path: string;
71
+ pending: number;
72
+ }
73
+ /**
74
+ * Append one message to a name's mailbox. Throws `MailboxCapacityError` when
75
+ * the body or the pending queue is over its ceiling; the caller turns that into
76
+ * an actionable CLI error.
77
+ */
78
+ export declare function queueMailboxMessage(input: QueueInput): QueueResult;
79
+ /** Pending messages for a name, without claiming them. */
80
+ export declare function peekMailbox(coordRoot: string, name: string): MailboxMessageV1[];
81
+ /**
82
+ * Claim and return every pending message for a name.
83
+ *
84
+ * The claim is an atomic rename, so two sessions sharing a name cannot deliver
85
+ * the same message twice: whichever rename wins owns the batch. Claimed records
86
+ * are appended to the delivered archive before the claim file is removed, so a
87
+ * crash between the two leaves an auditable copy rather than a silent loss.
88
+ */
89
+ export declare function drainMailbox(coordRoot: string, name: string): MailboxMessageV1[];
90
+ /** Render a drained batch as the context block a recipient reads. */
91
+ export declare function formatMailboxDelivery(coordRoot: string, messages: readonly MailboxMessageV1[]): string;
92
+ //# sourceMappingURL=mailbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mailbox.d.ts","sourceRoot":"","sources":["../../../src/core/agents/mailbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAqBH,eAAO,MAAM,sBAAsB,EAAG,4BAAqC,CAAC;AAE5E;mCACmC;AACnC,eAAO,MAAM,cAAc,OAAO,CAAC;AACnC,qEAAqE;AACrE,eAAO,MAAM,WAAW,KAAK,CAAC;AAI9B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,sBAAsB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;qEACiE;IACjE,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,YAAY,GAAG,eAAe,CAAC;AAEnE,qBAAa,oBAAqB,SAAQ,KAAK;IAE3C,QAAQ,CAAC,WAAW,EAAE,qBAAqB;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM;gBAFb,WAAW,EAAE,qBAAqB,EAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM;CAOzB;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGjD;AAYD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAqBD;;+DAE+D;AAC/D,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAU1E;AAED,gFAAgF;AAChF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,MAAM,EAAE,CAiBjF;AAiBD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,WAAW,CA6BlE;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAa/E;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAmDhF;AA8CD,qEAAqE;AACrE,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACpC,MAAM,CAcR"}