harnery 0.42.0 → 0.44.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 (343) hide show
  1. package/README.md +3 -3
  2. package/dist/commander.d.ts +16 -0
  3. package/dist/commander.d.ts.map +1 -1
  4. package/dist/commander.js +18 -0
  5. package/dist/commands/agents.d.ts.map +1 -1
  6. package/dist/commands/agents.js +95 -52
  7. package/dist/commands/browse.d.ts.map +1 -1
  8. package/dist/commands/browse.js +38 -11
  9. package/dist/commands/diagnostics.d.ts.map +1 -1
  10. package/dist/commands/diagnostics.js +10 -0
  11. package/dist/commands/doctor.d.ts +12 -0
  12. package/dist/commands/doctor.d.ts.map +1 -1
  13. package/dist/commands/doctor.js +22 -7
  14. package/dist/commands/governor.js +22 -10
  15. package/dist/commands/inbox.d.ts +1 -1
  16. package/dist/commands/inbox.d.ts.map +1 -1
  17. package/dist/commands/inbox.js +55 -2
  18. package/dist/commands/rm.d.ts.map +1 -1
  19. package/dist/commands/rm.js +28 -4
  20. package/dist/commands/servers.d.ts.map +1 -1
  21. package/dist/commands/servers.js +16 -1
  22. package/dist/commands/supervisor.d.ts.map +1 -1
  23. package/dist/commands/supervisor.js +7 -2
  24. package/dist/commands/toc.d.ts +14 -0
  25. package/dist/commands/toc.d.ts.map +1 -1
  26. package/dist/commands/toc.js +7 -4
  27. package/dist/commands/tunnel.d.ts +65 -0
  28. package/dist/commands/tunnel.d.ts.map +1 -1
  29. package/dist/commands/tunnel.js +290 -101
  30. package/dist/commands/web-fetch.d.ts +3 -2
  31. package/dist/commands/web-fetch.d.ts.map +1 -1
  32. package/dist/commands/web-fetch.js +25 -19
  33. package/dist/commands/web.d.ts +7 -1
  34. package/dist/commands/web.d.ts.map +1 -1
  35. package/dist/commands/web.js +9 -3
  36. package/dist/commands/workflow.js +24 -30
  37. package/dist/core/agents/live-authority-v3.d.ts +1 -0
  38. package/dist/core/agents/live-authority-v3.d.ts.map +1 -1
  39. package/dist/core/agents/live-authority-v3.js +11 -0
  40. package/dist/core/agents/live-lifecycle-v3.d.ts +4 -2
  41. package/dist/core/agents/live-lifecycle-v3.d.ts.map +1 -1
  42. package/dist/core/agents/live-lifecycle-v3.js +28 -7
  43. package/dist/core/agents/mailbox.d.ts +9 -8
  44. package/dist/core/agents/mailbox.d.ts.map +1 -1
  45. package/dist/core/agents/mailbox.js +24 -17
  46. package/dist/core/agents/render/prompt-context.d.ts +2 -0
  47. package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
  48. package/dist/core/agents/render/prompt-context.js +19 -17
  49. package/dist/core/agents/render/session-context.d.ts +2 -8
  50. package/dist/core/agents/render/session-context.d.ts.map +1 -1
  51. package/dist/core/agents/render/session-context.js +64 -43
  52. package/dist/core/agents/rules/stop-hook.js +3 -3
  53. package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
  54. package/dist/core/agents/state/heartbeat-writer.js +25 -14
  55. package/dist/core/agents/state/live-coordination-writer.d.ts.map +1 -1
  56. package/dist/core/agents/state/live-coordination-writer.js +5 -0
  57. package/dist/core/agents/state/names.d.ts +43 -3
  58. package/dist/core/agents/state/names.d.ts.map +1 -1
  59. package/dist/core/agents/state/names.js +87 -3
  60. package/dist/core/agents/state/pidmap.d.ts.map +1 -1
  61. package/dist/core/agents/state/pidmap.js +5 -0
  62. package/dist/core/agents/state/proc-start.d.ts +19 -0
  63. package/dist/core/agents/state/proc-start.d.ts.map +1 -1
  64. package/dist/core/agents/state/proc-start.js +41 -0
  65. package/dist/core/agents/state/stale-sweep.d.ts.map +1 -1
  66. package/dist/core/agents/state/stale-sweep.js +180 -70
  67. package/dist/core/agents/state/unchanged-file.d.ts +44 -0
  68. package/dist/core/agents/state/unchanged-file.d.ts.map +1 -0
  69. package/dist/core/agents/state/unchanged-file.js +390 -0
  70. package/dist/core/context/index.d.ts +22 -10
  71. package/dist/core/context/index.d.ts.map +1 -1
  72. package/dist/core/context/index.js +381 -119
  73. package/dist/core/context/observation.d.ts +26 -0
  74. package/dist/core/context/observation.d.ts.map +1 -0
  75. package/dist/core/context/observation.js +11 -0
  76. package/dist/core/diagnostics/bundle.d.ts.map +1 -1
  77. package/dist/core/diagnostics/bundle.js +25 -14
  78. package/dist/core/diagnostics/path-identity.d.ts +3 -0
  79. package/dist/core/diagnostics/path-identity.d.ts.map +1 -0
  80. package/dist/core/diagnostics/path-identity.js +12 -0
  81. package/dist/core/diagnostics/sanitize.d.ts.map +1 -1
  82. package/dist/core/diagnostics/sanitize.js +4 -3
  83. package/dist/core/events/v3/authority-outbox.d.ts.map +1 -1
  84. package/dist/core/events/v3/authority-outbox.js +29 -0
  85. package/dist/core/events/v3/generation-custody.d.ts +5 -0
  86. package/dist/core/events/v3/generation-custody.d.ts.map +1 -0
  87. package/dist/core/events/v3/generation-custody.js +50 -0
  88. package/dist/core/events/v3/producers/coordination-recorder.d.ts +1 -0
  89. package/dist/core/events/v3/producers/coordination-recorder.d.ts.map +1 -1
  90. package/dist/core/events/v3/producers/coordination-recorder.js +7 -0
  91. package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
  92. package/dist/core/events/v3/producers/recorder.js +77 -64
  93. package/dist/core/events/v3/support-storage/pack-reader.d.ts.map +1 -1
  94. package/dist/core/events/v3/support-storage/pack-reader.js +42 -16
  95. package/dist/core/governor/planning.d.ts.map +1 -1
  96. package/dist/core/governor/planning.js +14 -1
  97. package/dist/core/governor/service-read.d.ts +10 -2
  98. package/dist/core/governor/service-read.d.ts.map +1 -1
  99. package/dist/core/governor/service-read.js +105 -22
  100. package/dist/core/governor/service.d.ts +20 -2
  101. package/dist/core/governor/service.d.ts.map +1 -1
  102. package/dist/core/governor/service.js +72 -47
  103. package/dist/core/hooks/cli.js +120 -23
  104. package/dist/core/hooks/fork-lineage.d.ts +40 -0
  105. package/dist/core/hooks/fork-lineage.d.ts.map +1 -0
  106. package/dist/core/hooks/fork-lineage.js +62 -0
  107. package/dist/core/hooks/resolve/transcript.d.ts +16 -0
  108. package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
  109. package/dist/core/hooks/resolve/transcript.js +84 -0
  110. package/dist/core/hooks/shell-rm.d.ts +2 -0
  111. package/dist/core/hooks/shell-rm.d.ts.map +1 -0
  112. package/dist/core/hooks/shell-rm.js +105 -0
  113. package/dist/core/hooks/shell-tokens.d.ts +12 -0
  114. package/dist/core/hooks/shell-tokens.d.ts.map +1 -0
  115. package/dist/core/hooks/shell-tokens.js +97 -0
  116. package/dist/core/hooks/shell-waiter.d.ts.map +1 -1
  117. package/dist/core/hooks/shell-waiter.js +3 -93
  118. package/dist/core/inbox/contract.d.ts +2 -1
  119. package/dist/core/inbox/contract.d.ts.map +1 -1
  120. package/dist/core/inbox/index.d.ts +2 -0
  121. package/dist/core/inbox/index.d.ts.map +1 -1
  122. package/dist/core/inbox/index.js +2 -0
  123. package/dist/core/inbox/peer-messages.d.ts +37 -0
  124. package/dist/core/inbox/peer-messages.d.ts.map +1 -0
  125. package/dist/core/inbox/peer-messages.js +72 -0
  126. package/dist/core/inbox/service.d.ts +8 -1
  127. package/dist/core/inbox/service.d.ts.map +1 -1
  128. package/dist/core/inbox/service.js +67 -21
  129. package/dist/core/inbox/targets.d.ts +22 -0
  130. package/dist/core/inbox/targets.d.ts.map +1 -0
  131. package/dist/core/inbox/targets.js +108 -0
  132. package/dist/core/inbox/watcher.js +7 -3
  133. package/dist/core/journal/index.d.ts.map +1 -1
  134. package/dist/core/journal/index.js +17 -2
  135. package/dist/core/resources/contract.d.ts +3 -0
  136. package/dist/core/resources/contract.d.ts.map +1 -1
  137. package/dist/core/resources/service-status.d.ts +14 -1
  138. package/dist/core/resources/service-status.d.ts.map +1 -1
  139. package/dist/core/resources/service-status.js +23 -13
  140. package/dist/core/resources/service.d.ts +9 -1
  141. package/dist/core/resources/service.d.ts.map +1 -1
  142. package/dist/core/resources/service.js +47 -27
  143. package/dist/core/resources/status.d.ts +2 -5
  144. package/dist/core/resources/status.d.ts.map +1 -1
  145. package/dist/core/resources/status.js +36 -7
  146. package/dist/core/semantic/contract.d.ts +5 -5
  147. package/dist/core/servers/index.d.ts +24 -13
  148. package/dist/core/servers/index.d.ts.map +1 -1
  149. package/dist/core/servers/index.js +132 -92
  150. package/dist/core/servers/tunnels.d.ts +3 -5
  151. package/dist/core/servers/tunnels.d.ts.map +1 -1
  152. package/dist/core/servers/tunnels.js +3 -9
  153. package/dist/core/storage/process-log.d.ts +12 -0
  154. package/dist/core/storage/process-log.d.ts.map +1 -1
  155. package/dist/core/storage/process-log.js +10 -2
  156. package/dist/core/supervisor/contract.d.ts +12 -0
  157. package/dist/core/supervisor/contract.d.ts.map +1 -1
  158. package/dist/core/supervisor/explanations.d.ts.map +1 -1
  159. package/dist/core/supervisor/explanations.js +2 -1
  160. package/dist/core/supervisor/findings.d.ts.map +1 -1
  161. package/dist/core/supervisor/findings.js +54 -9
  162. package/dist/core/supervisor/service.d.ts +9 -1
  163. package/dist/core/supervisor/service.d.ts.map +1 -1
  164. package/dist/core/supervisor/service.js +59 -29
  165. package/dist/core/supervisor/services.d.ts.map +1 -1
  166. package/dist/core/supervisor/services.js +22 -1
  167. package/dist/core/supervisor/status.d.ts +17 -2
  168. package/dist/core/supervisor/status.d.ts.map +1 -1
  169. package/dist/core/supervisor/status.js +70 -12
  170. package/dist/core/supervisor/timeline.d.ts.map +1 -1
  171. package/dist/core/supervisor/timeline.js +2 -1
  172. package/dist/core/work/state.js +7 -7
  173. package/dist/core/workflow/engine.d.ts.map +1 -1
  174. package/dist/core/workflow/engine.js +105 -32
  175. package/dist/core/workflow/failure-evidence.d.ts +16 -0
  176. package/dist/core/workflow/failure-evidence.d.ts.map +1 -0
  177. package/dist/core/workflow/failure-evidence.js +114 -0
  178. package/dist/core/workflow/index.d.ts +1 -1
  179. package/dist/core/workflow/index.d.ts.map +1 -1
  180. package/dist/core/workflow/index.js +1 -1
  181. package/dist/core/workflow/live-session-v3.d.ts +6 -0
  182. package/dist/core/workflow/live-session-v3.d.ts.map +1 -1
  183. package/dist/core/workflow/live-session-v3.js +126 -5
  184. package/dist/core/workflow/proof.d.ts +5 -5
  185. package/dist/core/workflow/proof.d.ts.map +1 -1
  186. package/dist/core/workflow/proof.js +115 -20
  187. package/dist/core/workflow/run-state.d.ts +3 -1
  188. package/dist/core/workflow/run-state.d.ts.map +1 -1
  189. package/dist/core/workflow/run-state.js +31 -27
  190. package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
  191. package/dist/core/workflow/spawn-claude.js +19 -0
  192. package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
  193. package/dist/core/workflow/spawn-codex.js +13 -0
  194. package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
  195. package/dist/core/workflow/spawn-cursor.js +19 -0
  196. package/dist/core/workflow/spawn-opencode.d.ts.map +1 -1
  197. package/dist/core/workflow/spawn-opencode.js +14 -0
  198. package/dist/core/workflow/types.d.ts +64 -17
  199. package/dist/core/workflow/types.d.ts.map +1 -1
  200. package/dist/core/workflow/workspaces/index.d.ts +0 -1
  201. package/dist/core/workflow/workspaces/index.d.ts.map +1 -1
  202. package/dist/core/workflow/workspaces/index.js +0 -1
  203. package/dist/core/workflow/workspaces/leases.d.ts +3 -1
  204. package/dist/core/workflow/workspaces/leases.d.ts.map +1 -1
  205. package/dist/core/workflow/workspaces/leases.js +30 -16
  206. package/dist/core/workflow/workspaces/local-git.d.ts +6 -2
  207. package/dist/core/workflow/workspaces/local-git.d.ts.map +1 -1
  208. package/dist/core/workflow/workspaces/local-git.js +270 -6
  209. package/dist/core/workflow/workspaces/ownership.d.ts +11 -0
  210. package/dist/core/workflow/workspaces/ownership.d.ts.map +1 -0
  211. package/dist/core/workflow/workspaces/ownership.js +194 -0
  212. package/dist/core/workflow/workspaces/reclaim.d.ts +35 -0
  213. package/dist/core/workflow/workspaces/reclaim.d.ts.map +1 -1
  214. package/dist/core/workflow/workspaces/reclaim.js +14 -0
  215. package/dist/core/workflow/workspaces/recovery.d.ts.map +1 -1
  216. package/dist/core/workflow/workspaces/recovery.js +21 -13
  217. package/dist/core/workflow/workspaces/state.d.ts +1 -0
  218. package/dist/core/workflow/workspaces/state.d.ts.map +1 -1
  219. package/dist/core/workflow/workspaces/state.js +21 -1
  220. package/dist/lib/browser/windows-chrome.d.ts +100 -12
  221. package/dist/lib/browser/windows-chrome.d.ts.map +1 -1
  222. package/dist/lib/browser/windows-chrome.js +262 -73
  223. package/dist/lib/docs-links.d.ts.map +1 -1
  224. package/dist/lib/docs-links.js +45 -2
  225. package/dist/lib/guarded-remove.d.ts +7 -0
  226. package/dist/lib/guarded-remove.d.ts.map +1 -1
  227. package/dist/lib/guarded-remove.js +106 -12
  228. package/dist/lib/identities/assume.d.ts.map +1 -1
  229. package/dist/lib/identities/assume.js +4 -0
  230. package/dist/lib/tunnel/allowlist.d.ts +44 -0
  231. package/dist/lib/tunnel/allowlist.d.ts.map +1 -0
  232. package/dist/lib/tunnel/allowlist.js +204 -0
  233. package/dist/lib/tunnel/current-address.d.ts +41 -0
  234. package/dist/lib/tunnel/current-address.d.ts.map +1 -0
  235. package/dist/lib/tunnel/current-address.js +123 -0
  236. package/dist/lib/tunnel/gate.js +13 -6
  237. package/dist/lib/tunnel/processes.d.ts +39 -0
  238. package/dist/lib/tunnel/processes.d.ts.map +1 -0
  239. package/dist/lib/tunnel/processes.js +121 -0
  240. package/dist/lib/tunnel/state.d.ts +28 -3
  241. package/dist/lib/tunnel/state.d.ts.map +1 -1
  242. package/dist/lib/tunnel/state.js +98 -27
  243. package/dist/lib/zip/index.d.ts +41 -0
  244. package/dist/lib/zip/index.d.ts.map +1 -0
  245. package/dist/lib/zip/index.js +398 -0
  246. package/package.json +8 -1
  247. package/src/commander.ts +32 -0
  248. package/src/commands/agents.ts +151 -74
  249. package/src/commands/browse.ts +50 -14
  250. package/src/commands/diagnostics.ts +10 -0
  251. package/src/commands/doctor.ts +26 -7
  252. package/src/commands/governor.ts +23 -10
  253. package/src/commands/inbox.ts +52 -2
  254. package/src/commands/rm.ts +43 -4
  255. package/src/commands/servers.ts +16 -4
  256. package/src/commands/supervisor.ts +7 -2
  257. package/src/commands/toc.ts +14 -6
  258. package/src/commands/tunnel.ts +394 -116
  259. package/src/commands/web-fetch.ts +30 -19
  260. package/src/commands/web.ts +9 -3
  261. package/src/commands/workflow.ts +30 -30
  262. package/src/core/agents/live-authority-v3.ts +17 -0
  263. package/src/core/agents/live-lifecycle-v3.ts +52 -14
  264. package/src/core/agents/mailbox.ts +26 -17
  265. package/src/core/agents/render/prompt-context.ts +35 -20
  266. package/src/core/agents/render/session-context.ts +92 -48
  267. package/src/core/agents/rules/stop-hook.ts +3 -3
  268. package/src/core/agents/state/heartbeat-writer.ts +29 -12
  269. package/src/core/agents/state/live-coordination-writer.ts +29 -0
  270. package/src/core/agents/state/names.ts +117 -6
  271. package/src/core/agents/state/pidmap.ts +13 -0
  272. package/src/core/agents/state/proc-start.ts +57 -0
  273. package/src/core/agents/state/stale-sweep.ts +247 -82
  274. package/src/core/agents/state/unchanged-file.ts +456 -0
  275. package/src/core/context/index.ts +446 -136
  276. package/src/core/context/observation.ts +29 -0
  277. package/src/core/diagnostics/bundle.ts +23 -18
  278. package/src/core/diagnostics/path-identity.ts +15 -0
  279. package/src/core/diagnostics/sanitize.ts +4 -3
  280. package/src/core/events/v3/authority-outbox.ts +56 -0
  281. package/src/core/events/v3/generation-custody.ts +59 -0
  282. package/src/core/events/v3/producers/coordination-recorder.ts +15 -0
  283. package/src/core/events/v3/producers/recorder.ts +94 -68
  284. package/src/core/events/v3/support-storage/pack-reader.ts +45 -19
  285. package/src/core/governor/planning.ts +20 -8
  286. package/src/core/governor/service-read.ts +128 -20
  287. package/src/core/governor/service.ts +119 -42
  288. package/src/core/hooks/cli.ts +139 -22
  289. package/src/core/hooks/fork-lineage.ts +82 -0
  290. package/src/core/hooks/resolve/transcript.ts +88 -0
  291. package/src/core/hooks/shell-rm.ts +103 -0
  292. package/src/core/hooks/shell-tokens.ts +96 -0
  293. package/src/core/hooks/shell-waiter.ts +4 -91
  294. package/src/core/inbox/contract.ts +2 -1
  295. package/src/core/inbox/index.ts +2 -0
  296. package/src/core/inbox/peer-messages.ts +94 -0
  297. package/src/core/inbox/service.ts +88 -22
  298. package/src/core/inbox/targets.ts +148 -0
  299. package/src/core/inbox/watcher.ts +8 -9
  300. package/src/core/journal/index.ts +19 -2
  301. package/src/core/resources/contract.ts +4 -0
  302. package/src/core/resources/service-status.ts +35 -12
  303. package/src/core/resources/service.ts +71 -24
  304. package/src/core/resources/status.ts +57 -8
  305. package/src/core/servers/index.ts +177 -91
  306. package/src/core/servers/tunnels.ts +3 -11
  307. package/src/core/storage/process-log.ts +17 -2
  308. package/src/core/supervisor/contract.ts +13 -0
  309. package/src/core/supervisor/explanations.ts +4 -1
  310. package/src/core/supervisor/findings.ts +68 -10
  311. package/src/core/supervisor/service.ts +88 -26
  312. package/src/core/supervisor/services.ts +26 -8
  313. package/src/core/supervisor/status.ts +89 -12
  314. package/src/core/supervisor/timeline.ts +2 -1
  315. package/src/core/work/state.ts +7 -7
  316. package/src/core/workflow/engine.ts +131 -49
  317. package/src/core/workflow/failure-evidence.ts +141 -0
  318. package/src/core/workflow/index.ts +0 -1
  319. package/src/core/workflow/live-session-v3.ts +146 -5
  320. package/src/core/workflow/proof.ts +134 -26
  321. package/src/core/workflow/run-state.ts +31 -29
  322. package/src/core/workflow/spawn-claude.ts +18 -0
  323. package/src/core/workflow/spawn-codex.ts +13 -0
  324. package/src/core/workflow/spawn-cursor.ts +18 -0
  325. package/src/core/workflow/spawn-opencode.ts +14 -0
  326. package/src/core/workflow/types.ts +51 -17
  327. package/src/core/workflow/workspaces/index.ts +0 -1
  328. package/src/core/workflow/workspaces/leases.ts +48 -17
  329. package/src/core/workflow/workspaces/local-git.ts +315 -5
  330. package/src/core/workflow/workspaces/ownership.ts +232 -0
  331. package/src/core/workflow/workspaces/reclaim.ts +58 -0
  332. package/src/core/workflow/workspaces/recovery.ts +25 -13
  333. package/src/core/workflow/workspaces/state.ts +20 -0
  334. package/src/lib/browser/windows-chrome.ts +346 -86
  335. package/src/lib/docs-links.ts +49 -2
  336. package/src/lib/guarded-remove.ts +132 -14
  337. package/src/lib/identities/assume.ts +4 -0
  338. package/src/lib/tunnel/allowlist.ts +208 -0
  339. package/src/lib/tunnel/current-address.ts +158 -0
  340. package/src/lib/tunnel/gate.ts +16 -8
  341. package/src/lib/tunnel/processes.ts +149 -0
  342. package/src/lib/tunnel/state.ts +123 -27
  343. package/src/lib/zip/index.ts +483 -0
@@ -1,28 +1,66 @@
1
+ import { existsSync, readFileSync } from "node:fs";
1
2
  import { hostname } from "node:os";
2
- import { checkPidToken } from "../agents/state/proc-start.js";
3
+ import { join } from "node:path";
4
+ import { verifyProcessGeneration, } from "../agents/state/proc-start.js";
5
+ import { currentHarneryRuntimeBuild, harneryPackageRoot } from "../events/v3/runtime-build.js";
3
6
  import { SUPERVISOR_STATUS_SCHEMA_VERSION, } from "./contract.js";
4
7
  import { readSupervisorServiceRecord, supervisorPaths } from "./storage.js";
5
8
  const STALE_HEARTBEAT_MS = 15_000;
6
- export function readSupervisorStatus(coordRoot, nowMs = Date.now()) {
9
+ export function installedSupervisorBuild() {
10
+ let version = "unknown";
11
+ let revision = "unknown";
12
+ try {
13
+ const pkg = JSON.parse(readFileSync(join(harneryPackageRoot(), "package.json"), "utf8"));
14
+ if (typeof pkg.version === "string")
15
+ version = pkg.version;
16
+ revision = currentHarneryRuntimeBuild();
17
+ }
18
+ catch {
19
+ // Missing build evidence must still produce an inspectable status.
20
+ }
21
+ return { version, revision };
22
+ }
23
+ export function readSupervisorStatus(coordRoot, nowMs = Date.now(), dependencies = {}) {
7
24
  const paths = supervisorPaths(coordRoot);
8
25
  const record = readSupervisorServiceRecord(coordRoot);
26
+ const installedBuild = installedSupervisorBuild();
27
+ const runningBuild = validBuild(record?.running_build) ? record.running_build : null;
28
+ const restartNeeded = !runningBuild ||
29
+ installedBuild.version === "unknown" ||
30
+ installedBuild.revision === "unknown" ||
31
+ runningBuild.version !== installedBuild.version ||
32
+ runningBuild.revision !== installedBuild.revision;
33
+ const build = {
34
+ running_build: runningBuild,
35
+ installed_build: installedBuild,
36
+ restart_needed: restartNeeded,
37
+ build_status: !runningBuild
38
+ ? "running build unknown; restart needed"
39
+ : restartNeeded
40
+ ? "restart needed"
41
+ : "current",
42
+ };
9
43
  if (!validRecord(record)) {
10
44
  return {
11
45
  running: false,
12
46
  stale: false,
47
+ generation: "unknown",
48
+ liveness: existsSync(paths.service) ? "unknown" : "stopped",
49
+ ...build,
13
50
  status_path: paths.service,
14
51
  snapshot_path: paths.snapshot,
15
52
  };
16
53
  }
17
54
  const heartbeatAt = Date.parse(record.heartbeat_at);
18
55
  const stale = !Number.isFinite(heartbeatAt) || nowMs - heartbeatAt > STALE_HEARTBEAT_MS;
19
- const running = record.host === hostname() &&
20
- !stale &&
21
- (record.state === "starting" || record.state === "running" || record.state === "stopping") &&
22
- pidStillMatches(record.pid, record.start_token);
56
+ const owner = supervisorProcessLiveness(record, dependencies);
57
+ const liveness = owner.generation === "same" && record.state === "stopped" ? "stopped" : owner.liveness;
23
58
  return {
24
- running,
59
+ running: liveness === "running" && !stale && record.state !== "stopped",
25
60
  stale,
61
+ generation: owner.generation,
62
+ liveness,
63
+ ...build,
26
64
  record,
27
65
  status_path: paths.service,
28
66
  snapshot_path: paths.snapshot,
@@ -36,13 +74,33 @@ function validRecord(value) {
36
74
  typeof value.heartbeat_at === "string" &&
37
75
  typeof value.keep_alive === "boolean");
38
76
  }
39
- function pidStillMatches(pid, startToken) {
77
+ /** A stale heartbeat does not prove that a process has exited. */
78
+ export function supervisorProcessLiveness(owner, dependencies = {}) {
79
+ if (owner.host !== hostname())
80
+ return { liveness: "unknown", generation: "unknown" };
40
81
  try {
41
- process.kill(pid, 0);
82
+ (dependencies.probePid ?? ((pid) => process.kill(pid, 0)))(owner.pid);
42
83
  }
43
84
  catch (error) {
44
- if (error.code !== "EPERM")
45
- return false;
85
+ return {
86
+ liveness: error.code === "ESRCH" ? "stopped" : "unknown",
87
+ generation: "unknown",
88
+ };
46
89
  }
47
- return checkPidToken(pid, startToken) !== "mismatch";
90
+ const generation = verifyProcessGeneration(owner.pid, owner.start_token, dependencies.readToken);
91
+ return {
92
+ generation,
93
+ liveness: generation === "same" ? "running" : generation === "different" ? "stopped" : "unknown",
94
+ };
95
+ }
96
+ function validBuild(value) {
97
+ if (!value || typeof value !== "object")
98
+ return false;
99
+ const build = value;
100
+ return (typeof build.version === "string" &&
101
+ !!build.version &&
102
+ build.version !== "unknown" &&
103
+ typeof build.revision === "string" &&
104
+ !!build.revision &&
105
+ build.revision !== "unknown");
48
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/timeline.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAC;AAEvB,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,cAAc,GAAE,SAAS,yBAAyB,EAAO,GACxD,kBAAkB,CAoDpB"}
1
+ {"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/core/supervisor/timeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,yBAAyB,EAC9B,KAAK,kBAAkB,EAExB,MAAM,eAAe,CAAC;AAEvB,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,iBAAiB,EAC1B,cAAc,GAAE,SAAS,yBAAyB,EAAO,GACxD,kBAAkB,CAoDpB"}
@@ -1,4 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { canonicalizeDiagnosticIdentity } from "../diagnostics/path-identity.js";
2
3
  import { SUPERVISOR_DIAGNOSTIC_LIMITS, SUPERVISOR_TIMELINE_SCHEMA_VERSION, } from "./contract.js";
3
4
  export function buildSupervisorTimeline(finding, relatedSources = []) {
4
5
  const relatedEntries = clusterRelatedSources(relatedSources);
@@ -83,5 +84,5 @@ function clusterRelatedSources(sources) {
83
84
  });
84
85
  }
85
86
  function stableId(prefix, value) {
86
- return `${prefix}_${createHash("sha256").update(value).digest("hex").slice(0, 24)}`;
87
+ return `${prefix}_${createHash("sha256").update(canonicalizeDiagnosticIdentity(value)).digest("hex").slice(0, 24)}`;
87
88
  }
@@ -6,7 +6,7 @@ import { appendSegmentedJsonlFile, readSegmentedJsonlFileSync, } from "../storag
6
6
  import { stateDirMode, stateFileMode } from "../storage/modes.js";
7
7
  import { readWorkflowApproval } from "../workflow/approvals.js";
8
8
  import { stableDigest } from "../workflow/durable-record.js";
9
- import { readWorkflowProof } from "../workflow/proof.js";
9
+ import { deriveRunFailureClass, readWorkflowProof } from "../workflow/proof.js";
10
10
  import { readWorkflowRunManifest, workflowScriptDigest } from "../workflow/run-state.js";
11
11
  import { WORKFLOW_TRANSCRIPT_EVENT_BYTES, workflowTranscriptPath } from "../workflow/transcript.js";
12
12
  import { isWorkspaceBoundExecutionEvidence } from "../workflow/workspaces/validate.js";
@@ -464,13 +464,13 @@ function inspectAttempt(coordRoot, event, intent, priorRunId) {
464
464
  proof.acceptance.summary.unknown === 0
465
465
  ? "succeeded"
466
466
  : "failed";
467
- // A failed attempt the run classified as uninformative about the work is
468
- // uncharged (ADR 0046). Absent class ⇒ charged, as before. Read only for a
469
- // failed attempt: a succeeded run never carries a class.
467
+ // Re-derive no-effect eligibility from every participant rather than
468
+ // trusting a persisted transport class. Missing evidence stays charged.
469
+ // The script's explicit decision authority remains a separate path.
470
470
  if (attempt.status === "failed" &&
471
- (proof.run.class === "environment" ||
472
- proof.run.class === "upstream" ||
473
- proof.run.class === "decision")) {
471
+ (proof.run.class === "decision" ||
472
+ ((proof.run.class === "environment" || proof.run.class === "upstream") &&
473
+ deriveRunFailureClass(proof.run.status, proof.agents) === proof.run.class))) {
474
474
  attempt.uncharged = proof.run.class;
475
475
  if (proof.run.class === "decision" && typeof proof.run.decision_id === "string") {
476
476
  attempt.blocked_on = proof.run.decision_id;
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAiDH,OAAO,KAAK,EAIV,UAAU,EAGV,SAAS,EAeV,MAAM,YAAY,CAAC;AAuDpB,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM/E;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAOvF;AAED;;;;6EAI6E;AAC7E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEjB,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAUhD;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CA6E1F"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/engine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA0DH,OAAO,KAAK,EAIV,UAAU,EAGV,SAAS,EAeV,MAAM,YAAY,CAAC;AAuDpB,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;gBAEf,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO;CAM/E;AAED,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBAEpB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAOvF;AAED;;;;6EAI6E;AAC7E,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAEjB,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM;CAUhD;AAED,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CA6E1F"}
@@ -37,7 +37,8 @@ import { freezeWorkflowAttemptContext } from "./attempt-context.js";
37
37
  import { probeBilling } from "./billing.js";
38
38
  import { stableDigest } from "./durable-record.js";
39
39
  import { evidencePreflightError } from "./evidence-preflight.js";
40
- import { endWorkflowChildSessionV3, startWorkflowChildSessionV3 } from "./live-session-v3.js";
40
+ import { canRetryFailedSpawn, observeSpawnFailure, resolveFailureEvidence, } from "./failure-evidence.js";
41
+ import { endWorkflowChildSessionV3, recordWorkflowChildTerminalFailureV3, startWorkflowChildSessionV3, } from "./live-session-v3.js";
41
42
  import { buildWorkflowProof, createEvidenceRecord, digestResult, normalizeWorkflowMeta, writeWorkflowProof, } from "./proof.js";
42
43
  import { acquireWorkflowResumeLease, assertWorkflowRunResumable, assertWorkflowScriptUnchanged, WORKFLOW_RUN_MANIFEST_SCHEMA_VERSION, workflowScriptDigest, writeWorkflowRunManifest, } from "./run-state.js";
43
44
  import { assertProjectionWithinWorkspace, resolveGitGrantRoots } from "./sandbox-projection.js";
@@ -310,7 +311,12 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
310
311
  durationMs,
311
312
  transcriptPath,
312
313
  before: resumeState.manifest.repository_before,
313
- after: resumeState.manifest.repository_before,
314
+ after: {
315
+ cwd: frozenBinding.active_root,
316
+ observation: "unavailable",
317
+ observation_detail: "Workspace reattachment failed; no trusted after-run snapshot was observed.",
318
+ dirty_paths: [],
319
+ },
314
320
  agents: [],
315
321
  evidence: [],
316
322
  diagnosticAdmission: initialDiagnosticAdmissionProof(diagnosticAdmissionConfig),
@@ -476,6 +482,7 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
476
482
  let policySeq = 0;
477
483
  const billingProbed = new Map();
478
484
  const agentProofs = new Map();
485
+ let terminalRecordingError;
479
486
  const evidenceRecords = [];
480
487
  const policyDecisions = new Map(history?.policyDecisions.map((decision) => [decision.id, decision]));
481
488
  const acceptanceIds = new Set(meta.acceptance.map((criterion) => criterion.id));
@@ -858,6 +865,51 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
858
865
  },
859
866
  });
860
867
  agentProof.access = access;
868
+ let childGenerationId;
869
+ let recordAgentEnd;
870
+ const finalizeChild = () => {
871
+ try {
872
+ if (childGenerationId)
873
+ endWorkflowChildSessionV3({
874
+ coordRoot: opts.coordRoot,
875
+ instanceId: childInstanceId(runId, id),
876
+ runId,
877
+ agentId: id,
878
+ adapter,
879
+ cleanExit: agentProof.status === "succeeded",
880
+ expectedGenerationId: childGenerationId,
881
+ });
882
+ // Result publication is the resume-cache boundary, after canonical custody.
883
+ recordAgentEnd?.();
884
+ }
885
+ catch (error) {
886
+ let reason = `V3 terminal recording failed: ${error.message}`;
887
+ try {
888
+ if (childGenerationId)
889
+ recordWorkflowChildTerminalFailureV3({
890
+ coordRoot: opts.coordRoot,
891
+ instanceId: childInstanceId(runId, id),
892
+ runId,
893
+ agentId: id,
894
+ adapter,
895
+ expectedGenerationId: childGenerationId,
896
+ reason,
897
+ });
898
+ }
899
+ catch (visibilityError) {
900
+ reason += `; blocked lifecycle recording failed: ${visibilityError.message}`;
901
+ }
902
+ const failure = new Error(agentProof.error ? `${agentProof.error}; ${reason}` : reason, {
903
+ cause: error,
904
+ });
905
+ terminalRecordingError ??= failure;
906
+ agentProof.status = "failed";
907
+ agentProof.error = failure.message;
908
+ transcript("agent.failed", { id, key, error: failure.message });
909
+ log(`[${name}] ${failure.message}`);
910
+ throw failure;
911
+ }
912
+ };
861
913
  await acquire();
862
914
  try {
863
915
  await ensureDiagnosticAdmissionObserved();
@@ -878,7 +930,7 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
878
930
  // Headless children do not reliably fire adapter hooks. The engine owns
879
931
  // their canonical V3 start so every dispatched child has an auditable
880
932
  // generation before it begins work.
881
- startWorkflowChildSessionV3({
933
+ const child = startWorkflowChildSessionV3({
882
934
  coordRoot: opts.coordRoot,
883
935
  instanceId: childInstanceId(runId, id),
884
936
  runId,
@@ -887,9 +939,13 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
887
939
  label,
888
940
  model: agentOpts.model,
889
941
  });
942
+ if (!child.v3_generation_id)
943
+ throw new Error("workflow_child_v3_generation_missing");
944
+ childGenerationId = child.v3_generation_id;
890
945
  let attemptPrompt = dispatchPrompt;
891
946
  let last = null;
892
947
  let agentCostUsd = 0;
948
+ let informativeAttempt;
893
949
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
894
950
  last = await spawner({
895
951
  prompt: attemptPrompt,
@@ -911,30 +967,45 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
911
967
  agentCostUsd += last.costUsd ?? 0;
912
968
  costUsd += last.costUsd ?? 0;
913
969
  if (!last.ok) {
914
- transcript("agent.attempt_failed", { id, attempt, error: last.error });
915
- // ADR 0046: an environment failure (the binary was absent) cannot be
916
- // helped by retrying an unchanged environment, so stop the in-agent
917
- // retry too — not just the outer attempt/replan budget. An upstream
918
- // refusal keeps retrying here: the vendor may recover mid-loop.
919
- if (last.class === "environment")
970
+ const observed = last.failureEvidence === undefined
971
+ ? observeSpawnFailure({}, last.text, "final_message")
972
+ : resolveFailureEvidence(last.failureEvidence);
973
+ agentProof.failure_evidence = informativeAttempt
974
+ ? {
975
+ ...observed,
976
+ effect: { state: "unknown" },
977
+ partial_output: informativeAttempt.partial_output,
978
+ }
979
+ : observed;
980
+ transcript("agent.attempt_failed", {
981
+ id,
982
+ attempt,
983
+ error: last.error,
984
+ failure_evidence: observed,
985
+ result_digest: digestResult(last.text, "text"),
986
+ text: last.text,
987
+ });
988
+ if (!canRetryFailedSpawn({ ...last, failureEvidence: agentProof.failure_evidence }))
920
989
  break;
921
- continue; // spawn-level failure: retry with the original prompt
990
+ continue;
922
991
  }
992
+ informativeAttempt = observeSpawnFailure({}, last.text, "final_message");
923
993
  if (!agentOpts.schema) {
924
994
  agentProof.status = "succeeded";
925
995
  agentProof.cost_usd =
926
996
  agentCostUsd > 0 || last.costUsd !== undefined ? agentCostUsd : undefined;
927
997
  agentProof.session_id = last.sessionId;
928
998
  agentProof.result = digestResult(last.text, "text");
929
- transcriptAgentEnd({
999
+ const completed = last;
1000
+ recordAgentEnd = () => transcriptAgentEnd({
930
1001
  id,
931
1002
  key,
932
1003
  attempts: attempt,
933
- cost_usd: last.costUsd,
1004
+ cost_usd: completed.costUsd,
934
1005
  total_cost_usd: agentCostUsd,
935
- duration_ms: last.durationMs,
936
- session_id: last.sessionId,
937
- }, "text", last.text);
1006
+ duration_ms: completed.durationMs,
1007
+ session_id: completed.sessionId,
1008
+ }, "text", completed.text);
938
1009
  return last.text;
939
1010
  }
940
1011
  const parsed = parseStageOutput(last.text);
@@ -947,18 +1018,26 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
947
1018
  agentCostUsd > 0 || last.costUsd !== undefined ? agentCostUsd : undefined;
948
1019
  agentProof.session_id = last.sessionId;
949
1020
  agentProof.result = digestResult(parsed.value, "json");
950
- transcriptAgentEnd({
1021
+ const completed = last;
1022
+ recordAgentEnd = () => transcriptAgentEnd({
951
1023
  id,
952
1024
  key,
953
1025
  attempts: attempt,
954
- cost_usd: last.costUsd,
1026
+ cost_usd: completed.costUsd,
955
1027
  total_cost_usd: agentCostUsd,
956
- duration_ms: last.durationMs,
957
- session_id: last.sessionId,
1028
+ duration_ms: completed.durationMs,
1029
+ session_id: completed.sessionId,
958
1030
  }, "json", parsed.value);
959
1031
  return parsed.value;
960
1032
  }
961
- transcript("agent.schema_retry", { id, attempt, problems });
1033
+ agentProof.failure_evidence = informativeAttempt;
1034
+ transcript("agent.schema_retry", {
1035
+ id,
1036
+ attempt,
1037
+ problems,
1038
+ rejected_text: last.text,
1039
+ result_digest: digestResult(last.text, "text"),
1040
+ });
962
1041
  // Keep the original cache identity while making the actual output
963
1042
  // contract explicit. A full bounded copy of the rejected value lets the
964
1043
  // child repair omissions instead of reconstructing an unseen object.
@@ -993,21 +1072,13 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
993
1072
  }
994
1073
  finally {
995
1074
  reservedCostUsd = Math.max(0, reservedCostUsd - reservedForDispatch);
996
- // Record the canonical terminal before removing the disposable cache.
997
1075
  try {
998
- endWorkflowChildSessionV3({
999
- coordRoot: opts.coordRoot,
1000
- instanceId: childInstanceId(runId, id),
1001
- runId,
1002
- agentId: id,
1003
- adapter,
1004
- cleanExit: agentProof.status === "succeeded",
1005
- });
1076
+ finalizeChild();
1006
1077
  }
1007
- catch (error) {
1008
- log(`[${name}] V3 terminal recording failed: ${error.message}`);
1078
+ finally {
1079
+ // A slot is disposable; unresolved custody remains visible and failed.
1080
+ release();
1009
1081
  }
1010
- release();
1011
1082
  }
1012
1083
  };
1013
1084
  const parallel = async (thunks) => {
@@ -1105,6 +1176,8 @@ async function executeWorkflow(scriptPath, absScript, opts, resumeState, workCon
1105
1176
  if (!workflow)
1106
1177
  throw new Error("workflow module initialization did not produce an executable");
1107
1178
  const result = await workflow(ctx);
1179
+ if (terminalRecordingError)
1180
+ throw terminalRecordingError;
1108
1181
  const endedAt = new Date().toISOString();
1109
1182
  const durationMs = Date.now() - t0;
1110
1183
  const workspaceAttestation = workspaceBinding
@@ -0,0 +1,16 @@
1
+ import type { AdapterRawResult } from "../adapters/types.js";
2
+ import type { SpawnFailureEvidence, SpawnOutputSource, SpawnResult } from "./types.js";
3
+ export declare function unknownFailureEvidence(): SpawnFailureEvidence;
4
+ /** Built-in subprocess adapters observe output and process-start failures.
5
+ * Their current vendor envelopes do not prove effects or native refusal.
6
+ * In particular, blank output and 429/5xx statuses leave both unknown. */
7
+ export declare function observeSpawnFailure(raw: Pick<AdapterRawResult, "spawnErrno" | "timedOut"> & Partial<Pick<AdapterRawResult, "stdout" | "resultFileText">>, text: string, source: SpawnOutputSource): SpawnFailureEvidence;
8
+ export declare function isSpawnFailureEvidence(value: unknown): value is SpawnFailureEvidence;
9
+ /** Missing observations are unknown; malformed positive claims are rejected.
10
+ * This is also used when reading persisted workflow proof. */
11
+ export declare function resolveFailureEvidence(value: unknown): SpawnFailureEvidence;
12
+ export declare function failureEvidenceAllowsUncharged(value: unknown): boolean;
13
+ /** A provider retry requires positive no-effect evidence. A missing binary is
14
+ * known not to have started, but retrying that unchanged environment cannot help. */
15
+ export declare function canRetryFailedSpawn(result: SpawnResult): boolean;
16
+ //# sourceMappingURL=failure-evidence.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"failure-evidence.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/failure-evidence.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEvF,wBAAgB,sBAAsB,IAAI,oBAAoB,CAM7D;AAED;;0EAE0E;AAC1E,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,UAAU,CAAC,GACpD,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,QAAQ,GAAG,gBAAgB,CAAC,CAAC,EAC9D,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,iBAAiB,GACxB,oBAAoB,CAsBtB;AA+DD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAQpF;AAED;8DAC8D;AAC9D,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,oBAAoB,CAI3E;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAOtE;AAED;qFACqF;AACrF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAMhE"}
@@ -0,0 +1,114 @@
1
+ import { createHash } from "node:crypto";
2
+ export function unknownFailureEvidence() {
3
+ return {
4
+ effect: { state: "unknown" },
5
+ refusal: { state: "unknown" },
6
+ partial_output: { state: "unknown" },
7
+ };
8
+ }
9
+ /** Built-in subprocess adapters observe output and process-start failures.
10
+ * Their current vendor envelopes do not prove effects or native refusal.
11
+ * In particular, blank output and 429/5xx statuses leave both unknown. */
12
+ export function observeSpawnFailure(raw, text, source) {
13
+ const bytes = Buffer.byteLength(text);
14
+ return {
15
+ effect: raw.spawnErrno === "ENOENT" &&
16
+ !raw.timedOut &&
17
+ bytes === 0 &&
18
+ !raw.stdout?.trim() &&
19
+ !raw.resultFileText?.trim()
20
+ ? { state: "none", source: "spawn_errno", reference: "ENOENT" }
21
+ : { state: "unknown" },
22
+ refusal: { state: "unknown" },
23
+ partial_output: bytes > 0
24
+ ? {
25
+ state: "present",
26
+ source,
27
+ bytes,
28
+ sha256: createHash("sha256").update(text).digest("hex"),
29
+ }
30
+ : { state: "absent", source },
31
+ };
32
+ }
33
+ function record(value) {
34
+ return typeof value === "object" && value !== null && !Array.isArray(value);
35
+ }
36
+ function keys(value, expected) {
37
+ return (Object.keys(value).length === expected.length &&
38
+ expected.every((key) => Object.hasOwn(value, key)));
39
+ }
40
+ function reference(value) {
41
+ return typeof value === "string" && value.trim().length > 0 && value.length <= 512;
42
+ }
43
+ function validEffect(value) {
44
+ if (!record(value))
45
+ return false;
46
+ if (value.state === "unknown")
47
+ return keys(value, ["state"]);
48
+ if (!keys(value, ["state", "source", "reference"]))
49
+ return false;
50
+ if (value.state === "none" && value.source === "spawn_errno") {
51
+ return value.reference === "ENOENT";
52
+ }
53
+ return ((value.state === "none" || value.state === "observed") &&
54
+ value.source === "adapter_evidence" &&
55
+ reference(value.reference));
56
+ }
57
+ function validRefusal(value) {
58
+ if (!record(value))
59
+ return false;
60
+ if (value.state === "unknown")
61
+ return keys(value, ["state"]);
62
+ return (keys(value, ["state", "source", "reference"]) &&
63
+ value.state === "refused" &&
64
+ value.source === "vendor_envelope" &&
65
+ reference(value.reference));
66
+ }
67
+ function validOutput(value) {
68
+ if (!record(value))
69
+ return false;
70
+ if (value.state === "unknown")
71
+ return keys(value, ["state"]);
72
+ if (value.source !== "final_message" &&
73
+ value.source !== "vendor_envelope" &&
74
+ value.source !== "stdout") {
75
+ return false;
76
+ }
77
+ if (value.state === "absent")
78
+ return keys(value, ["state", "source"]);
79
+ return (value.state === "present" &&
80
+ keys(value, ["state", "source", "bytes", "sha256"]) &&
81
+ Number.isSafeInteger(value.bytes) &&
82
+ value.bytes > 0 &&
83
+ typeof value.sha256 === "string" &&
84
+ /^[a-f0-9]{64}$/.test(value.sha256));
85
+ }
86
+ export function isSpawnFailureEvidence(value) {
87
+ return (record(value) &&
88
+ keys(value, ["effect", "refusal", "partial_output"]) &&
89
+ validEffect(value.effect) &&
90
+ validRefusal(value.refusal) &&
91
+ validOutput(value.partial_output));
92
+ }
93
+ /** Missing observations are unknown; malformed positive claims are rejected.
94
+ * This is also used when reading persisted workflow proof. */
95
+ export function resolveFailureEvidence(value) {
96
+ if (value === undefined)
97
+ return unknownFailureEvidence();
98
+ if (!isSpawnFailureEvidence(value))
99
+ throw new Error("invalid spawn failure evidence");
100
+ return value;
101
+ }
102
+ export function failureEvidenceAllowsUncharged(value) {
103
+ const evidence = resolveFailureEvidence(value);
104
+ return (evidence.effect.state === "none" &&
105
+ evidence.refusal.state !== "refused" &&
106
+ evidence.partial_output.state === "absent");
107
+ }
108
+ /** A provider retry requires positive no-effect evidence. A missing binary is
109
+ * known not to have started, but retrying that unchanged environment cannot help. */
110
+ export function canRetryFailedSpawn(result) {
111
+ return (!result.ok &&
112
+ result.class !== "environment" &&
113
+ failureEvidenceAllowsUncharged(result.failureEvidence));
114
+ }
@@ -10,5 +10,5 @@ export { isUpstreamFailureText, vendorFailureText } from "./spawn-failure.js";
10
10
  export type { AcceptanceCriterion, AcceptanceResult, AcceptanceStatus, AcceptanceSummary, AdapterEvidenceCapability, AdapterEvidenceCoverage, AdapterName, AgentOpts, EngineOpts, EvidenceKind, EvidenceSource, EvidenceStatus, ResultDigest, RunReport, Spawner, SpawnFailureClass, SpawnRequest, SpawnResult, StageSchema, WorkflowAgentProof, WorkflowApprovalMode, WorkflowAttemptContext, WorkflowAttemptFailureCause, WorkflowAttemptPriorContext, WorkflowAttemptUnresolvedCriterion, WorkflowContext, WorkflowDiagnosticAdmissionConfig, WorkflowDiagnosticAdmissionObservation, WorkflowDiagnosticAdmissionProof, WorkflowEvidenceInput, WorkflowEvidenceRecord, WorkflowMeta, WorkflowModule, WorkflowPolicyProof, WorkflowProof, WorkflowProofUnknown, WorkflowRepoEvidence, WorkflowRepoSnapshot, WorkflowRunStatus, WorkflowSpecialistProfile, WorkflowWorkContext, } from "./types.js";
11
11
  export { WORKFLOW_ATTEMPT_CONTEXT_SCHEMA_VERSION, WORKFLOW_DIAGNOSTIC_ADMISSION_SCHEMA_VERSION, WORKFLOW_PROOF_SCHEMA_VERSION, WORKFLOW_WORK_CONTEXT_SCHEMA_VERSION, } from "./types.js";
12
12
  export type { ApplyIntegrationInput, AuthorizedIntegrationPlan, AuthorizedProviderIntegrationInput, CancelWorkspaceInput, CleanupWorkspaceInput, FilesystemIdentity, IntegrationApplyAttempt, IntegrationApplyReceipt, IntegrationAuthorization, IntegrationPlan, IntegrationReviewRecord, IntegrationTarget, LocalGitWorktreeProviderOptions, PrepareIntegrationInput, ProviderIntegrationInput, ProviderIntegrationPreview, ProviderIntegrationResult, ProviderUnknown, ProviderUnsupportedReason, RepositoryBinding, ValidatedFilesystemPath, WorkflowWorkspaceInspection, WorkflowWorkspaceSelection, WorkflowWorkspaceStatus, WorkflowWorkspaceVerification, WorkspaceAllocationRequest, WorkspaceAttestation, WorkspaceBinding, WorkspaceBoundExecutionEvidence, WorkspaceCancellationReceipt, WorkspaceCancellationResult, WorkspaceCleanupAttempt, WorkspaceCleanupIntent, WorkspaceCleanupMode, WorkspaceCleanupReceipt, WorkspaceCleanupResult, WorkspaceCompatibilityExecutionEvidence, WorkspaceExecutionEvidence, WorkspaceIntegrationState, WorkspaceIsolation, WorkspaceLifecycleProjection, WorkspaceLifecycleProjectionInput, WorkspaceLifecycleState, WorkspaceObservation, WorkspaceOwner, WorkspaceProbeInput, WorkspaceProbeResult, WorkspaceProofOutcome, WorkspaceProvider, WorkspaceProviderCapabilities, WorkspaceProviderRef, WorkspaceResourceState, } from "./workspaces/index.js";
13
- export { applyIntegration, assertWorkspaceLifecycleTransition, cancelWorkspace, cleanupWorkspace, createLocalGitWorktreeProvider, deriveWorkspaceLifecycle, IntegrationPrepareParkedError, inspectWorkflowWorkspace, isWorkspaceLifecycleState, listWorkflowWorkspaceInspections, prepareIntegration, prepareReclaim, probeLocalGitWorktreeProvider, readWorkflowWorkspaceStatus, renderWorkflowWorkspaceStatus, validateProviderEventChain, WORKSPACE_BINDING_SCHEMA_VERSION, WORKSPACE_RECEIPT_SCHEMA_VERSION, } from "./workspaces/index.js";
13
+ export { applyIntegration, assertWorkspaceLifecycleTransition, cancelWorkspace, cleanupWorkspace, createLocalGitWorktreeProvider, deriveWorkspaceLifecycle, IntegrationPrepareParkedError, inspectWorkflowWorkspace, isWorkspaceLifecycleState, listWorkflowWorkspaceInspections, prepareIntegration, probeLocalGitWorktreeProvider, readWorkflowWorkspaceStatus, renderWorkflowWorkspaceStatus, validateProviderEventChain, WORKSPACE_BINDING_SCHEMA_VERSION, WORKSPACE_RECEIPT_SCHEMA_VERSION, } from "./workspaces/index.js";
14
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/index.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,4 @@ export { buildWorkflowProof, createEvidenceRecord, deriveRunFailureClass, digest
6
6
  export { acquireWorkflowResumeLease, assertWorkflowRunResumable, assertWorkflowScriptUnchanged, readWorkflowRunManifest, WORKFLOW_RUN_MANIFEST_SCHEMA_VERSION, workflowRunManifestPath, workflowScriptDigest, writeWorkflowRunManifest, } from "./run-state.js";
7
7
  export { isUpstreamFailureText, vendorFailureText } from "./spawn-failure.js";
8
8
  export { WORKFLOW_ATTEMPT_CONTEXT_SCHEMA_VERSION, WORKFLOW_DIAGNOSTIC_ADMISSION_SCHEMA_VERSION, WORKFLOW_PROOF_SCHEMA_VERSION, WORKFLOW_WORK_CONTEXT_SCHEMA_VERSION, } from "./types.js";
9
- export { applyIntegration, assertWorkspaceLifecycleTransition, cancelWorkspace, cleanupWorkspace, createLocalGitWorktreeProvider, deriveWorkspaceLifecycle, IntegrationPrepareParkedError, inspectWorkflowWorkspace, isWorkspaceLifecycleState, listWorkflowWorkspaceInspections, prepareIntegration, prepareReclaim, probeLocalGitWorktreeProvider, readWorkflowWorkspaceStatus, renderWorkflowWorkspaceStatus, validateProviderEventChain, WORKSPACE_BINDING_SCHEMA_VERSION, WORKSPACE_RECEIPT_SCHEMA_VERSION, } from "./workspaces/index.js";
9
+ export { applyIntegration, assertWorkspaceLifecycleTransition, cancelWorkspace, cleanupWorkspace, createLocalGitWorktreeProvider, deriveWorkspaceLifecycle, IntegrationPrepareParkedError, inspectWorkflowWorkspace, isWorkspaceLifecycleState, listWorkflowWorkspaceInspections, prepareIntegration, probeLocalGitWorktreeProvider, readWorkflowWorkspaceStatus, renderWorkflowWorkspaceStatus, validateProviderEventChain, WORKSPACE_BINDING_SCHEMA_VERSION, WORKSPACE_RECEIPT_SCHEMA_VERSION, } from "./workspaces/index.js";
@@ -14,6 +14,12 @@ export declare function startWorkflowChildSessionV3(input: WorkflowChildSessionV
14
14
  /** Record the authoritative terminal before removing the disposable coordination cache. */
15
15
  export declare function endWorkflowChildSessionV3(input: WorkflowChildSessionV3Input & {
16
16
  cleanExit: boolean;
17
+ expectedGenerationId: string;
18
+ }): void;
19
+ /** Persist unresolved terminal custody only for the generation this dispatch owns. */
20
+ export declare function recordWorkflowChildTerminalFailureV3(input: WorkflowChildSessionV3Input & {
21
+ expectedGenerationId: string;
22
+ reason: string;
17
23
  }): void;
18
24
  export { stableScopeId } from "./scope-id.js";
19
25
  //# sourceMappingURL=live-session-v3.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"live-session-v3.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/live-session-v3.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,KAAK,SAAS,EAEf,MAAM,qCAAqC,CAAC;AAY7C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8FAA8F;AAC9F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,CAiDzF;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,2BAA2B,GAAG;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,GAC1D,IAAI,CAmBN;AAgBD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"live-session-v3.d.ts","sourceRoot":"","sources":["../../../src/core/workflow/live-session-v3.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,qCAAqC,CAAC;AAoB7C,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,8FAA8F;AAC9F,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,CAqDzF;AAED,2FAA2F;AAC3F,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,2BAA2B,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,oBAAoB,EAAE,MAAM,CAAA;CAAE,GACxF,IAAI,CAIN;AA0CD,sFAAsF;AACtF,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,2BAA2B,GAAG;IAAE,oBAAoB,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpF,IAAI,CAcN;AA8FD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC"}