@caupulican/pi-adaptative 0.85.4 → 0.86.1

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 (480) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/dist/bun/cli.d.ts +1 -1
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js +1 -0
  5. package/dist/bun/cli.js.map +1 -1
  6. package/dist/core/agent-paths.d.ts +3 -3
  7. package/dist/core/agent-paths.d.ts.map +1 -1
  8. package/dist/core/agent-paths.js +3 -3
  9. package/dist/core/agent-paths.js.map +1 -1
  10. package/dist/core/agent-session-runtime.d.ts +1 -1
  11. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  12. package/dist/core/agent-session-runtime.js +1 -1
  13. package/dist/core/agent-session-runtime.js.map +1 -1
  14. package/dist/core/agent-session.d.ts +11 -5
  15. package/dist/core/agent-session.d.ts.map +1 -1
  16. package/dist/core/agent-session.js +14 -3
  17. package/dist/core/agent-session.js.map +1 -1
  18. package/dist/core/auth-storage.d.ts +2 -2
  19. package/dist/core/auth-storage.d.ts.map +1 -1
  20. package/dist/core/auth-storage.js +2 -2
  21. package/dist/core/auth-storage.js.map +1 -1
  22. package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
  23. package/dist/core/autonomy/bounded-completion.js +19 -8
  24. package/dist/core/autonomy/bounded-completion.js.map +1 -1
  25. package/dist/core/autonomy/lane-tool-surface.d.ts +11 -5
  26. package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
  27. package/dist/core/autonomy/lane-tool-surface.js +34 -8
  28. package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
  29. package/dist/core/autonomy/subagent-prompt.d.ts +3 -3
  30. package/dist/core/autonomy/subagent-prompt.js +9 -9
  31. package/dist/core/autonomy/subagent-prompt.js.map +1 -1
  32. package/dist/core/background-lane-controller.d.ts +10 -8
  33. package/dist/core/background-lane-controller.d.ts.map +1 -1
  34. package/dist/core/background-lane-controller.js +23 -13
  35. package/dist/core/background-lane-controller.js.map +1 -1
  36. package/dist/core/bash-execution-controller.d.ts +4 -0
  37. package/dist/core/bash-execution-controller.d.ts.map +1 -1
  38. package/dist/core/bash-execution-controller.js +11 -4
  39. package/dist/core/bash-execution-controller.js.map +1 -1
  40. package/dist/core/bash-executor.d.ts +2 -0
  41. package/dist/core/bash-executor.d.ts.map +1 -1
  42. package/dist/core/bash-executor.js +4 -3
  43. package/dist/core/bash-executor.js.map +1 -1
  44. package/dist/core/billing-failover-controller.d.ts +2 -2
  45. package/dist/core/billing-failover-controller.d.ts.map +1 -1
  46. package/dist/core/billing-failover-controller.js +1 -1
  47. package/dist/core/billing-failover-controller.js.map +1 -1
  48. package/dist/core/capability-contract.d.ts +1 -1
  49. package/dist/core/capability-contract.d.ts.map +1 -1
  50. package/dist/core/capability-contract.js +0 -1
  51. package/dist/core/capability-contract.js.map +1 -1
  52. package/dist/core/compaction-controller.d.ts +8 -2
  53. package/dist/core/compaction-controller.d.ts.map +1 -1
  54. package/dist/core/compaction-controller.js +73 -3
  55. package/dist/core/compaction-controller.js.map +1 -1
  56. package/dist/core/compaction-support.d.ts +2 -2
  57. package/dist/core/compaction-support.d.ts.map +1 -1
  58. package/dist/core/compaction-support.js +9 -1
  59. package/dist/core/compaction-support.js.map +1 -1
  60. package/dist/core/context/artifact-retrieval.d.ts +1 -1
  61. package/dist/core/context/artifact-retrieval.d.ts.map +1 -1
  62. package/dist/core/context/artifact-retrieval.js +1 -1
  63. package/dist/core/context/artifact-retrieval.js.map +1 -1
  64. package/dist/core/context/context-artifacts.d.ts +6 -6
  65. package/dist/core/context/context-artifacts.d.ts.map +1 -1
  66. package/dist/core/context/context-artifacts.js +151 -63
  67. package/dist/core/context/context-artifacts.js.map +1 -1
  68. package/dist/core/context/context-composition.js +1 -1
  69. package/dist/core/context/context-composition.js.map +1 -1
  70. package/dist/core/context/context-store-retention.d.ts.map +1 -1
  71. package/dist/core/context/context-store-retention.js +5 -2
  72. package/dist/core/context/context-store-retention.js.map +1 -1
  73. package/dist/core/context/file-store-memory-provider.js +1 -1
  74. package/dist/core/context/file-store-memory-provider.js.map +1 -1
  75. package/dist/core/context/tool-output-packer.d.ts +1 -1
  76. package/dist/core/context/tool-output-packer.d.ts.map +1 -1
  77. package/dist/core/context/tool-output-packer.js +1 -1
  78. package/dist/core/context/tool-output-packer.js.map +1 -1
  79. package/dist/core/context-gc.d.ts.map +1 -1
  80. package/dist/core/context-gc.js +7 -5
  81. package/dist/core/context-gc.js.map +1 -1
  82. package/dist/core/context-pipeline.d.ts +2 -2
  83. package/dist/core/context-pipeline.d.ts.map +1 -1
  84. package/dist/core/context-pipeline.js +8 -4
  85. package/dist/core/context-pipeline.js.map +1 -1
  86. package/dist/core/cost/cost-summary.d.ts +1 -1
  87. package/dist/core/cost/cost-summary.d.ts.map +1 -1
  88. package/dist/core/cost/cost-summary.js +1 -1
  89. package/dist/core/cost/cost-summary.js.map +1 -1
  90. package/dist/core/cost/daily-usage.d.ts +1 -1
  91. package/dist/core/cost/daily-usage.d.ts.map +1 -1
  92. package/dist/core/cost/daily-usage.js +2 -2
  93. package/dist/core/cost/daily-usage.js.map +1 -1
  94. package/dist/core/cost/session-usage.d.ts +1 -1
  95. package/dist/core/cost/session-usage.d.ts.map +1 -1
  96. package/dist/core/cost/session-usage.js +1 -1
  97. package/dist/core/cost/session-usage.js.map +1 -1
  98. package/dist/core/default-tool-surface.d.ts +1 -0
  99. package/dist/core/default-tool-surface.d.ts.map +1 -1
  100. package/dist/core/default-tool-surface.js +3 -2
  101. package/dist/core/default-tool-surface.js.map +1 -1
  102. package/dist/core/delegation/worker-actions.js +1 -1
  103. package/dist/core/delegation/worker-actions.js.map +1 -1
  104. package/dist/core/delegation/worker-agent-control-coordinator.d.ts +27 -8
  105. package/dist/core/delegation/worker-agent-control-coordinator.d.ts.map +1 -1
  106. package/dist/core/delegation/worker-agent-control-coordinator.js +191 -33
  107. package/dist/core/delegation/worker-agent-control-coordinator.js.map +1 -1
  108. package/dist/core/delegation/worker-agent-control.d.ts +45 -6
  109. package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
  110. package/dist/core/delegation/worker-agent-control.js +110 -13
  111. package/dist/core/delegation/worker-agent-control.js.map +1 -1
  112. package/dist/core/delegation/worker-attempt-executor.d.ts +1 -1
  113. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
  114. package/dist/core/delegation/worker-attempt-executor.js +180 -160
  115. package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
  116. package/dist/core/delegation/worker-authority-resolver.d.ts +23 -0
  117. package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -0
  118. package/dist/core/delegation/worker-authority-resolver.js +128 -0
  119. package/dist/core/delegation/worker-authority-resolver.js.map +1 -0
  120. package/dist/core/delegation/worker-conversation-store.d.ts +2 -1
  121. package/dist/core/delegation/worker-conversation-store.d.ts.map +1 -1
  122. package/dist/core/delegation/worker-conversation-store.js +4 -3
  123. package/dist/core/delegation/worker-conversation-store.js.map +1 -1
  124. package/dist/core/delegation/worker-delegation-controller.d.ts +7 -1
  125. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  126. package/dist/core/delegation/worker-delegation-controller.js +260 -87
  127. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  128. package/dist/core/delegation/worker-delegation-request.d.ts +25 -4
  129. package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
  130. package/dist/core/delegation/worker-delegation-request.js +90 -1
  131. package/dist/core/delegation/worker-delegation-request.js.map +1 -1
  132. package/dist/core/delegation/worker-execution-policy.d.ts +2 -0
  133. package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
  134. package/dist/core/delegation/worker-execution-policy.js +22 -12
  135. package/dist/core/delegation/worker-execution-policy.js.map +1 -1
  136. package/dist/core/delegation/worker-lifecycle.d.ts +1 -0
  137. package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -1
  138. package/dist/core/delegation/worker-lifecycle.js +4 -2
  139. package/dist/core/delegation/worker-lifecycle.js.map +1 -1
  140. package/dist/core/delegation/worker-profile-resolver.d.ts +0 -2
  141. package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -1
  142. package/dist/core/delegation/worker-profile-resolver.js +8 -35
  143. package/dist/core/delegation/worker-profile-resolver.js.map +1 -1
  144. package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
  145. package/dist/core/delegation/worker-recovery-coordinator.js +1 -0
  146. package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
  147. package/dist/core/delegation/worker-runner.d.ts +6 -1
  148. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  149. package/dist/core/delegation/worker-runner.js +20 -6
  150. package/dist/core/delegation/worker-runner.js.map +1 -1
  151. package/dist/core/delegation/worker-tree-budget-coordinator.d.ts +47 -0
  152. package/dist/core/delegation/worker-tree-budget-coordinator.d.ts.map +1 -0
  153. package/dist/core/delegation/worker-tree-budget-coordinator.js +210 -0
  154. package/dist/core/delegation/worker-tree-budget-coordinator.js.map +1 -0
  155. package/dist/core/extensions/builtin.d.ts +2 -2
  156. package/dist/core/extensions/builtin.d.ts.map +1 -1
  157. package/dist/core/extensions/builtin.js +2 -2
  158. package/dist/core/extensions/builtin.js.map +1 -1
  159. package/dist/core/extensions/bundled-virtual-modules.d.ts +2 -0
  160. package/dist/core/extensions/bundled-virtual-modules.d.ts.map +1 -0
  161. package/dist/core/extensions/bundled-virtual-modules.js +129 -0
  162. package/dist/core/extensions/bundled-virtual-modules.js.map +1 -0
  163. package/dist/core/extensions/factory-runtime.d.ts +22 -0
  164. package/dist/core/extensions/factory-runtime.d.ts.map +1 -0
  165. package/dist/core/extensions/factory-runtime.js +334 -0
  166. package/dist/core/extensions/factory-runtime.js.map +1 -0
  167. package/dist/core/extensions/index.d.ts +1 -1
  168. package/dist/core/extensions/index.d.ts.map +1 -1
  169. package/dist/core/extensions/index.js +1 -1
  170. package/dist/core/extensions/index.js.map +1 -1
  171. package/dist/core/extensions/lifecycle.d.ts +13 -0
  172. package/dist/core/extensions/lifecycle.d.ts.map +1 -0
  173. package/dist/core/extensions/lifecycle.js +52 -0
  174. package/dist/core/extensions/lifecycle.js.map +1 -0
  175. package/dist/core/extensions/loader.d.ts +3 -24
  176. package/dist/core/extensions/loader.d.ts.map +1 -1
  177. package/dist/core/extensions/loader.js +21 -531
  178. package/dist/core/extensions/loader.js.map +1 -1
  179. package/dist/core/extensions/virtual-modules.d.ts +51 -0
  180. package/dist/core/extensions/virtual-modules.d.ts.map +1 -0
  181. package/dist/core/extensions/virtual-modules.js +59 -0
  182. package/dist/core/extensions/virtual-modules.js.map +1 -0
  183. package/dist/core/foreground-recovery-controller.d.ts +2 -1
  184. package/dist/core/foreground-recovery-controller.d.ts.map +1 -1
  185. package/dist/core/foreground-recovery-controller.js +3 -3
  186. package/dist/core/foreground-recovery-controller.js.map +1 -1
  187. package/dist/core/goal-loop-controller.js +1 -1
  188. package/dist/core/goal-loop-controller.js.map +1 -1
  189. package/dist/core/goals/compact-goal-context.d.ts +1 -1
  190. package/dist/core/goals/compact-goal-context.d.ts.map +1 -1
  191. package/dist/core/goals/compact-goal-context.js +1 -1
  192. package/dist/core/goals/compact-goal-context.js.map +1 -1
  193. package/dist/core/goals/goal-auto-continue-controller.js +1 -1
  194. package/dist/core/goals/goal-auto-continue-controller.js.map +1 -1
  195. package/dist/core/goals/goal-session-controller.d.ts +1 -1
  196. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  197. package/dist/core/goals/goal-session-controller.js +1 -1
  198. package/dist/core/goals/goal-session-controller.js.map +1 -1
  199. package/dist/core/http-dispatcher.d.ts +1 -1
  200. package/dist/core/http-dispatcher.d.ts.map +1 -1
  201. package/dist/core/http-dispatcher.js +1 -1
  202. package/dist/core/http-dispatcher.js.map +1 -1
  203. package/dist/core/index.d.ts +3 -2
  204. package/dist/core/index.d.ts.map +1 -1
  205. package/dist/core/index.js +2 -1
  206. package/dist/core/index.js.map +1 -1
  207. package/dist/core/memory/providers/file-store.d.ts.map +1 -1
  208. package/dist/core/memory/providers/file-store.js +1 -1
  209. package/dist/core/memory/providers/file-store.js.map +1 -1
  210. package/dist/core/memory/providers/user-memory-archive.js +1 -1
  211. package/dist/core/memory/providers/user-memory-archive.js.map +1 -1
  212. package/dist/core/model-registry.d.ts +2 -1
  213. package/dist/core/model-registry.d.ts.map +1 -1
  214. package/dist/core/model-registry.js +4 -1
  215. package/dist/core/model-registry.js.map +1 -1
  216. package/dist/core/model-resolver.d.ts +1 -1
  217. package/dist/core/model-resolver.d.ts.map +1 -1
  218. package/dist/core/model-resolver.js +1 -1
  219. package/dist/core/model-resolver.js.map +1 -1
  220. package/dist/core/model-router-controller.js +1 -1
  221. package/dist/core/model-router-controller.js.map +1 -1
  222. package/dist/core/model-selection-controller.js +1 -1
  223. package/dist/core/model-selection-controller.js.map +1 -1
  224. package/dist/core/model-tool-protocol.d.ts +1 -1
  225. package/dist/core/model-tool-protocol.d.ts.map +1 -1
  226. package/dist/core/model-tool-protocol.js +1 -1
  227. package/dist/core/model-tool-protocol.js.map +1 -1
  228. package/dist/core/models/llamacpp-runtime.d.ts +7 -0
  229. package/dist/core/models/llamacpp-runtime.d.ts.map +1 -1
  230. package/dist/core/models/llamacpp-runtime.js +8 -3
  231. package/dist/core/models/llamacpp-runtime.js.map +1 -1
  232. package/dist/core/models/local-runtime.js +1 -1
  233. package/dist/core/models/local-runtime.js.map +1 -1
  234. package/dist/core/models/runtime-process.d.ts.map +1 -1
  235. package/dist/core/models/runtime-process.js +5 -18
  236. package/dist/core/models/runtime-process.js.map +1 -1
  237. package/dist/core/orchestration/bounded-string-array.d.ts +11 -0
  238. package/dist/core/orchestration/bounded-string-array.d.ts.map +1 -0
  239. package/dist/core/orchestration/bounded-string-array.js +17 -0
  240. package/dist/core/orchestration/bounded-string-array.js.map +1 -0
  241. package/dist/core/orchestration/capability-gateway.d.ts +16 -0
  242. package/dist/core/orchestration/capability-gateway.d.ts.map +1 -1
  243. package/dist/core/orchestration/capability-gateway.js +38 -0
  244. package/dist/core/orchestration/capability-gateway.js.map +1 -1
  245. package/dist/core/orchestration/contracts.d.ts +11 -3
  246. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  247. package/dist/core/orchestration/contracts.js +0 -1
  248. package/dist/core/orchestration/contracts.js.map +1 -1
  249. package/dist/core/orchestration/delegation-ledger.d.ts +1 -0
  250. package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -1
  251. package/dist/core/orchestration/delegation-ledger.js +3 -0
  252. package/dist/core/orchestration/delegation-ledger.js.map +1 -1
  253. package/dist/core/orchestration/event-store.d.ts +12 -10
  254. package/dist/core/orchestration/event-store.d.ts.map +1 -1
  255. package/dist/core/orchestration/event-store.js +94 -104
  256. package/dist/core/orchestration/event-store.js.map +1 -1
  257. package/dist/core/orchestration/lane-tool-manifests.d.ts +2 -2
  258. package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -1
  259. package/dist/core/orchestration/lane-tool-manifests.js +4 -1
  260. package/dist/core/orchestration/lane-tool-manifests.js.map +1 -1
  261. package/dist/core/orchestration/model-binding.d.ts +1 -1
  262. package/dist/core/orchestration/model-binding.d.ts.map +1 -1
  263. package/dist/core/orchestration/model-binding.js +1 -1
  264. package/dist/core/orchestration/model-binding.js.map +1 -1
  265. package/dist/core/orchestration/policy-compiler.d.ts.map +1 -1
  266. package/dist/core/orchestration/policy-compiler.js +8 -9
  267. package/dist/core/orchestration/policy-compiler.js.map +1 -1
  268. package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
  269. package/dist/core/orchestration/profile-registry.js +4 -10
  270. package/dist/core/orchestration/profile-registry.js.map +1 -1
  271. package/dist/core/orchestration/task-profile-writer.js +1 -1
  272. package/dist/core/orchestration/task-profile-writer.js.map +1 -1
  273. package/dist/core/orchestration/task-runtime.d.ts +1 -0
  274. package/dist/core/orchestration/task-runtime.d.ts.map +1 -1
  275. package/dist/core/orchestration/task-runtime.js +58 -3
  276. package/dist/core/orchestration/task-runtime.js.map +1 -1
  277. package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
  278. package/dist/core/orchestration/worker-execution-contract.js +10 -17
  279. package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
  280. package/dist/core/process-matrix/runtime.d.ts +15 -1
  281. package/dist/core/process-matrix/runtime.d.ts.map +1 -1
  282. package/dist/core/process-matrix/runtime.js +55 -34
  283. package/dist/core/process-matrix/runtime.js.map +1 -1
  284. package/dist/core/reflection-controller.d.ts +4 -3
  285. package/dist/core/reflection-controller.d.ts.map +1 -1
  286. package/dist/core/reflection-controller.js +2 -2
  287. package/dist/core/reflection-controller.js.map +1 -1
  288. package/dist/core/research/model-fitness-controller.js +1 -1
  289. package/dist/core/research/model-fitness-controller.js.map +1 -1
  290. package/dist/core/research/research-lane-controller.d.ts +2 -2
  291. package/dist/core/research/research-lane-controller.d.ts.map +1 -1
  292. package/dist/core/research/research-lane-controller.js +1 -1
  293. package/dist/core/research/research-lane-controller.js.map +1 -1
  294. package/dist/core/resource-loader.d.ts +10 -19
  295. package/dist/core/resource-loader.d.ts.map +1 -1
  296. package/dist/core/resource-loader.js +8 -70
  297. package/dist/core/resource-loader.js.map +1 -1
  298. package/dist/core/risk-classifier.js +3 -3
  299. package/dist/core/risk-classifier.js.map +1 -1
  300. package/dist/core/runtime-builder.d.ts +4 -1
  301. package/dist/core/runtime-builder.d.ts.map +1 -1
  302. package/dist/core/runtime-builder.js +47 -18
  303. package/dist/core/runtime-builder.js.map +1 -1
  304. package/dist/core/scout-controller.d.ts +1 -1
  305. package/dist/core/scout-controller.d.ts.map +1 -1
  306. package/dist/core/scout-controller.js +1 -1
  307. package/dist/core/scout-controller.js.map +1 -1
  308. package/dist/core/sdk.d.ts +2 -2
  309. package/dist/core/sdk.d.ts.map +1 -1
  310. package/dist/core/sdk.js +3 -3
  311. package/dist/core/sdk.js.map +1 -1
  312. package/dist/core/secrets/bitwarden-credential-storage.d.ts +51 -0
  313. package/dist/core/secrets/bitwarden-credential-storage.d.ts.map +1 -0
  314. package/dist/core/secrets/bitwarden-credential-storage.js +345 -0
  315. package/dist/core/secrets/bitwarden-credential-storage.js.map +1 -0
  316. package/dist/core/secrets/credential-exposure-guard.d.ts +8 -4
  317. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  318. package/dist/core/secrets/credential-exposure-guard.js +31 -29
  319. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  320. package/dist/core/secrets/credential-manager.d.ts +109 -0
  321. package/dist/core/secrets/credential-manager.d.ts.map +1 -0
  322. package/dist/core/secrets/credential-manager.js +384 -0
  323. package/dist/core/secrets/credential-manager.js.map +1 -0
  324. package/dist/core/secrets/credential-project.d.ts +4 -0
  325. package/dist/core/secrets/credential-project.d.ts.map +1 -0
  326. package/dist/core/secrets/credential-project.js +145 -0
  327. package/dist/core/secrets/credential-project.js.map +1 -0
  328. package/dist/core/secrets/secret-dotenv.d.ts +1 -1
  329. package/dist/core/secrets/secret-dotenv.js +1 -1
  330. package/dist/core/secrets/secret-dotenv.js.map +1 -1
  331. package/dist/core/security/context-threat-scanner.d.ts +14 -0
  332. package/dist/core/security/context-threat-scanner.d.ts.map +1 -0
  333. package/dist/core/security/context-threat-scanner.js +71 -0
  334. package/dist/core/security/context-threat-scanner.js.map +1 -0
  335. package/dist/core/session-supervision-runtime.d.ts +4 -1
  336. package/dist/core/session-supervision-runtime.d.ts.map +1 -1
  337. package/dist/core/session-supervision-runtime.js +49 -11
  338. package/dist/core/session-supervision-runtime.js.map +1 -1
  339. package/dist/core/settings-manager.d.ts +4 -2
  340. package/dist/core/settings-manager.d.ts.map +1 -1
  341. package/dist/core/settings-manager.js +10 -6
  342. package/dist/core/settings-manager.js.map +1 -1
  343. package/dist/core/slash-commands.d.ts.map +1 -1
  344. package/dist/core/slash-commands.js +1 -0
  345. package/dist/core/slash-commands.js.map +1 -1
  346. package/dist/core/system-prompt.js +1 -1
  347. package/dist/core/system-prompt.js.map +1 -1
  348. package/dist/core/tool-capability-policy.js +2 -2
  349. package/dist/core/tool-capability-policy.js.map +1 -1
  350. package/dist/core/tool-recovery-logger.js +1 -1
  351. package/dist/core/tool-recovery-logger.js.map +1 -1
  352. package/dist/core/tools/artifact-retrieve.js +1 -1
  353. package/dist/core/tools/artifact-retrieve.js.map +1 -1
  354. package/dist/core/tools/bash.d.ts +2 -2
  355. package/dist/core/tools/bash.d.ts.map +1 -1
  356. package/dist/core/tools/bash.js +16 -4
  357. package/dist/core/tools/bash.js.map +1 -1
  358. package/dist/core/tools/delegate.d.ts +29 -1
  359. package/dist/core/tools/delegate.d.ts.map +1 -1
  360. package/dist/core/tools/delegate.js +179 -28
  361. package/dist/core/tools/delegate.js.map +1 -1
  362. package/dist/core/tools/extensionify-runtime.d.ts +44 -0
  363. package/dist/core/tools/extensionify-runtime.d.ts.map +1 -0
  364. package/dist/core/tools/extensionify-runtime.js +115 -0
  365. package/dist/core/tools/extensionify-runtime.js.map +1 -0
  366. package/dist/core/tools/extensionify.d.ts +9 -30
  367. package/dist/core/tools/extensionify.d.ts.map +1 -1
  368. package/dist/core/tools/extensionify.js +10 -140
  369. package/dist/core/tools/extensionify.js.map +1 -1
  370. package/dist/core/tools/find.d.ts +1 -1
  371. package/dist/core/tools/find.d.ts.map +1 -1
  372. package/dist/core/tools/find.js +1 -1
  373. package/dist/core/tools/find.js.map +1 -1
  374. package/dist/core/tools/git-filter.d.ts +1 -0
  375. package/dist/core/tools/git-filter.d.ts.map +1 -1
  376. package/dist/core/tools/git-filter.js +1 -1
  377. package/dist/core/tools/git-filter.js.map +1 -1
  378. package/dist/core/tools/index.d.ts +2 -4
  379. package/dist/core/tools/index.d.ts.map +1 -1
  380. package/dist/core/tools/index.js +7 -43
  381. package/dist/core/tools/index.js.map +1 -1
  382. package/dist/core/tools/ls.d.ts +1 -1
  383. package/dist/core/tools/ls.d.ts.map +1 -1
  384. package/dist/core/tools/ls.js +1 -1
  385. package/dist/core/tools/ls.js.map +1 -1
  386. package/dist/core/tools/output-accumulator.d.ts +1 -1
  387. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  388. package/dist/core/tools/output-accumulator.js +1 -1
  389. package/dist/core/tools/output-accumulator.js.map +1 -1
  390. package/dist/core/tools/profile-writer.js +3 -3
  391. package/dist/core/tools/profile-writer.js.map +1 -1
  392. package/dist/core/tools/python.d.ts +2 -0
  393. package/dist/core/tools/python.d.ts.map +1 -1
  394. package/dist/core/tools/python.js +17 -12
  395. package/dist/core/tools/python.js.map +1 -1
  396. package/dist/core/tools/render-utils.js +1 -1
  397. package/dist/core/tools/render-utils.js.map +1 -1
  398. package/dist/core/tools/run-process.d.ts +2 -0
  399. package/dist/core/tools/run-process.d.ts.map +1 -1
  400. package/dist/core/tools/run-process.js +7 -3
  401. package/dist/core/tools/run-process.js.map +1 -1
  402. package/dist/core/tools/search-command-guard.d.ts +8 -0
  403. package/dist/core/tools/search-command-guard.d.ts.map +1 -1
  404. package/dist/core/tools/search-command-guard.js +54 -0
  405. package/dist/core/tools/search-command-guard.js.map +1 -1
  406. package/dist/core/tools/secret-store.d.ts +8 -18
  407. package/dist/core/tools/secret-store.d.ts.map +1 -1
  408. package/dist/core/tools/secret-store.js +83 -348
  409. package/dist/core/tools/secret-store.js.map +1 -1
  410. package/dist/core/tools/shell-contract-router.d.ts.map +1 -1
  411. package/dist/core/tools/shell-contract-router.js +9 -4
  412. package/dist/core/tools/shell-contract-router.js.map +1 -1
  413. package/dist/core/tools/shell-session.d.ts.map +1 -1
  414. package/dist/core/tools/shell-session.js +6 -4
  415. package/dist/core/tools/shell-session.js.map +1 -1
  416. package/dist/core/tools/tool-definition-factory.d.ts +32 -0
  417. package/dist/core/tools/tool-definition-factory.d.ts.map +1 -0
  418. package/dist/core/tools/tool-definition-factory.js +55 -0
  419. package/dist/core/tools/tool-definition-factory.js.map +1 -0
  420. package/dist/core/util/atomic-file.d.ts.map +1 -1
  421. package/dist/core/util/atomic-file.js +79 -32
  422. package/dist/core/util/atomic-file.js.map +1 -1
  423. package/dist/index.d.ts +5 -2
  424. package/dist/index.d.ts.map +1 -1
  425. package/dist/index.js +5 -2
  426. package/dist/index.js.map +1 -1
  427. package/dist/main.d.ts +2 -0
  428. package/dist/main.d.ts.map +1 -1
  429. package/dist/main.js +24 -18
  430. package/dist/main.js.map +1 -1
  431. package/dist/modes/interactive/auto-learn-controller.js +1 -1
  432. package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
  433. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  434. package/dist/modes/interactive/components/settings-selector.js +35 -14
  435. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  436. package/dist/modes/interactive/components/tool-execution.js +1 -1
  437. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  438. package/dist/modes/interactive/interactive-event-controller.js +1 -1
  439. package/dist/modes/interactive/interactive-event-controller.js.map +1 -1
  440. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  441. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  442. package/dist/modes/interactive/interactive-mode.js +27 -4
  443. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  444. package/dist/modes/interactive/secret-menu-controller.d.ts +21 -0
  445. package/dist/modes/interactive/secret-menu-controller.d.ts.map +1 -0
  446. package/dist/modes/interactive/secret-menu-controller.js +276 -0
  447. package/dist/modes/interactive/secret-menu-controller.js.map +1 -0
  448. package/dist/utils/child-process.js +1 -1
  449. package/dist/utils/child-process.js.map +1 -1
  450. package/dist/utils/tools-manager.d.ts +2 -1
  451. package/dist/utils/tools-manager.d.ts.map +1 -1
  452. package/dist/utils/tools-manager.js +43 -48
  453. package/dist/utils/tools-manager.js.map +1 -1
  454. package/dist/utils/zip-extractor.d.ts +8 -0
  455. package/dist/utils/zip-extractor.d.ts.map +1 -0
  456. package/dist/utils/zip-extractor.js +275 -0
  457. package/dist/utils/zip-extractor.js.map +1 -0
  458. package/docs/harness-architecture.md +34 -22
  459. package/docs/index.md +1 -1
  460. package/docs/resources.md +1 -1
  461. package/docs/settings.md +39 -103
  462. package/docs/usage.md +7 -5
  463. package/docs/worker-profiles.md +9 -7
  464. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  465. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  466. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  467. package/examples/extensions/sandbox/package-lock.json +2 -2
  468. package/examples/extensions/sandbox/package.json +1 -1
  469. package/examples/extensions/with-deps/package-lock.json +2 -2
  470. package/examples/extensions/with-deps/package.json +1 -1
  471. package/npm-shrinkwrap.json +12 -12
  472. package/package.json +7 -5
  473. package/dist/core/secrets/secret-vault-format.d.ts +0 -112
  474. package/dist/core/secrets/secret-vault-format.d.ts.map +0 -1
  475. package/dist/core/secrets/secret-vault-format.js +0 -396
  476. package/dist/core/secrets/secret-vault-format.js.map +0 -1
  477. package/dist/core/secrets/secret-vault.d.ts +0 -72
  478. package/dist/core/secrets/secret-vault.d.ts.map +0 -1
  479. package/dist/core/secrets/secret-vault.js +0 -663
  480. package/dist/core/secrets/secret-vault.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/process-matrix/runtime.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Process-matrix runtime composition: the pieces main.ts wires together for durable,\n * restart-surviving master/worker process supervision.\n *\n * Contract:\n * - A WORKER is any process launched with a known parent (`PI_PARENT_PID` -- set by the\n * `--parent-pid` CLI flag, or directly by a launcher such as tmux dispatch). It self-registers\n * its OWN entry (the single writer of that entry during normal operation) and watches its\n * parent's liveness. On parent death it winds down GRACEFULLY -- never silently -- leaving a\n * `resumable` payload, then exits on its own after a bounded grace window (during which it may\n * instead be adopted by a new parent). \"No new turns\" after that point is automatic: a dead\n * parent injects no further follow-ups, so the worker simply runs out of work to do.\n * - A MASTER is everything else (no known parent). On startup it scans the matrix for orphaned\n * workers (workers whose recorded parent is dead). Workers owned by this exact resumed session\n * are restored automatically; foreign workers remain owner-gated interactively and report-only\n * headlessly.\n *\n * Sanctioned exceptions to \"a worker's entry is written only by that worker\": an exact resumed\n * parent may restore its recorded ownership, and an owner may explicitly approve adoption or\n * cooperative cleanup of a foreign orphan. The worker later confirms/applies the directive via\n * `pollWorkerDirective` and re-writes its own entry -- see `docs/process-matrix.md`. Outside these\n * identity/approval-fenced handshakes, a master NEVER writes another session's entry, and nothing\n * here ever kills a process directly.\n */\n\nimport { hostname as osHostname } from \"node:os\";\nimport { isAgentIdentity } from \"../orchestration/agent-resume.ts\";\nimport type { AgentIdentityContract } from \"../orchestration/contracts.ts\";\nimport { getParentPid, getParentSessionId, getProcessTaskRef } from \"../process-identity.ts\";\nimport type { ResolvedProcessMatrixSettings } from \"../settings-manager.ts\";\nimport { getBoundWorktreeLaneKey } from \"../worktree-sync/runtime.ts\";\nimport type { ProcessMatrixEntry, ResumablePayload } from \"./codes.ts\";\nimport {\n\tbuildEntryId,\n\tlistEntries,\n\treadEntry,\n\tremoveEntryIfUnchanged,\n\twriteEntry,\n\twriteEntryIfUnchanged,\n\twriteEntryIfUnchangedSync,\n} from \"./store.ts\";\nimport {\n\tapplyAdoption,\n\tapplyHeartbeat,\n\tbeginWindDown,\n\tbuildMasterEntry,\n\tbuildWorkerEntry,\n\tdetectOrphanedWorkers,\n\tmarkClosed,\n\tmarkResumable,\n\tmarkTerminal,\n\tmarkTerminalNotificationDelivered,\n\tpollWorkerDirective,\n\treconcileMatrix,\n} from \"./supervisor.ts\";\n\nexport {\n\tgetOrchestrationAgentId,\n\tgetParentPid,\n\tgetParentSessionId,\n\tgetProcessTaskRef,\n\tPI_ORCHESTRATION_AGENT_ID_ENV,\n\tPI_PARENT_PID_ENV,\n\tPI_PARENT_SESSION_ENV,\n\tPI_TASK_REF_ENV,\n} from \"../process-identity.ts\";\n\nexport interface ProcessMatrixRuntimeConfig {\n\tagentDir: string;\n\t/** Canonical logical identity for this process and any exact-session resume. */\n\tagent: AgentIdentityContract;\n\t/** Whether an interactive UI is available to ask the owner (see `promptConfirm`). */\n\thasUI: boolean;\n\tsettings: ResolvedProcessMatrixSettings;\n\tisProcessAlive: (pid: number) => boolean;\n\tnow?: () => number;\n\t/** Structural notice injection into the running session (host `sendCustomMessage` seam). */\n\tnotify: (text: string) => void | Promise<void>;\n\t/** Diagnostics sink (never throws into the session). */\n\tonDiagnostic?: (message: string) => void;\n\t/** The ask seam: resolves false on decline AND on any non-interactive/non-TTY caller. */\n\tpromptConfirm: (message: string) => Promise<boolean>;\n\t/** Cooperative self-exit -- called by a worker once wound down (grace expiry or a\n\t * master-granted cleanup directive). Never called for the master's own lifecycle. */\n\trequestExit: () => void;\n\t/** Stable goal/task identity. Automatic recovery requires an exact match. */\n\ttaskRef?: string;\n\ttaskSummary?: string;\n\t/** False for terminal/blocked owner state; recovery then remains explicit-owner gated. */\n\tallowAutomaticRecovery?: boolean;\n\t/** Starts a replacement OS process for a dead resumable worker. Completion is an event-driven\n\t * terminal signal; worker product remains in its persisted session/artifacts. */\n\tresumeWorker?: (payload: ResumablePayload) => Promise<ResumeWorkerLaunchOutcome>;\n}\n\nexport type ResumeWorkerLaunchOutcome =\n\t| {\n\t\t\tstarted: true;\n\t\t\t/** OS identity of this specific replacement process, used to fence its terminal handoff. */\n\t\t\tpid: number;\n\t\t\tcompletion: Promise<{ code: number | null; signal: NodeJS.Signals | null }>;\n\t }\n\t| { started: false; reason: string };\n\nexport interface ProcessMatrixRuntimeHandle {\n\tstop(): Promise<void> | void;\n}\n\nconst NOOP_HANDLE: ProcessMatrixRuntimeHandle = { stop: () => {} };\nexport const PROCESS_MATRIX_RESUMABLE_RETENTION_MS = 30 * 24 * 60 * 60_000;\n\nfunction describeError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction nowIso(now: () => number): string {\n\treturn new Date(now()).toISOString();\n}\n\nfunction emitRuntimeNotice(config: ProcessMatrixRuntimeConfig, text: string): void {\n\ttry {\n\t\tvoid Promise.resolve(config.notify(text)).catch((error: unknown) => {\n\t\t\tconfig.onDiagnostic?.(`process-matrix: failed to notify session: ${describeError(error)}`);\n\t\t});\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to notify session: ${describeError(error)}`);\n\t}\n}\n\n/**\n * Start the per-session process-matrix runtime. No-op when disabled (byte-identical to not\n * calling this at all). Never throws: a broken store must surface as a diagnostic, not a startup\n * crash.\n */\nexport async function startProcessMatrixRuntime(\n\tconfig: ProcessMatrixRuntimeConfig,\n): Promise<ProcessMatrixRuntimeHandle> {\n\tif (!config.settings.enabled) return NOOP_HANDLE;\n\tconst now = config.now ?? Date.now;\n\tconst parentPid = getParentPid();\n\n\ttry {\n\t\tif (!isAgentIdentity(config.agent)) throw new TypeError(\"Process-matrix agent identity is invalid.\");\n\t\tif (parentPid !== undefined) {\n\t\t\treturn await startWorkerBranch(config, parentPid, now);\n\t\t}\n\t\treturn await startMasterBranch(config, now);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: runtime failed to start: ${describeError(error)}`);\n\t\treturn NOOP_HANDLE;\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Master branch\n// ---------------------------------------------------------------------------\n\nasync function startMasterBranch(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tnow: () => number,\n): Promise<ProcessMatrixRuntimeHandle> {\n\tlet entry = buildMasterEntry({\n\t\tagent: config.agent,\n\t\tpid: process.pid,\n\t\thostname: osHostname(),\n\t\tnow: nowIso(now),\n\t});\n\ttry {\n\t\tawait writeEntry(config.agentDir, entry);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to register master entry: ${describeError(error)}`);\n\t}\n\n\tlet stopped = false;\n\tlet ownsEntry = true;\n\tlet heartbeatTask: Promise<void> | undefined;\n\tconst lifetime = new AbortController();\n\tconst heartbeatTimer = setInterval(() => {\n\t\tif (stopped || !ownsEntry || heartbeatTask) return;\n\t\tconst expected = entry;\n\t\tconst next = applyHeartbeat(expected, nowIso(now));\n\t\theartbeatTask = writeEntryIfUnchanged(config.agentDir, expected.entryId, expected, next)\n\t\t\t.then((written) => {\n\t\t\t\tif (written) {\n\t\t\t\t\tentry = next;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\townsEntry = false;\n\t\t\t\tlifetime.abort();\n\t\t\t\tclearInterval(heartbeatTimer);\n\t\t\t\tprocess.off(\"exit\", closeOnExit);\n\t\t\t\tconfig.onDiagnostic?.(\"process-matrix: master entry ownership moved to a newer process generation\");\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tconfig.onDiagnostic?.(`process-matrix: failed to write master heartbeat: ${describeError(error)}`);\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\theartbeatTask = undefined;\n\t\t\t});\n\t}, config.settings.heartbeatMs);\n\theartbeatTimer.unref?.();\n\n\t// Best-effort close on process exit. A SIGKILLed master leaving \"running\" is fine -- reconcile's\n\t// own dead-pid detection covers it; this only makes the common clean-exit case tidy.\n\tconst closeOnExit = (): void => {\n\t\tif (!ownsEntry) return;\n\t\ttry {\n\t\t\tconst closed = markClosed(entry, nowIso(now));\n\t\t\tif (writeEntryIfUnchangedSync(config.agentDir, entry, closed)) entry = closed;\n\t\t} catch {\n\t\t\t// Best-effort only -- see module doc.\n\t\t}\n\t};\n\tprocess.once(\"exit\", closeOnExit);\n\n\tconst maintenance = reconcileAndRunOrphanScan(config, now, lifetime.signal).catch((error: unknown) => {\n\t\tconfig.onDiagnostic?.(`process-matrix: maintenance failed: ${describeError(error)}`);\n\t});\n\n\treturn {\n\t\tasync stop() {\n\t\t\tif (stopped) return;\n\t\t\tstopped = true;\n\t\t\tlifetime.abort();\n\t\t\tclearInterval(heartbeatTimer);\n\t\t\tprocess.off(\"exit\", closeOnExit);\n\t\t\tawait heartbeatTask;\n\t\t\tif (ownsEntry) {\n\t\t\t\tconst closed = markClosed(entry, nowIso(now));\n\t\t\t\tif (await writeEntryIfUnchanged(config.agentDir, entry.entryId, entry, closed)) entry = closed;\n\t\t\t}\n\t\t\tawait maintenance;\n\t\t},\n\t};\n}\n\nasync function reconcileAndRunOrphanScan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tnow: () => number,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tlet entries: ProcessMatrixEntry[];\n\ttry {\n\t\tentries = await listEntries(config.agentDir);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: reconciliation failed to list entries: ${describeError(error)}`);\n\t\treturn;\n\t}\n\tif (signal.aborted) return;\n\tconst reconciled = reconcileMatrix(entries, {\n\t\tisPidAlive: (pid) => pid === process.pid || config.isProcessAlive(pid),\n\t\tnow: now(),\n\t\tresumableTtlMs: PROCESS_MATRIX_RESUMABLE_RETENTION_MS,\n\t});\n\tconst originalByEntryId = new Map(entries.map((entry) => [entry.entryId, entry]));\n\tconst recoveredEntryIdSet = new Set(reconciled.recoveredEntryIds);\n\tconst [prunedOutcomes, recoveredOutcomes] = await Promise.all([\n\t\tPromise.all(\n\t\t\treconciled.prunedEntryIds.map((entryId) => {\n\t\t\t\tconst original = originalByEntryId.get(entryId);\n\t\t\t\treturn original ? removeEntryIfUnchanged(config.agentDir, original) : false;\n\t\t\t}),\n\t\t),\n\t\tPromise.all(\n\t\t\treconciled.kept\n\t\t\t\t.filter((entry) => recoveredEntryIdSet.has(entry.entryId))\n\t\t\t\t.map((entry) => {\n\t\t\t\t\tconst original = originalByEntryId.get(entry.entryId);\n\t\t\t\t\treturn original ? writeEntryIfUnchanged(config.agentDir, entry.entryId, original, entry) : false;\n\t\t\t\t}),\n\t\t),\n\t]);\n\tif (signal.aborted) return;\n\tconst recoveredCount = recoveredOutcomes.filter(Boolean).length;\n\tconst prunedCount = prunedOutcomes.filter(Boolean).length;\n\tif (recoveredCount > 0) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: recovered ${recoveredCount} interrupted Pi worker entr${recoveredCount === 1 ? \"y\" : \"ies\"}`,\n\t\t);\n\t}\n\tif (prunedCount > 0) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: pruned ${prunedCount} terminal or expired entr${prunedCount === 1 ? \"y\" : \"ies\"}`,\n\t\t);\n\t}\n\tconst currentEntries = await listEntries(config.agentDir);\n\tawait deliverTerminalNotifications(config, currentEntries, now, signal);\n\tif (signal.aborted) return;\n\tawait runOrphanScan(config, currentEntries, now, signal);\n}\n\nasync function deliverTerminalNotifications(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tentries: ProcessMatrixEntry[],\n\tnow: () => number,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tfor (const entry of entries) {\n\t\tif (\n\t\t\tsignal.aborted ||\n\t\t\tentry.status !== \"closed\" ||\n\t\t\t!entry.terminal ||\n\t\t\tentry.terminal.notificationDeliveredAt ||\n\t\t\tentry.parentSessionId !== config.agent.resumeContext.sessionId\n\t\t)\n\t\t\tcontinue;\n\t\ttry {\n\t\t\tawait config.notify(formatTerminalNotification(entry));\n\t\t\tif (signal.aborted) return;\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to deliver terminal handoff for ${entry.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst delivered = markTerminalNotificationDelivered(entry, nowIso(now));\n\t\t\tif (!(await writeEntryIfUnchanged(config.agentDir, entry.entryId, entry, delivered))) {\n\t\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t\t`process-matrix: terminal handoff changed before acknowledgement for ${entry.entryId}`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to acknowledge terminal handoff for ${entry.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction formatTerminalNotification(entry: ProcessMatrixEntry): string {\n\tconst terminal = entry.terminal;\n\treturn `process-matrix: resumed agent ${entry.agent.agentId} reached a terminal process state (code ${terminal?.code ?? \"none\"}, signal ${terminal?.signal ?? \"none\"}). Inspect its persisted result before continuing.`;\n}\n\nasync function runOrphanScan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tentries: ProcessMatrixEntry[],\n\tnow: () => number,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tconst orphans = detectOrphanedWorkers(entries, {\n\t\tisPidAlive: config.isProcessAlive,\n\t\townSessionId: config.agent.resumeContext.sessionId,\n\t});\n\tif (orphans.length === 0) return;\n\n\tfor (const orphan of orphans) {\n\t\tif (signal.aborted) return;\n\t\tconst recoveryBoundary = getAutomaticRecoveryBoundary(config, orphan);\n\t\tconst exactResumedParent = recoveryBoundary === undefined;\n\t\tif (!config.isProcessAlive(orphan.pid)) {\n\t\t\tif (!exactResumedParent) {\n\t\t\t\tif (!config.hasUI) {\n\t\t\t\t\treportOwnerGatedOrphan(config, orphan, recoveryBoundary);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst payload = orphan.resumable;\n\t\t\t\tif (!payload) {\n\t\t\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t\t\t`process-matrix: dead worker ${orphan.entryId} is not resumable because its launch context is unavailable`,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst resume = await config.promptConfirm(\n\t\t\t\t\t`resume agent ${payload.agent.agentId} from its persisted session?`,\n\t\t\t\t);\n\t\t\t\tif (!resume || signal.aborted) continue;\n\t\t\t}\n\t\t\tawait resumeDeadOrphan(config, orphan, signal);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (exactResumedParent) {\n\t\t\tawait adoptLiveOrphan(config, orphan, signal);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!config.hasUI) {\n\t\t\treportOwnerGatedOrphan(config, orphan, recoveryBoundary);\n\t\t\tcontinue;\n\t\t}\n\t\tconst adopt = await config.promptConfirm(\n\t\t\t`adopt worker ${orphan.entryId} (lane ${orphan.agent.resumeContext.worktreeLaneKey ?? \"none\"})?`,\n\t\t);\n\t\tif (signal.aborted) return;\n\t\tif (adopt) {\n\t\t\tawait adoptLiveOrphan(config, orphan, signal);\n\t\t\tcontinue;\n\t\t}\n\t\tconst cleanup = await config.promptConfirm(`clean up worker ${orphan.entryId} gracefully?`);\n\t\tif (!cleanup || signal.aborted) continue;\n\t\tconst windingDown = beginWindDown(orphan, \"user_cleanup\", nowIso(now));\n\t\ttry {\n\t\t\tif (!(await writeEntryIfUnchanged(config.agentDir, orphan.entryId, orphan, windingDown))) {\n\t\t\t\tconfig.onDiagnostic?.(`process-matrix: cleanup skipped because ${orphan.entryId} changed`);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to write cleanup for ${orphan.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction getAutomaticRecoveryBoundary(\n\tconfig: ProcessMatrixRuntimeConfig,\n\torphan: ProcessMatrixEntry,\n): string | undefined {\n\tif (orphan.parentSessionId !== config.agent.resumeContext.sessionId) return \"foreign parent session\";\n\tconst entryTaskRef = orphan.taskRef;\n\tconst payloadTaskRef = orphan.resumable?.taskRef;\n\tif (entryTaskRef !== undefined && payloadTaskRef !== undefined && entryTaskRef !== payloadTaskRef) {\n\t\treturn \"inconsistent persisted task identity\";\n\t}\n\tif ((payloadTaskRef ?? entryTaskRef) !== config.taskRef) return \"task identity does not match the current goal\";\n\tif (config.allowAutomaticRecovery === false) return \"current goal state does not permit automatic recovery\";\n\treturn undefined;\n}\n\nfunction reportOwnerGatedOrphan(config: ProcessMatrixRuntimeConfig, orphan: ProcessMatrixEntry, reason: string): void {\n\tconfig.onDiagnostic?.(\n\t\t`process-matrix: found owner-gated orphan ${orphan.entryId} (${reason}; report-only, non-interactive; nothing written, nothing killed)`,\n\t);\n}\n\nasync function adoptLiveOrphan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\torphan: ProcessMatrixEntry,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tif (signal.aborted) return;\n\tconst adopted = applyAdoption(orphan, {\n\t\tparentPid: process.pid,\n\t\tparentSessionId: config.agent.resumeContext.sessionId,\n\t});\n\ttry {\n\t\tif (!(await writeEntryIfUnchanged(config.agentDir, orphan.entryId, orphan, adopted))) return;\n\t\tif (signal.aborted) await writeEntryIfUnchanged(config.agentDir, orphan.entryId, adopted, orphan);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to write adoption for ${orphan.entryId}: ${describeError(error)}`);\n\t}\n}\n\nasync function resumeDeadOrphan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\torphan: ProcessMatrixEntry,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tif (signal.aborted) return;\n\tconst payload = orphan.resumable;\n\tif (!payload || !config.resumeWorker) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: dead worker ${orphan.entryId} is not resumable because its launch context or resume launcher is unavailable`,\n\t\t);\n\t\treturn;\n\t}\n\tconst claimed = applyAdoption(orphan, {\n\t\tparentPid: process.pid,\n\t\tparentSessionId: config.agent.resumeContext.sessionId,\n\t});\n\tlet launched: Extract<ResumeWorkerLaunchOutcome, { started: true }>;\n\ttry {\n\t\tif (!(await writeEntryIfUnchanged(config.agentDir, orphan.entryId, orphan, claimed))) return;\n\t\tif (signal.aborted) {\n\t\t\tawait writeEntryIfUnchanged(config.agentDir, orphan.entryId, claimed, orphan);\n\t\t\treturn;\n\t\t}\n\t\tconst launchOutcome = await config.resumeWorker(payload);\n\t\tif (!launchOutcome.started) {\n\t\t\tawait writeEntryIfUnchanged(config.agentDir, orphan.entryId, claimed, orphan);\n\t\t\tconfig.onDiagnostic?.(`process-matrix: failed to resume ${orphan.entryId}: ${launchOutcome.reason}`);\n\t\t\treturn;\n\t\t}\n\t\tlaunched = launchOutcome;\n\t} catch (error) {\n\t\ttry {\n\t\t\tawait writeEntryIfUnchanged(config.agentDir, orphan.entryId, claimed, orphan);\n\t\t} catch {\n\t\t\t// The original resumable record remains the intended recovery state.\n\t\t}\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to resume ${orphan.entryId}: ${describeError(error)}`);\n\t\treturn;\n\t}\n\tconst launchedEntry = { ...claimed, pid: launched.pid };\n\tif (!signal.aborted) {\n\t\ttry {\n\t\t\t// Bridge the interval before the replacement can self-register. Without its real PID here, a\n\t\t\t// restarted master can mistake this live replacement for the original dead process and spawn\n\t\t\t// a duplicate.\n\t\t\tawait writeEntryIfUnchanged(config.agentDir, claimed.entryId, claimed, launchedEntry);\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to record resumed worker pid for ${orphan.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t}\n\t} else {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: resumed worker ${orphan.entryId} launched after owner shutdown; preserving its terminal handoff only`,\n\t\t);\n\t}\n\tvoid launched.completion.then(\n\t\t(result) => persistResumedWorkerTerminal(config, launchedEntry, claimed, result, signal),\n\t\t(error: unknown) => {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: resumed agent ${payload.agent.agentId} terminal signal failed: ${describeError(error)}`,\n\t\t\t);\n\t\t},\n\t);\n}\n\nasync function persistResumedWorkerTerminal(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tclaimed: ProcessMatrixEntry,\n\tpreLaunchClaim: ProcessMatrixEntry,\n\tresult: { code: number | null; signal: NodeJS.Signals | null },\n\tlifetime: AbortSignal,\n): Promise<void> {\n\ttry {\n\t\tconst observedAt = new Date().toISOString();\n\t\tconst terminal = markTerminal(claimed, result, observedAt);\n\t\tif (await writeEntryIfUnchanged(config.agentDir, claimed.entryId, claimed, terminal)) {\n\t\t\tif (lifetime.aborted) return;\n\t\t\tawait notifyResumedWorkerTerminal(config, terminal, lifetime);\n\t\t\treturn;\n\t\t}\n\t\tconst selfRegistered = await readEntry(config.agentDir, claimed.entryId);\n\t\tif (selfRegistered?.pid === claimed.pid) {\n\t\t\tconst registeredTerminal = markTerminal(selfRegistered, result, observedAt);\n\t\t\tif (await writeEntryIfUnchanged(config.agentDir, claimed.entryId, selfRegistered, registeredTerminal)) {\n\t\t\t\tif (lifetime.aborted) return;\n\t\t\t\tawait notifyResumedWorkerTerminal(config, registeredTerminal, lifetime);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// If recording the spawned PID failed (or shutdown won the race immediately after spawn), the\n\t\t// untouched pre-launch claim proves no newer process has taken this logical entry. Upgrade it\n\t\t// to the actual exited process before persisting its terminal handoff.\n\t\tconst fallbackTerminal = markTerminal({ ...preLaunchClaim, pid: claimed.pid }, result, observedAt);\n\t\tif (await writeEntryIfUnchanged(config.agentDir, claimed.entryId, preLaunchClaim, fallbackTerminal)) {\n\t\t\tif (lifetime.aborted) return;\n\t\t\tawait notifyResumedWorkerTerminal(config, fallbackTerminal, lifetime);\n\t\t\treturn;\n\t\t}\n\t\tif (await writeEntryIfUnchanged(config.agentDir, claimed.entryId, undefined, terminal)) {\n\t\t\tif (lifetime.aborted) return;\n\t\t\tawait notifyResumedWorkerTerminal(config, terminal, lifetime);\n\t\t\treturn;\n\t\t}\n\t\tconfig.onDiagnostic?.(`process-matrix: ignored stale terminal handoff for ${claimed.entryId}`);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: failed to persist terminal handoff for ${claimed.entryId}: ${describeError(error)}`,\n\t\t);\n\t}\n}\n\nasync function notifyResumedWorkerTerminal(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tterminal: ProcessMatrixEntry,\n\tlifetime: AbortSignal,\n): Promise<void> {\n\tif (lifetime.aborted) return;\n\ttry {\n\t\tawait config.notify(formatTerminalNotification(terminal));\n\t\tif (lifetime.aborted) return;\n\t\tconst delivered = markTerminalNotificationDelivered(terminal, new Date().toISOString());\n\t\tif (!(await writeEntryIfUnchanged(config.agentDir, terminal.entryId, terminal, delivered))) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: terminal handoff changed before acknowledgement for ${terminal.entryId}`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: failed to deliver terminal handoff for ${terminal.entryId}: ${describeError(error)}`,\n\t\t);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Worker branch\n// ---------------------------------------------------------------------------\n\nasync function startWorkerBranch(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tinitialParentPid: number,\n\tnow: () => number,\n): Promise<ProcessMatrixRuntimeHandle> {\n\tconst parentSessionId = getParentSessionId();\n\tconst taskRef = (getProcessTaskRef() ?? config.taskRef)?.trim().slice(0, 512) || undefined;\n\tconst taskSummary = config.taskSummary?.trim().slice(0, 2_000) || undefined;\n\tconst laneKey = getBoundWorktreeLaneKey();\n\tconst contextLaneKey = config.agent.resumeContext.worktreeLaneKey;\n\tif (laneKey !== contextLaneKey) {\n\t\tthrow new TypeError(\n\t\t\t`Process-matrix agent lane '${contextLaneKey ?? \"none\"}' does not match active lane '${laneKey ?? \"none\"}'.`,\n\t\t);\n\t}\n\n\tlet entry = buildWorkerEntry({\n\t\tagent: config.agent,\n\t\tpid: process.pid,\n\t\thostname: osHostname(),\n\t\tnow: nowIso(now),\n\t\tparentPid: initialParentPid,\n\t\t...(parentSessionId !== undefined ? { parentSessionId } : {}),\n\t\t...(taskRef !== undefined ? { taskRef } : {}),\n\t\t...(taskSummary !== undefined ? { taskSummary } : {}),\n\t});\n\ttry {\n\t\tawait writeEntry(config.agentDir, entry);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to register worker entry: ${describeError(error)}`);\n\t}\n\n\tlet currentParentPid = initialParentPid;\n\tlet currentParentSessionId = parentSessionId;\n\tlet stopped = false;\n\tlet timer: NodeJS.Timeout | undefined;\n\tlet ticking = false;\n\tlet preserveResumableOnExit = false;\n\tlet stopTask: Promise<void> | undefined;\n\tconst generationStartedAt = entry.startedAt;\n\tconst closeOnExit = (code: number | null = null): void => {\n\t\tif (preserveResumableOnExit) return;\n\t\ttry {\n\t\t\tconst terminal = markTerminal(entry, { code, signal: null }, nowIso(now));\n\t\t\tif (writeEntryIfUnchangedSync(config.agentDir, entry, terminal)) entry = terminal;\n\t\t} catch {\n\t\t\t// Best-effort. Dead-pid reconciliation remains authoritative.\n\t\t}\n\t};\n\tprocess.once(\"exit\", closeOnExit);\n\n\tconst closeWorker = async (): Promise<void> => {\n\t\tif (stopped) return;\n\t\tstopped = true;\n\t\tif (timer) clearInterval(timer);\n\t\ttimer = undefined;\n\t\tif (!preserveResumableOnExit) {\n\t\t\t// Normal runtime shutdown can await the lock and Windows rename retry policy. Keep the\n\t\t\t// synchronous exit hook only as a last-chance process-exit fallback: using it here made a\n\t\t\t// transient lock collision leave cooperative cleanup permanently in `winding_down`.\n\t\t\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\t\t\tconst expected = entry;\n\t\t\t\tconst terminal = markTerminal(expected, { code: null, signal: null }, nowIso(now));\n\t\t\t\ttry {\n\t\t\t\t\tif (await writeEntryIfUnchanged(config.agentDir, expected.entryId, expected, terminal)) {\n\t\t\t\t\t\tentry = terminal;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst current = await readEntry(config.agentDir, expected.entryId);\n\t\t\t\t\tif (current?.pid !== process.pid || current.startedAt !== generationStartedAt) {\n\t\t\t\t\t\tconfig.onDiagnostic?.(\"process-matrix: worker entry ownership moved to a newer process generation\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tentry = current;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t\t\t`process-matrix: failed to persist worker terminal state: ${describeError(error)}`,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tprocess.off(\"exit\", closeOnExit);\n\t};\n\n\tconst stop = (): Promise<void> => {\n\t\tstopTask ??= closeWorker();\n\t\treturn stopTask;\n\t};\n\n\tconst persist = async (\n\t\texpected: ProcessMatrixEntry,\n\t\tnext: ProcessMatrixEntry,\n\t\tfailureContext: string,\n\t): Promise<boolean> => {\n\t\ttry {\n\t\t\tif (await writeEntryIfUnchanged(config.agentDir, expected.entryId, expected, next)) {\n\t\t\t\tentry = next;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst current = await readEntry(config.agentDir, expected.entryId);\n\t\t\tif (current?.pid === process.pid) entry = current;\n\t\t\telse {\n\t\t\t\tstopped = true;\n\t\t\t\tif (timer) clearInterval(timer);\n\t\t\t\ttimer = undefined;\n\t\t\t\tprocess.off(\"exit\", closeOnExit);\n\t\t\t\tconfig.onDiagnostic?.(\"process-matrix: worker entry ownership moved to a newer process generation\");\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(`process-matrix: ${failureContext}: ${describeError(error)}`);\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst completeCooperativeCleanup = async (fresh: ProcessMatrixEntry): Promise<void> => {\n\t\tif (\n\t\t\t!(await persist(\n\t\t\t\tfresh,\n\t\t\t\tbeginWindDown(fresh, \"user_cleanup\", nowIso(now)),\n\t\t\t\t\"failed to write a master-requested worker wind-down\",\n\t\t\t))\n\t\t)\n\t\t\treturn;\n\t\tpreserveResumableOnExit = false;\n\t\temitRuntimeNotice(config, \"process-matrix: the parent session requested a cooperative cleanup. Winding down.\");\n\t\tawait stop();\n\t\tconfig.requestExit();\n\t};\n\n\tconst startHealthyWatch = (): void => {\n\t\ttimer = setInterval(() => {\n\t\t\tif (ticking) return;\n\t\t\tticking = true;\n\t\t\tvoid healthyTick().finally(() => {\n\t\t\t\tticking = false;\n\t\t\t});\n\t\t}, config.settings.watcherPollMs);\n\t\ttimer.unref?.();\n\t};\n\n\tconst declaredParentIsAlive = async (): Promise<boolean> => {\n\t\t// PID liveness alone is not process identity: a reused PID could otherwise keep a worker\n\t\t// attached to an unrelated process forever. The parent session's own fresh master entry binds\n\t\t// PID to a durable identity and proves that that exact session is still heartbeating.\n\t\tif (!currentParentSessionId || !config.isProcessAlive(currentParentPid)) return false;\n\t\tconst parent = await readEntry(config.agentDir, buildEntryId(\"master\", currentParentSessionId));\n\t\tif (!parent || parent.role !== \"master\" || parent.agent.resumeContext.sessionId !== currentParentSessionId)\n\t\t\treturn false;\n\t\tif (parent.pid !== currentParentPid || parent.status !== \"running\") return false;\n\t\tconst heartbeatAt = Date.parse(parent.heartbeatAt);\n\t\tconst maxAge = config.settings.heartbeatMs * 2 + config.settings.watcherPollMs;\n\t\treturn Number.isFinite(heartbeatAt) && now() - heartbeatAt <= maxAge;\n\t};\n\n\tconst healthyTick = async (): Promise<void> => {\n\t\tif (stopped) return;\n\t\tif (!(await declaredParentIsAlive())) {\n\t\t\tawait enterWindDown();\n\t\t\treturn;\n\t\t}\n\t\t// Still healthy: also poll for a master-initiated cooperative-cleanup directive.\n\t\tconst fresh = await readEntry(config.agentDir, entry.entryId);\n\t\tif (!fresh) return;\n\t\tconst directive = pollWorkerDirective(fresh, currentParentPid, { isPidAlive: config.isProcessAlive });\n\t\tif (directive.code !== \"user_cleanup\") return;\n\t\tawait completeCooperativeCleanup(fresh);\n\t};\n\n\tconst enterWindDown = async (): Promise<void> => {\n\t\tconst windDownAt = nowIso(now);\n\t\tconst expected = entry;\n\t\tconst resumable: ResumablePayload = { lastCode: \"resumable\", agent: structuredClone(config.agent) };\n\t\tif (expected.taskRef !== undefined) resumable.taskRef = expected.taskRef;\n\t\tif (expected.taskSummary !== undefined) resumable.taskSummary = expected.taskSummary;\n\t\tconst woundDown = markResumable(beginWindDown(expected, \"parent_lost\", windDownAt), resumable, windDownAt);\n\t\tif (!(await persist(expected, woundDown, \"failed to write worker wind-down\"))) return;\n\t\tif (timer) clearInterval(timer);\n\t\ttimer = undefined;\n\t\tpreserveResumableOnExit = true;\n\t\temitRuntimeNotice(\n\t\t\tconfig,\n\t\t\t`process-matrix: parent process (pid ${currentParentPid}) is gone. Winding down gracefully; this task is resumable.`,\n\t\t);\n\t\tstartGraceWatch();\n\t};\n\n\tconst startGraceWatch = (): void => {\n\t\tconst graceDeadline = now() + config.settings.adoptionGraceMs;\n\t\ttimer = setInterval(() => {\n\t\t\tif (ticking) return;\n\t\t\tticking = true;\n\t\t\tvoid graceTick(graceDeadline).finally(() => {\n\t\t\t\tticking = false;\n\t\t\t});\n\t\t}, config.settings.watcherPollMs);\n\t\ttimer.unref?.();\n\t};\n\n\tconst graceTick = async (graceDeadline: number): Promise<void> => {\n\t\tif (stopped) return;\n\t\tconst fresh = await readEntry(config.agentDir, entry.entryId);\n\t\tif (fresh) {\n\t\t\tconst directive = pollWorkerDirective(fresh, currentParentPid, { isPidAlive: config.isProcessAlive });\n\t\t\tif (directive.code === \"adopt\" && fresh.parentSessionId) {\n\t\t\t\t// The adopting master persists its session id with the pid. Require both on the next\n\t\t\t\t// healthy tick; accepting a pid-only adoption would reintroduce the PID-reuse bug.\n\t\t\t\tif (\n\t\t\t\t\t!(await persist(\n\t\t\t\t\t\tfresh,\n\t\t\t\t\t\tapplyAdoption(fresh, { parentPid: directive.parentPid, parentSessionId: fresh.parentSessionId }),\n\t\t\t\t\t\t\"failed to write worker adoption\",\n\t\t\t\t\t))\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t\temitRuntimeNotice(\n\t\t\t\t\tconfig,\n\t\t\t\t\t`process-matrix: adopted by a new parent (pid ${directive.parentPid}). Resuming.`,\n\t\t\t\t);\n\t\t\t\tcurrentParentPid = directive.parentPid;\n\t\t\t\tcurrentParentSessionId = fresh.parentSessionId;\n\t\t\t\tpreserveResumableOnExit = false;\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\ttimer = undefined;\n\t\t\t\t}\n\t\t\t\tstartHealthyWatch();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (directive.code === \"user_cleanup\") {\n\t\t\t\tawait completeCooperativeCleanup(fresh);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (now() >= graceDeadline) {\n\t\t\tawait stop();\n\t\t\tconfig.requestExit();\n\t\t}\n\t};\n\n\tstartHealthyWatch();\n\n\treturn { stop };\n}\n"]}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../../src/core/process-matrix/runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAEnE,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE7F,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAEtE,OAAO,EACN,YAAY,EACZ,WAAW,EACX,SAAS,EACT,sBAAsB,EACtB,UAAU,EACV,qBAAqB,EACrB,yBAAyB,GACzB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,iCAAiC,EACjC,mBAAmB,EACnB,eAAe,GACf,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACN,uBAAuB,EACvB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,6BAA6B,EAC7B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,GACf,MAAM,wBAAwB,CAAC;AAahC,MAAM,CAAC,MAAM,uBAAuB,GAA2B,MAAM,CAAC,MAAM,CAAC;IAC5E,WAAW;IACX,SAAS;IACT,sBAAsB;IACtB,UAAU;IACV,qBAAqB;IACrB,yBAAyB;CACzB,CAAC,CAAC;AA6CH,MAAM,WAAW,GAA+B,EAAE,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;AACnE,MAAM,CAAC,MAAM,qCAAqC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;AAE3E,SAAS,yBAAyB,CAAC,MAAkC;IACpE,OAAO,MAAM,CAAC,KAAK,IAAI,uBAAuB,CAAC;AAChD,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACpC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,MAAM,CAAC,GAAiB;IAChC,OAAO,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAkC,EAAE,IAAY;IAC1E,IAAI,CAAC;QACJ,KAAK,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YAClE,MAAM,CAAC,YAAY,EAAE,CAAC,6CAA6C,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC,CAAC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CAAC,6CAA6C,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5F,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,MAAkC;IAElC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO;QAAE,OAAO,WAAW,CAAC;IACjD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACnC,MAAM,SAAS,GAAG,YAAY,EAAE,CAAC;IAEjC,IAAI,CAAC;QACJ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACrG,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,MAAM,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,iBAAiB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CAAC,4CAA4C,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,WAAW,CAAC;IACpB,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,KAAK,UAAU,iBAAiB,CAC/B,MAAkC,EAClC,GAAiB;IAEjB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,KAAK,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,UAAU,EAAE;QACtB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;KAChB,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CAAC,oDAAoD,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,aAAwC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;IACvC,MAAM,cAAc,GAAG,WAAW,CAAC,GAAG,EAAE;QACvC,IAAI,OAAO,IAAI,CAAC,SAAS,IAAI,aAAa;YAAE,OAAO;QACnD,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,aAAa,GAAG,KAAK;aACnB,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC;aACxE,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,OAAO,EAAE,CAAC;gBACb,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO;YACR,CAAC;YACD,SAAS,GAAG,KAAK,CAAC;YAClB,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,MAAM,CAAC,YAAY,EAAE,CAAC,4EAA4E,CAAC,CAAC;QACrG,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzB,MAAM,CAAC,YAAY,EAAE,CAAC,qDAAqD,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACpG,CAAC,CAAC;aACD,OAAO,CAAC,GAAG,EAAE;YACb,aAAa,GAAG,SAAS,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChC,cAAc,CAAC,KAAK,EAAE,EAAE,CAAC;IAEzB,iGAAiG;IACjG,qFAAqF;IACrF,MAAM,WAAW,GAAG,GAAS,EAAE;QAC9B,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9C,IAAI,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC;gBAAE,KAAK,GAAG,MAAM,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACR,sCAAsC;QACvC,CAAC;IACF,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAElC,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACpG,MAAM,CAAC,YAAY,EAAE,CAAC,uCAAuC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,OAAO;QACN,KAAK,CAAC,IAAI;YACT,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,aAAa,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjC,MAAM,aAAa,CAAC;YACpB,IAAI,SAAS,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC;oBAAE,KAAK,GAAG,MAAM,CAAC;YACtG,CAAC;YACD,MAAM,WAAW,CAAC;QACnB,CAAC;KACD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yBAAyB,CACvC,MAAkC,EAClC,GAAiB,EACjB,MAAmB;IAEnB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,OAA6B,CAAC;IAClC,IAAI,CAAC;QACJ,OAAO,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CAAC,0DAA0D,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACxG,OAAO;IACR,CAAC;IACD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO;IAC3B,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,EAAE;QAC3C,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC;QACtE,GAAG,EAAE,GAAG,EAAE;QACV,cAAc,EAAE,qCAAqC;KACrD,CAAC,CAAC;IACH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAClE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,OAAO,CAAC,GAAG,CACV,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YACzC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAChD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACnF,CAAC,CAAC,CACF;QACD,OAAO,CAAC,GAAG,CACV,UAAU,CAAC,IAAI;aACb,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;aACzD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACtD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACxG,CAAC,CAAC,CACH;KACD,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO;IAC3B,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAChE,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC1D,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,YAAY,EAAE,CACpB,6BAA6B,cAAc,8BAA8B,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAC7G,CAAC;IACH,CAAC;IACD,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,CAAC,YAAY,EAAE,CACpB,0BAA0B,WAAW,4BAA4B,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAClG,CAAC;IACH,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChE,MAAM,4BAA4B,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACxE,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO;IAC3B,MAAM,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,4BAA4B,CAC1C,MAAkC,EAClC,OAA6B,EAC7B,GAAiB,EACjB,MAAmB;IAEnB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,IACC,MAAM,CAAC,OAAO;YACd,KAAK,CAAC,MAAM,KAAK,QAAQ;YACzB,CAAC,KAAK,CAAC,QAAQ;YACf,KAAK,CAAC,QAAQ,CAAC,uBAAuB;YACtC,KAAK,CAAC,eAAe,KAAK,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS;YAE9D,SAAS;QACV,IAAI,CAAC;YACJ,MAAM,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,YAAY,EAAE,CACpB,0DAA0D,KAAK,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;YACF,SAAS;QACV,CAAC;QACD,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,iCAAiC,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;gBAC5F,MAAM,CAAC,YAAY,EAAE,CACpB,uEAAuE,KAAK,CAAC,OAAO,EAAE,CACtF,CAAC;YACH,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,YAAY,EAAE,CACpB,8DAA8D,KAAK,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CACtG,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,0BAA0B,CAAC,KAAyB;IAC5D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;IAChC,OAAO,iCAAiC,KAAK,CAAC,KAAK,CAAC,OAAO,2CAA2C,QAAQ,EAAE,IAAI,IAAI,MAAM,YAAY,QAAQ,EAAE,MAAM,IAAI,MAAM,oDAAoD,CAAC;AAC1N,CAAC;AAED,KAAK,UAAU,aAAa,CAC3B,MAAkC,EAClC,OAA6B,EAC7B,GAAiB,EACjB,MAAmB;IAEnB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,qBAAqB,CAAC,OAAO,EAAE;QAC9C,UAAU,EAAE,MAAM,CAAC,cAAc;QACjC,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS;KAClD,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEjC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAC3B,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtE,MAAM,kBAAkB,GAAG,gBAAgB,KAAK,SAAS,CAAC;QAC1D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACzB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBACnB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;oBACzD,SAAS;gBACV,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;gBACjC,IAAI,CAAC,OAAO,EAAE,CAAC;oBACd,MAAM,CAAC,YAAY,EAAE,CACpB,+BAA+B,MAAM,CAAC,OAAO,6DAA6D,CAC1G,CAAC;oBACF,SAAS;gBACV,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CACxC,gBAAgB,OAAO,CAAC,KAAK,CAAC,OAAO,8BAA8B,CACnE,CAAC;gBACF,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO;oBAAE,SAAS;YACzC,CAAC;YACD,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC/C,SAAS;QACV,CAAC;QAED,IAAI,kBAAkB,EAAE,CAAC;YACxB,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,SAAS;QACV,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACzD,SAAS;QACV,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,aAAa,CACvC,gBAAgB,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,IAAI,MAAM,IAAI,CAChG,CAAC;QACF,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO;QAC3B,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,SAAS;QACV,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,mBAAmB,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;QAC5F,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;YAAE,SAAS;QACzC,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,IAAI,CAAC;YACJ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,EAAE,CAAC;gBAChG,MAAM,CAAC,YAAY,EAAE,CAAC,2CAA2C,MAAM,CAAC,OAAO,UAAU,CAAC,CAAC;YAC5F,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,YAAY,EAAE,CACpB,+CAA+C,MAAM,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACH,CAAC;IACF,CAAC;AACF,CAAC;AAED,SAAS,4BAA4B,CACpC,MAAkC,EAClC,MAA0B;IAE1B,IAAI,MAAM,CAAC,eAAe,KAAK,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS;QAAE,OAAO,wBAAwB,CAAC;IACrG,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;IACpC,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC;IACjD,IAAI,YAAY,KAAK,SAAS,IAAI,cAAc,KAAK,SAAS,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;QACnG,OAAO,sCAAsC,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,cAAc,IAAI,YAAY,CAAC,KAAK,MAAM,CAAC,OAAO;QAAE,OAAO,+CAA+C,CAAC;IAChH,IAAI,MAAM,CAAC,sBAAsB,KAAK,KAAK;QAAE,OAAO,uDAAuD,CAAC;IAC5G,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,sBAAsB,CAAC,MAAkC,EAAE,MAA0B,EAAE,MAAc;IAC7G,MAAM,CAAC,YAAY,EAAE,CACpB,4CAA4C,MAAM,CAAC,OAAO,KAAK,MAAM,kEAAkE,CACvI,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC7B,MAAkC,EAClC,MAA0B,EAC1B,MAAmB;IAEnB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO;IAC3B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,OAAO,CAAC,GAAG;QACtB,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS;KACrD,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAAE,OAAO;QACnG,IAAI,MAAM,CAAC,OAAO;YAAE,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACzG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CAAC,gDAAgD,MAAM,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClH,CAAC;AACF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC9B,MAAkC,EAClC,MAA0B,EAC1B,MAAmB;IAEnB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO;IAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;IACjC,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,CAAC,YAAY,EAAE,CACpB,+BAA+B,MAAM,CAAC,OAAO,gFAAgF,CAC7H,CAAC;QACF,OAAO;IACR,CAAC;IACD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE;QACrC,SAAS,EAAE,OAAO,CAAC,GAAG;QACtB,eAAe,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS;KACrD,CAAC,CAAC;IACH,IAAI,QAA+D,CAAC;IACpE,IAAI,CAAC;QACJ,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAAE,OAAO;QACnG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACpF,OAAO;QACR,CAAC;QACD,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;YACpF,MAAM,CAAC,YAAY,EAAE,CAAC,oCAAoC,MAAM,CAAC,OAAO,KAAK,aAAa,CAAC,MAAM,EAAE,CAAC,CAAC;YACrG,OAAO;QACR,CAAC;QACD,QAAQ,GAAG,aAAa,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC;YACJ,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACrF,CAAC;QAAC,MAAM,CAAC;YACR,qEAAqE;QACtE,CAAC;QACD,MAAM,CAAC,YAAY,EAAE,CAAC,oCAAoC,MAAM,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrG,OAAO;IACR,CAAC;IACD,MAAM,aAAa,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC;IACxD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACJ,6FAA6F;YAC7F,6FAA6F;YAC7F,eAAe;YACf,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;QAC7F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,YAAY,EAAE,CACpB,2DAA2D,MAAM,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CACpG,CAAC;QACH,CAAC;IACF,CAAC;SAAM,CAAC;QACP,MAAM,CAAC,YAAY,EAAE,CACpB,kCAAkC,MAAM,CAAC,OAAO,sEAAsE,CACtH,CAAC;IACH,CAAC;IACD,KAAK,QAAQ,CAAC,UAAU,CAAC,IAAI,CAC5B,CAAC,MAAM,EAAE,EAAE,CAAC,4BAA4B,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EACxF,CAAC,KAAc,EAAE,EAAE;QAClB,MAAM,CAAC,YAAY,EAAE,CACpB,iCAAiC,OAAO,CAAC,KAAK,CAAC,OAAO,4BAA4B,aAAa,CAAC,KAAK,CAAC,EAAE,CACxG,CAAC;IACH,CAAC,CACD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,4BAA4B,CAC1C,MAAkC,EAClC,OAA2B,EAC3B,cAAkC,EAClC,MAA8D,EAC9D,QAAqB;IAErB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,CAAC;QACJ,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC5F,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC7B,MAAM,2BAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9D,OAAO;QACR,CAAC;QACD,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/E,IAAI,cAAc,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;YACzC,MAAM,kBAAkB,GAAG,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;YAC5E,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBAC7G,IAAI,QAAQ,CAAC,OAAO;oBAAE,OAAO;gBAC7B,MAAM,2BAA2B,CAAC,MAAM,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;gBACxE,OAAO;YACR,CAAC;QACF,CAAC;QACD,8FAA8F;QAC9F,8FAA8F;QAC9F,uEAAuE;QACvE,MAAM,gBAAgB,GAAG,YAAY,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;QACnG,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAC3G,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC7B,MAAM,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;YACtE,OAAO;QACR,CAAC;QACD,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC9F,IAAI,QAAQ,CAAC,OAAO;gBAAE,OAAO;YAC7B,MAAM,2BAA2B,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC9D,OAAO;QACR,CAAC;QACD,MAAM,CAAC,YAAY,EAAE,CAAC,sDAAsD,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChG,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CACpB,0DAA0D,OAAO,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CACpG,CAAC;IACH,CAAC;AACF,CAAC;AAED,KAAK,UAAU,2BAA2B,CACzC,MAAkC,EAClC,QAA4B,EAC5B,QAAqB;IAErB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,IAAI,QAAQ,CAAC,OAAO;QAAE,OAAO;IAC7B,IAAI,CAAC;QACJ,MAAM,MAAM,CAAC,MAAM,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1D,IAAI,QAAQ,CAAC,OAAO;YAAE,OAAO;QAC7B,MAAM,SAAS,GAAG,iCAAiC,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;YAClG,MAAM,CAAC,YAAY,EAAE,CACpB,uEAAuE,QAAQ,CAAC,OAAO,EAAE,CACzF,CAAC;QACH,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CACpB,0DAA0D,QAAQ,CAAC,OAAO,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CACrG,CAAC;IACH,CAAC;AACF,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,KAAK,UAAU,iBAAiB,CAC/B,MAAkC,EAClC,gBAAwB,EACxB,GAAiB;IAEjB,MAAM,KAAK,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAC7C,MAAM,OAAO,GAAG,CAAC,iBAAiB,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC;IAC3F,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,SAAS,CAAC;IAC5E,MAAM,OAAO,GAAG,uBAAuB,EAAE,CAAC;IAC1C,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC;IAClE,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CAClB,8BAA8B,cAAc,IAAI,MAAM,iCAAiC,OAAO,IAAI,MAAM,IAAI,CAC5G,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAG,gBAAgB,CAAC;QAC5B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,QAAQ,EAAE,UAAU,EAAE;QACtB,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;QAChB,SAAS,EAAE,gBAAgB;QAC3B,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrD,CAAC,CAAC;IACH,IAAI,CAAC;QACJ,MAAM,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,YAAY,EAAE,CAAC,oDAAoD,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACnG,CAAC;IAED,IAAI,gBAAgB,GAAG,gBAAgB,CAAC;IACxC,IAAI,sBAAsB,GAAG,eAAe,CAAC;IAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAiC,CAAC;IACtC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,QAAmC,CAAC;IACxC,MAAM,mBAAmB,GAAG,KAAK,CAAC,SAAS,CAAC;IAC5C,MAAM,WAAW,GAAG,CAAC,IAAI,GAAkB,IAAI,EAAQ,EAAE;QACxD,IAAI,uBAAuB;YAAE,OAAO;QACpC,IAAI,CAAC;YACJ,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1E,IAAI,KAAK,CAAC,yBAAyB,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC;gBAAE,KAAK,GAAG,QAAQ,CAAC;QACzF,CAAC;QAAC,MAAM,CAAC;YACR,8DAA8D;QAC/D,CAAC;IACF,CAAC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAElC,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;QAC7C,IAAI,OAAO;YAAE,OAAO;QACpB,OAAO,GAAG,IAAI,CAAC;QACf,IAAI,KAAK;YAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,GAAG,SAAS,CAAC;QAClB,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC9B,uFAAuF;YACvF,0FAA0F;YAC1F,oFAAoF;YACpF,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC;gBACvB,MAAM,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnF,IAAI,CAAC;oBACJ,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;wBAC9F,KAAK,GAAG,QAAQ,CAAC;wBACjB,MAAM;oBACP,CAAC;oBACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;oBACzE,IAAI,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,SAAS,KAAK,mBAAmB,EAAE,CAAC;wBAC/E,MAAM,CAAC,YAAY,EAAE,CAAC,4EAA4E,CAAC,CAAC;wBACpG,MAAM;oBACP,CAAC;oBACD,KAAK,GAAG,OAAO,CAAC;gBACjB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBAChB,MAAM,CAAC,YAAY,EAAE,CACpB,4DAA4D,aAAa,CAAC,KAAK,CAAC,EAAE,CAClF,CAAC;oBACF,MAAM;gBACP,CAAC;YACF,CAAC;QACF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,IAAI,GAAG,GAAkB,EAAE;QAChC,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC3B,OAAO,QAAQ,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,EACpB,QAA4B,EAC5B,IAAwB,EACxB,cAAsB,EACH,EAAE;QACrB,IAAI,CAAC;YACJ,IAAI,MAAM,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBAC1F,KAAK,GAAG,IAAI,CAAC;gBACb,OAAO,IAAI,CAAC;YACb,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;YACzE,IAAI,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG;gBAAE,KAAK,GAAG,OAAO,CAAC;iBAC7C,CAAC;gBACL,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,KAAK;oBAAE,aAAa,CAAC,KAAK,CAAC,CAAC;gBAChC,KAAK,GAAG,SAAS,CAAC;gBAClB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;gBACjC,MAAM,CAAC,YAAY,EAAE,CAAC,4EAA4E,CAAC,CAAC;YACrG,CAAC;QACF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,CAAC,YAAY,EAAE,CAAC,mBAAmB,cAAc,KAAK,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,KAAK,CAAC;IACd,CAAC,CAAC;IAEF,MAAM,0BAA0B,GAAG,KAAK,EAAE,KAAyB,EAAiB,EAAE;QACrF,IACC,CAAC,CAAC,MAAM,OAAO,CACd,KAAK,EACL,aAAa,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EACjD,qDAAqD,CACrD,CAAC;YAEF,OAAO;QACR,uBAAuB,GAAG,KAAK,CAAC;QAChC,iBAAiB,CAAC,MAAM,EAAE,mFAAmF,CAAC,CAAC;QAC/G,MAAM,IAAI,EAAE,CAAC;QACb,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,iBAAiB,GAAG,GAAS,EAAE;QACpC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YACxB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,KAAK,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC/B,OAAO,GAAG,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;QACJ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,qBAAqB,GAAG,KAAK,IAAsB,EAAE;QAC1D,yFAAyF;QACzF,8FAA8F;QAC9F,sFAAsF;QACtF,IAAI,CAAC,sBAAsB,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC;YAAE,OAAO,KAAK,CAAC;QACtF,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,EAAE,sBAAsB,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,KAAK,sBAAsB;YACzG,OAAO,KAAK,CAAC;QACd,IAAI,MAAM,CAAC,GAAG,KAAK,gBAAgB,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,KAAK,CAAC;QACjF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC;QAC/E,OAAO,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,GAAG,EAAE,GAAG,WAAW,IAAI,MAAM,CAAC;IACtE,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,KAAK,IAAmB,EAAE;QAC7C,IAAI,OAAO;YAAE,OAAO;QACpB,IAAI,CAAC,CAAC,MAAM,qBAAqB,EAAE,CAAC,EAAE,CAAC;YACtC,MAAM,aAAa,EAAE,CAAC;YACtB,OAAO;QACR,CAAC;QACD,iFAAiF;QACjF,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QACtG,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc;YAAE,OAAO;QAC9C,MAAM,0BAA0B,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,KAAK,IAAmB,EAAE;QAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC;QACvB,MAAM,SAAS,GAAqB,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACpG,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS;YAAE,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;QACzE,IAAI,QAAQ,CAAC,WAAW,KAAK,SAAS;YAAE,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACrF,MAAM,SAAS,GAAG,aAAa,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3G,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,QAAQ,EAAE,SAAS,EAAE,kCAAkC,CAAC,CAAC;YAAE,OAAO;QACtF,IAAI,KAAK;YAAE,aAAa,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,GAAG,SAAS,CAAC;QAClB,uBAAuB,GAAG,IAAI,CAAC;QAC/B,iBAAiB,CAChB,MAAM,EACN,uCAAuC,gBAAgB,6DAA6D,CACpH,CAAC;QACF,eAAe,EAAE,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,eAAe,GAAG,GAAS,EAAE;QAClC,MAAM,aAAa,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC9D,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YACxB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,KAAK,SAAS,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1C,OAAO,GAAG,KAAK,CAAC;YACjB,CAAC,CAAC,CAAC;QACJ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAClC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACjB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,EAAE,aAAqB,EAAiB,EAAE;QAChE,IAAI,OAAO;YAAE,OAAO;QACpB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;YACtG,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;gBACzD,qFAAqF;gBACrF,mFAAmF;gBACnF,IACC,CAAC,CAAC,MAAM,OAAO,CACd,KAAK,EACL,aAAa,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC,EAChG,iCAAiC,CACjC,CAAC;oBAEF,OAAO;gBACR,iBAAiB,CAChB,MAAM,EACN,gDAAgD,SAAS,CAAC,SAAS,cAAc,CACjF,CAAC;gBACF,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC;gBACvC,sBAAsB,GAAG,KAAK,CAAC,eAAe,CAAC;gBAC/C,uBAAuB,GAAG,KAAK,CAAC;gBAChC,IAAI,KAAK,EAAE,CAAC;oBACX,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrB,KAAK,GAAG,SAAS,CAAC;gBACnB,CAAC;gBACD,iBAAiB,EAAE,CAAC;gBACpB,OAAO;YACR,CAAC;YACD,IAAI,SAAS,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBACvC,MAAM,0BAA0B,CAAC,KAAK,CAAC,CAAC;gBACxC,OAAO;YACR,CAAC;QACF,CAAC;QACD,IAAI,GAAG,EAAE,IAAI,aAAa,EAAE,CAAC;YAC5B,MAAM,IAAI,EAAE,CAAC;YACb,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5B,CAAC;IACF,CAAC,CAAC;IAEF,iBAAiB,EAAE,CAAC;IAEpB,OAAO,EAAE,IAAI,EAAE,CAAC;AACjB,CAAC","sourcesContent":["/**\n * Process-matrix runtime composition: the pieces main.ts wires together for durable,\n * restart-surviving master/worker process supervision.\n *\n * Contract:\n * - A WORKER is any process launched with a known parent (`PI_PARENT_PID` -- set by the\n * `--parent-pid` CLI flag, or directly by a launcher such as tmux dispatch). It self-registers\n * its OWN entry (the single writer of that entry during normal operation) and watches its\n * parent's liveness. On parent death it winds down GRACEFULLY -- never silently -- leaving a\n * `resumable` payload, then exits on its own after a bounded grace window (during which it may\n * instead be adopted by a new parent). \"No new turns\" after that point is automatic: a dead\n * parent injects no further follow-ups, so the worker simply runs out of work to do.\n * - A MASTER is everything else (no known parent). On startup it scans the matrix for orphaned\n * workers (workers whose recorded parent is dead). Workers owned by this exact resumed session\n * are restored automatically; foreign workers remain owner-gated interactively and report-only\n * headlessly.\n *\n * Sanctioned exceptions to \"a worker's entry is written only by that worker\": an exact resumed\n * parent may restore its recorded ownership, and an owner may explicitly approve adoption or\n * cooperative cleanup of a foreign orphan. The worker later confirms/applies the directive via\n * `pollWorkerDirective` and re-writes its own entry -- see `docs/process-matrix.md`. Outside these\n * identity/approval-fenced handshakes, a master NEVER writes another session's entry, and nothing\n * here ever kills a process directly.\n */\n\nimport { hostname as osHostname } from \"node:os\";\nimport { isAgentIdentity } from \"../orchestration/agent-resume.ts\";\nimport type { AgentIdentityContract } from \"../orchestration/contracts.ts\";\nimport { getParentPid, getParentSessionId, getProcessTaskRef } from \"../process-identity.ts\";\nimport type { ResolvedProcessMatrixSettings } from \"../settings-manager.ts\";\nimport { getBoundWorktreeLaneKey } from \"../worktree-sync/runtime.ts\";\nimport type { ProcessMatrixEntry, ResumablePayload } from \"./codes.ts\";\nimport {\n\tbuildEntryId,\n\tlistEntries,\n\treadEntry,\n\tremoveEntryIfUnchanged,\n\twriteEntry,\n\twriteEntryIfUnchanged,\n\twriteEntryIfUnchangedSync,\n} from \"./store.ts\";\nimport {\n\tapplyAdoption,\n\tapplyHeartbeat,\n\tbeginWindDown,\n\tbuildMasterEntry,\n\tbuildWorkerEntry,\n\tdetectOrphanedWorkers,\n\tmarkClosed,\n\tmarkResumable,\n\tmarkTerminal,\n\tmarkTerminalNotificationDelivered,\n\tpollWorkerDirective,\n\treconcileMatrix,\n} from \"./supervisor.ts\";\n\nexport {\n\tgetOrchestrationAgentId,\n\tgetParentPid,\n\tgetParentSessionId,\n\tgetProcessTaskRef,\n\tPI_ORCHESTRATION_AGENT_ID_ENV,\n\tPI_PARENT_PID_ENV,\n\tPI_PARENT_SESSION_ENV,\n\tPI_TASK_REF_ENV,\n} from \"../process-identity.ts\";\n\n/** Storage boundary for the process-matrix coordinator. Runtime state transitions depend on this\n * port, while the filesystem adapter remains the single production implementation. */\nexport interface ProcessMatrixStorePort {\n\tlistEntries: typeof listEntries;\n\treadEntry: typeof readEntry;\n\tremoveEntryIfUnchanged: typeof removeEntryIfUnchanged;\n\twriteEntry: typeof writeEntry;\n\twriteEntryIfUnchanged: typeof writeEntryIfUnchanged;\n\twriteEntryIfUnchangedSync: typeof writeEntryIfUnchangedSync;\n}\n\nexport const localProcessMatrixStore: ProcessMatrixStorePort = Object.freeze({\n\tlistEntries,\n\treadEntry,\n\tremoveEntryIfUnchanged,\n\twriteEntry,\n\twriteEntryIfUnchanged,\n\twriteEntryIfUnchangedSync,\n});\n\nexport interface ProcessMatrixRuntimeConfig {\n\tagentDir: string;\n\t/** Canonical logical identity for this process and any exact-session resume. */\n\tagent: AgentIdentityContract;\n\t/** Whether an interactive UI is available to ask the owner (see `promptConfirm`). */\n\thasUI: boolean;\n\tsettings: ResolvedProcessMatrixSettings;\n\tisProcessAlive: (pid: number) => boolean;\n\tnow?: () => number;\n\t/** Structural notice injection into the running session (host `sendCustomMessage` seam). */\n\tnotify: (text: string) => void | Promise<void>;\n\t/** Diagnostics sink (never throws into the session). */\n\tonDiagnostic?: (message: string) => void;\n\t/** The ask seam: resolves false on decline AND on any non-interactive/non-TTY caller. */\n\tpromptConfirm: (message: string) => Promise<boolean>;\n\t/** Cooperative self-exit -- called by a worker once wound down (grace expiry or a\n\t * master-granted cleanup directive). Never called for the master's own lifecycle. */\n\trequestExit: () => Promise<void>;\n\t/** Stable goal/task identity. Automatic recovery requires an exact match. */\n\ttaskRef?: string;\n\ttaskSummary?: string;\n\t/** False for terminal/blocked owner state; recovery then remains explicit-owner gated. */\n\tallowAutomaticRecovery?: boolean;\n\t/** Starts a replacement OS process for a dead resumable worker. Completion is an event-driven\n\t * terminal signal; worker product remains in its persisted session/artifacts. */\n\tresumeWorker?: (payload: ResumablePayload) => Promise<ResumeWorkerLaunchOutcome>;\n\t/** Injectable only at the storage boundary; defaults to the atomic local filesystem adapter. */\n\tstore?: ProcessMatrixStorePort;\n}\n\nexport type ResumeWorkerLaunchOutcome =\n\t| {\n\t\t\tstarted: true;\n\t\t\t/** OS identity of this specific replacement process, used to fence its terminal handoff. */\n\t\t\tpid: number;\n\t\t\tcompletion: Promise<{ code: number | null; signal: NodeJS.Signals | null }>;\n\t }\n\t| { started: false; reason: string };\n\nexport interface ProcessMatrixRuntimeHandle {\n\tstop(): Promise<void> | void;\n}\n\nconst NOOP_HANDLE: ProcessMatrixRuntimeHandle = { stop: () => {} };\nexport const PROCESS_MATRIX_RESUMABLE_RETENTION_MS = 30 * 24 * 60 * 60_000;\n\nfunction resolveProcessMatrixStore(config: ProcessMatrixRuntimeConfig): ProcessMatrixStorePort {\n\treturn config.store ?? localProcessMatrixStore;\n}\n\nfunction describeError(error: unknown): string {\n\treturn error instanceof Error ? error.message : String(error);\n}\n\nfunction nowIso(now: () => number): string {\n\treturn new Date(now()).toISOString();\n}\n\nfunction emitRuntimeNotice(config: ProcessMatrixRuntimeConfig, text: string): void {\n\ttry {\n\t\tvoid Promise.resolve(config.notify(text)).catch((error: unknown) => {\n\t\t\tconfig.onDiagnostic?.(`process-matrix: failed to notify session: ${describeError(error)}`);\n\t\t});\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to notify session: ${describeError(error)}`);\n\t}\n}\n\n/**\n * Start the per-session process-matrix runtime. No-op when disabled (byte-identical to not\n * calling this at all). Never throws: a broken store must surface as a diagnostic, not a startup\n * crash.\n */\nexport async function startProcessMatrixRuntime(\n\tconfig: ProcessMatrixRuntimeConfig,\n): Promise<ProcessMatrixRuntimeHandle> {\n\tif (!config.settings.enabled) return NOOP_HANDLE;\n\tconst now = config.now ?? Date.now;\n\tconst parentPid = getParentPid();\n\n\ttry {\n\t\tif (!isAgentIdentity(config.agent)) throw new TypeError(\"Process-matrix agent identity is invalid.\");\n\t\tif (parentPid !== undefined) {\n\t\t\treturn await startWorkerBranch(config, parentPid, now);\n\t\t}\n\t\treturn await startMasterBranch(config, now);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: runtime failed to start: ${describeError(error)}`);\n\t\treturn NOOP_HANDLE;\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Master branch\n// ---------------------------------------------------------------------------\n\nasync function startMasterBranch(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tnow: () => number,\n): Promise<ProcessMatrixRuntimeHandle> {\n\tconst store = resolveProcessMatrixStore(config);\n\tlet entry = buildMasterEntry({\n\t\tagent: config.agent,\n\t\tpid: process.pid,\n\t\thostname: osHostname(),\n\t\tnow: nowIso(now),\n\t});\n\ttry {\n\t\tawait store.writeEntry(config.agentDir, entry);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to register master entry: ${describeError(error)}`);\n\t}\n\n\tlet stopped = false;\n\tlet ownsEntry = true;\n\tlet heartbeatTask: Promise<void> | undefined;\n\tconst lifetime = new AbortController();\n\tconst heartbeatTimer = setInterval(() => {\n\t\tif (stopped || !ownsEntry || heartbeatTask) return;\n\t\tconst expected = entry;\n\t\tconst next = applyHeartbeat(expected, nowIso(now));\n\t\theartbeatTask = store\n\t\t\t.writeEntryIfUnchanged(config.agentDir, expected.entryId, expected, next)\n\t\t\t.then((written) => {\n\t\t\t\tif (written) {\n\t\t\t\t\tentry = next;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\townsEntry = false;\n\t\t\t\tlifetime.abort();\n\t\t\t\tclearInterval(heartbeatTimer);\n\t\t\t\tprocess.off(\"exit\", closeOnExit);\n\t\t\t\tconfig.onDiagnostic?.(\"process-matrix: master entry ownership moved to a newer process generation\");\n\t\t\t})\n\t\t\t.catch((error: unknown) => {\n\t\t\t\tconfig.onDiagnostic?.(`process-matrix: failed to write master heartbeat: ${describeError(error)}`);\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\theartbeatTask = undefined;\n\t\t\t});\n\t}, config.settings.heartbeatMs);\n\theartbeatTimer.unref?.();\n\n\t// Best-effort close on process exit. A SIGKILLed master leaving \"running\" is fine -- reconcile's\n\t// own dead-pid detection covers it; this only makes the common clean-exit case tidy.\n\tconst closeOnExit = (): void => {\n\t\tif (!ownsEntry) return;\n\t\ttry {\n\t\t\tconst closed = markClosed(entry, nowIso(now));\n\t\t\tif (store.writeEntryIfUnchangedSync(config.agentDir, entry, closed)) entry = closed;\n\t\t} catch {\n\t\t\t// Best-effort only -- see module doc.\n\t\t}\n\t};\n\tprocess.once(\"exit\", closeOnExit);\n\n\tconst maintenance = reconcileAndRunOrphanScan(config, now, lifetime.signal).catch((error: unknown) => {\n\t\tconfig.onDiagnostic?.(`process-matrix: maintenance failed: ${describeError(error)}`);\n\t});\n\n\treturn {\n\t\tasync stop() {\n\t\t\tif (stopped) return;\n\t\t\tstopped = true;\n\t\t\tlifetime.abort();\n\t\t\tclearInterval(heartbeatTimer);\n\t\t\tprocess.off(\"exit\", closeOnExit);\n\t\t\tawait heartbeatTask;\n\t\t\tif (ownsEntry) {\n\t\t\t\tconst closed = markClosed(entry, nowIso(now));\n\t\t\t\tif (await store.writeEntryIfUnchanged(config.agentDir, entry.entryId, entry, closed)) entry = closed;\n\t\t\t}\n\t\t\tawait maintenance;\n\t\t},\n\t};\n}\n\nasync function reconcileAndRunOrphanScan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tnow: () => number,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\tlet entries: ProcessMatrixEntry[];\n\ttry {\n\t\tentries = await store.listEntries(config.agentDir);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: reconciliation failed to list entries: ${describeError(error)}`);\n\t\treturn;\n\t}\n\tif (signal.aborted) return;\n\tconst reconciled = reconcileMatrix(entries, {\n\t\tisPidAlive: (pid) => pid === process.pid || config.isProcessAlive(pid),\n\t\tnow: now(),\n\t\tresumableTtlMs: PROCESS_MATRIX_RESUMABLE_RETENTION_MS,\n\t});\n\tconst originalByEntryId = new Map(entries.map((entry) => [entry.entryId, entry]));\n\tconst recoveredEntryIdSet = new Set(reconciled.recoveredEntryIds);\n\tconst [prunedOutcomes, recoveredOutcomes] = await Promise.all([\n\t\tPromise.all(\n\t\t\treconciled.prunedEntryIds.map((entryId) => {\n\t\t\t\tconst original = originalByEntryId.get(entryId);\n\t\t\t\treturn original ? store.removeEntryIfUnchanged(config.agentDir, original) : false;\n\t\t\t}),\n\t\t),\n\t\tPromise.all(\n\t\t\treconciled.kept\n\t\t\t\t.filter((entry) => recoveredEntryIdSet.has(entry.entryId))\n\t\t\t\t.map((entry) => {\n\t\t\t\t\tconst original = originalByEntryId.get(entry.entryId);\n\t\t\t\t\treturn original ? store.writeEntryIfUnchanged(config.agentDir, entry.entryId, original, entry) : false;\n\t\t\t\t}),\n\t\t),\n\t]);\n\tif (signal.aborted) return;\n\tconst recoveredCount = recoveredOutcomes.filter(Boolean).length;\n\tconst prunedCount = prunedOutcomes.filter(Boolean).length;\n\tif (recoveredCount > 0) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: recovered ${recoveredCount} interrupted Pi worker entr${recoveredCount === 1 ? \"y\" : \"ies\"}`,\n\t\t);\n\t}\n\tif (prunedCount > 0) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: pruned ${prunedCount} terminal or expired entr${prunedCount === 1 ? \"y\" : \"ies\"}`,\n\t\t);\n\t}\n\tconst currentEntries = await store.listEntries(config.agentDir);\n\tawait deliverTerminalNotifications(config, currentEntries, now, signal);\n\tif (signal.aborted) return;\n\tawait runOrphanScan(config, currentEntries, now, signal);\n}\n\nasync function deliverTerminalNotifications(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tentries: ProcessMatrixEntry[],\n\tnow: () => number,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\tfor (const entry of entries) {\n\t\tif (\n\t\t\tsignal.aborted ||\n\t\t\tentry.status !== \"closed\" ||\n\t\t\t!entry.terminal ||\n\t\t\tentry.terminal.notificationDeliveredAt ||\n\t\t\tentry.parentSessionId !== config.agent.resumeContext.sessionId\n\t\t)\n\t\t\tcontinue;\n\t\ttry {\n\t\t\tawait config.notify(formatTerminalNotification(entry));\n\t\t\tif (signal.aborted) return;\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to deliver terminal handoff for ${entry.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t\tcontinue;\n\t\t}\n\t\ttry {\n\t\t\tconst delivered = markTerminalNotificationDelivered(entry, nowIso(now));\n\t\t\tif (!(await store.writeEntryIfUnchanged(config.agentDir, entry.entryId, entry, delivered))) {\n\t\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t\t`process-matrix: terminal handoff changed before acknowledgement for ${entry.entryId}`,\n\t\t\t\t);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to acknowledge terminal handoff for ${entry.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction formatTerminalNotification(entry: ProcessMatrixEntry): string {\n\tconst terminal = entry.terminal;\n\treturn `process-matrix: resumed agent ${entry.agent.agentId} reached a terminal process state (code ${terminal?.code ?? \"none\"}, signal ${terminal?.signal ?? \"none\"}). Inspect its persisted result before continuing.`;\n}\n\nasync function runOrphanScan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tentries: ProcessMatrixEntry[],\n\tnow: () => number,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\tconst orphans = detectOrphanedWorkers(entries, {\n\t\tisPidAlive: config.isProcessAlive,\n\t\townSessionId: config.agent.resumeContext.sessionId,\n\t});\n\tif (orphans.length === 0) return;\n\n\tfor (const orphan of orphans) {\n\t\tif (signal.aborted) return;\n\t\tconst recoveryBoundary = getAutomaticRecoveryBoundary(config, orphan);\n\t\tconst exactResumedParent = recoveryBoundary === undefined;\n\t\tif (!config.isProcessAlive(orphan.pid)) {\n\t\t\tif (!exactResumedParent) {\n\t\t\t\tif (!config.hasUI) {\n\t\t\t\t\treportOwnerGatedOrphan(config, orphan, recoveryBoundary);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst payload = orphan.resumable;\n\t\t\t\tif (!payload) {\n\t\t\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t\t\t`process-matrix: dead worker ${orphan.entryId} is not resumable because its launch context is unavailable`,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst resume = await config.promptConfirm(\n\t\t\t\t\t`resume agent ${payload.agent.agentId} from its persisted session?`,\n\t\t\t\t);\n\t\t\t\tif (!resume || signal.aborted) continue;\n\t\t\t}\n\t\t\tawait resumeDeadOrphan(config, orphan, signal);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (exactResumedParent) {\n\t\t\tawait adoptLiveOrphan(config, orphan, signal);\n\t\t\tcontinue;\n\t\t}\n\t\tif (!config.hasUI) {\n\t\t\treportOwnerGatedOrphan(config, orphan, recoveryBoundary);\n\t\t\tcontinue;\n\t\t}\n\t\tconst adopt = await config.promptConfirm(\n\t\t\t`adopt worker ${orphan.entryId} (lane ${orphan.agent.resumeContext.worktreeLaneKey ?? \"none\"})?`,\n\t\t);\n\t\tif (signal.aborted) return;\n\t\tif (adopt) {\n\t\t\tawait adoptLiveOrphan(config, orphan, signal);\n\t\t\tcontinue;\n\t\t}\n\t\tconst cleanup = await config.promptConfirm(`clean up worker ${orphan.entryId} gracefully?`);\n\t\tif (!cleanup || signal.aborted) continue;\n\t\tconst windingDown = beginWindDown(orphan, \"user_cleanup\", nowIso(now));\n\t\ttry {\n\t\t\tif (!(await store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, orphan, windingDown))) {\n\t\t\t\tconfig.onDiagnostic?.(`process-matrix: cleanup skipped because ${orphan.entryId} changed`);\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to write cleanup for ${orphan.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t}\n\t}\n}\n\nfunction getAutomaticRecoveryBoundary(\n\tconfig: ProcessMatrixRuntimeConfig,\n\torphan: ProcessMatrixEntry,\n): string | undefined {\n\tif (orphan.parentSessionId !== config.agent.resumeContext.sessionId) return \"foreign parent session\";\n\tconst entryTaskRef = orphan.taskRef;\n\tconst payloadTaskRef = orphan.resumable?.taskRef;\n\tif (entryTaskRef !== undefined && payloadTaskRef !== undefined && entryTaskRef !== payloadTaskRef) {\n\t\treturn \"inconsistent persisted task identity\";\n\t}\n\tif ((payloadTaskRef ?? entryTaskRef) !== config.taskRef) return \"task identity does not match the current goal\";\n\tif (config.allowAutomaticRecovery === false) return \"current goal state does not permit automatic recovery\";\n\treturn undefined;\n}\n\nfunction reportOwnerGatedOrphan(config: ProcessMatrixRuntimeConfig, orphan: ProcessMatrixEntry, reason: string): void {\n\tconfig.onDiagnostic?.(\n\t\t`process-matrix: found owner-gated orphan ${orphan.entryId} (${reason}; report-only, non-interactive; nothing written, nothing killed)`,\n\t);\n}\n\nasync function adoptLiveOrphan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\torphan: ProcessMatrixEntry,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\tif (signal.aborted) return;\n\tconst adopted = applyAdoption(orphan, {\n\t\tparentPid: process.pid,\n\t\tparentSessionId: config.agent.resumeContext.sessionId,\n\t});\n\ttry {\n\t\tif (!(await store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, orphan, adopted))) return;\n\t\tif (signal.aborted) await store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, adopted, orphan);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to write adoption for ${orphan.entryId}: ${describeError(error)}`);\n\t}\n}\n\nasync function resumeDeadOrphan(\n\tconfig: ProcessMatrixRuntimeConfig,\n\torphan: ProcessMatrixEntry,\n\tsignal: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\tif (signal.aborted) return;\n\tconst payload = orphan.resumable;\n\tif (!payload || !config.resumeWorker) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: dead worker ${orphan.entryId} is not resumable because its launch context or resume launcher is unavailable`,\n\t\t);\n\t\treturn;\n\t}\n\tconst claimed = applyAdoption(orphan, {\n\t\tparentPid: process.pid,\n\t\tparentSessionId: config.agent.resumeContext.sessionId,\n\t});\n\tlet launched: Extract<ResumeWorkerLaunchOutcome, { started: true }>;\n\ttry {\n\t\tif (!(await store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, orphan, claimed))) return;\n\t\tif (signal.aborted) {\n\t\t\tawait store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, claimed, orphan);\n\t\t\treturn;\n\t\t}\n\t\tconst launchOutcome = await config.resumeWorker(payload);\n\t\tif (!launchOutcome.started) {\n\t\t\tawait store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, claimed, orphan);\n\t\t\tconfig.onDiagnostic?.(`process-matrix: failed to resume ${orphan.entryId}: ${launchOutcome.reason}`);\n\t\t\treturn;\n\t\t}\n\t\tlaunched = launchOutcome;\n\t} catch (error) {\n\t\ttry {\n\t\t\tawait store.writeEntryIfUnchanged(config.agentDir, orphan.entryId, claimed, orphan);\n\t\t} catch {\n\t\t\t// The original resumable record remains the intended recovery state.\n\t\t}\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to resume ${orphan.entryId}: ${describeError(error)}`);\n\t\treturn;\n\t}\n\tconst launchedEntry = { ...claimed, pid: launched.pid };\n\tif (!signal.aborted) {\n\t\ttry {\n\t\t\t// Bridge the interval before the replacement can self-register. Without its real PID here, a\n\t\t\t// restarted master can mistake this live replacement for the original dead process and spawn\n\t\t\t// a duplicate.\n\t\t\tawait store.writeEntryIfUnchanged(config.agentDir, claimed.entryId, claimed, launchedEntry);\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: failed to record resumed worker pid for ${orphan.entryId}: ${describeError(error)}`,\n\t\t\t);\n\t\t}\n\t} else {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: resumed worker ${orphan.entryId} launched after owner shutdown; preserving its terminal handoff only`,\n\t\t);\n\t}\n\tvoid launched.completion.then(\n\t\t(result) => persistResumedWorkerTerminal(config, launchedEntry, claimed, result, signal),\n\t\t(error: unknown) => {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: resumed agent ${payload.agent.agentId} terminal signal failed: ${describeError(error)}`,\n\t\t\t);\n\t\t},\n\t);\n}\n\nasync function persistResumedWorkerTerminal(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tclaimed: ProcessMatrixEntry,\n\tpreLaunchClaim: ProcessMatrixEntry,\n\tresult: { code: number | null; signal: NodeJS.Signals | null },\n\tlifetime: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\ttry {\n\t\tconst observedAt = new Date().toISOString();\n\t\tconst terminal = markTerminal(claimed, result, observedAt);\n\t\tif (await store.writeEntryIfUnchanged(config.agentDir, claimed.entryId, claimed, terminal)) {\n\t\t\tif (lifetime.aborted) return;\n\t\t\tawait notifyResumedWorkerTerminal(config, terminal, lifetime);\n\t\t\treturn;\n\t\t}\n\t\tconst selfRegistered = await store.readEntry(config.agentDir, claimed.entryId);\n\t\tif (selfRegistered?.pid === claimed.pid) {\n\t\t\tconst registeredTerminal = markTerminal(selfRegistered, result, observedAt);\n\t\t\tif (await store.writeEntryIfUnchanged(config.agentDir, claimed.entryId, selfRegistered, registeredTerminal)) {\n\t\t\t\tif (lifetime.aborted) return;\n\t\t\t\tawait notifyResumedWorkerTerminal(config, registeredTerminal, lifetime);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t// If recording the spawned PID failed (or shutdown won the race immediately after spawn), the\n\t\t// untouched pre-launch claim proves no newer process has taken this logical entry. Upgrade it\n\t\t// to the actual exited process before persisting its terminal handoff.\n\t\tconst fallbackTerminal = markTerminal({ ...preLaunchClaim, pid: claimed.pid }, result, observedAt);\n\t\tif (await store.writeEntryIfUnchanged(config.agentDir, claimed.entryId, preLaunchClaim, fallbackTerminal)) {\n\t\t\tif (lifetime.aborted) return;\n\t\t\tawait notifyResumedWorkerTerminal(config, fallbackTerminal, lifetime);\n\t\t\treturn;\n\t\t}\n\t\tif (await store.writeEntryIfUnchanged(config.agentDir, claimed.entryId, undefined, terminal)) {\n\t\t\tif (lifetime.aborted) return;\n\t\t\tawait notifyResumedWorkerTerminal(config, terminal, lifetime);\n\t\t\treturn;\n\t\t}\n\t\tconfig.onDiagnostic?.(`process-matrix: ignored stale terminal handoff for ${claimed.entryId}`);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: failed to persist terminal handoff for ${claimed.entryId}: ${describeError(error)}`,\n\t\t);\n\t}\n}\n\nasync function notifyResumedWorkerTerminal(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tterminal: ProcessMatrixEntry,\n\tlifetime: AbortSignal,\n): Promise<void> {\n\tconst store = resolveProcessMatrixStore(config);\n\tif (lifetime.aborted) return;\n\ttry {\n\t\tawait config.notify(formatTerminalNotification(terminal));\n\t\tif (lifetime.aborted) return;\n\t\tconst delivered = markTerminalNotificationDelivered(terminal, new Date().toISOString());\n\t\tif (!(await store.writeEntryIfUnchanged(config.agentDir, terminal.entryId, terminal, delivered))) {\n\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t`process-matrix: terminal handoff changed before acknowledgement for ${terminal.entryId}`,\n\t\t\t);\n\t\t}\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(\n\t\t\t`process-matrix: failed to deliver terminal handoff for ${terminal.entryId}: ${describeError(error)}`,\n\t\t);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Worker branch\n// ---------------------------------------------------------------------------\n\nasync function startWorkerBranch(\n\tconfig: ProcessMatrixRuntimeConfig,\n\tinitialParentPid: number,\n\tnow: () => number,\n): Promise<ProcessMatrixRuntimeHandle> {\n\tconst store = resolveProcessMatrixStore(config);\n\tconst parentSessionId = getParentSessionId();\n\tconst taskRef = (getProcessTaskRef() ?? config.taskRef)?.trim().slice(0, 512) || undefined;\n\tconst taskSummary = config.taskSummary?.trim().slice(0, 2_000) || undefined;\n\tconst laneKey = getBoundWorktreeLaneKey();\n\tconst contextLaneKey = config.agent.resumeContext.worktreeLaneKey;\n\tif (laneKey !== contextLaneKey) {\n\t\tthrow new TypeError(\n\t\t\t`Process-matrix agent lane '${contextLaneKey ?? \"none\"}' does not match active lane '${laneKey ?? \"none\"}'.`,\n\t\t);\n\t}\n\n\tlet entry = buildWorkerEntry({\n\t\tagent: config.agent,\n\t\tpid: process.pid,\n\t\thostname: osHostname(),\n\t\tnow: nowIso(now),\n\t\tparentPid: initialParentPid,\n\t\t...(parentSessionId !== undefined ? { parentSessionId } : {}),\n\t\t...(taskRef !== undefined ? { taskRef } : {}),\n\t\t...(taskSummary !== undefined ? { taskSummary } : {}),\n\t});\n\ttry {\n\t\tawait store.writeEntry(config.agentDir, entry);\n\t} catch (error) {\n\t\tconfig.onDiagnostic?.(`process-matrix: failed to register worker entry: ${describeError(error)}`);\n\t}\n\n\tlet currentParentPid = initialParentPid;\n\tlet currentParentSessionId = parentSessionId;\n\tlet stopped = false;\n\tlet timer: NodeJS.Timeout | undefined;\n\tlet ticking = false;\n\tlet preserveResumableOnExit = false;\n\tlet stopTask: Promise<void> | undefined;\n\tconst generationStartedAt = entry.startedAt;\n\tconst closeOnExit = (code: number | null = null): void => {\n\t\tif (preserveResumableOnExit) return;\n\t\ttry {\n\t\t\tconst terminal = markTerminal(entry, { code, signal: null }, nowIso(now));\n\t\t\tif (store.writeEntryIfUnchangedSync(config.agentDir, entry, terminal)) entry = terminal;\n\t\t} catch {\n\t\t\t// Best-effort. Dead-pid reconciliation remains authoritative.\n\t\t}\n\t};\n\tprocess.once(\"exit\", closeOnExit);\n\n\tconst closeWorker = async (): Promise<void> => {\n\t\tif (stopped) return;\n\t\tstopped = true;\n\t\tif (timer) clearInterval(timer);\n\t\ttimer = undefined;\n\t\tif (!preserveResumableOnExit) {\n\t\t\t// Normal runtime shutdown can await the lock and Windows rename retry policy. Keep the\n\t\t\t// synchronous exit hook only as a last-chance process-exit fallback: using it here made a\n\t\t\t// transient lock collision leave cooperative cleanup permanently in `winding_down`.\n\t\t\tfor (let attempt = 0; attempt < 3; attempt++) {\n\t\t\t\tconst expected = entry;\n\t\t\t\tconst terminal = markTerminal(expected, { code: null, signal: null }, nowIso(now));\n\t\t\t\ttry {\n\t\t\t\t\tif (await store.writeEntryIfUnchanged(config.agentDir, expected.entryId, expected, terminal)) {\n\t\t\t\t\t\tentry = terminal;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst current = await store.readEntry(config.agentDir, expected.entryId);\n\t\t\t\t\tif (current?.pid !== process.pid || current.startedAt !== generationStartedAt) {\n\t\t\t\t\t\tconfig.onDiagnostic?.(\"process-matrix: worker entry ownership moved to a newer process generation\");\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tentry = current;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tconfig.onDiagnostic?.(\n\t\t\t\t\t\t`process-matrix: failed to persist worker terminal state: ${describeError(error)}`,\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tprocess.off(\"exit\", closeOnExit);\n\t};\n\n\tconst stop = (): Promise<void> => {\n\t\tstopTask ??= closeWorker();\n\t\treturn stopTask;\n\t};\n\n\tconst persist = async (\n\t\texpected: ProcessMatrixEntry,\n\t\tnext: ProcessMatrixEntry,\n\t\tfailureContext: string,\n\t): Promise<boolean> => {\n\t\ttry {\n\t\t\tif (await store.writeEntryIfUnchanged(config.agentDir, expected.entryId, expected, next)) {\n\t\t\t\tentry = next;\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst current = await store.readEntry(config.agentDir, expected.entryId);\n\t\t\tif (current?.pid === process.pid) entry = current;\n\t\t\telse {\n\t\t\t\tstopped = true;\n\t\t\t\tif (timer) clearInterval(timer);\n\t\t\t\ttimer = undefined;\n\t\t\t\tprocess.off(\"exit\", closeOnExit);\n\t\t\t\tconfig.onDiagnostic?.(\"process-matrix: worker entry ownership moved to a newer process generation\");\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconfig.onDiagnostic?.(`process-matrix: ${failureContext}: ${describeError(error)}`);\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst completeCooperativeCleanup = async (fresh: ProcessMatrixEntry): Promise<void> => {\n\t\tif (\n\t\t\t!(await persist(\n\t\t\t\tfresh,\n\t\t\t\tbeginWindDown(fresh, \"user_cleanup\", nowIso(now)),\n\t\t\t\t\"failed to write a master-requested worker wind-down\",\n\t\t\t))\n\t\t)\n\t\t\treturn;\n\t\tpreserveResumableOnExit = false;\n\t\temitRuntimeNotice(config, \"process-matrix: the parent session requested a cooperative cleanup. Winding down.\");\n\t\tawait stop();\n\t\tawait config.requestExit();\n\t};\n\n\tconst startHealthyWatch = (): void => {\n\t\ttimer = setInterval(() => {\n\t\t\tif (ticking) return;\n\t\t\tticking = true;\n\t\t\tvoid healthyTick().finally(() => {\n\t\t\t\tticking = false;\n\t\t\t});\n\t\t}, config.settings.watcherPollMs);\n\t\ttimer.unref?.();\n\t};\n\n\tconst declaredParentIsAlive = async (): Promise<boolean> => {\n\t\t// PID liveness alone is not process identity: a reused PID could otherwise keep a worker\n\t\t// attached to an unrelated process forever. The parent session's own fresh master entry binds\n\t\t// PID to a durable identity and proves that that exact session is still heartbeating.\n\t\tif (!currentParentSessionId || !config.isProcessAlive(currentParentPid)) return false;\n\t\tconst parent = await store.readEntry(config.agentDir, buildEntryId(\"master\", currentParentSessionId));\n\t\tif (!parent || parent.role !== \"master\" || parent.agent.resumeContext.sessionId !== currentParentSessionId)\n\t\t\treturn false;\n\t\tif (parent.pid !== currentParentPid || parent.status !== \"running\") return false;\n\t\tconst heartbeatAt = Date.parse(parent.heartbeatAt);\n\t\tconst maxAge = config.settings.heartbeatMs * 2 + config.settings.watcherPollMs;\n\t\treturn Number.isFinite(heartbeatAt) && now() - heartbeatAt <= maxAge;\n\t};\n\n\tconst healthyTick = async (): Promise<void> => {\n\t\tif (stopped) return;\n\t\tif (!(await declaredParentIsAlive())) {\n\t\t\tawait enterWindDown();\n\t\t\treturn;\n\t\t}\n\t\t// Still healthy: also poll for a master-initiated cooperative-cleanup directive.\n\t\tconst fresh = await store.readEntry(config.agentDir, entry.entryId);\n\t\tif (!fresh) return;\n\t\tconst directive = pollWorkerDirective(fresh, currentParentPid, { isPidAlive: config.isProcessAlive });\n\t\tif (directive.code !== \"user_cleanup\") return;\n\t\tawait completeCooperativeCleanup(fresh);\n\t};\n\n\tconst enterWindDown = async (): Promise<void> => {\n\t\tconst windDownAt = nowIso(now);\n\t\tconst expected = entry;\n\t\tconst resumable: ResumablePayload = { lastCode: \"resumable\", agent: structuredClone(config.agent) };\n\t\tif (expected.taskRef !== undefined) resumable.taskRef = expected.taskRef;\n\t\tif (expected.taskSummary !== undefined) resumable.taskSummary = expected.taskSummary;\n\t\tconst woundDown = markResumable(beginWindDown(expected, \"parent_lost\", windDownAt), resumable, windDownAt);\n\t\tif (!(await persist(expected, woundDown, \"failed to write worker wind-down\"))) return;\n\t\tif (timer) clearInterval(timer);\n\t\ttimer = undefined;\n\t\tpreserveResumableOnExit = true;\n\t\temitRuntimeNotice(\n\t\t\tconfig,\n\t\t\t`process-matrix: parent process (pid ${currentParentPid}) is gone. Winding down gracefully; this task is resumable.`,\n\t\t);\n\t\tstartGraceWatch();\n\t};\n\n\tconst startGraceWatch = (): void => {\n\t\tconst graceDeadline = now() + config.settings.adoptionGraceMs;\n\t\ttimer = setInterval(() => {\n\t\t\tif (ticking) return;\n\t\t\tticking = true;\n\t\t\tvoid graceTick(graceDeadline).finally(() => {\n\t\t\t\tticking = false;\n\t\t\t});\n\t\t}, config.settings.watcherPollMs);\n\t\ttimer.unref?.();\n\t};\n\n\tconst graceTick = async (graceDeadline: number): Promise<void> => {\n\t\tif (stopped) return;\n\t\tconst fresh = await store.readEntry(config.agentDir, entry.entryId);\n\t\tif (fresh) {\n\t\t\tconst directive = pollWorkerDirective(fresh, currentParentPid, { isPidAlive: config.isProcessAlive });\n\t\t\tif (directive.code === \"adopt\" && fresh.parentSessionId) {\n\t\t\t\t// The adopting master persists its session id with the pid. Require both on the next\n\t\t\t\t// healthy tick; accepting a pid-only adoption would reintroduce the PID-reuse bug.\n\t\t\t\tif (\n\t\t\t\t\t!(await persist(\n\t\t\t\t\t\tfresh,\n\t\t\t\t\t\tapplyAdoption(fresh, { parentPid: directive.parentPid, parentSessionId: fresh.parentSessionId }),\n\t\t\t\t\t\t\"failed to write worker adoption\",\n\t\t\t\t\t))\n\t\t\t\t)\n\t\t\t\t\treturn;\n\t\t\t\temitRuntimeNotice(\n\t\t\t\t\tconfig,\n\t\t\t\t\t`process-matrix: adopted by a new parent (pid ${directive.parentPid}). Resuming.`,\n\t\t\t\t);\n\t\t\t\tcurrentParentPid = directive.parentPid;\n\t\t\t\tcurrentParentSessionId = fresh.parentSessionId;\n\t\t\t\tpreserveResumableOnExit = false;\n\t\t\t\tif (timer) {\n\t\t\t\t\tclearInterval(timer);\n\t\t\t\t\ttimer = undefined;\n\t\t\t\t}\n\t\t\t\tstartHealthyWatch();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (directive.code === \"user_cleanup\") {\n\t\t\t\tawait completeCooperativeCleanup(fresh);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (now() >= graceDeadline) {\n\t\t\tawait stop();\n\t\t\tawait config.requestExit();\n\t\t}\n\t};\n\n\tstartHealthyWatch();\n\n\treturn { stop };\n}\n"]}
@@ -9,9 +9,10 @@
9
9
  * session state (model/agent/registry/memory/settings) through narrow deps accessors rather than the
10
10
  * whole AgentSession.
11
11
  */
12
- import { type Agent, type AgentMessage, type ThinkingLevel } from "@caupulican/pi-agent-core";
13
- import type { SessionManager } from "@caupulican/pi-agent-core/node";
14
- import { type Api, type Model, type SimpleStreamOptions, type Usage } from "@caupulican/pi-ai";
12
+ import type { Agent } from "@caupulican/pi-agent-core/agent";
13
+ import type { SessionManager } from "@caupulican/pi-agent-core/session";
14
+ import type { AgentMessage, ThinkingLevel } from "@caupulican/pi-agent-core/types";
15
+ import type { Api, Model, SimpleStreamOptions, Usage } from "@caupulican/pi-ai/types";
15
16
  import { type IsolatedCompletionOptions, type IsolatedCompletionResult } from "./agent-session-contracts.ts";
16
17
  import type { LearningDecision } from "./autonomy/contracts.ts";
17
18
  import { type AutonomyTelemetryEvent } from "./autonomy/telemetry-events.ts";
@@ -1 +1 @@
1
- {"version":3,"file":"reflection-controller.d.ts","sourceRoot":"","sources":["../../src/core/reflection-controller.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reflection-controller.d.ts","sourceRoot":"","sources":["../../src/core/reflection-controller.ts"],"names":[],"mappings":"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"}
@@ -12,8 +12,8 @@
12
12
  import { createHash } from "node:crypto";
13
13
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
14
14
  import { join } from "node:path";
15
- import { runAgentLoop, startAgentProviderRequest, } from "@caupulican/pi-agent-core";
16
- import { resolveModelThinkingLevel, } from "@caupulican/pi-ai";
15
+ import { runAgentLoop, startAgentProviderRequest } from "@caupulican/pi-agent-core/agent-loop";
16
+ import { resolveModelThinkingLevel } from "@caupulican/pi-ai/models";
17
17
  import { computeLaneAffinityKey, DEFAULT_ISOLATED_LANE_KIND, } from "./agent-session-contracts.js";
18
18
  import { AUTONOMY_TELEMETRY_EVENT_TYPES } from "./autonomy/telemetry-events.js";
19
19
  import { APPLY_WRITE_REFUSED_REASON_CODE, appendLearningAuditSnapshot, contradictionsForReflectionWrite, getLearningAuditSnapshots, proposalFromReflectionWrite, rollbackPlanForReflectionWrite, } from "./learning/learning-audit.js";