@caupulican/pi-adaptative 0.94.0 → 0.95.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (371) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/bundled-resources/extensions/tmux-agent-manager/README.md +32 -13
  3. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +7 -4
  4. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
  5. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +173 -293
  6. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
  7. package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +247 -392
  8. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.d.ts +52 -0
  9. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.d.ts.map +1 -0
  10. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.js +118 -0
  11. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.js.map +1 -0
  12. package/dist/bundled-resources/extensions/tmux-agent-manager/launch-profile.ts +169 -0
  13. package/dist/bundled-resources/extensions/tmux-agent-manager/templates/builder-validator.json +1 -1
  14. package/dist/bundled-resources/extensions/tmux-agent-manager/templates/provider-prompt-smoke.json +1 -1
  15. package/dist/bundled-resources/skills/pi-harness-learning/SKILL.md +13 -7
  16. package/dist/bundled-resources/skills/worker-profile-writer/SKILL.md +11 -11
  17. package/dist/core/agent-paths.d.ts +2 -0
  18. package/dist/core/agent-paths.d.ts.map +1 -1
  19. package/dist/core/agent-paths.js +7 -0
  20. package/dist/core/agent-paths.js.map +1 -1
  21. package/dist/core/agent-session.d.ts +11 -41
  22. package/dist/core/agent-session.d.ts.map +1 -1
  23. package/dist/core/agent-session.js +98 -161
  24. package/dist/core/agent-session.js.map +1 -1
  25. package/dist/core/autonomy/envelope-enforcement.d.ts +6 -1
  26. package/dist/core/autonomy/envelope-enforcement.d.ts.map +1 -1
  27. package/dist/core/autonomy/envelope-enforcement.js +26 -25
  28. package/dist/core/autonomy/envelope-enforcement.js.map +1 -1
  29. package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -1
  30. package/dist/core/autonomy/lane-private-paths.js +2 -1
  31. package/dist/core/autonomy/lane-private-paths.js.map +1 -1
  32. package/dist/core/autonomy/lane-tool-surface.d.ts +8 -8
  33. package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
  34. package/dist/core/autonomy/lane-tool-surface.js +45 -30
  35. package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
  36. package/dist/core/autonomy/worker-session-private-scope.d.ts +12 -0
  37. package/dist/core/autonomy/worker-session-private-scope.d.ts.map +1 -0
  38. package/dist/core/autonomy/worker-session-private-scope.js +42 -0
  39. package/dist/core/autonomy/worker-session-private-scope.js.map +1 -0
  40. package/dist/core/autonomy/worker-tool-adapter-registry.d.ts +65 -0
  41. package/dist/core/autonomy/worker-tool-adapter-registry.d.ts.map +1 -0
  42. package/dist/core/autonomy/worker-tool-adapter-registry.js +145 -0
  43. package/dist/core/autonomy/worker-tool-adapter-registry.js.map +1 -0
  44. package/dist/core/background-lane-controller.d.ts +9 -1
  45. package/dist/core/background-lane-controller.d.ts.map +1 -1
  46. package/dist/core/background-lane-controller.js +76 -6
  47. package/dist/core/background-lane-controller.js.map +1 -1
  48. package/dist/core/background-tool-task-controller.d.ts +23 -2
  49. package/dist/core/background-tool-task-controller.d.ts.map +1 -1
  50. package/dist/core/background-tool-task-controller.js +132 -17
  51. package/dist/core/background-tool-task-controller.js.map +1 -1
  52. package/dist/core/context/long-term-memory-trigger.d.ts +3 -1
  53. package/dist/core/context/long-term-memory-trigger.d.ts.map +1 -1
  54. package/dist/core/context/long-term-memory-trigger.js +1 -1
  55. package/dist/core/context/long-term-memory-trigger.js.map +1 -1
  56. package/dist/core/context/okf-memory-provider.d.ts +3 -0
  57. package/dist/core/context/okf-memory-provider.d.ts.map +1 -1
  58. package/dist/core/context/okf-memory-provider.js +66 -31
  59. package/dist/core/context/okf-memory-provider.js.map +1 -1
  60. package/dist/core/context/okf-memory.d.ts +18 -1
  61. package/dist/core/context/okf-memory.d.ts.map +1 -1
  62. package/dist/core/context/okf-memory.js +48 -0
  63. package/dist/core/context/okf-memory.js.map +1 -1
  64. package/dist/core/cost-guard-controller.d.ts +37 -0
  65. package/dist/core/cost-guard-controller.d.ts.map +1 -0
  66. package/dist/core/cost-guard-controller.js +71 -0
  67. package/dist/core/cost-guard-controller.js.map +1 -0
  68. package/dist/core/cost-guard.d.ts +9 -4
  69. package/dist/core/cost-guard.d.ts.map +1 -1
  70. package/dist/core/cost-guard.js +7 -3
  71. package/dist/core/cost-guard.js.map +1 -1
  72. package/dist/core/delegation/worker-agent-control.d.ts +4 -0
  73. package/dist/core/delegation/worker-agent-control.d.ts.map +1 -1
  74. package/dist/core/delegation/worker-agent-control.js.map +1 -1
  75. package/dist/core/delegation/worker-attempt-executor.d.ts +1 -1
  76. package/dist/core/delegation/worker-attempt-executor.d.ts.map +1 -1
  77. package/dist/core/delegation/worker-attempt-executor.js +0 -1
  78. package/dist/core/delegation/worker-attempt-executor.js.map +1 -1
  79. package/dist/core/delegation/worker-authority-resolver.d.ts +16 -3
  80. package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
  81. package/dist/core/delegation/worker-authority-resolver.js +114 -55
  82. package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
  83. package/dist/core/delegation/worker-claim.d.ts +1 -2
  84. package/dist/core/delegation/worker-claim.d.ts.map +1 -1
  85. package/dist/core/delegation/worker-claim.js.map +1 -1
  86. package/dist/core/delegation/worker-delegation-controller.d.ts +19 -6
  87. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
  88. package/dist/core/delegation/worker-delegation-controller.js +125 -40
  89. package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
  90. package/dist/core/delegation/worker-delegation-request.d.ts +3 -3
  91. package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -1
  92. package/dist/core/delegation/worker-delegation-request.js +13 -19
  93. package/dist/core/delegation/worker-delegation-request.js.map +1 -1
  94. package/dist/core/delegation/worker-execution-policy.d.ts +3 -2
  95. package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -1
  96. package/dist/core/delegation/worker-execution-policy.js +54 -39
  97. package/dist/core/delegation/worker-execution-policy.js.map +1 -1
  98. package/dist/core/delegation/worker-fleet-limits.d.ts +3 -3
  99. package/dist/core/delegation/worker-fleet-limits.d.ts.map +1 -1
  100. package/dist/core/delegation/worker-fleet-limits.js +7 -7
  101. package/dist/core/delegation/worker-fleet-limits.js.map +1 -1
  102. package/dist/core/delegation/worker-machine-scope.d.ts +12 -0
  103. package/dist/core/delegation/worker-machine-scope.d.ts.map +1 -0
  104. package/dist/core/delegation/worker-machine-scope.js +38 -0
  105. package/dist/core/delegation/worker-machine-scope.js.map +1 -0
  106. package/dist/core/delegation/worker-notification-coordinator.d.ts +10 -0
  107. package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -1
  108. package/dist/core/delegation/worker-notification-coordinator.js +69 -3
  109. package/dist/core/delegation/worker-notification-coordinator.js.map +1 -1
  110. package/dist/core/delegation/worker-recovery-coordinator.d.ts.map +1 -1
  111. package/dist/core/delegation/worker-recovery-coordinator.js +6 -1
  112. package/dist/core/delegation/worker-recovery-coordinator.js.map +1 -1
  113. package/dist/core/delegation/worker-runner.d.ts +5 -7
  114. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  115. package/dist/core/delegation/worker-runner.js +1 -4
  116. package/dist/core/delegation/worker-runner.js.map +1 -1
  117. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts +3 -2
  118. package/dist/core/delegation/worker-write-reservation-coordinator.d.ts.map +1 -1
  119. package/dist/core/delegation/worker-write-reservation-coordinator.js +50 -25
  120. package/dist/core/delegation/worker-write-reservation-coordinator.js.map +1 -1
  121. package/dist/core/durable-custom-message-turn-controller.d.ts +6 -0
  122. package/dist/core/durable-custom-message-turn-controller.d.ts.map +1 -1
  123. package/dist/core/durable-custom-message-turn-controller.js +38 -15
  124. package/dist/core/durable-custom-message-turn-controller.js.map +1 -1
  125. package/dist/core/extension-binding-controller.d.ts +5 -1
  126. package/dist/core/extension-binding-controller.d.ts.map +1 -1
  127. package/dist/core/extension-binding-controller.js +15 -0
  128. package/dist/core/extension-binding-controller.js.map +1 -1
  129. package/dist/core/extensions/factory-runtime.d.ts.map +1 -1
  130. package/dist/core/extensions/factory-runtime.js +5 -0
  131. package/dist/core/extensions/factory-runtime.js.map +1 -1
  132. package/dist/core/extensions/runner.d.ts.map +1 -1
  133. package/dist/core/extensions/runner.js +1 -0
  134. package/dist/core/extensions/runner.js.map +1 -1
  135. package/dist/core/extensions/types.d.ts +8 -4
  136. package/dist/core/extensions/types.d.ts.map +1 -1
  137. package/dist/core/extensions/types.js.map +1 -1
  138. package/dist/core/foreground-terminal-handoff-controller.d.ts +31 -0
  139. package/dist/core/foreground-terminal-handoff-controller.d.ts.map +1 -1
  140. package/dist/core/foreground-terminal-handoff-controller.js +239 -55
  141. package/dist/core/foreground-terminal-handoff-controller.js.map +1 -1
  142. package/dist/core/goals/goal-session-controller.d.ts +2 -0
  143. package/dist/core/goals/goal-session-controller.d.ts.map +1 -1
  144. package/dist/core/goals/goal-session-controller.js +8 -0
  145. package/dist/core/goals/goal-session-controller.js.map +1 -1
  146. package/dist/core/goals/goal-tool-core.d.ts +5 -4
  147. package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
  148. package/dist/core/goals/goal-tool-core.js +23 -19
  149. package/dist/core/goals/goal-tool-core.js.map +1 -1
  150. package/dist/core/learning/auto-learn-settings.d.ts +84 -0
  151. package/dist/core/learning/auto-learn-settings.d.ts.map +1 -0
  152. package/dist/core/learning/auto-learn-settings.js +66 -0
  153. package/dist/core/learning/auto-learn-settings.js.map +1 -0
  154. package/dist/core/learning/learning-audit.d.ts +5 -1
  155. package/dist/core/learning/learning-audit.d.ts.map +1 -1
  156. package/dist/core/learning/learning-audit.js +32 -1
  157. package/dist/core/learning/learning-audit.js.map +1 -1
  158. package/dist/core/learning/reflection-engine.d.ts +24 -0
  159. package/dist/core/learning/reflection-engine.d.ts.map +1 -1
  160. package/dist/core/learning/reflection-engine.js +104 -8
  161. package/dist/core/learning/reflection-engine.js.map +1 -1
  162. package/dist/core/local-prefix-warm-controller.d.ts +24 -0
  163. package/dist/core/local-prefix-warm-controller.d.ts.map +1 -0
  164. package/dist/core/local-prefix-warm-controller.js +79 -0
  165. package/dist/core/local-prefix-warm-controller.js.map +1 -0
  166. package/dist/core/memory/okf-project-memory-store.d.ts +28 -0
  167. package/dist/core/memory/okf-project-memory-store.d.ts.map +1 -0
  168. package/dist/core/memory/okf-project-memory-store.js +111 -0
  169. package/dist/core/memory/okf-project-memory-store.js.map +1 -0
  170. package/dist/core/memory/providers/file-store.d.ts +44 -1
  171. package/dist/core/memory/providers/file-store.d.ts.map +1 -1
  172. package/dist/core/memory/providers/file-store.js +341 -24
  173. package/dist/core/memory/providers/file-store.js.map +1 -1
  174. package/dist/core/memory/worker-memory-tools.d.ts +5 -0
  175. package/dist/core/memory/worker-memory-tools.d.ts.map +1 -0
  176. package/dist/core/memory/worker-memory-tools.js +5 -0
  177. package/dist/core/memory/worker-memory-tools.js.map +1 -0
  178. package/dist/core/memory-controller.d.ts +10 -1
  179. package/dist/core/memory-controller.d.ts.map +1 -1
  180. package/dist/core/memory-controller.js +72 -8
  181. package/dist/core/memory-controller.js.map +1 -1
  182. package/dist/core/model-capability.d.ts +7 -0
  183. package/dist/core/model-capability.d.ts.map +1 -1
  184. package/dist/core/model-capability.js +12 -0
  185. package/dist/core/model-capability.js.map +1 -1
  186. package/dist/core/model-registry.d.ts.map +1 -1
  187. package/dist/core/model-registry.js +2 -10
  188. package/dist/core/model-registry.js.map +1 -1
  189. package/dist/core/model-router-controller.d.ts +3 -2
  190. package/dist/core/model-router-controller.d.ts.map +1 -1
  191. package/dist/core/model-router-controller.js +3 -2
  192. package/dist/core/model-router-controller.js.map +1 -1
  193. package/dist/core/orchestration/contracts.d.ts +16 -12
  194. package/dist/core/orchestration/contracts.d.ts.map +1 -1
  195. package/dist/core/orchestration/contracts.js +2 -2
  196. package/dist/core/orchestration/contracts.js.map +1 -1
  197. package/dist/core/orchestration/lane-tool-manifests.d.ts +2 -2
  198. package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -1
  199. package/dist/core/orchestration/lane-tool-manifests.js +6 -1
  200. package/dist/core/orchestration/lane-tool-manifests.js.map +1 -1
  201. package/dist/core/orchestration/profile-registry.d.ts.map +1 -1
  202. package/dist/core/orchestration/profile-registry.js +14 -0
  203. package/dist/core/orchestration/profile-registry.js.map +1 -1
  204. package/dist/core/orchestration/task-profile-writer.d.ts +7 -4
  205. package/dist/core/orchestration/task-profile-writer.d.ts.map +1 -1
  206. package/dist/core/orchestration/task-profile-writer.js +71 -59
  207. package/dist/core/orchestration/task-profile-writer.js.map +1 -1
  208. package/dist/core/orchestration/thinking-level-schema.d.ts +7 -0
  209. package/dist/core/orchestration/thinking-level-schema.d.ts.map +1 -0
  210. package/dist/core/orchestration/thinking-level-schema.js +19 -0
  211. package/dist/core/orchestration/thinking-level-schema.js.map +1 -0
  212. package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -1
  213. package/dist/core/orchestration/worker-execution-contract.js +12 -5
  214. package/dist/core/orchestration/worker-execution-contract.js.map +1 -1
  215. package/dist/core/provider-prompt-contracts.d.ts +1 -4
  216. package/dist/core/provider-prompt-contracts.d.ts.map +1 -1
  217. package/dist/core/provider-prompt-contracts.js +13 -29
  218. package/dist/core/provider-prompt-contracts.js.map +1 -1
  219. package/dist/core/provider-request-context-controller.d.ts +2 -0
  220. package/dist/core/provider-request-context-controller.d.ts.map +1 -1
  221. package/dist/core/provider-request-context-controller.js +10 -3
  222. package/dist/core/provider-request-context-controller.js.map +1 -1
  223. package/dist/core/reflection-controller.d.ts +63 -27
  224. package/dist/core/reflection-controller.d.ts.map +1 -1
  225. package/dist/core/reflection-controller.js +300 -132
  226. package/dist/core/reflection-controller.js.map +1 -1
  227. package/dist/core/runtime-builder.d.ts +1 -0
  228. package/dist/core/runtime-builder.d.ts.map +1 -1
  229. package/dist/core/runtime-builder.js +25 -14
  230. package/dist/core/runtime-builder.js.map +1 -1
  231. package/dist/core/secrets/credential-exposure-guard.d.ts.map +1 -1
  232. package/dist/core/secrets/credential-exposure-guard.js +55 -10
  233. package/dist/core/secrets/credential-exposure-guard.js.map +1 -1
  234. package/dist/core/session-role.d.ts +6 -8
  235. package/dist/core/session-role.d.ts.map +1 -1
  236. package/dist/core/session-role.js +8 -18
  237. package/dist/core/session-role.js.map +1 -1
  238. package/dist/core/settings-manager.d.ts +13 -16
  239. package/dist/core/settings-manager.d.ts.map +1 -1
  240. package/dist/core/settings-manager.js +53 -50
  241. package/dist/core/settings-manager.js.map +1 -1
  242. package/dist/core/skill-vault.d.ts +15 -0
  243. package/dist/core/skill-vault.d.ts.map +1 -1
  244. package/dist/core/skill-vault.js +79 -45
  245. package/dist/core/skill-vault.js.map +1 -1
  246. package/dist/core/skills.d.ts +3 -0
  247. package/dist/core/skills.d.ts.map +1 -1
  248. package/dist/core/skills.js +6 -6
  249. package/dist/core/skills.js.map +1 -1
  250. package/dist/core/system-prompt-builder.d.ts +2 -0
  251. package/dist/core/system-prompt-builder.d.ts.map +1 -1
  252. package/dist/core/system-prompt-builder.js +52 -12
  253. package/dist/core/system-prompt-builder.js.map +1 -1
  254. package/dist/core/system-prompt.js +1 -1
  255. package/dist/core/system-prompt.js.map +1 -1
  256. package/dist/core/tool-capability-policy.d.ts +3 -0
  257. package/dist/core/tool-capability-policy.d.ts.map +1 -1
  258. package/dist/core/tool-capability-policy.js +13 -2
  259. package/dist/core/tool-capability-policy.js.map +1 -1
  260. package/dist/core/toolkit/script-runner.d.ts +2 -1
  261. package/dist/core/toolkit/script-runner.d.ts.map +1 -1
  262. package/dist/core/toolkit/script-runner.js +10 -2
  263. package/dist/core/toolkit/script-runner.js.map +1 -1
  264. package/dist/core/tools/delegate-status.d.ts +3 -1
  265. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  266. package/dist/core/tools/delegate-status.js +5 -1
  267. package/dist/core/tools/delegate-status.js.map +1 -1
  268. package/dist/core/tools/delegate.d.ts +4 -13
  269. package/dist/core/tools/delegate.d.ts.map +1 -1
  270. package/dist/core/tools/delegate.js +173 -73
  271. package/dist/core/tools/delegate.js.map +1 -1
  272. package/dist/core/tools/goal.d.ts +3 -4
  273. package/dist/core/tools/goal.d.ts.map +1 -1
  274. package/dist/core/tools/goal.js +24 -7
  275. package/dist/core/tools/goal.js.map +1 -1
  276. package/dist/core/tools/profile-writer.d.ts +2 -8
  277. package/dist/core/tools/profile-writer.d.ts.map +1 -1
  278. package/dist/core/tools/profile-writer.js +6 -18
  279. package/dist/core/tools/profile-writer.js.map +1 -1
  280. package/dist/core/tools/run-toolkit-script.d.ts +1 -1
  281. package/dist/core/tools/run-toolkit-script.d.ts.map +1 -1
  282. package/dist/core/tools/run-toolkit-script.js +2 -2
  283. package/dist/core/tools/run-toolkit-script.js.map +1 -1
  284. package/dist/core/tools/skill-audit.d.ts +28 -1
  285. package/dist/core/tools/skill-audit.d.ts.map +1 -1
  286. package/dist/core/tools/skill-audit.js +56 -12
  287. package/dist/core/tools/skill-audit.js.map +1 -1
  288. package/dist/core/tools/skill.d.ts +12 -1
  289. package/dist/core/tools/skill.d.ts.map +1 -1
  290. package/dist/core/tools/skill.js +52 -0
  291. package/dist/core/tools/skill.js.map +1 -1
  292. package/dist/core/tools/skillify.d.ts.map +1 -1
  293. package/dist/core/tools/skillify.js +16 -7
  294. package/dist/core/tools/skillify.js.map +1 -1
  295. package/dist/core/tools/task-steps.js +1 -1
  296. package/dist/core/tools/task-steps.js.map +1 -1
  297. package/dist/core/tools/tmux-dispatch.d.ts +4 -16
  298. package/dist/core/tools/tmux-dispatch.d.ts.map +1 -1
  299. package/dist/core/tools/tmux-dispatch.js +5 -20
  300. package/dist/core/tools/tmux-dispatch.js.map +1 -1
  301. package/dist/core/tools/tool-task.d.ts +1 -0
  302. package/dist/core/tools/tool-task.d.ts.map +1 -1
  303. package/dist/core/tools/tool-task.js +13 -8
  304. package/dist/core/tools/tool-task.js.map +1 -1
  305. package/dist/core/util/atomic-file.d.ts +2 -0
  306. package/dist/core/util/atomic-file.d.ts.map +1 -1
  307. package/dist/core/util/atomic-file.js +4 -0
  308. package/dist/core/util/atomic-file.js.map +1 -1
  309. package/dist/core/worktree-sync/codes.d.ts +1 -2
  310. package/dist/core/worktree-sync/codes.d.ts.map +1 -1
  311. package/dist/core/worktree-sync/codes.js +1 -2
  312. package/dist/core/worktree-sync/codes.js.map +1 -1
  313. package/dist/core/worktree-sync/lane-gate.d.ts +4 -8
  314. package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -1
  315. package/dist/core/worktree-sync/lane-gate.js +5 -51
  316. package/dist/core/worktree-sync/lane-gate.js.map +1 -1
  317. package/dist/index.d.ts +5 -0
  318. package/dist/index.d.ts.map +1 -1
  319. package/dist/index.js +7 -0
  320. package/dist/index.js.map +1 -1
  321. package/dist/modes/interactive/auto-learn-controller.d.ts +6 -7
  322. package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
  323. package/dist/modes/interactive/auto-learn-controller.js +32 -207
  324. package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
  325. package/dist/modes/interactive/autonomy-commands.js +2 -2
  326. package/dist/modes/interactive/autonomy-commands.js.map +1 -1
  327. package/dist/modes/interactive/components/activity-lane.d.ts.map +1 -1
  328. package/dist/modes/interactive/components/activity-lane.js +12 -23
  329. package/dist/modes/interactive/components/activity-lane.js.map +1 -1
  330. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  331. package/dist/modes/interactive/components/custom-message.js +142 -1
  332. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  333. package/dist/modes/interactive/components/fitness-role-selector.d.ts.map +1 -1
  334. package/dist/modes/interactive/components/fitness-role-selector.js +2 -2
  335. package/dist/modes/interactive/components/fitness-role-selector.js.map +1 -1
  336. package/dist/modes/interactive/components/footer.js +1 -1
  337. package/dist/modes/interactive/components/footer.js.map +1 -1
  338. package/dist/modes/interactive/components/settings-selector.d.ts +4 -0
  339. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  340. package/dist/modes/interactive/components/settings-selector.js +150 -73
  341. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  342. package/dist/modes/interactive/report-commands.d.ts.map +1 -1
  343. package/dist/modes/interactive/report-commands.js +8 -4
  344. package/dist/modes/interactive/report-commands.js.map +1 -1
  345. package/dist/modes/interactive/settings-selector-flow.d.ts.map +1 -1
  346. package/dist/modes/interactive/settings-selector-flow.js +10 -0
  347. package/dist/modes/interactive/settings-selector-flow.js.map +1 -1
  348. package/docs/extensions.md +8 -0
  349. package/docs/harness-architecture.md +28 -32
  350. package/docs/index.md +1 -1
  351. package/docs/process-matrix.md +8 -6
  352. package/docs/resources.md +1 -1
  353. package/docs/settings.md +61 -51
  354. package/docs/tmux-agent-manager.md +47 -40
  355. package/docs/usage.md +1 -1
  356. package/docs/worker-profiles.md +8 -6
  357. package/docs/worktree-sync.md +26 -20
  358. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  359. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  360. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  361. package/examples/extensions/sandbox/package-lock.json +2 -2
  362. package/examples/extensions/sandbox/package.json +1 -1
  363. package/examples/extensions/with-deps/package-lock.json +2 -2
  364. package/examples/extensions/with-deps/package.json +1 -1
  365. package/npm-shrinkwrap.json +12 -12
  366. package/package.json +4 -4
  367. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts +0 -133
  368. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +0 -1
  369. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +0 -199
  370. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +0 -1
  371. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +0 -312
@@ -1 +1 @@
1
- {"version":3,"file":"worker-authority-resolver.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-authority-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAE7F,OAAO,EAEN,4BAA4B,GAG5B,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAElG,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AAGzE;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAEpD,MAAM,kBAAkB,GAAG;IAC1B,MAAM;IACN,MAAM;IACN,MAAM;IACN,IAAI;IACJ,OAAO;IACP,MAAM;IACN,QAAQ;IACR,sBAAsB;IACtB,UAAU;CACD,CAAC;AACX,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC,CAAC,GAAG,0BAA0B,EAAE,UAAU,CAAC,CAAC,CAAC;AACvG,MAAM,oBAAoB,GAAiC;IAC1D,iBAAiB;IACjB,kBAAkB;IAClB,eAAe;IACf,iBAAiB;IACjB,cAAc;IACd,cAAc;IACd,aAAa;IACb,cAAc;CACd,CAAC;AAoBF,SAAS,kBAAkB,CAC1B,QAA+C,EAC/C,SAAuD,EACvD,IAAuC,EACvC,eAAuC,EACvC,aAA4B;IAE5B,IAAI,QAAQ;QAAE,OAAO,EAAE,GAAG,QAAQ,EAAE,CAAC;IACrC,MAAM,QAAQ,GAAG,SAAS,EAAE,KAAK,EAAE,QAAQ,IAAI,IAAI,EAAE,YAAY,CAAC,QAAQ,IAAI,eAAe,EAAE,QAAQ,CAAC;IACxG,MAAM,OAAO,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI,EAAE,YAAY,CAAC,OAAO,IAAI,eAAe,EAAE,EAAE,CAAC;IAC/F,IAAI,CAAC,QAAQ,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC5C,MAAM,UAAU,GAAG,QAAQ,KAAK,IAAI,EAAE,YAAY,CAAC,QAAQ,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;IACrG,MAAM,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC5D,MAAM,aAAa,GAClB,SAAS,EAAE,aAAa;QACxB,CAAC,UAAU;YACV,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa;YACjC,CAAC,CAAC,eAAe,IAAI,QAAQ,KAAK,eAAe,CAAC,QAAQ,IAAI,OAAO,KAAK,eAAe,CAAC,EAAE;gBAC3F,CAAC,CAAC,yBAAyB,CAAC,eAAe,EAAE,SAAS,CAAC;gBACvD,CAAC,CAAC,aAAa;oBACd,CAAC,CAAC,yBAAyB,CAAC,aAAa,EAAE,SAAS,CAAC;oBACrD,CAAC,CAAC,KAAK,CAAC,CAAC;IACb,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACvC,OAAO,YAAY,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;AACpG,CAAC;AAED,SAAS,uBAAuB,CAAC,SAA6B;IAC7D,OAAO,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,8BAA8B;QAC3E,CAAC,CAAC,sCAAsC,SAAS,QAAQ,8BAA8B,EAAE;QACzF,CAAC,CAAC,SAAS,CAAC;AACd,CAAC;AAED,8FAA8F;AAC9F,MAAM,UAAU,sBAAsB,CAAC,KAAqC;IAC3E,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,YAAY,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClF,IAAI,YAAY;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,aAAa,GAAG,+BAA+B,CACpD,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,aAAa,EACnB,KAAK,CAAC,gBAAgB,CACtB,CAAC;QACF,IAAI,CAAC,aAAa;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;QACpF,OAAO;YACN,EAAE,EAAE,IAAI;YACR,QAAQ,EAAE;gBACT,GAAG,KAAK,CAAC,IAAI;gBACb,KAAK,EAAE,aAAa,CAAC,KAAK;gBAC1B,YAAY,EAAE,aAAa,CAAC,OAAO;gBACnC,OAAO,EAAE;oBACR,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO;oBACrB,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;iBACnE;aACD;SACD,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CACjC,KAAK,CAAC,QAAQ,EACd,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,eAAe,EACrB,KAAK,CAAC,aAAa,CACnB,CAAC;IACF,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;IAC3E,MAAM,aAAa,GAAG,+BAA+B,CAAC,OAAO,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC5G,IAAI,CAAC,aAAa;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC;IAEpF,MAAM,mBAAmB,GAAG,uBAAuB,CAClD,KAAK,CAAC,SAAS,EAAE,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,IAAI,kBAAkB,CACjF,CAAC;IACF,MAAM,kBAAkB,GACvB,KAAK,CAAC,SAAS,EAAE,YAAY,KAAK,SAAS;QAC3C,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS;YACxB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC;gBACjD,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,kBAAkB,GACvB,kBAAkB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC;QAC9D,CAAC,CAAC,CAAC,GAAG,mBAAmB,EAAE,UAAU,CAAC;QACtC,CAAC,CAAC,mBAAmB,CAAC;IACxB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACnG,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,YAAY,GAAG,IAAI,GAAG,CAC3B,KAAK,CAAC,SAAS,EAAE,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,IAAI,oBAAoB,CAC9F,CAAC;IACF,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,kBAAkB,EAAE,CAAC;QAChE,YAAY,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,MAAM,cAAc,GAAG,CAAC,GAAG,YAAY,CAAC,CAAC;IACzC,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mCAAmC,QAAQ,EAAE,EAAE,CAAC;QACzF,IAAI,yBAAyB,CAAC,cAAc,EAAE,QAAQ,CAAC,EAAE,CAAC;YACzD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACzB,SAAS;QACV,CAAC;QACD,IAAI,KAAK,CAAC,SAAS,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,yCAAyC,QAAQ,EAAE,EAAE,CAAC;QACnF,CAAC;IACF,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5F,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC/D,IAAI,YAAY;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,cAAc,CAAC;IACjF,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI;QAClC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB;QACrC,CAAC,CAAC,eAAe,CAAC,6BAA6B,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG;QAClB,IAAI;QACJ,OAAO,EAAE,aAAa,CAAC,OAAO;QAC9B,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;QAC/B,SAAS;QACT,MAAM;QACN,gBAAgB,EAAE,gBAAgB,IAAI,IAAI;QAC1C,oBAAoB,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,oBAAoB,IAAI,EAAE;KACpE,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,CAAC,CAAC;IAClD,MAAM,mBAAmB,GACxB,cAAc,GAAG,MAAM,CAAC,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,GAAG,MAAM,CAAC;IACvG,MAAM,OAAO,GAAyB;QACrC,aAAa,EAAE,4BAA4B;QAC3C,SAAS,EAAE,iBAAiB,CAAC,UAAU,CAAC;QACxC,WAAW,EAAE,yCAAyC;QACtD,IAAI;QACJ,WAAW,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;QACnE,iBAAiB,EAAE,CAAC,GAAG,YAAY,CAAC;QACpC,SAAS;QACT,oBAAoB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;QAC3E,kBAAkB,EAAE,EAAE;QACtB,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvG,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpF,MAAM;QACN,aAAa,EAAE,MAAM,CAAC,gBAAgB;QACtC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC;QACtF,8BAA8B,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,8BAA8B,IAAI,KAAK;QAC3F,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,qBAAqB;YAC5C,CAAC,CAAC,EAAE,qBAAqB,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACrE,CAAC,CAAC,EAAE,CAAC;QACN,SAAS,EAAE,GAAG;QACd,SAAS,EAAE,GAAG;KACd,CAAC;IACF,OAAO;QACN,EAAE,EAAE,IAAI;QACR,QAAQ,EAAE;YACT,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,YAAY,EAAE,aAAa,CAAC,OAAO;YACnC,OAAO;YACP,gBAAgB,EAAE,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;YACrE,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD;QACD,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChG,CAAC;AACH,CAAC","sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { Api, Model } from \"@caupulican/pi-ai\";\nimport { resolveModelThinkingLevel } from \"@caupulican/pi-ai/models\";\nimport { mapToolNamesForPlatform, STABLE_SHELL_TOOL_NAME } from \"../default-tool-surface.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport {\n\ttype HarnessCapability,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationModelBinding,\n\ttype OrchestrationProfile,\n} from \"../orchestration/contracts.ts\";\nimport { CLASSIFIED_LANE_TOOL_NAMES } from \"../orchestration/lane-tool-manifests.ts\";\nimport { resolvePinnedOrchestrationModel } from \"../orchestration/model-binding.ts\";\nimport { envelopeHasToolCapability, getToolCapabilityPolicy } from \"../tool-capability-policy.ts\";\nimport type { WorkerDelegationAuthorityRequest } from \"./worker-delegation-request.ts\";\nimport { LEAN_WORKER_DELEGATION_LIMITS } from \"./worker-fleet-limits.ts\";\nimport type { ResolvedWorkerProfile } from \"./worker-profile-resolver.ts\";\n\n/**\n * Smallest token grant a worker can survive on. A worker's first response pays the full\n * uncached system prompt (~3.3k budgeted tokens in the field), so grants below this floor\n * starve mid-flight with every tool call denied `token_budget_exhausted` — reject them at\n * admission with an explicit reason instead (field session 019fd4dc: 8-9k grants died in\n * 2-3 responses under face-value cache-read counting; the floor plus discounted counting\n * makes small grants viable again).\n */\nexport const MIN_VIABLE_WORKER_TOKEN_BUDGET = 5_000;\n\nconst DEFAULT_TOOL_NAMES = [\n\t\"read\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"write\",\n\t\"edit\",\n\t\"memory\",\n\tSTABLE_SHELL_TOOL_NAME,\n\t\"delegate\",\n] as const;\nconst AVAILABLE_TOOL_NAMES: ReadonlySet<string> = new Set([...CLASSIFIED_LANE_TOOL_NAMES, \"delegate\"]);\nconst DEFAULT_CAPABILITIES: readonly HarnessCapability[] = [\n\t\"filesystem.read\",\n\t\"filesystem.write\",\n\t\"worktree.read\",\n\t\"worktree.mutate\",\n\t\"process.exec\",\n\t\"network.http\",\n\t\"service.mcp\",\n\t\"memory.query\",\n];\n\nexport interface WorkerAuthorityResolutionInput {\n\tauthority?: WorkerDelegationAuthorityRequest;\n\tbase?: ResolvedWorkerProfile;\n\tmodelPin?: OrchestrationModelBinding;\n\tforegroundModel?: Model<Api>;\n\tmodelRegistry: ModelRegistry;\n\tisModelExhausted(model: Model<Api>): boolean;\n}\n\nexport type WorkerAuthorityResolution =\n\t| {\n\t\t\tok: true;\n\t\t\tshipment: ResolvedWorkerProfile;\n\t\t\trequestedReadPaths?: readonly string[];\n\t\t\trequestedWritePaths?: readonly string[];\n\t }\n\t| { ok: false; reason: string };\n\nfunction selectModelBinding(\n\tmodelPin: OrchestrationModelBinding | undefined,\n\tauthority: WorkerDelegationAuthorityRequest | undefined,\n\tbase: ResolvedWorkerProfile | undefined,\n\tforegroundModel: Model<Api> | undefined,\n\tmodelRegistry: ModelRegistry,\n): OrchestrationModelBinding | undefined {\n\tif (modelPin) return { ...modelPin };\n\tconst provider = authority?.model?.provider ?? base?.modelBinding.provider ?? foregroundModel?.provider;\n\tconst modelId = authority?.model?.modelId ?? base?.modelBinding.modelId ?? foregroundModel?.id;\n\tif (!provider || !modelId) return undefined;\n\tconst sameAsBase = provider === base?.modelBinding.provider && modelId === base.modelBinding.modelId;\n\tconst selectedModel = modelRegistry.find(provider, modelId);\n\tconst thinkingLevel =\n\t\tauthority?.thinkingLevel ??\n\t\t(sameAsBase\n\t\t\t? base.modelBinding.thinkingLevel\n\t\t\t: foregroundModel && provider === foregroundModel.provider && modelId === foregroundModel.id\n\t\t\t\t? resolveModelThinkingLevel(foregroundModel, undefined)\n\t\t\t\t: selectedModel\n\t\t\t\t\t? resolveModelThinkingLevel(selectedModel, undefined)\n\t\t\t\t\t: \"off\");\n\treturn { provider, modelId, thinkingLevel };\n}\n\nfunction adaptiveProfileId(value: object): string {\n\treturn `adaptive-${createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\").slice(0, 32)}`;\n}\n\nfunction tokenBudgetFloorFailure(maxTokens: number | undefined): string | undefined {\n\treturn maxTokens !== undefined && maxTokens < MIN_VIABLE_WORKER_TOKEN_BUDGET\n\t\t? `token_budget_below_floor:requested=${maxTokens},min=${MIN_VIABLE_WORKER_TOKEN_BUDGET}`\n\t\t: undefined;\n}\n\n/** Materialize free-form model choices as one immutable profile-shaped execution snapshot. */\nexport function resolveWorkerAuthority(input: WorkerAuthorityResolutionInput): WorkerAuthorityResolution {\n\tif (!input.authority && input.base) {\n\t\tconst floorFailure = tokenBudgetFloorFailure(input.base.profile.budget.maxTokens);\n\t\tif (floorFailure) return { ok: false, reason: floorFailure };\n\t\tif (!input.modelPin) return { ok: true, shipment: input.base };\n\t\tconst resolvedModel = resolvePinnedOrchestrationModel(\n\t\t\tinput.modelPin,\n\t\t\tinput.modelRegistry,\n\t\t\tinput.isModelExhausted,\n\t\t);\n\t\tif (!resolvedModel) return { ok: false, reason: \"orchestration_model_unavailable\" };\n\t\treturn {\n\t\t\tok: true,\n\t\t\tshipment: {\n\t\t\t\t...input.base,\n\t\t\t\tmodel: resolvedModel.model,\n\t\t\t\tmodelBinding: resolvedModel.binding,\n\t\t\t\tprofile: {\n\t\t\t\t\t...input.base.profile,\n\t\t\t\t\tmodelPolicy: { mode: \"fixed\", candidates: [resolvedModel.binding] },\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\tconst binding = selectModelBinding(\n\t\tinput.modelPin,\n\t\tinput.authority,\n\t\tinput.base,\n\t\tinput.foregroundModel,\n\t\tinput.modelRegistry,\n\t);\n\tif (!binding) return { ok: false, reason: \"orchestration_model_required\" };\n\tconst resolvedModel = resolvePinnedOrchestrationModel(binding, input.modelRegistry, input.isModelExhausted);\n\tif (!resolvedModel) return { ok: false, reason: \"orchestration_model_unavailable\" };\n\n\tconst configuredToolNames = mapToolNamesForPlatform(\n\t\tinput.authority?.toolNames ?? input.base?.profile.toolNames ?? DEFAULT_TOOL_NAMES,\n\t);\n\tconst inheritsDelegation =\n\t\tinput.authority?.capabilities === undefined &&\n\t\t(input.base === undefined ||\n\t\t\t(input.base.profile.toolNames.includes(\"delegate\") &&\n\t\t\t\tinput.base.profile.capabilityCeiling.includes(\"workflow.delegate\")));\n\tconst requestedToolNames =\n\t\tinheritsDelegation && !configuredToolNames.includes(\"delegate\")\n\t\t\t? [...configuredToolNames, \"delegate\"]\n\t\t\t: configuredToolNames;\n\tconst uniqueToolNames = [...new Set(requestedToolNames)];\n\tconst unavailableTools = uniqueToolNames.filter((toolName) => !AVAILABLE_TOOL_NAMES.has(toolName));\n\tif (unavailableTools.length > 0) {\n\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${unavailableTools.join(\",\")}` };\n\t}\n\tconst capabilities = new Set<HarnessCapability>(\n\t\tinput.authority?.capabilities ?? input.base?.profile.capabilityCeiling ?? DEFAULT_CAPABILITIES,\n\t);\n\tif (uniqueToolNames.includes(\"delegate\") && inheritsDelegation) {\n\t\tcapabilities.add(\"workflow.delegate\");\n\t}\n\tconst capabilityList = [...capabilities];\n\tconst toolNames: string[] = [];\n\tfor (const toolName of uniqueToolNames) {\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tif (!policy) return { ok: false, reason: `orchestration_tool_unclassified:${toolName}` };\n\t\tif (envelopeHasToolCapability(capabilityList, toolName)) {\n\t\t\ttoolNames.push(toolName);\n\t\t\tcontinue;\n\t\t}\n\t\tif (input.authority?.toolNames !== undefined) {\n\t\t\treturn { ok: false, reason: `orchestration_tool_capability_missing:${toolName}` };\n\t\t}\n\t}\n\tconst budget = structuredClone(input.authority?.budget ?? input.base?.profile.budget ?? {});\n\tconst floorFailure = tokenBudgetFloorFailure(budget.maxTokens);\n\tif (floorFailure) return { ok: false, reason: floorFailure };\n\tconst role = input.authority?.role ?? input.base?.profile.role ?? \"orchestrator\";\n\tconst delegationLimits = input.base\n\t\t? input.base.profile.delegationLimits\n\t\t: structuredClone(LEAN_WORKER_DELEGATION_LIMITS);\n\tconst now = new Date().toISOString();\n\tconst descriptor = {\n\t\trole,\n\t\tbinding: resolvedModel.binding,\n\t\tcapabilities: [...capabilities],\n\t\ttoolNames,\n\t\tbudget,\n\t\tdelegationLimits: delegationLimits ?? null,\n\t\tresourceProfileNames: input.base?.profile.resourceProfileNames ?? [],\n\t};\n\tconst maxWallClockMs = budget.maxWallClockMs ?? 0;\n\tconst wallClockLeaseTtlMs =\n\t\tmaxWallClockMs > Number.MAX_SAFE_INTEGER - 30_000 ? Number.MAX_SAFE_INTEGER : maxWallClockMs + 30_000;\n\tconst profile: OrchestrationProfile = {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tprofileId: adaptiveProfileId(descriptor),\n\t\tdescription: \"Admission-time adaptive agent authority\",\n\t\trole,\n\t\tmodelPolicy: { mode: \"fixed\", candidates: [resolvedModel.binding] },\n\t\tcapabilityCeiling: [...capabilities],\n\t\ttoolNames,\n\t\tresourceProfileNames: [...(input.base?.profile.resourceProfileNames ?? [])],\n\t\tdispatchProfileIds: [],\n\t\t...(input.base?.profile.executionPolicy ? { executionPolicy: input.base.profile.executionPolicy } : {}),\n\t\t...(delegationLimits ? { delegationLimits: structuredClone(delegationLimits) } : {}),\n\t\tbudget,\n\t\tmaxConcurrent: Number.MAX_SAFE_INTEGER,\n\t\tleaseTtlMs: Math.max(input.base?.profile.leaseTtlMs ?? 0, wallClockLeaseTtlMs, 90_000),\n\t\trequireIndependentVerification: input.base?.profile.requireIndependentVerification ?? false,\n\t\t...(input.base?.profile.verificationProfileId\n\t\t\t? { verificationProfileId: input.base.profile.verificationProfileId }\n\t\t\t: {}),\n\t\tcreatedAt: now,\n\t\tupdatedAt: now,\n\t};\n\treturn {\n\t\tok: true,\n\t\tshipment: {\n\t\t\tmodel: resolvedModel.model,\n\t\t\tmodelBinding: resolvedModel.binding,\n\t\t\tprofile,\n\t\t\tresourcePointers: structuredClone(input.base?.resourcePointers ?? []),\n\t\t\t...(input.base?.soul ? { soul: input.base.soul } : {}),\n\t\t},\n\t\t...(input.authority?.readPaths ? { requestedReadPaths: [...input.authority.readPaths] } : {}),\n\t\t...(input.authority?.writePaths ? { requestedWritePaths: [...input.authority.writePaths] } : {}),\n\t};\n}\n"]}
1
+ {"version":3,"file":"worker-authority-resolver.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-authority-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["import { createHash } from \"node:crypto\";\nimport { isDeepStrictEqual } from \"node:util\";\nimport type { Api, Model } from \"@caupulican/pi-ai\";\nimport { resolveModelThinkingLevel } from \"@caupulican/pi-ai/models\";\nimport type { CapabilityEnvelope } from \"../autonomy/contracts.ts\";\nimport { mapToolNamesForPlatform, STABLE_SHELL_TOOL_NAME } from \"../default-tool-surface.ts\";\nimport {\n\tROOT_MEMORY_TOOL_NAME,\n\tWORKER_MEMORY_READ_TOOL_NAME,\n\tWORKER_ROOT_MEMORY_TOOL_NAMES,\n} from \"../memory/worker-memory-tools.ts\";\nimport type { ModelRegistry } from \"../model-registry.ts\";\nimport {\n\ttype HarnessCapability,\n\tORCHESTRATION_SCHEMA_VERSION,\n\ttype OrchestrationModelBinding,\n\ttype OrchestrationProfile,\n\ttype OrchestrationThinkingLevel,\n} from \"../orchestration/contracts.ts\";\nimport { CLASSIFIED_LANE_TOOL_NAMES } from \"../orchestration/lane-tool-manifests.ts\";\nimport { resolvePinnedOrchestrationModel } from \"../orchestration/model-binding.ts\";\nimport { envelopeHasToolCapability, getToolCapabilityPolicy } from \"../tool-capability-policy.ts\";\nimport type { WorkerDelegationAuthorityRequest } from \"./worker-delegation-request.ts\";\nimport { LEAF_WORKER_DELEGATION_LIMITS } from \"./worker-fleet-limits.ts\";\nimport { resolveWorkerWorkspacePath } from \"./worker-machine-scope.ts\";\nimport type { ResolvedWorkerProfile } from \"./worker-profile-resolver.ts\";\n\n/**\n * Smallest token grant a worker can survive on. A worker's first response pays the full\n * uncached system prompt (~3.3k budgeted tokens in the field), so grants below this floor\n * starve mid-flight with every tool call denied `token_budget_exhausted` — reject them at\n * admission with an explicit reason instead (field session 019fd4dc: 8-9k grants died in\n * 2-3 responses under face-value cache-read counting; the floor plus discounted counting\n * makes small grants viable again).\n */\nexport const MIN_VIABLE_WORKER_TOKEN_BUDGET = 5_000;\n\nconst DEFAULT_TOOL_NAMES = [\n\t\"read\",\n\t\"grep\",\n\t\"find\",\n\t\"ls\",\n\t\"write\",\n\t\"edit\",\n\t\"python\",\n\tSTABLE_SHELL_TOOL_NAME,\n\t\"artifact_retrieve\",\n\t\"skill\",\n\t\"skill_audit\",\n] as const;\nconst AVAILABLE_TOOL_NAMES: ReadonlySet<string> = new Set(CLASSIFIED_LANE_TOOL_NAMES);\nconst DEFAULT_CAPABILITIES: readonly HarnessCapability[] = [\n\t\"filesystem.read\",\n\t\"filesystem.write\",\n\t\"worktree.read\",\n\t\"worktree.mutate\",\n\t\"process.exec\",\n\t\"network.http\",\n\t\"service.mcp\",\n\t\"skill.read\",\n];\nexport interface WorkerAuthorityResolutionInput {\n\tauthority?: WorkerDelegationAuthorityRequest;\n\tbase?: ResolvedWorkerProfile;\n\tmodelPin?: OrchestrationModelBinding;\n\tforegroundModel?: Model<Api>;\n\tforegroundThinkingLevel?: OrchestrationThinkingLevel;\n\tforegroundToolNames?: readonly string[];\n\tforegroundEnvelope?: CapabilityEnvelope;\n\tcwd?: string;\n\tmodelRegistry: ModelRegistry;\n\tisModelExhausted(model: Model<Api>): boolean;\n}\n\nexport type WorkerAuthorityResolution =\n\t| {\n\t\t\tok: true;\n\t\t\tshipment: ResolvedWorkerProfile;\n\t }\n\t| { ok: false; reason: string };\n\n/**\n * Bind a compiled implementation profile to the compiled verifier identity it will persist.\n * Verifier admission can legitimately derive a new immutable profile id (for example when the\n * host forces a legacy delegation-capable preset to the leaf contract), so retaining the\n * configured source id would make the execution contract internally inconsistent. Rebinding changes compiled\n * content and therefore derives a fresh implementation identity as well.\n */\nexport function bindCompiledVerifierIdentity(\n\tshipment: ResolvedWorkerProfile,\n\tverifierProfileId: string,\n): ResolvedWorkerProfile {\n\tif (shipment.profile.verificationProfileId === verifierProfileId) return shipment;\n\tconst profile: OrchestrationProfile = {\n\t\t...shipment.profile,\n\t\tverificationProfileId: verifierProfileId,\n\t\tprofileId: adaptiveProfileId({\n\t\t\tbaseProfileId: shipment.profile.profileId,\n\t\t\tverificationProfileId: verifierProfileId,\n\t\t}),\n\t};\n\treturn { ...shipment, profile };\n}\n\n/** Bind the immutable profile snapshot to the exact native tools its host plan materialized. */\nexport function bindCompiledToolSurface(\n\tshipment: ResolvedWorkerProfile,\n\ttoolNames: readonly string[],\n): ResolvedWorkerProfile {\n\tif (isDeepStrictEqual(shipment.profile.toolNames, toolNames)) return shipment;\n\tconst profile: OrchestrationProfile = {\n\t\t...shipment.profile,\n\t\ttoolNames: [...toolNames],\n\t\tprofileId: adaptiveProfileId({\n\t\t\tbaseProfileId: shipment.profile.profileId,\n\t\t\ttoolNames,\n\t\t}),\n\t};\n\treturn { ...shipment, profile };\n}\n\nfunction selectModelBinding(\n\tmodelPin: OrchestrationModelBinding | undefined,\n\tauthority: WorkerDelegationAuthorityRequest | undefined,\n\tbase: ResolvedWorkerProfile | undefined,\n\tforegroundModel: Model<Api> | undefined,\n\tforegroundThinkingLevel: OrchestrationThinkingLevel | undefined,\n\tmodelRegistry: ModelRegistry,\n): OrchestrationModelBinding | undefined {\n\tif (modelPin) return { ...modelPin };\n\tconst provider = authority?.model?.provider ?? base?.modelBinding.provider ?? foregroundModel?.provider;\n\tconst modelId = authority?.model?.modelId ?? base?.modelBinding.modelId ?? foregroundModel?.id;\n\tif (!provider || !modelId) return undefined;\n\tconst sameAsBase = provider === base?.modelBinding.provider && modelId === base.modelBinding.modelId;\n\tconst selectedModel = modelRegistry.find(provider, modelId);\n\tconst thinkingLevel =\n\t\tauthority?.thinkingLevel ??\n\t\t(sameAsBase\n\t\t\t? base.modelBinding.thinkingLevel\n\t\t\t: foregroundModel && provider === foregroundModel.provider && modelId === foregroundModel.id\n\t\t\t\t? (foregroundThinkingLevel ?? resolveModelThinkingLevel(foregroundModel, undefined))\n\t\t\t\t: selectedModel\n\t\t\t\t\t? resolveModelThinkingLevel(selectedModel, undefined)\n\t\t\t\t\t: \"off\");\n\treturn { provider, modelId, thinkingLevel };\n}\n\nfunction adaptiveProfileId(value: object): string {\n\treturn `adaptive-${createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\").slice(0, 32)}`;\n}\n\nfunction tokenBudgetFloorFailure(maxTokens: number | undefined): string | undefined {\n\treturn maxTokens !== undefined && maxTokens < MIN_VIABLE_WORKER_TOKEN_BUDGET\n\t\t? `token_budget_below_floor:requested=${maxTokens},min=${MIN_VIABLE_WORKER_TOKEN_BUDGET}`\n\t\t: undefined;\n}\n\n/** Materialize free-form model choices as one immutable profile-shaped execution snapshot. */\nexport function resolveWorkerAuthority(input: WorkerAuthorityResolutionInput): WorkerAuthorityResolution {\n\tconst binding = selectModelBinding(\n\t\tinput.modelPin,\n\t\tinput.authority,\n\t\tinput.base,\n\t\tinput.foregroundModel,\n\t\tinput.foregroundThinkingLevel,\n\t\tinput.modelRegistry,\n\t);\n\tif (!binding) return { ok: false, reason: \"orchestration_model_required\" };\n\tconst resolvedModel = resolvePinnedOrchestrationModel(binding, input.modelRegistry, input.isModelExhausted);\n\tif (!resolvedModel) return { ok: false, reason: \"orchestration_model_unavailable\" };\n\tif (\n\t\tinput.modelPin &&\n\t\t((input.authority?.model !== undefined &&\n\t\t\t(input.authority.model.provider !== input.modelPin.provider ||\n\t\t\t\tinput.authority.model.modelId !== input.modelPin.modelId)) ||\n\t\t\t(input.authority?.thinkingLevel !== undefined &&\n\t\t\t\tinput.authority.thinkingLevel !== input.modelPin.thinkingLevel))\n\t) {\n\t\treturn {\n\t\t\tok: false,\n\t\t\treason: `worker_model_pin_conflict:${input.authority?.role ?? input.base?.profile.role ?? \"implementer\"}`,\n\t\t};\n\t}\n\n\tconst inheritedForegroundToolNames = mapToolNamesForPlatform(\n\t\tinput.foregroundToolNames ?? input.foregroundEnvelope?.allowedTools ?? DEFAULT_TOOL_NAMES,\n\t).filter((toolName) => AVAILABLE_TOOL_NAMES.has(toolName) && !WORKER_ROOT_MEMORY_TOOL_NAMES.has(toolName));\n\tconst requestedForbiddenTool = input.authority?.toolNames?.find((toolName) =>\n\t\tWORKER_ROOT_MEMORY_TOOL_NAMES.has(toolName),\n\t);\n\tif (requestedForbiddenTool) {\n\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${requestedForbiddenTool}` };\n\t}\n\tconst baseForbiddenTool = input.base?.profile.toolNames.find((toolName) =>\n\t\tWORKER_ROOT_MEMORY_TOOL_NAMES.has(toolName),\n\t);\n\tif (baseForbiddenTool) {\n\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${baseForbiddenTool}` };\n\t}\n\tconst configuredToolNames = mapToolNamesForPlatform(\n\t\tinput.authority?.toolNames ?? input.base?.profile.toolNames ?? inheritedForegroundToolNames,\n\t).filter((toolName) => !WORKER_ROOT_MEMORY_TOOL_NAMES.has(toolName));\n\tconst deniedForegroundTools = new Set(input.base ? [] : (input.foregroundEnvelope?.deniedTools ?? []));\n\tconst uniqueToolNames = [\n\t\t...new Set(\n\t\t\tconfiguredToolNames.filter((toolName) => toolName !== \"delegate\" && !deniedForegroundTools.has(toolName)),\n\t\t),\n\t];\n\tif (input.authority?.toolNames?.includes(\"delegate\")) {\n\t\treturn { ok: false, reason: \"orchestration_tool_unavailable:delegate\" };\n\t}\n\tconst unavailableTools = uniqueToolNames.filter((toolName) => !AVAILABLE_TOOL_NAMES.has(toolName));\n\tif (unavailableTools.length > 0) {\n\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${unavailableTools.join(\",\")}` };\n\t}\n\tif (input.authority?.toolNames !== undefined) {\n\t\tconst inheritedSurface = new Set(\n\t\t\tinput.base ? mapToolNamesForPlatform(input.base.profile.toolNames) : inheritedForegroundToolNames,\n\t\t);\n\t\tconst foregroundTools = input.foregroundToolNames ?? input.foregroundEnvelope?.allowedTools ?? DEFAULT_TOOL_NAMES;\n\t\tconst boundedMemoryReadInherited =\n\t\t\tuniqueToolNames.includes(WORKER_MEMORY_READ_TOOL_NAME) &&\n\t\t\tforegroundTools.includes(ROOT_MEMORY_TOOL_NAME) &&\n\t\t\tinput.foregroundEnvelope?.capabilities.includes(\"memory.query\") === true;\n\t\tconst uninheritedTools = uniqueToolNames.filter(\n\t\t\t(toolName) =>\n\t\t\t\t!inheritedSurface.has(toolName) &&\n\t\t\t\t!(toolName === WORKER_MEMORY_READ_TOOL_NAME && boundedMemoryReadInherited),\n\t\t);\n\t\tif (uninheritedTools.length > 0) {\n\t\t\treturn { ok: false, reason: `orchestration_tool_unavailable:${uninheritedTools.join(\",\")}` };\n\t\t}\n\t}\n\tconst capabilities = new Set<HarnessCapability>(\n\t\tinput.authority?.capabilities ??\n\t\t\tinput.base?.profile.capabilityCeiling ??\n\t\t\tinput.foregroundEnvelope?.capabilities ??\n\t\t\tDEFAULT_CAPABILITIES,\n\t);\n\tcapabilities.delete(\"workflow.delegate\");\n\tcapabilities.delete(\"memory.mutate\");\n\tconst capabilityList = [...capabilities];\n\tconst toolNames: string[] = [];\n\tfor (const toolName of uniqueToolNames) {\n\t\tconst policy = getToolCapabilityPolicy(toolName);\n\t\tif (!policy) return { ok: false, reason: `orchestration_tool_unclassified:${toolName}` };\n\t\tif (envelopeHasToolCapability(capabilityList, toolName)) {\n\t\t\ttoolNames.push(toolName);\n\t\t\tcontinue;\n\t\t}\n\t\tif (input.authority?.toolNames !== undefined) {\n\t\t\treturn { ok: false, reason: `orchestration_tool_capability_missing:${toolName}` };\n\t\t}\n\t}\n\tconst budget = structuredClone(input.authority?.budget ?? input.base?.profile.budget ?? {});\n\tconst floorFailure = tokenBudgetFloorFailure(budget.maxTokens);\n\tif (floorFailure) return { ok: false, reason: floorFailure };\n\tconst role = input.authority?.role ?? input.base?.profile.role ?? \"implementer\";\n\tconst delegationLimits = structuredClone(LEAF_WORKER_DELEGATION_LIMITS);\n\tconst requestedWorkspacePath = input.authority?.path ?? input.base?.profile.workspacePath;\n\tconst workspacePath = requestedWorkspacePath\n\t\t? resolveWorkerWorkspacePath(input.cwd ?? process.cwd(), requestedWorkspacePath)\n\t\t: undefined;\n\tconst now = new Date().toISOString();\n\tconst descriptor = {\n\t\tbaseProfileId: input.base?.profile.profileId ?? null,\n\t\trole,\n\t\tbinding: resolvedModel.binding,\n\t\tcapabilities: [...capabilities],\n\t\ttoolNames,\n\t\tbudget,\n\t\tdelegationLimits: delegationLimits ?? null,\n\t\tworkspacePath: workspacePath ?? null,\n\t\tresourceProfileNames: input.base?.profile.resourceProfileNames ?? [],\n\t\tdispatchProfileIds: input.base?.profile.dispatchProfileIds ?? [],\n\t\texecutionPolicy: input.base?.profile.executionPolicy ?? null,\n\t\trequireIndependentVerification: input.base?.profile.requireIndependentVerification ?? false,\n\t\tverificationProfileId: input.base?.profile.verificationProfileId ?? null,\n\t};\n\tconst maxWallClockMs = budget.maxWallClockMs ?? 0;\n\tconst wallClockLeaseTtlMs =\n\t\tmaxWallClockMs > Number.MAX_SAFE_INTEGER - 30_000 ? Number.MAX_SAFE_INTEGER : maxWallClockMs + 30_000;\n\tconst profile: OrchestrationProfile = {\n\t\tschemaVersion: ORCHESTRATION_SCHEMA_VERSION,\n\t\tprofileId: input.base?.profile.profileId ?? \"\",\n\t\tdescription: input.base?.profile.description ?? \"Admission-time adaptive agent authority\",\n\t\trole,\n\t\tmodelPolicy: { mode: \"fixed\", candidates: [resolvedModel.binding] },\n\t\tcapabilityCeiling: [...capabilities],\n\t\ttoolNames,\n\t\t...(workspacePath ? { workspacePath } : {}),\n\t\tresourceProfileNames: [...(input.base?.profile.resourceProfileNames ?? [])],\n\t\tdispatchProfileIds: [...(input.base?.profile.dispatchProfileIds ?? [])],\n\t\t...(input.base?.profile.executionPolicy ? { executionPolicy: input.base.profile.executionPolicy } : {}),\n\t\tdelegationLimits,\n\t\tbudget,\n\t\tmaxConcurrent: input.base?.profile.maxConcurrent ?? Number.MAX_SAFE_INTEGER,\n\t\tleaseTtlMs: Math.max(input.base?.profile.leaseTtlMs ?? 0, wallClockLeaseTtlMs, 90_000),\n\t\trequireIndependentVerification: input.base?.profile.requireIndependentVerification ?? false,\n\t\t...(input.base?.profile.verificationProfileId\n\t\t\t? { verificationProfileId: input.base.profile.verificationProfileId }\n\t\t\t: {}),\n\t\tcreatedAt: input.base?.profile.createdAt ?? now,\n\t\tupdatedAt: input.base?.profile.updatedAt ?? now,\n\t};\n\tconst unchangedBase = input.base && isDeepStrictEqual(profile, input.base.profile);\n\tprofile.profileId = unchangedBase ? profile.profileId : adaptiveProfileId(descriptor);\n\treturn {\n\t\tok: true,\n\t\tshipment: {\n\t\t\tmodel: resolvedModel.model,\n\t\t\tmodelBinding: resolvedModel.binding,\n\t\t\tprofile,\n\t\t\tresourcePointers: structuredClone(input.base?.resourcePointers ?? []),\n\t\t\t...(input.base?.soul ? { soul: input.base.soul } : {}),\n\t\t},\n\t};\n}\n"]}
@@ -78,8 +78,7 @@ export declare function validateWorkerClaim(args: {
78
78
  */
79
79
  export declare function reviewManagedLaneChangedFiles(args: {
80
80
  changedFiles: readonly string[];
81
- /** The scope to validate against -- e.g. the session's active `CapabilityEnvelope`, until a
82
- * per-launch tmux standing grant envelope lands in a later wave (documented follow-up). */
81
+ /** The immutable managed-launch profile scope to validate against. */
83
82
  envelope: Pick<CapabilityEnvelope, "allowedPaths" | "deniedPaths">;
84
83
  cwd?: string;
85
84
  }): {
@@ -1 +1 @@
1
- {"version":3,"file":"worker-claim.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-claim.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM5G,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAChE,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAChE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AACzD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,0CAA0C,MAAM,CAAC;AAC9D,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAC1D,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,8CAA8C,MAAM,CAAC;AAClE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACpB;AAyBD,uGAAuG;AACvG,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,yBAAyB,CAEtG;AAED,kGAAkG;AAClG,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,yBAAyB,CAO1G;AAmCD,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAMzE;AAuBD,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GAClB,MAAM,EAAE,CAWV;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAElF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAuGvE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAE1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAWhE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAGlH;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,WAAW,CAwId;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IACnD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC;+FAC2F;IAC3F,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,aAAa,CAAC,CAAC;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,GAAG;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAwClD"}
1
+ {"version":3,"file":"worker-claim.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-claim.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAM5G,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAChE,eAAO,MAAM,8BAA8B,QAAoB,CAAC;AAChE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAC5C,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AACpD,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,mCAAmC,OAAQ,CAAC;AACzD,eAAO,MAAM,iCAAiC,MAAM,CAAC;AACrD,eAAO,MAAM,0CAA0C,MAAM,CAAC;AAC9D,eAAO,MAAM,sCAAsC,MAAM,CAAC;AAC1D,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,8CAA8C,MAAM,CAAC;AAClE,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAChD,eAAO,MAAM,kCAAkC,MAAM,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACzC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;CACpB;AAyBD,uGAAuG;AACvG,wBAAgB,iCAAiC,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,yBAAyB,CAEtG;AAED,kGAAkG;AAClG,wBAAgB,qCAAqC,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,yBAAyB,CAO1G;AAmCD,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAK,GAAG,MAAM,CAMzE;AAuBD,wBAAgB,yBAAyB,CACxC,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,YAAY,EAAE,MAAM,EACpB,YAAY,EAAE,MAAM,GAClB,MAAM,EAAE,CAWV;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAE9E;AAED,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAElF;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CAuGvE;AAED,wBAAgB,8BAA8B,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAKvF;AAED,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAE1E;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAOlE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAWhE;AAED;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAAE,OAAO,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,WAAW,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAGlH;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,WAAW,CAAC;IACnB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,GAAG,WAAW,CAwId;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE;IACnD,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,sEAAsE;IACtE,QAAQ,EAAE,IAAI,CAAC,kBAAkB,EAAE,cAAc,GAAG,aAAa,CAAC,CAAC;IACnE,GAAG,CAAC,EAAE,MAAM,CAAC;CACb,GAAG;IAAE,cAAc,EAAE,OAAO,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAwClD"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker-claim.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-claim.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { DEFAULT_MAX_BYTES } from \"@caupulican/pi-agent-core/truncate\";\nimport type { CapabilityEnvelope, GateOutcome, WorkerClaim, WorkerRequest } from \"../autonomy/contracts.ts\";\nimport { checkPathScope } from \"../autonomy/path-scope.ts\";\nimport { normalizeEvidenceBundleForStorage } from \"../research/evidence-bundle.ts\";\nimport { utf8PrefixByBytes } from \"../util/bounded-value.ts\";\nimport { isPlainRecord } from \"../util/value-guards.ts\";\n\nexport const MAX_WORKER_CLAIM_SUMMARY_CHARS = DEFAULT_MAX_BYTES;\nexport const MAX_WORKER_CLAIM_SUMMARY_BYTES = DEFAULT_MAX_BYTES;\nexport const MAX_WORKER_CLAIM_BLOCKERS = 32;\nexport const MAX_WORKER_CLAIM_BLOCKER_CHARS = 1_000;\nexport const MAX_WORKER_CLAIM_CHANGED_FILES = 128;\nexport const MAX_WORKER_CLAIM_CHANGED_FILE_CHARS = 2_048;\nexport const MAX_WORKER_CLAIM_REQUEST_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_TERMINAL_ATTEMPT_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_USAGE_REPORT_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_TIMESTAMP_CHARS = 128;\nexport const MAX_WORKER_CLAIM_VERIFICATION_SUBJECT_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_REASON_CODES = 32;\nexport const MAX_WORKER_CLAIM_REASON_CODE_CHARS = 128;\n\nexport interface BoundedWorkerClaimStrings {\n\tvalues: string[];\n\toverflowed: boolean;\n}\n\nfunction collectBoundedWorkerClaimStrings(\n\tvalues: readonly string[],\n\tmaximumCount: number,\n\tmaximumChars: number,\n\ttrim: boolean,\n): BoundedWorkerClaimStrings {\n\tconst bounded: string[] = [];\n\tconst seen = new Set<string>();\n\tlet overflowed = values.length > maximumCount;\n\tfor (let index = 0; index < Math.min(values.length, maximumCount); index++) {\n\t\tconst raw = values[index];\n\t\tif (typeof raw !== \"string\" || raw.length > maximumChars) {\n\t\t\toverflowed = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst normalized = trim ? raw.trim() : raw;\n\t\tif (!normalized || seen.has(normalized)) continue;\n\t\tseen.add(normalized);\n\t\tbounded.push(normalized);\n\t}\n\treturn { values: bounded, overflowed };\n}\n\n/** Native host observations may be reduced for terminal storage, but callers must surface overflow. */\nexport function collectBoundedWorkerClaimBlockers(values: readonly string[]): BoundedWorkerClaimStrings {\n\treturn collectBoundedWorkerClaimStrings(values, MAX_WORKER_CLAIM_BLOCKERS, MAX_WORKER_CLAIM_BLOCKER_CHARS, true);\n}\n\n/** Changed paths preserve their exact spelling; trimming a real path could change its meaning. */\nexport function collectBoundedWorkerClaimChangedFiles(values: readonly string[]): BoundedWorkerClaimStrings {\n\treturn collectBoundedWorkerClaimStrings(\n\t\tvalues,\n\t\tMAX_WORKER_CLAIM_CHANGED_FILES,\n\t\tMAX_WORKER_CLAIM_CHANGED_FILE_CHARS,\n\t\tfalse,\n\t);\n}\n\nfunction invalidWorkerClaim(message: string): never {\n\tthrow new Error(`Invalid worker claim: ${message}`);\n}\n\n/**\n * The worker boundary must not evaluate accessors from managed/external reports. Copy only own\n * data descriptors, then validate and construct a fresh contract object from the bounded values.\n */\nfunction ownWorkerClaimDataRecord(value: unknown, label: string): Record<string, unknown> {\n\tif (!isPlainRecord(value)) invalidWorkerClaim(`${label} must be a plain object.`);\n\tconst descriptors = Object.getOwnPropertyDescriptors(value);\n\tconst record: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n\tfor (const [key, descriptor] of Object.entries(descriptors)) {\n\t\tif (!(\"value\" in descriptor)) invalidWorkerClaim(`${label}.${key} must not be an accessor.`);\n\t\trecord[key] = descriptor.value;\n\t}\n\treturn record;\n}\n\nfunction requiredWorkerClaimString(value: unknown, label: string, maximumChars: number): string {\n\tif (typeof value !== \"string\" || value.length === 0) invalidWorkerClaim(`${label} must be a non-empty string.`);\n\tif (value.length > maximumChars) invalidWorkerClaim(`${label} exceeds ${maximumChars} characters.`);\n\treturn value;\n}\n\nfunction requiredWorkerClaimSummary(value: unknown): string {\n\tconst summary = requiredWorkerClaimString(value, \"claim.summary\", MAX_WORKER_CLAIM_SUMMARY_CHARS);\n\tif (Buffer.byteLength(summary, \"utf8\") > MAX_WORKER_CLAIM_SUMMARY_BYTES) {\n\t\tinvalidWorkerClaim(`claim.summary exceeds ${MAX_WORKER_CLAIM_SUMMARY_BYTES} bytes.`);\n\t}\n\treturn summary;\n}\n\n/** Bound a host-produced claim summary without splitting a UTF-8 code point. */\nexport function clipWorkerClaimSummary(value: string, suffix = \"\"): string {\n\tconst suffixBytes = Buffer.byteLength(suffix, \"utf8\");\n\tif (suffixBytes > MAX_WORKER_CLAIM_SUMMARY_BYTES) {\n\t\tthrow new TypeError(\"Worker claim summary suffix exceeds the inline output ceiling.\");\n\t}\n\treturn `${utf8PrefixByBytes(value, MAX_WORKER_CLAIM_SUMMARY_BYTES - suffixBytes)}${suffix}`;\n}\n\nfunction optionalWorkerClaimString(value: unknown, label: string, maximumChars: number): string | undefined {\n\tif (value === undefined) return undefined;\n\treturn requiredWorkerClaimString(value, label, maximumChars);\n}\n\nfunction workerClaimStringArray(value: unknown, label: string, maximumCount: number, maximumChars: number): string[] {\n\tif (!Array.isArray(value)) invalidWorkerClaim(`${label} must be an array.`);\n\tif (value.length > maximumCount) invalidWorkerClaim(`${label} exceeds ${maximumCount} entries.`);\n\tconst copied: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (let index = 0; index < value.length; index++) {\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n\t\tif (!descriptor || !(\"value\" in descriptor)) invalidWorkerClaim(`${label}[${index}] must be a data value.`);\n\t\tconst item = requiredWorkerClaimString(descriptor.value, `${label}[${index}]`, maximumChars);\n\t\tif (seen.has(item)) continue;\n\t\tseen.add(item);\n\t\tcopied.push(item);\n\t}\n\treturn copied;\n}\n\nexport function boundedWorkerClaimStrings(\n\tvalues: readonly string[],\n\tmaximumCount: number,\n\tmaximumChars: number,\n): string[] {\n\tconst bounded: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (const value of values) {\n\t\tconst normalized = value.trim().slice(0, maximumChars);\n\t\tif (!normalized || seen.has(normalized)) continue;\n\t\tseen.add(normalized);\n\t\tbounded.push(normalized);\n\t\tif (bounded.length >= maximumCount) break;\n\t}\n\treturn bounded;\n}\n\nexport function boundedWorkerClaimBlockers(values: readonly string[]): string[] {\n\treturn collectBoundedWorkerClaimBlockers(values).values;\n}\n\nexport function boundedWorkerClaimChangedFiles(values: readonly string[]): string[] {\n\treturn collectBoundedWorkerClaimChangedFiles(values).values;\n}\n\n/**\n * Applies the one mandatory bounded claim contract before persistence, review, finalization, or\n * artifact inspection. Host-built/native reports have already bounded their model output; foreign\n * reports must fit the exact same envelope and are rejected before cloning or getter invocation.\n */\nexport function normalizeWorkerClaimForHost(value: unknown): WorkerClaim {\n\tconst claim = ownWorkerClaimDataRecord(value, \"claim\");\n\tconst status = claim.status;\n\tif (\n\t\tstatus !== \"completed\" &&\n\t\tstatus !== \"partial\" &&\n\t\tstatus !== \"blocked\" &&\n\t\tstatus !== \"failed\" &&\n\t\tstatus !== \"cancelled\"\n\t) {\n\t\tinvalidWorkerClaim(\"claim.status is invalid.\");\n\t}\n\tif (claim.outputFormat !== undefined && claim.outputFormat !== \"structured\" && claim.outputFormat !== \"plain_text\") {\n\t\tinvalidWorkerClaim(\"claim.outputFormat is invalid.\");\n\t}\n\tif (claim.parentReviewRequired !== undefined && typeof claim.parentReviewRequired !== \"boolean\") {\n\t\tinvalidWorkerClaim(\"claim.parentReviewRequired must be boolean.\");\n\t}\n\tconst verification =\n\t\tclaim.verification === undefined ? undefined : ownWorkerClaimDataRecord(claim.verification, \"claim.verification\");\n\tif (verification && verification.verdict !== \"accepted\" && verification.verdict !== \"rejected\") {\n\t\tinvalidWorkerClaim(\"claim.verification.verdict is invalid.\");\n\t}\n\tconst normalizedVerification: WorkerClaim[\"verification\"] = verification\n\t\t? {\n\t\t\t\tsubjectTaskId: requiredWorkerClaimString(\n\t\t\t\t\tverification.subjectTaskId,\n\t\t\t\t\t\"claim.verification.subjectTaskId\",\n\t\t\t\t\tMAX_WORKER_CLAIM_VERIFICATION_SUBJECT_ID_CHARS,\n\t\t\t\t),\n\t\t\t\tverdict: verification.verdict === \"accepted\" ? \"accepted\" : \"rejected\",\n\t\t\t\treasonCodes: workerClaimStringArray(\n\t\t\t\t\tverification.reasonCodes,\n\t\t\t\t\t\"claim.verification.reasonCodes\",\n\t\t\t\t\tMAX_WORKER_CLAIM_REASON_CODES,\n\t\t\t\t\tMAX_WORKER_CLAIM_REASON_CODE_CHARS,\n\t\t\t\t),\n\t\t\t}\n\t\t: undefined;\n\tif (normalizedVerification && normalizedVerification.reasonCodes.length === 0) {\n\t\tinvalidWorkerClaim(\"claim.verification.reasonCodes must not be empty.\");\n\t}\n\treturn {\n\t\trequestId: requiredWorkerClaimString(claim.requestId, \"claim.requestId\", MAX_WORKER_CLAIM_REQUEST_ID_CHARS),\n\t\t...(claim.terminalAttemptId !== undefined\n\t\t\t? {\n\t\t\t\t\tterminalAttemptId: requiredWorkerClaimString(\n\t\t\t\t\t\tclaim.terminalAttemptId,\n\t\t\t\t\t\t\"claim.terminalAttemptId\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_TERMINAL_ATTEMPT_ID_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\tstatus,\n\t\tsummary: requiredWorkerClaimSummary(claim.summary),\n\t\t...(claim.outputFormat !== undefined ? { outputFormat: claim.outputFormat } : {}),\n\t\t...(claim.evidence !== undefined ? { evidence: normalizeEvidenceBundleForStorage(claim.evidence) } : {}),\n\t\tchangedFiles: workerClaimStringArray(\n\t\t\tclaim.changedFiles,\n\t\t\t\"claim.changedFiles\",\n\t\t\tMAX_WORKER_CLAIM_CHANGED_FILES,\n\t\t\tMAX_WORKER_CLAIM_CHANGED_FILE_CHARS,\n\t\t),\n\t\t...(claim.blockers !== undefined\n\t\t\t? {\n\t\t\t\t\tblockers: workerClaimStringArray(\n\t\t\t\t\t\tclaim.blockers,\n\t\t\t\t\t\t\"claim.blockers\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_BLOCKERS,\n\t\t\t\t\t\tMAX_WORKER_CLAIM_BLOCKER_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(claim.usageReportId !== undefined\n\t\t\t? {\n\t\t\t\t\tusageReportId: requiredWorkerClaimString(\n\t\t\t\t\t\tclaim.usageReportId,\n\t\t\t\t\t\t\"claim.usageReportId\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_USAGE_REPORT_ID_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(claim.createdAt !== undefined\n\t\t\t? {\n\t\t\t\t\tcreatedAt: optionalWorkerClaimString(\n\t\t\t\t\t\tclaim.createdAt,\n\t\t\t\t\t\t\"claim.createdAt\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_TIMESTAMP_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(claim.parentReviewRequired !== undefined ? { parentReviewRequired: claim.parentReviewRequired } : {}),\n\t\t...(claim.parentReviewedAt !== undefined\n\t\t\t? {\n\t\t\t\t\tparentReviewedAt: optionalWorkerClaimString(\n\t\t\t\t\t\tclaim.parentReviewedAt,\n\t\t\t\t\t\t\"claim.parentReviewedAt\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_TIMESTAMP_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(normalizedVerification ? { verification: normalizedVerification } : {}),\n\t};\n}\n\nexport function normalizeWorkerClaimReasonCode(value: unknown, fallback: string): string {\n\treturn (typeof value === \"string\" && value.trim() ? value.trim() : fallback).slice(\n\t\t0,\n\t\tMAX_WORKER_CLAIM_REASON_CODE_CHARS,\n\t);\n}\n\nexport function cloneWorkerClaimForStorage(claim: WorkerClaim): WorkerClaim {\n\treturn normalizeWorkerClaimForHost(claim);\n}\n\nexport function isWorkerClaim(value: unknown): value is WorkerClaim {\n\ttry {\n\t\tnormalizeWorkerClaimForHost(value);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function requiresParentReview(claim: WorkerClaim): boolean {\n\tif (claim.status !== \"completed\") {\n\t\treturn true;\n\t}\n\tif (claim.blockers && claim.blockers.length > 0) {\n\t\treturn true;\n\t}\n\tif (claim.changedFiles.length > 0) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * True iff {@link validateWorkerClaim}'s gate would flag this claim \"ask-user\" /\n * \"parent_review_required\" (the two branches at :110 and :178 below) — an otherwise-completed\n * claim the parent must explicitly look at because it reports blockers, or reports file mutations\n * that passed path-scope validation. Reuses `validateWorkerClaim` itself rather than a\n * separately-maintained heuristic, so a persisted review marker can never drift from the\n * gate's actual verdict.\n */\nexport function isParentReviewRequired(args: { request: WorkerRequest; claim: WorkerClaim; cwd?: string }): boolean {\n\tconst acceptance = validateWorkerClaim(args);\n\treturn acceptance.outcome === \"ask-user\" && acceptance.reasonCode === \"parent_review_required\";\n}\n\nexport function validateWorkerClaim(args: {\n\trequest: WorkerRequest;\n\tclaim: WorkerClaim;\n\t/**\n\t * Baseline for relative paths — BOTH the runner's cwd-relative `changedFiles` and the\n\t * envelope's possibly-relative path scopes resolve against this. Defaults to process.cwd()\n\t * for callers whose session cwd is the process cwd.\n\t */\n\tcwd?: string;\n}): GateOutcome {\n\tconst { request } = args;\n\tlet claim: WorkerClaim;\n\ttry {\n\t\tclaim = normalizeWorkerClaimForHost(args.claim);\n\t} catch (error) {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"invalid_worker_claim\",\n\t\t\tmessage: error instanceof Error ? error.message : \"Worker claim failed host validation.\",\n\t\t};\n\t}\n\tconst baseDir = args.cwd ?? process.cwd();\n\n\tif (claim.requestId !== request.id) {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"request_id_mismatch\",\n\t\t\tmessage: `Claim requestId '${claim.requestId}' does not match request id '${request.id}'.`,\n\t\t};\n\t}\n\n\tif (claim.status === \"partial\") {\n\t\treturn {\n\t\t\toutcome: \"ask-user\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"parent_review_required\",\n\t\t\tmessage: `Worker finished with partial claim status '${claim.status}'.`,\n\t\t\tdetails: claim.blockers && claim.blockers.length > 0 ? { blockers: [...claim.blockers] } : undefined,\n\t\t};\n\t}\n\n\tif (claim.status !== \"completed\") {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"worker_not_completed\",\n\t\t\tmessage: `Worker finished with status '${claim.status}'.`,\n\t\t\tdetails: claim.blockers && claim.blockers.length > 0 ? { blockers: [...claim.blockers] } : undefined,\n\t\t};\n\t}\n\n\tif (!claim.usageReportId) {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"missing_usage_report\",\n\t\t\tmessage: \"Completed worker claim is missing usageReportId.\",\n\t\t};\n\t}\n\n\tif (claim.blockers && claim.blockers.length > 0) {\n\t\treturn {\n\t\t\toutcome: \"ask-user\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"parent_review_required\",\n\t\t\tmessage: \"Completed worker claim includes blockers and requires parent review.\",\n\t\t\tdetails: { blockers: [...claim.blockers] },\n\t\t};\n\t}\n\n\tif (claim.changedFiles.length > 0) {\n\t\tif (!request.envelope.allowedPaths || request.envelope.allowedPaths.length === 0) {\n\t\t\treturn {\n\t\t\t\toutcome: \"block\",\n\t\t\t\tgate: \"worker_claim\",\n\t\t\t\treasonCode: \"missing_path_scope\",\n\t\t\t\tmessage: \"Worker changed files but no allowedPaths are configured in the envelope.\",\n\t\t\t};\n\t\t}\n\n\t\t// The runner reports changed files relative to the session cwd — resolve file and scope\n\t\t// roots against the SAME baseline. Resolving per-root double-prefixed nested names and\n\t\t// let a denied subtree slip past the deny rule.\n\t\tconst resolvedAllowed = request.envelope.allowedPaths.map((p) => path.resolve(baseDir, p));\n\t\tconst resolvedDenied = request.envelope.deniedPaths?.map((p) => path.resolve(baseDir, p));\n\t\tfor (const changedFile of claim.changedFiles) {\n\t\t\tlet isInsideAny = false;\n\t\t\tlet isDenied = false;\n\n\t\t\tconst scopedChangedFile = path.resolve(baseDir, changedFile);\n\t\t\tfor (const root of resolvedAllowed) {\n\t\t\t\tconst decision = checkPathScope(\n\t\t\t\t\t{\n\t\t\t\t\t\troot,\n\t\t\t\t\t\tallowedPaths: resolvedAllowed,\n\t\t\t\t\t\tdeniedPaths: resolvedDenied,\n\t\t\t\t\t},\n\t\t\t\t\tscopedChangedFile,\n\t\t\t\t);\n\n\t\t\t\tif (decision.kind === \"denied\") {\n\t\t\t\t\tisDenied = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (decision.kind === \"inside\") {\n\t\t\t\t\tisInsideAny = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isDenied) {\n\t\t\t\treturn {\n\t\t\t\t\toutcome: \"block\",\n\t\t\t\t\tgate: \"worker_claim\",\n\t\t\t\t\treasonCode: \"changed_file_denied\",\n\t\t\t\t\tmessage: `Worker changed file '${changedFile}' which matches a denied path.`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!isInsideAny) {\n\t\t\t\treturn {\n\t\t\t\t\toutcome: \"block\",\n\t\t\t\t\tgate: \"worker_claim\",\n\t\t\t\t\treasonCode: \"changed_file_outside_scope\",\n\t\t\t\t\tmessage: `Worker changed file '${changedFile}' outside allowed scope.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Files are inside scope, but worker output is untrusted\n\t\treturn {\n\t\t\toutcome: \"ask-user\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"parent_review_required\",\n\t\t\tmessage: \"Worker changed files require parent review.\",\n\t\t};\n\t}\n\n\treturn {\n\t\toutcome: \"allow\",\n\t\tgate: \"worker_claim\",\n\t\treasonCode: \"allowed\",\n\t\tmessage: \"Worker claim is read-only and allowed.\",\n\t};\n}\n\n/**\n * Path-scope-only re-review for a SELF-REPORTED (out-of-process) worker's claimed `changedFiles`\n * -- e.g. a tmux worker's own completion report, which (unlike an in-process worker's) never\n * passed through this process's `applyWorkerActions` envelope enforcement before the write\n * happened; the tmux worker's tool loop runs in a separate process this session does not gate.\n * Reuses {@link validateWorkerClaim}'s exact symlink-safe scope check verbatim -- never\n * reimplement path resolution: synthesizes a minimal, always-\"completed\" request/claim pair\n * carrying only the reported `changedFiles` and the scope's `allowedPaths`/`deniedPaths`, so the\n * ONLY thing that can vary the verdict is the path-scope branch.\n *\n * Deliberately broader than {@link isParentReviewRequired}: that helper only flags the gate's\n * \"ask-user\" branch, which is correct for an in-process worker (a write that would have been\n * \"block\"-worthy was already refused before it could happen, by the SAME envelope, via\n * `applyWorkerActions`). A self-reported claim has no such backstop -- an out-of-scope or denied\n * path already happened on the real filesystem whether or not this gate would allow it, so here\n * ANY non-\"allow\" verdict (in scope, out of scope, or no scope configured at all) means a human\n * must look, not \"the write didn't happen\".\n */\nexport function reviewManagedLaneChangedFiles(args: {\n\tchangedFiles: readonly string[];\n\t/** The scope to validate against -- e.g. the session's active `CapabilityEnvelope`, until a\n\t * per-launch tmux standing grant envelope lands in a later wave (documented follow-up). */\n\tenvelope: Pick<CapabilityEnvelope, \"allowedPaths\" | \"deniedPaths\">;\n\tcwd?: string;\n}): { reviewRequired: boolean; reasonCode: string } {\n\tconst boundedChangedFiles = normalizeWorkerClaimForHost({\n\t\trequestId: \"managed-lane-review\",\n\t\tstatus: \"completed\",\n\t\tsummary: \"Managed lane changed-file review.\",\n\t\tchangedFiles: args.changedFiles,\n\t\tusageReportId: \"managed-lane-review\",\n\t}).changedFiles;\n\tif (boundedChangedFiles.length === 0) {\n\t\treturn { reviewRequired: false, reasonCode: \"no_changed_files\" };\n\t}\n\tconst syntheticId = \"managed-lane-review\";\n\tconst acceptance = validateWorkerClaim({\n\t\trequest: {\n\t\t\tid: syntheticId,\n\t\t\tinstructions: \"\",\n\t\t\troute: {\n\t\t\t\ttier: \"cheap\",\n\t\t\t\trisk: \"scoped-write\",\n\t\t\t\tconfidence: 1,\n\t\t\t\treasonCode: \"managed_lane_review\",\n\t\t\t\treasons: [],\n\t\t\t},\n\t\t\tenvelope: {\n\t\t\t\tid: syntheticId,\n\t\t\t\tcapabilities: [\"filesystem.write\"],\n\t\t\t\tallowedPaths: args.envelope.allowedPaths,\n\t\t\t\tdeniedPaths: args.envelope.deniedPaths,\n\t\t\t},\n\t\t},\n\t\tclaim: {\n\t\t\trequestId: syntheticId,\n\t\t\tstatus: \"completed\",\n\t\t\tsummary: \"Managed lane changed-file review.\",\n\t\t\tchangedFiles: boundedChangedFiles,\n\t\t\tusageReportId: syntheticId,\n\t\t},\n\t\tcwd: args.cwd,\n\t});\n\treturn { reviewRequired: acceptance.outcome !== \"allow\", reasonCode: acceptance.reasonCode };\n}\n"]}
1
+ {"version":3,"file":"worker-claim.js","sourceRoot":"","sources":["../../../src/core/delegation/worker-claim.ts"],"names":[],"mappings":"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","sourcesContent":["import path from \"node:path\";\nimport { DEFAULT_MAX_BYTES } from \"@caupulican/pi-agent-core/truncate\";\nimport type { CapabilityEnvelope, GateOutcome, WorkerClaim, WorkerRequest } from \"../autonomy/contracts.ts\";\nimport { checkPathScope } from \"../autonomy/path-scope.ts\";\nimport { normalizeEvidenceBundleForStorage } from \"../research/evidence-bundle.ts\";\nimport { utf8PrefixByBytes } from \"../util/bounded-value.ts\";\nimport { isPlainRecord } from \"../util/value-guards.ts\";\n\nexport const MAX_WORKER_CLAIM_SUMMARY_CHARS = DEFAULT_MAX_BYTES;\nexport const MAX_WORKER_CLAIM_SUMMARY_BYTES = DEFAULT_MAX_BYTES;\nexport const MAX_WORKER_CLAIM_BLOCKERS = 32;\nexport const MAX_WORKER_CLAIM_BLOCKER_CHARS = 1_000;\nexport const MAX_WORKER_CLAIM_CHANGED_FILES = 128;\nexport const MAX_WORKER_CLAIM_CHANGED_FILE_CHARS = 2_048;\nexport const MAX_WORKER_CLAIM_REQUEST_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_TERMINAL_ATTEMPT_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_USAGE_REPORT_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_TIMESTAMP_CHARS = 128;\nexport const MAX_WORKER_CLAIM_VERIFICATION_SUBJECT_ID_CHARS = 256;\nexport const MAX_WORKER_CLAIM_REASON_CODES = 32;\nexport const MAX_WORKER_CLAIM_REASON_CODE_CHARS = 128;\n\nexport interface BoundedWorkerClaimStrings {\n\tvalues: string[];\n\toverflowed: boolean;\n}\n\nfunction collectBoundedWorkerClaimStrings(\n\tvalues: readonly string[],\n\tmaximumCount: number,\n\tmaximumChars: number,\n\ttrim: boolean,\n): BoundedWorkerClaimStrings {\n\tconst bounded: string[] = [];\n\tconst seen = new Set<string>();\n\tlet overflowed = values.length > maximumCount;\n\tfor (let index = 0; index < Math.min(values.length, maximumCount); index++) {\n\t\tconst raw = values[index];\n\t\tif (typeof raw !== \"string\" || raw.length > maximumChars) {\n\t\t\toverflowed = true;\n\t\t\tcontinue;\n\t\t}\n\t\tconst normalized = trim ? raw.trim() : raw;\n\t\tif (!normalized || seen.has(normalized)) continue;\n\t\tseen.add(normalized);\n\t\tbounded.push(normalized);\n\t}\n\treturn { values: bounded, overflowed };\n}\n\n/** Native host observations may be reduced for terminal storage, but callers must surface overflow. */\nexport function collectBoundedWorkerClaimBlockers(values: readonly string[]): BoundedWorkerClaimStrings {\n\treturn collectBoundedWorkerClaimStrings(values, MAX_WORKER_CLAIM_BLOCKERS, MAX_WORKER_CLAIM_BLOCKER_CHARS, true);\n}\n\n/** Changed paths preserve their exact spelling; trimming a real path could change its meaning. */\nexport function collectBoundedWorkerClaimChangedFiles(values: readonly string[]): BoundedWorkerClaimStrings {\n\treturn collectBoundedWorkerClaimStrings(\n\t\tvalues,\n\t\tMAX_WORKER_CLAIM_CHANGED_FILES,\n\t\tMAX_WORKER_CLAIM_CHANGED_FILE_CHARS,\n\t\tfalse,\n\t);\n}\n\nfunction invalidWorkerClaim(message: string): never {\n\tthrow new Error(`Invalid worker claim: ${message}`);\n}\n\n/**\n * The worker boundary must not evaluate accessors from managed/external reports. Copy only own\n * data descriptors, then validate and construct a fresh contract object from the bounded values.\n */\nfunction ownWorkerClaimDataRecord(value: unknown, label: string): Record<string, unknown> {\n\tif (!isPlainRecord(value)) invalidWorkerClaim(`${label} must be a plain object.`);\n\tconst descriptors = Object.getOwnPropertyDescriptors(value);\n\tconst record: Record<string, unknown> = Object.create(null) as Record<string, unknown>;\n\tfor (const [key, descriptor] of Object.entries(descriptors)) {\n\t\tif (!(\"value\" in descriptor)) invalidWorkerClaim(`${label}.${key} must not be an accessor.`);\n\t\trecord[key] = descriptor.value;\n\t}\n\treturn record;\n}\n\nfunction requiredWorkerClaimString(value: unknown, label: string, maximumChars: number): string {\n\tif (typeof value !== \"string\" || value.length === 0) invalidWorkerClaim(`${label} must be a non-empty string.`);\n\tif (value.length > maximumChars) invalidWorkerClaim(`${label} exceeds ${maximumChars} characters.`);\n\treturn value;\n}\n\nfunction requiredWorkerClaimSummary(value: unknown): string {\n\tconst summary = requiredWorkerClaimString(value, \"claim.summary\", MAX_WORKER_CLAIM_SUMMARY_CHARS);\n\tif (Buffer.byteLength(summary, \"utf8\") > MAX_WORKER_CLAIM_SUMMARY_BYTES) {\n\t\tinvalidWorkerClaim(`claim.summary exceeds ${MAX_WORKER_CLAIM_SUMMARY_BYTES} bytes.`);\n\t}\n\treturn summary;\n}\n\n/** Bound a host-produced claim summary without splitting a UTF-8 code point. */\nexport function clipWorkerClaimSummary(value: string, suffix = \"\"): string {\n\tconst suffixBytes = Buffer.byteLength(suffix, \"utf8\");\n\tif (suffixBytes > MAX_WORKER_CLAIM_SUMMARY_BYTES) {\n\t\tthrow new TypeError(\"Worker claim summary suffix exceeds the inline output ceiling.\");\n\t}\n\treturn `${utf8PrefixByBytes(value, MAX_WORKER_CLAIM_SUMMARY_BYTES - suffixBytes)}${suffix}`;\n}\n\nfunction optionalWorkerClaimString(value: unknown, label: string, maximumChars: number): string | undefined {\n\tif (value === undefined) return undefined;\n\treturn requiredWorkerClaimString(value, label, maximumChars);\n}\n\nfunction workerClaimStringArray(value: unknown, label: string, maximumCount: number, maximumChars: number): string[] {\n\tif (!Array.isArray(value)) invalidWorkerClaim(`${label} must be an array.`);\n\tif (value.length > maximumCount) invalidWorkerClaim(`${label} exceeds ${maximumCount} entries.`);\n\tconst copied: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (let index = 0; index < value.length; index++) {\n\t\tconst descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n\t\tif (!descriptor || !(\"value\" in descriptor)) invalidWorkerClaim(`${label}[${index}] must be a data value.`);\n\t\tconst item = requiredWorkerClaimString(descriptor.value, `${label}[${index}]`, maximumChars);\n\t\tif (seen.has(item)) continue;\n\t\tseen.add(item);\n\t\tcopied.push(item);\n\t}\n\treturn copied;\n}\n\nexport function boundedWorkerClaimStrings(\n\tvalues: readonly string[],\n\tmaximumCount: number,\n\tmaximumChars: number,\n): string[] {\n\tconst bounded: string[] = [];\n\tconst seen = new Set<string>();\n\tfor (const value of values) {\n\t\tconst normalized = value.trim().slice(0, maximumChars);\n\t\tif (!normalized || seen.has(normalized)) continue;\n\t\tseen.add(normalized);\n\t\tbounded.push(normalized);\n\t\tif (bounded.length >= maximumCount) break;\n\t}\n\treturn bounded;\n}\n\nexport function boundedWorkerClaimBlockers(values: readonly string[]): string[] {\n\treturn collectBoundedWorkerClaimBlockers(values).values;\n}\n\nexport function boundedWorkerClaimChangedFiles(values: readonly string[]): string[] {\n\treturn collectBoundedWorkerClaimChangedFiles(values).values;\n}\n\n/**\n * Applies the one mandatory bounded claim contract before persistence, review, finalization, or\n * artifact inspection. Host-built/native reports have already bounded their model output; foreign\n * reports must fit the exact same envelope and are rejected before cloning or getter invocation.\n */\nexport function normalizeWorkerClaimForHost(value: unknown): WorkerClaim {\n\tconst claim = ownWorkerClaimDataRecord(value, \"claim\");\n\tconst status = claim.status;\n\tif (\n\t\tstatus !== \"completed\" &&\n\t\tstatus !== \"partial\" &&\n\t\tstatus !== \"blocked\" &&\n\t\tstatus !== \"failed\" &&\n\t\tstatus !== \"cancelled\"\n\t) {\n\t\tinvalidWorkerClaim(\"claim.status is invalid.\");\n\t}\n\tif (claim.outputFormat !== undefined && claim.outputFormat !== \"structured\" && claim.outputFormat !== \"plain_text\") {\n\t\tinvalidWorkerClaim(\"claim.outputFormat is invalid.\");\n\t}\n\tif (claim.parentReviewRequired !== undefined && typeof claim.parentReviewRequired !== \"boolean\") {\n\t\tinvalidWorkerClaim(\"claim.parentReviewRequired must be boolean.\");\n\t}\n\tconst verification =\n\t\tclaim.verification === undefined ? undefined : ownWorkerClaimDataRecord(claim.verification, \"claim.verification\");\n\tif (verification && verification.verdict !== \"accepted\" && verification.verdict !== \"rejected\") {\n\t\tinvalidWorkerClaim(\"claim.verification.verdict is invalid.\");\n\t}\n\tconst normalizedVerification: WorkerClaim[\"verification\"] = verification\n\t\t? {\n\t\t\t\tsubjectTaskId: requiredWorkerClaimString(\n\t\t\t\t\tverification.subjectTaskId,\n\t\t\t\t\t\"claim.verification.subjectTaskId\",\n\t\t\t\t\tMAX_WORKER_CLAIM_VERIFICATION_SUBJECT_ID_CHARS,\n\t\t\t\t),\n\t\t\t\tverdict: verification.verdict === \"accepted\" ? \"accepted\" : \"rejected\",\n\t\t\t\treasonCodes: workerClaimStringArray(\n\t\t\t\t\tverification.reasonCodes,\n\t\t\t\t\t\"claim.verification.reasonCodes\",\n\t\t\t\t\tMAX_WORKER_CLAIM_REASON_CODES,\n\t\t\t\t\tMAX_WORKER_CLAIM_REASON_CODE_CHARS,\n\t\t\t\t),\n\t\t\t}\n\t\t: undefined;\n\tif (normalizedVerification && normalizedVerification.reasonCodes.length === 0) {\n\t\tinvalidWorkerClaim(\"claim.verification.reasonCodes must not be empty.\");\n\t}\n\treturn {\n\t\trequestId: requiredWorkerClaimString(claim.requestId, \"claim.requestId\", MAX_WORKER_CLAIM_REQUEST_ID_CHARS),\n\t\t...(claim.terminalAttemptId !== undefined\n\t\t\t? {\n\t\t\t\t\tterminalAttemptId: requiredWorkerClaimString(\n\t\t\t\t\t\tclaim.terminalAttemptId,\n\t\t\t\t\t\t\"claim.terminalAttemptId\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_TERMINAL_ATTEMPT_ID_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\tstatus,\n\t\tsummary: requiredWorkerClaimSummary(claim.summary),\n\t\t...(claim.outputFormat !== undefined ? { outputFormat: claim.outputFormat } : {}),\n\t\t...(claim.evidence !== undefined ? { evidence: normalizeEvidenceBundleForStorage(claim.evidence) } : {}),\n\t\tchangedFiles: workerClaimStringArray(\n\t\t\tclaim.changedFiles,\n\t\t\t\"claim.changedFiles\",\n\t\t\tMAX_WORKER_CLAIM_CHANGED_FILES,\n\t\t\tMAX_WORKER_CLAIM_CHANGED_FILE_CHARS,\n\t\t),\n\t\t...(claim.blockers !== undefined\n\t\t\t? {\n\t\t\t\t\tblockers: workerClaimStringArray(\n\t\t\t\t\t\tclaim.blockers,\n\t\t\t\t\t\t\"claim.blockers\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_BLOCKERS,\n\t\t\t\t\t\tMAX_WORKER_CLAIM_BLOCKER_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(claim.usageReportId !== undefined\n\t\t\t? {\n\t\t\t\t\tusageReportId: requiredWorkerClaimString(\n\t\t\t\t\t\tclaim.usageReportId,\n\t\t\t\t\t\t\"claim.usageReportId\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_USAGE_REPORT_ID_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(claim.createdAt !== undefined\n\t\t\t? {\n\t\t\t\t\tcreatedAt: optionalWorkerClaimString(\n\t\t\t\t\t\tclaim.createdAt,\n\t\t\t\t\t\t\"claim.createdAt\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_TIMESTAMP_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(claim.parentReviewRequired !== undefined ? { parentReviewRequired: claim.parentReviewRequired } : {}),\n\t\t...(claim.parentReviewedAt !== undefined\n\t\t\t? {\n\t\t\t\t\tparentReviewedAt: optionalWorkerClaimString(\n\t\t\t\t\t\tclaim.parentReviewedAt,\n\t\t\t\t\t\t\"claim.parentReviewedAt\",\n\t\t\t\t\t\tMAX_WORKER_CLAIM_TIMESTAMP_CHARS,\n\t\t\t\t\t),\n\t\t\t\t}\n\t\t\t: {}),\n\t\t...(normalizedVerification ? { verification: normalizedVerification } : {}),\n\t};\n}\n\nexport function normalizeWorkerClaimReasonCode(value: unknown, fallback: string): string {\n\treturn (typeof value === \"string\" && value.trim() ? value.trim() : fallback).slice(\n\t\t0,\n\t\tMAX_WORKER_CLAIM_REASON_CODE_CHARS,\n\t);\n}\n\nexport function cloneWorkerClaimForStorage(claim: WorkerClaim): WorkerClaim {\n\treturn normalizeWorkerClaimForHost(claim);\n}\n\nexport function isWorkerClaim(value: unknown): value is WorkerClaim {\n\ttry {\n\t\tnormalizeWorkerClaimForHost(value);\n\t\treturn true;\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nexport function requiresParentReview(claim: WorkerClaim): boolean {\n\tif (claim.status !== \"completed\") {\n\t\treturn true;\n\t}\n\tif (claim.blockers && claim.blockers.length > 0) {\n\t\treturn true;\n\t}\n\tif (claim.changedFiles.length > 0) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\n/**\n * True iff {@link validateWorkerClaim}'s gate would flag this claim \"ask-user\" /\n * \"parent_review_required\" (the two branches at :110 and :178 below) — an otherwise-completed\n * claim the parent must explicitly look at because it reports blockers, or reports file mutations\n * that passed path-scope validation. Reuses `validateWorkerClaim` itself rather than a\n * separately-maintained heuristic, so a persisted review marker can never drift from the\n * gate's actual verdict.\n */\nexport function isParentReviewRequired(args: { request: WorkerRequest; claim: WorkerClaim; cwd?: string }): boolean {\n\tconst acceptance = validateWorkerClaim(args);\n\treturn acceptance.outcome === \"ask-user\" && acceptance.reasonCode === \"parent_review_required\";\n}\n\nexport function validateWorkerClaim(args: {\n\trequest: WorkerRequest;\n\tclaim: WorkerClaim;\n\t/**\n\t * Baseline for relative paths — BOTH the runner's cwd-relative `changedFiles` and the\n\t * envelope's possibly-relative path scopes resolve against this. Defaults to process.cwd()\n\t * for callers whose session cwd is the process cwd.\n\t */\n\tcwd?: string;\n}): GateOutcome {\n\tconst { request } = args;\n\tlet claim: WorkerClaim;\n\ttry {\n\t\tclaim = normalizeWorkerClaimForHost(args.claim);\n\t} catch (error) {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"invalid_worker_claim\",\n\t\t\tmessage: error instanceof Error ? error.message : \"Worker claim failed host validation.\",\n\t\t};\n\t}\n\tconst baseDir = args.cwd ?? process.cwd();\n\n\tif (claim.requestId !== request.id) {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"request_id_mismatch\",\n\t\t\tmessage: `Claim requestId '${claim.requestId}' does not match request id '${request.id}'.`,\n\t\t};\n\t}\n\n\tif (claim.status === \"partial\") {\n\t\treturn {\n\t\t\toutcome: \"ask-user\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"parent_review_required\",\n\t\t\tmessage: `Worker finished with partial claim status '${claim.status}'.`,\n\t\t\tdetails: claim.blockers && claim.blockers.length > 0 ? { blockers: [...claim.blockers] } : undefined,\n\t\t};\n\t}\n\n\tif (claim.status !== \"completed\") {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"worker_not_completed\",\n\t\t\tmessage: `Worker finished with status '${claim.status}'.`,\n\t\t\tdetails: claim.blockers && claim.blockers.length > 0 ? { blockers: [...claim.blockers] } : undefined,\n\t\t};\n\t}\n\n\tif (!claim.usageReportId) {\n\t\treturn {\n\t\t\toutcome: \"block\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"missing_usage_report\",\n\t\t\tmessage: \"Completed worker claim is missing usageReportId.\",\n\t\t};\n\t}\n\n\tif (claim.blockers && claim.blockers.length > 0) {\n\t\treturn {\n\t\t\toutcome: \"ask-user\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"parent_review_required\",\n\t\t\tmessage: \"Completed worker claim includes blockers and requires parent review.\",\n\t\t\tdetails: { blockers: [...claim.blockers] },\n\t\t};\n\t}\n\n\tif (claim.changedFiles.length > 0) {\n\t\tif (!request.envelope.allowedPaths || request.envelope.allowedPaths.length === 0) {\n\t\t\treturn {\n\t\t\t\toutcome: \"block\",\n\t\t\t\tgate: \"worker_claim\",\n\t\t\t\treasonCode: \"missing_path_scope\",\n\t\t\t\tmessage: \"Worker changed files but no allowedPaths are configured in the envelope.\",\n\t\t\t};\n\t\t}\n\n\t\t// The runner reports changed files relative to the session cwd — resolve file and scope\n\t\t// roots against the SAME baseline. Resolving per-root double-prefixed nested names and\n\t\t// let a denied subtree slip past the deny rule.\n\t\tconst resolvedAllowed = request.envelope.allowedPaths.map((p) => path.resolve(baseDir, p));\n\t\tconst resolvedDenied = request.envelope.deniedPaths?.map((p) => path.resolve(baseDir, p));\n\t\tfor (const changedFile of claim.changedFiles) {\n\t\t\tlet isInsideAny = false;\n\t\t\tlet isDenied = false;\n\n\t\t\tconst scopedChangedFile = path.resolve(baseDir, changedFile);\n\t\t\tfor (const root of resolvedAllowed) {\n\t\t\t\tconst decision = checkPathScope(\n\t\t\t\t\t{\n\t\t\t\t\t\troot,\n\t\t\t\t\t\tallowedPaths: resolvedAllowed,\n\t\t\t\t\t\tdeniedPaths: resolvedDenied,\n\t\t\t\t\t},\n\t\t\t\t\tscopedChangedFile,\n\t\t\t\t);\n\n\t\t\t\tif (decision.kind === \"denied\") {\n\t\t\t\t\tisDenied = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif (decision.kind === \"inside\") {\n\t\t\t\t\tisInsideAny = true;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isDenied) {\n\t\t\t\treturn {\n\t\t\t\t\toutcome: \"block\",\n\t\t\t\t\tgate: \"worker_claim\",\n\t\t\t\t\treasonCode: \"changed_file_denied\",\n\t\t\t\t\tmessage: `Worker changed file '${changedFile}' which matches a denied path.`,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (!isInsideAny) {\n\t\t\t\treturn {\n\t\t\t\t\toutcome: \"block\",\n\t\t\t\t\tgate: \"worker_claim\",\n\t\t\t\t\treasonCode: \"changed_file_outside_scope\",\n\t\t\t\t\tmessage: `Worker changed file '${changedFile}' outside allowed scope.`,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\t// Files are inside scope, but worker output is untrusted\n\t\treturn {\n\t\t\toutcome: \"ask-user\",\n\t\t\tgate: \"worker_claim\",\n\t\t\treasonCode: \"parent_review_required\",\n\t\t\tmessage: \"Worker changed files require parent review.\",\n\t\t};\n\t}\n\n\treturn {\n\t\toutcome: \"allow\",\n\t\tgate: \"worker_claim\",\n\t\treasonCode: \"allowed\",\n\t\tmessage: \"Worker claim is read-only and allowed.\",\n\t};\n}\n\n/**\n * Path-scope-only re-review for a SELF-REPORTED (out-of-process) worker's claimed `changedFiles`\n * -- e.g. a tmux worker's own completion report, which (unlike an in-process worker's) never\n * passed through this process's `applyWorkerActions` envelope enforcement before the write\n * happened; the tmux worker's tool loop runs in a separate process this session does not gate.\n * Reuses {@link validateWorkerClaim}'s exact symlink-safe scope check verbatim -- never\n * reimplement path resolution: synthesizes a minimal, always-\"completed\" request/claim pair\n * carrying only the reported `changedFiles` and the scope's `allowedPaths`/`deniedPaths`, so the\n * ONLY thing that can vary the verdict is the path-scope branch.\n *\n * Deliberately broader than {@link isParentReviewRequired}: that helper only flags the gate's\n * \"ask-user\" branch, which is correct for an in-process worker (a write that would have been\n * \"block\"-worthy was already refused before it could happen, by the SAME envelope, via\n * `applyWorkerActions`). A self-reported claim has no such backstop -- an out-of-scope or denied\n * path already happened on the real filesystem whether or not this gate would allow it, so here\n * ANY non-\"allow\" verdict (in scope, out of scope, or no scope configured at all) means a human\n * must look, not \"the write didn't happen\".\n */\nexport function reviewManagedLaneChangedFiles(args: {\n\tchangedFiles: readonly string[];\n\t/** The immutable managed-launch profile scope to validate against. */\n\tenvelope: Pick<CapabilityEnvelope, \"allowedPaths\" | \"deniedPaths\">;\n\tcwd?: string;\n}): { reviewRequired: boolean; reasonCode: string } {\n\tconst boundedChangedFiles = normalizeWorkerClaimForHost({\n\t\trequestId: \"managed-lane-review\",\n\t\tstatus: \"completed\",\n\t\tsummary: \"Managed lane changed-file review.\",\n\t\tchangedFiles: args.changedFiles,\n\t\tusageReportId: \"managed-lane-review\",\n\t}).changedFiles;\n\tif (boundedChangedFiles.length === 0) {\n\t\treturn { reviewRequired: false, reasonCode: \"no_changed_files\" };\n\t}\n\tconst syntheticId = \"managed-lane-review\";\n\tconst acceptance = validateWorkerClaim({\n\t\trequest: {\n\t\t\tid: syntheticId,\n\t\t\tinstructions: \"\",\n\t\t\troute: {\n\t\t\t\ttier: \"cheap\",\n\t\t\t\trisk: \"scoped-write\",\n\t\t\t\tconfidence: 1,\n\t\t\t\treasonCode: \"managed_lane_review\",\n\t\t\t\treasons: [],\n\t\t\t},\n\t\t\tenvelope: {\n\t\t\t\tid: syntheticId,\n\t\t\t\tcapabilities: [\"filesystem.write\"],\n\t\t\t\tallowedPaths: args.envelope.allowedPaths,\n\t\t\t\tdeniedPaths: args.envelope.deniedPaths,\n\t\t\t},\n\t\t},\n\t\tclaim: {\n\t\t\trequestId: syntheticId,\n\t\t\tstatus: \"completed\",\n\t\t\tsummary: \"Managed lane changed-file review.\",\n\t\t\tchangedFiles: boundedChangedFiles,\n\t\t\tusageReportId: syntheticId,\n\t\t},\n\t\tcwd: args.cwd,\n\t});\n\treturn { reviewRequired: acceptance.outcome !== \"allow\", reasonCode: acceptance.reasonCode };\n}\n"]}
@@ -4,13 +4,16 @@ import type { AgentSessionEvent, IsolatedCompletionOptions, IsolatedCompletionRe
4
4
  import type { CapabilityEnvelope, WorkerClaim, WorkerRequest } from "../autonomy/contracts.ts";
5
5
  import { type LaneRecord } from "../autonomy/lane-tracker.ts";
6
6
  import { type AutonomyTelemetryEvent } from "../autonomy/telemetry-events.ts";
7
+ import type { ArtifactStore } from "../context/context-artifacts.ts";
7
8
  import { type GoalState } from "../goals/goal-state.ts";
8
9
  import type { ModelRegistry } from "../model-registry.ts";
9
- import { type OrchestrationProfile, type WorkerRole } from "../orchestration/contracts.ts";
10
+ import { type OrchestrationProfile, type OrchestrationThinkingLevel, type WorkerRole } from "../orchestration/contracts.ts";
10
11
  import { type TaskProfileCreateInput, type TaskProfileCreateResult, type TaskProfileInspection } from "../orchestration/task-profile-writer.ts";
11
12
  import type { TaskRuntimeProjection } from "../orchestration/task-runtime.ts";
12
13
  import type { ResourceLoader } from "../resource-loader.ts";
13
14
  import type { SettingsManager } from "../settings-manager.ts";
15
+ import type { ReadOnlySkillBroker } from "../tools/skill.ts";
16
+ import type { SkillAuditToolOptions } from "../tools/skill-audit.ts";
14
17
  import type { WorkerAgentControlPort } from "./worker-agent-control.ts";
15
18
  import { type WorkerDelegationRequest } from "./worker-delegation-request.ts";
16
19
  import type { WorkerLifecycle } from "./worker-lifecycle.ts";
@@ -28,6 +31,8 @@ export interface WorkerDelegationControllerDeps {
28
31
  getModelRegistry(): ModelRegistry;
29
32
  isModelExhausted(model: Model<Api>): boolean;
30
33
  getModel(): Model<Api> | undefined;
34
+ getForegroundThinkingLevel?(): OrchestrationThinkingLevel;
35
+ getForegroundToolNames?(): readonly string[];
31
36
  isDelegateToolActive(): boolean;
32
37
  getCapabilityEnvelope(): CapabilityEnvelope | undefined;
33
38
  emit(event: AgentSessionEvent): void;
@@ -36,6 +41,12 @@ export interface WorkerDelegationControllerDeps {
36
41
  getGoalStateSnapshot(): GoalState | undefined;
37
42
  saveWorkerClaimSnapshot(claim: WorkerClaim, request?: WorkerRequest): string;
38
43
  readMemoryForLane(query: string): Promise<string>;
44
+ /** Session-owned artifact store broker; worker adapters receive fresh retrieval tools only. */
45
+ getArtifactStore?(): ArtifactStore;
46
+ /** Host-owned read-only skill broker; no SkillVaultController crosses this boundary. */
47
+ getSkillReadBroker?(): ReadOnlySkillBroker;
48
+ /** Host-owned skill metadata source for read-only audit; paths are redacted before projection. */
49
+ getSkillAuditSource?(): Pick<SkillAuditToolOptions, "getSkills"> & Required<Pick<SkillAuditToolOptions, "redactPath">>;
39
50
  addSpawnedUsage(usage: Usage, opts: {
40
51
  label?: string;
41
52
  sourceSessionId?: string;
@@ -84,6 +95,7 @@ export declare class WorkerDelegationController {
84
95
  private getWorkerProfileResolver;
85
96
  private getTaskProfileStore;
86
97
  private getTaskProfileWriter;
98
+ private resolveWorkerAuthority;
87
99
  /** Read-only durable worker projection. Undefined means the delegate capability never loaded. */
88
100
  getTaskRuntimeSnapshot(): TaskRuntimeProjection | undefined;
89
101
  /** Reconcile the session goal into an already-loaded worker runtime without defeating lazy UAC. */
@@ -101,13 +113,13 @@ export declare class WorkerDelegationController {
101
113
  private resolveWorkerPreset;
102
114
  private resolveRequiredVerifier;
103
115
  /**
104
- * A descendant may select a different routing profile, but that preset cannot introduce context or
105
- * recursive authority its ancestor never admitted. Pointer ids alone are insufficient authority:
106
- * retain only pointers whose complete immutable metadata matches the ancestral contract, require
107
- * exact soul text, and intersect durable delegation limits.
116
+ * A recovered legacy nested dispatch may retain a different routing profile, but it cannot widen
117
+ * the immutable ancestor contract. Pointer ids alone are insufficient authority: retain only
118
+ * pointers whose complete metadata matches, require exact soul text, and intersect the persisted
119
+ * lineage limits. Fresh native workers never enter this compatibility path.
108
120
  */
109
121
  private narrowWorkerShipmentContext;
110
- private hasExactRecursiveCycle;
122
+ private hasExactRecoveredLineageCycle;
111
123
  /** Reject a new logical identity before creating its task, transcript, agent, or queue entry. */
112
124
  private newWorkerFleetSkipReason;
113
125
  private requiredAgentSlotsForAdmission;
@@ -141,6 +153,7 @@ export declare class WorkerDelegationController {
141
153
  private admitNewWorkerRequest;
142
154
  private durableWorkerContextForkReferences;
143
155
  private buildWorkerExecutionPlan;
156
+ private workerToolAdapterNames;
144
157
  /** One durable preparation path for queued, immediate, and recovered execution. */
145
158
  private prepareWorkerAttempt;
146
159
  private enqueuePreparedWorkerAttempt;
@@ -1 +1 @@
1
- {"version":3,"file":"worker-delegation-controller.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-delegation-controller.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,KAAK,EACX,iBAAiB,EACjB,yBAAyB,EACzB,wBAAwB,EACxB,0BAA0B,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG/F,OAAO,EAAwB,KAAK,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEpF,OAAO,EAAkC,KAAK,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAE9G,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,wBAAwB,CAAC;AAE/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D,OAAO,EAIN,KAAK,oBAAoB,EAGzB,KAAK,UAAU,EACf,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACN,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,EAE1B,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAuB,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAQnG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,KAAK,EAAoC,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAOhG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAWxE,OAAO,EAAyC,KAAK,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAiBrH,OAAO,KAAK,EAA+B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,KAAK,EAAE,6BAA6B,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AA2BvH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC,GAAG,OAAO,CAK9F;AA8BD,MAAM,WAAW,8BAA8B;IAC9C,UAAU,IAAI,OAAO,CAAC;IACtB,YAAY,IAAI,MAAM,CAAC;IACvB,MAAM,IAAI,MAAM,CAAC;IACjB,WAAW,IAAI,MAAM,CAAC;IACtB,iBAAiB,IAAI,cAAc,CAAC;IACpC,kBAAkB,IAAI,eAAe,CAAC;IACtC,iBAAiB,IAAI,cAAc,CAAC;IACpC,6BAA6B,CAAC,IAAI,oBAAoB,GAAG,SAAS,CAAC;IACnE,gBAAgB,IAAI,aAAa,CAAC;IAClC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAC7C,QAAQ,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACnC,oBAAoB,IAAI,OAAO,CAAC;IAChC,qBAAqB,IAAI,kBAAkB,GAAG,SAAS,CAAC;IACxD,IAAI,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,2BAA2B,CAAC,OAAO,EAAE,SAAS,2BAA2B,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5F,qBAAqB,CAAC,KAAK,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAC3D,oBAAoB,IAAI,SAAS,GAAG,SAAS,CAAC;IAC9C,uBAAuB,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC;IAC7E,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,eAAe,CACd,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAClE,MAAM,GAAG,SAAS,CAAC;IACtB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;CAC1F;AAsDD,qBAAa,0BAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkB;IAC5C,OAAO,CAAC,eAAe,CAAoC;IAC3D,OAAO,CAAC,gBAAgB,CAAsC;IAC9D,OAAO,CAAC,iBAAiB,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;IACrD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgC;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IACpD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsC;IAC3E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IACtD,gGAAgG;IAChG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqB;IACjE,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA6B;IACvE,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAsD;IAC/F,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiC;IAC/D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmC;IACpE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqC;IACjE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoC;IACtE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAQ5B;IAEJ,YACC,IAAI,EAAE,8BAA8B,EACpC,aAAa,EAAE,6BAA6B,EAC5C,SAAS,EAAE,eAAe,EA8F1B;IAED,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,qBAAqB;IA8B7B,iGAAiG;IACjG,eAAe,IAAI,sBAAsB,CAExC;IAED,oFAAoF;IACpF,6BAA6B,IAAI,MAAM,CAEtC;IAED,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAWvC;IAED,UAAU,IAAI,UAAU,EAAE,CAGzB;IAED,sGAAsG;IACtG,gBAAgB,IAAI,UAAU,EAAE,CAE/B;IAED,0BAA0B,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAEnE;IAED,KAAK,IAAI,IAAI,CAgGZ;IAED,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,wBAAwB;IAehC,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,oBAAoB;IAgB5B,iGAAiG;IACjG,sBAAsB,IAAI,qBAAqB,GAAG,SAAS,CAE1D;IAED,mGAAmG;IACnG,oBAAoB,CAAC,IAAI,EAAE,SAAS,GAAG,IAAI,CAG1C;IAED,OAAO,CAAC,0BAA0B;IASlC,OAAO,CAAC,6BAA6B;IAyBrC,OAAO,CAAC,qBAAqB;IAO7B,iBAAiB,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAEnF;IAED,yBAAyB,IAAI,qBAAqB,CAEjD;IAED,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CAExE;IAED,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,uBAAuB;IA0B/B;;;;;OAKG;IACH,OAAO,CAAC,2BAA2B;IAkCnC,OAAO,CAAC,sBAAsB;IAmB9B,iGAAiG;IACjG,OAAO,CAAC,wBAAwB;IAgBhC,OAAO,CAAC,8BAA8B;IAStC,0FAA0F;IAC1F,OAAO,CAAC,sBAAsB;IA2L9B,OAAO,CAAC,oBAAoB;IAwC5B,OAAO,CAAC,kCAAkC;IA8B1C,OAAO,CAAC,sBAAsB;IA+B9B,OAAO,CAAC,+BAA+B;IAgCvC,OAAO,CAAC,qBAAqB;IAgC7B;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,0BAA0B;IAkBlC,OAAO,CAAC,kBAAkB;IA+E1B,OAAO,CAAC,uBAAuB;IAwB/B,OAAO,CAAC,kCAAkC;IAe1C,OAAO,CAAC,gCAAgC;IAaxC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,oCAAoC;IAe5C,OAAO,CAAC,oCAAoC;IAY5C,OAAO,CAAC,8BAA8B;IA8CtC,6EAA6E;IAC7E,OAAO,CAAC,qBAAqB;IAiC7B,OAAO,CAAC,kCAAkC;IAU1C,OAAO,CAAC,wBAAwB;IAkBhC,mFAAmF;IACnF,OAAO,CAAC,oBAAoB;IAmF5B,OAAO,CAAC,4BAA4B;IAoBpC,OAAO,CAAC,0BAA0B;IA8ClC,OAAO,CAAC,mBAAmB;IAuD3B,KAAK,CACJ,OAAO,EAAE,uBAAuB,GAC9B;QAAE,OAAO,EAAE,KAAK,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,cAAc,CAAC,EAAE,UAAU,CAAA;KAAE,CAE7G;IAED,OAAO,CAAC,aAAa;IA4Df,OAAO,CACZ,OAAO,EAAE,uBAAuB,EAChC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,EACxC,cAAc,CAAC,EAAE,UAAU,GACzB,OAAO,CAAC,0BAA0B,CAAC,CAErC;YAEa,oBAAoB;IAuiBlC,mGAAmG;IACnG,KAAK,IAAI,IAAI,CAIZ;CACD"}
1
+ {"version":3,"file":"worker-delegation-controller.d.ts","sourceRoot":"","sources":["../../../src/core/delegation/worker-delegation-controller.ts"],"names":[],"mappings":"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"}