@caupulican/pi-adaptative 0.81.38 → 0.81.40

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 (881) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/README.md +2 -0
  3. package/dist/bundled-resources/extensions/tmux-agent-manager/README.md +18 -1
  4. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts +133 -0
  5. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.d.ts.map +1 -0
  6. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js +198 -0
  7. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.js.map +1 -0
  8. package/dist/bundled-resources/extensions/tmux-agent-manager/dispatch-grant.ts +311 -0
  9. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts +31 -2
  10. package/dist/bundled-resources/extensions/tmux-agent-manager/index.d.ts.map +1 -1
  11. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js +823 -79
  12. package/dist/bundled-resources/extensions/tmux-agent-manager/index.js.map +1 -1
  13. package/dist/bundled-resources/extensions/tmux-agent-manager/index.ts +1043 -86
  14. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/__init__.py +43 -0
  15. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/fs.py +270 -0
  16. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/search.py +252 -0
  17. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/strings.py +399 -0
  18. package/dist/bundled-resources/runtimes/pi-shell-engine/commands/text.py +575 -0
  19. package/dist/bundled-resources/runtimes/pi-shell-engine/context.py +52 -0
  20. package/dist/bundled-resources/runtimes/pi-shell-engine/errors.py +49 -0
  21. package/dist/bundled-resources/runtimes/pi-shell-engine/exec.py +734 -0
  22. package/dist/bundled-resources/runtimes/pi-shell-engine/expand.py +238 -0
  23. package/dist/bundled-resources/runtimes/pi-shell-engine/main.py +132 -0
  24. package/dist/bundled-resources/runtimes/pi-shell-engine/nodes.py +116 -0
  25. package/dist/bundled-resources/runtimes/pi-shell-engine/parser.py +287 -0
  26. package/dist/bundled-resources/runtimes/pi-shell-engine/proc.py +137 -0
  27. package/dist/bundled-resources/runtimes/pi-shell-engine/state.py +100 -0
  28. package/dist/bundled-resources/runtimes/pi-shell-engine/tokens.py +579 -0
  29. package/dist/bundled-resources/skills/tool-call-repair/SKILL.md +19 -9
  30. package/dist/bundled-resources/skills/tool-call-repair/references/failure-grammar.md +22 -5
  31. package/dist/bundled-resources/skills/tool-call-repair/references/repair-catalogue.md +7 -7
  32. package/dist/bundled-resources/skills/tool-call-repair/references/text-protocol-grammar.md +28 -7
  33. package/dist/cli/args.d.ts +5 -0
  34. package/dist/cli/args.d.ts.map +1 -1
  35. package/dist/cli/args.js +24 -0
  36. package/dist/cli/args.js.map +1 -1
  37. package/dist/core/agent-directory-layout.d.ts +15 -0
  38. package/dist/core/agent-directory-layout.d.ts.map +1 -0
  39. package/dist/core/agent-directory-layout.js +72 -0
  40. package/dist/core/agent-directory-layout.js.map +1 -0
  41. package/dist/core/agent-paths.d.ts +66 -0
  42. package/dist/core/agent-paths.d.ts.map +1 -0
  43. package/dist/core/agent-paths.js +170 -0
  44. package/dist/core/agent-paths.js.map +1 -0
  45. package/dist/core/agent-session-runtime.d.ts +52 -8
  46. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  47. package/dist/core/agent-session-runtime.js +397 -79
  48. package/dist/core/agent-session-runtime.js.map +1 -1
  49. package/dist/core/agent-session-services.d.ts +1 -0
  50. package/dist/core/agent-session-services.d.ts.map +1 -1
  51. package/dist/core/agent-session-services.js +4 -3
  52. package/dist/core/agent-session-services.js.map +1 -1
  53. package/dist/core/agent-session.d.ts +255 -103
  54. package/dist/core/agent-session.d.ts.map +1 -1
  55. package/dist/core/agent-session.js +754 -1173
  56. package/dist/core/agent-session.js.map +1 -1
  57. package/dist/core/autonomy/approval-gate.d.ts +3 -2
  58. package/dist/core/autonomy/approval-gate.d.ts.map +1 -1
  59. package/dist/core/autonomy/approval-gate.js +6 -28
  60. package/dist/core/autonomy/approval-gate.js.map +1 -1
  61. package/dist/core/autonomy/bounded-completion.d.ts +1 -1
  62. package/dist/core/autonomy/bounded-completion.d.ts.map +1 -1
  63. package/dist/core/autonomy/bounded-completion.js +1 -1
  64. package/dist/core/autonomy/bounded-completion.js.map +1 -1
  65. package/dist/core/autonomy/contracts.d.ts +26 -9
  66. package/dist/core/autonomy/contracts.d.ts.map +1 -1
  67. package/dist/core/autonomy/contracts.js.map +1 -1
  68. package/dist/core/autonomy/foreground-envelope.d.ts +8 -2
  69. package/dist/core/autonomy/foreground-envelope.d.ts.map +1 -1
  70. package/dist/core/autonomy/foreground-envelope.js +8 -25
  71. package/dist/core/autonomy/foreground-envelope.js.map +1 -1
  72. package/dist/core/autonomy/gates.d.ts.map +1 -1
  73. package/dist/core/autonomy/gates.js +8 -10
  74. package/dist/core/autonomy/gates.js.map +1 -1
  75. package/dist/core/autonomy/lane-private-paths.d.ts +2 -0
  76. package/dist/core/autonomy/lane-private-paths.d.ts.map +1 -0
  77. package/dist/core/autonomy/lane-private-paths.js +16 -0
  78. package/dist/core/autonomy/lane-private-paths.js.map +1 -0
  79. package/dist/core/autonomy/lane-tool-surface.d.ts +10 -0
  80. package/dist/core/autonomy/lane-tool-surface.d.ts.map +1 -1
  81. package/dist/core/autonomy/lane-tool-surface.js +46 -8
  82. package/dist/core/autonomy/lane-tool-surface.js.map +1 -1
  83. package/dist/core/autonomy/lane-tracker.d.ts +24 -1
  84. package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
  85. package/dist/core/autonomy/lane-tracker.js +43 -1
  86. package/dist/core/autonomy/lane-tracker.js.map +1 -1
  87. package/dist/core/autonomy/risk-assessment.d.ts +1 -2
  88. package/dist/core/autonomy/risk-assessment.d.ts.map +1 -1
  89. package/dist/core/autonomy/risk-assessment.js +1 -123
  90. package/dist/core/autonomy/risk-assessment.js.map +1 -1
  91. package/dist/core/autonomy/session-lane-record.d.ts +4 -4
  92. package/dist/core/autonomy/session-lane-record.d.ts.map +1 -1
  93. package/dist/core/autonomy/session-lane-record.js +16 -29
  94. package/dist/core/autonomy/session-lane-record.js.map +1 -1
  95. package/dist/core/autonomy/telemetry-events.d.ts +1 -1
  96. package/dist/core/autonomy/telemetry-events.d.ts.map +1 -1
  97. package/dist/core/autonomy/telemetry-events.js +1 -1
  98. package/dist/core/autonomy/telemetry-events.js.map +1 -1
  99. package/dist/core/autonomy-telemetry.d.ts +7 -7
  100. package/dist/core/autonomy-telemetry.d.ts.map +1 -1
  101. package/dist/core/autonomy-telemetry.js +9 -9
  102. package/dist/core/autonomy-telemetry.js.map +1 -1
  103. package/dist/core/background-lane-controller.d.ts +90 -156
  104. package/dist/core/background-lane-controller.d.ts.map +1 -1
  105. package/dist/core/background-lane-controller.js +192 -968
  106. package/dist/core/background-lane-controller.js.map +1 -1
  107. package/dist/core/bash-execution-controller.d.ts +4 -0
  108. package/dist/core/bash-execution-controller.d.ts.map +1 -1
  109. package/dist/core/bash-execution-controller.js +7 -1
  110. package/dist/core/bash-execution-controller.js.map +1 -1
  111. package/dist/core/capability-contract.d.ts +4 -0
  112. package/dist/core/capability-contract.d.ts.map +1 -0
  113. package/dist/core/capability-contract.js +28 -0
  114. package/dist/core/capability-contract.js.map +1 -0
  115. package/dist/core/compaction-controller.d.ts +90 -0
  116. package/dist/core/compaction-controller.d.ts.map +1 -0
  117. package/dist/core/compaction-controller.js +452 -0
  118. package/dist/core/compaction-controller.js.map +1 -0
  119. package/dist/core/compaction-support.d.ts +24 -13
  120. package/dist/core/compaction-support.d.ts.map +1 -1
  121. package/dist/core/compaction-support.js +43 -7
  122. package/dist/core/compaction-support.js.map +1 -1
  123. package/dist/core/context/context-artifacts.d.ts +6 -2
  124. package/dist/core/context/context-artifacts.d.ts.map +1 -1
  125. package/dist/core/context/context-artifacts.js +34 -2
  126. package/dist/core/context/context-artifacts.js.map +1 -1
  127. package/dist/core/context/context-audit.d.ts +33 -1
  128. package/dist/core/context/context-audit.d.ts.map +1 -1
  129. package/dist/core/context/context-audit.js +31 -5
  130. package/dist/core/context/context-audit.js.map +1 -1
  131. package/dist/core/context/context-store-retention.d.ts +8 -2
  132. package/dist/core/context/context-store-retention.d.ts.map +1 -1
  133. package/dist/core/context/context-store-retention.js +158 -35
  134. package/dist/core/context/context-store-retention.js.map +1 -1
  135. package/dist/core/context/okf-memory.d.ts.map +1 -1
  136. package/dist/core/context/okf-memory.js +9 -11
  137. package/dist/core/context/okf-memory.js.map +1 -1
  138. package/dist/core/context/sqlite-runtime-index.d.ts.map +1 -1
  139. package/dist/core/context/sqlite-runtime-index.js +6 -8
  140. package/dist/core/context/sqlite-runtime-index.js.map +1 -1
  141. package/dist/core/context-gc.d.ts +3 -0
  142. package/dist/core/context-gc.d.ts.map +1 -1
  143. package/dist/core/context-gc.js +26 -6
  144. package/dist/core/context-gc.js.map +1 -1
  145. package/dist/core/context-pipeline.d.ts +26 -4
  146. package/dist/core/context-pipeline.d.ts.map +1 -1
  147. package/dist/core/context-pipeline.js +146 -18
  148. package/dist/core/context-pipeline.js.map +1 -1
  149. package/dist/core/cost-guard.d.ts +19 -3
  150. package/dist/core/cost-guard.d.ts.map +1 -1
  151. package/dist/core/cost-guard.js +18 -3
  152. package/dist/core/cost-guard.js.map +1 -1
  153. package/dist/core/default-tool-surface.d.ts.map +1 -1
  154. package/dist/core/default-tool-surface.js +1 -0
  155. package/dist/core/default-tool-surface.js.map +1 -1
  156. package/dist/core/delegation/managed-lane-controller.d.ts +34 -0
  157. package/dist/core/delegation/managed-lane-controller.d.ts.map +1 -0
  158. package/dist/core/delegation/managed-lane-controller.js +217 -0
  159. package/dist/core/delegation/managed-lane-controller.js.map +1 -0
  160. package/dist/core/delegation/session-worker-claim.d.ts +44 -0
  161. package/dist/core/delegation/session-worker-claim.d.ts.map +1 -0
  162. package/dist/core/delegation/session-worker-claim.js +98 -0
  163. package/dist/core/delegation/session-worker-claim.js.map +1 -0
  164. package/dist/core/delegation/worker-actions.d.ts +7 -5
  165. package/dist/core/delegation/worker-actions.d.ts.map +1 -1
  166. package/dist/core/delegation/worker-actions.js +20 -4
  167. package/dist/core/delegation/worker-actions.js.map +1 -1
  168. package/dist/core/delegation/worker-claim.d.ts +56 -0
  169. package/dist/core/delegation/worker-claim.d.ts.map +1 -0
  170. package/dist/core/delegation/worker-claim.js +239 -0
  171. package/dist/core/delegation/worker-claim.js.map +1 -0
  172. package/dist/core/delegation/worker-delegation-controller.d.ts +110 -0
  173. package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -0
  174. package/dist/core/delegation/worker-delegation-controller.js +861 -0
  175. package/dist/core/delegation/worker-delegation-controller.js.map +1 -0
  176. package/dist/core/delegation/worker-delegation-request.d.ts +11 -0
  177. package/dist/core/delegation/worker-delegation-request.d.ts.map +1 -0
  178. package/dist/core/delegation/worker-delegation-request.js +2 -0
  179. package/dist/core/delegation/worker-delegation-request.js.map +1 -0
  180. package/dist/core/delegation/worker-dispatch-scheduler.d.ts +40 -0
  181. package/dist/core/delegation/worker-dispatch-scheduler.d.ts.map +1 -0
  182. package/dist/core/delegation/worker-dispatch-scheduler.js +93 -0
  183. package/dist/core/delegation/worker-dispatch-scheduler.js.map +1 -0
  184. package/dist/core/delegation/worker-execution-policy.d.ts +62 -0
  185. package/dist/core/delegation/worker-execution-policy.d.ts.map +1 -0
  186. package/dist/core/delegation/worker-execution-policy.js +160 -0
  187. package/dist/core/delegation/worker-execution-policy.js.map +1 -0
  188. package/dist/core/delegation/worker-lane-projection.d.ts +14 -0
  189. package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -0
  190. package/dist/core/delegation/worker-lane-projection.js +100 -0
  191. package/dist/core/delegation/worker-lane-projection.js.map +1 -0
  192. package/dist/core/delegation/worker-lifecycle.d.ts +97 -0
  193. package/dist/core/delegation/worker-lifecycle.d.ts.map +1 -0
  194. package/dist/core/delegation/worker-lifecycle.js +339 -0
  195. package/dist/core/delegation/worker-lifecycle.js.map +1 -0
  196. package/dist/core/delegation/worker-notification-coordinator.d.ts +36 -0
  197. package/dist/core/delegation/worker-notification-coordinator.d.ts.map +1 -0
  198. package/dist/core/delegation/worker-notification-coordinator.js +90 -0
  199. package/dist/core/delegation/worker-notification-coordinator.js.map +1 -0
  200. package/dist/core/delegation/worker-profile-resolver.d.ts +55 -0
  201. package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -0
  202. package/dist/core/delegation/worker-profile-resolver.js +113 -0
  203. package/dist/core/delegation/worker-profile-resolver.js.map +1 -0
  204. package/dist/core/delegation/worker-runner.d.ts +25 -14
  205. package/dist/core/delegation/worker-runner.d.ts.map +1 -1
  206. package/dist/core/delegation/worker-runner.js +122 -53
  207. package/dist/core/delegation/worker-runner.js.map +1 -1
  208. package/dist/core/delegation/worker-task-label.d.ts +3 -0
  209. package/dist/core/delegation/worker-task-label.d.ts.map +1 -0
  210. package/dist/core/delegation/worker-task-label.js +11 -0
  211. package/dist/core/delegation/worker-task-label.js.map +1 -0
  212. package/dist/core/doctor.d.ts +8 -0
  213. package/dist/core/doctor.d.ts.map +1 -1
  214. package/dist/core/doctor.js +32 -1
  215. package/dist/core/doctor.js.map +1 -1
  216. package/dist/core/extensions/index.d.ts +1 -1
  217. package/dist/core/extensions/index.d.ts.map +1 -1
  218. package/dist/core/extensions/index.js.map +1 -1
  219. package/dist/core/extensions/loader.d.ts +5 -1
  220. package/dist/core/extensions/loader.d.ts.map +1 -1
  221. package/dist/core/extensions/loader.js +68 -13
  222. package/dist/core/extensions/loader.js.map +1 -1
  223. package/dist/core/extensions/runner.d.ts.map +1 -1
  224. package/dist/core/extensions/runner.js +7 -0
  225. package/dist/core/extensions/runner.js.map +1 -1
  226. package/dist/core/extensions/storage.d.ts +8 -0
  227. package/dist/core/extensions/storage.d.ts.map +1 -0
  228. package/dist/core/extensions/storage.js +28 -0
  229. package/dist/core/extensions/storage.js.map +1 -0
  230. package/dist/core/extensions/types.d.ts +101 -1
  231. package/dist/core/extensions/types.d.ts.map +1 -1
  232. package/dist/core/extensions/types.js.map +1 -1
  233. package/dist/core/failure-corpus.d.ts +1 -15
  234. package/dist/core/failure-corpus.d.ts.map +1 -1
  235. package/dist/core/failure-corpus.js +9 -37
  236. package/dist/core/failure-corpus.js.map +1 -1
  237. package/dist/core/foreground-recovery-controller.d.ts +52 -0
  238. package/dist/core/foreground-recovery-controller.d.ts.map +1 -0
  239. package/dist/core/foreground-recovery-controller.js +111 -0
  240. package/dist/core/foreground-recovery-controller.js.map +1 -0
  241. package/dist/core/gateways/channel-provider.d.ts +3 -0
  242. package/dist/core/gateways/channel-provider.d.ts.map +1 -1
  243. package/dist/core/gateways/channel-provider.js +31 -6
  244. package/dist/core/gateways/channel-provider.js.map +1 -1
  245. package/dist/core/goal-loop-controller.d.ts +17 -1
  246. package/dist/core/goal-loop-controller.d.ts.map +1 -1
  247. package/dist/core/goal-loop-controller.js +79 -11
  248. package/dist/core/goal-loop-controller.js.map +1 -1
  249. package/dist/core/goals/goal-acceptance.d.ts +11 -0
  250. package/dist/core/goals/goal-acceptance.d.ts.map +1 -0
  251. package/dist/core/goals/goal-acceptance.js +25 -0
  252. package/dist/core/goals/goal-acceptance.js.map +1 -0
  253. package/dist/core/goals/goal-auto-continue-controller.d.ts +27 -0
  254. package/dist/core/goals/goal-auto-continue-controller.d.ts.map +1 -0
  255. package/dist/core/goals/goal-auto-continue-controller.js +93 -0
  256. package/dist/core/goals/goal-auto-continue-controller.js.map +1 -0
  257. package/dist/core/goals/goal-continuation-controller.d.ts +48 -2
  258. package/dist/core/goals/goal-continuation-controller.d.ts.map +1 -1
  259. package/dist/core/goals/goal-continuation-controller.js +87 -0
  260. package/dist/core/goals/goal-continuation-controller.js.map +1 -1
  261. package/dist/core/goals/goal-continuation-defaults.d.ts +39 -0
  262. package/dist/core/goals/goal-continuation-defaults.d.ts.map +1 -1
  263. package/dist/core/goals/goal-continuation-defaults.js +42 -0
  264. package/dist/core/goals/goal-continuation-defaults.js.map +1 -1
  265. package/dist/core/goals/goal-continuation-prompt.d.ts +5 -1
  266. package/dist/core/goals/goal-continuation-prompt.d.ts.map +1 -1
  267. package/dist/core/goals/goal-continuation-prompt.js +56 -15
  268. package/dist/core/goals/goal-continuation-prompt.js.map +1 -1
  269. package/dist/core/goals/goal-lifecycle.d.ts +20 -0
  270. package/dist/core/goals/goal-lifecycle.d.ts.map +1 -0
  271. package/dist/core/goals/goal-lifecycle.js +17 -0
  272. package/dist/core/goals/goal-lifecycle.js.map +1 -0
  273. package/dist/core/goals/goal-runtime-snapshot.d.ts +105 -4
  274. package/dist/core/goals/goal-runtime-snapshot.d.ts.map +1 -1
  275. package/dist/core/goals/goal-runtime-snapshot.js +91 -6
  276. package/dist/core/goals/goal-runtime-snapshot.js.map +1 -1
  277. package/dist/core/goals/goal-state.d.ts +90 -1
  278. package/dist/core/goals/goal-state.d.ts.map +1 -1
  279. package/dist/core/goals/goal-state.js +78 -15
  280. package/dist/core/goals/goal-state.js.map +1 -1
  281. package/dist/core/goals/goal-tool-core.d.ts +58 -2
  282. package/dist/core/goals/goal-tool-core.d.ts.map +1 -1
  283. package/dist/core/goals/goal-tool-core.js +82 -6
  284. package/dist/core/goals/goal-tool-core.js.map +1 -1
  285. package/dist/core/goals/session-goal-state.d.ts +13 -6
  286. package/dist/core/goals/session-goal-state.d.ts.map +1 -1
  287. package/dist/core/goals/session-goal-state.js +20 -28
  288. package/dist/core/goals/session-goal-state.js.map +1 -1
  289. package/dist/core/human-input.d.ts +100 -0
  290. package/dist/core/human-input.d.ts.map +1 -0
  291. package/dist/core/human-input.js +362 -0
  292. package/dist/core/human-input.js.map +1 -0
  293. package/dist/core/index.d.ts +9 -1
  294. package/dist/core/index.d.ts.map +1 -1
  295. package/dist/core/index.js +9 -1
  296. package/dist/core/index.js.map +1 -1
  297. package/dist/core/{telemetry.d.ts → install-telemetry.d.ts} +1 -1
  298. package/dist/core/install-telemetry.d.ts.map +1 -0
  299. package/dist/core/{telemetry.js → install-telemetry.js} +1 -1
  300. package/dist/core/install-telemetry.js.map +1 -0
  301. package/dist/core/keybindings.d.ts +27 -1
  302. package/dist/core/keybindings.d.ts.map +1 -1
  303. package/dist/core/keybindings.js +34 -8
  304. package/dist/core/keybindings.js.map +1 -1
  305. package/dist/core/learning/learning-audit.d.ts +2 -4
  306. package/dist/core/learning/learning-audit.d.ts.map +1 -1
  307. package/dist/core/learning/learning-audit.js +9 -29
  308. package/dist/core/learning/learning-audit.js.map +1 -1
  309. package/dist/core/learning/learning-gate.d.ts.map +1 -1
  310. package/dist/core/learning/learning-gate.js +1 -6
  311. package/dist/core/learning/learning-gate.js.map +1 -1
  312. package/dist/core/learning/observation-store.d.ts +12 -3
  313. package/dist/core/learning/observation-store.d.ts.map +1 -1
  314. package/dist/core/learning/observation-store.js +30 -15
  315. package/dist/core/learning/observation-store.js.map +1 -1
  316. package/dist/core/learning/session-learning-decision.d.ts +2 -4
  317. package/dist/core/learning/session-learning-decision.d.ts.map +1 -1
  318. package/dist/core/learning/session-learning-decision.js +9 -29
  319. package/dist/core/learning/session-learning-decision.js.map +1 -1
  320. package/dist/core/learning/skill-curator.d.ts +5 -1
  321. package/dist/core/learning/skill-curator.d.ts.map +1 -1
  322. package/dist/core/learning/skill-curator.js +21 -19
  323. package/dist/core/learning/skill-curator.js.map +1 -1
  324. package/dist/core/local-runtime-controller.d.ts +65 -3
  325. package/dist/core/local-runtime-controller.d.ts.map +1 -1
  326. package/dist/core/local-runtime-controller.js +186 -26
  327. package/dist/core/local-runtime-controller.js.map +1 -1
  328. package/dist/core/memory/providers/file-store.d.ts +1 -1
  329. package/dist/core/memory/providers/file-store.d.ts.map +1 -1
  330. package/dist/core/memory/providers/file-store.js +6 -6
  331. package/dist/core/memory/providers/file-store.js.map +1 -1
  332. package/dist/core/memory-controller.d.ts.map +1 -1
  333. package/dist/core/memory-controller.js +4 -4
  334. package/dist/core/memory-controller.js.map +1 -1
  335. package/dist/core/model-capability.d.ts +34 -0
  336. package/dist/core/model-capability.d.ts.map +1 -1
  337. package/dist/core/model-capability.js +43 -1
  338. package/dist/core/model-capability.js.map +1 -1
  339. package/dist/core/model-resolver.d.ts +1 -1
  340. package/dist/core/model-resolver.d.ts.map +1 -1
  341. package/dist/core/model-resolver.js +6 -9
  342. package/dist/core/model-resolver.js.map +1 -1
  343. package/dist/core/model-router/intent-classifier.d.ts +1 -4
  344. package/dist/core/model-router/intent-classifier.d.ts.map +1 -1
  345. package/dist/core/model-router/intent-classifier.js +1 -156
  346. package/dist/core/model-router/intent-classifier.js.map +1 -1
  347. package/dist/core/model-router/tool-escalation.d.ts +15 -0
  348. package/dist/core/model-router/tool-escalation.d.ts.map +1 -1
  349. package/dist/core/model-router/tool-escalation.js +23 -1
  350. package/dist/core/model-router/tool-escalation.js.map +1 -1
  351. package/dist/core/model-router-controller.d.ts +34 -7
  352. package/dist/core/model-router-controller.d.ts.map +1 -1
  353. package/dist/core/model-router-controller.js +95 -16
  354. package/dist/core/model-router-controller.js.map +1 -1
  355. package/dist/core/model-selection-controller.d.ts +4 -4
  356. package/dist/core/model-selection-controller.d.ts.map +1 -1
  357. package/dist/core/model-selection-controller.js.map +1 -1
  358. package/dist/core/model-tool-protocol.d.ts +23 -0
  359. package/dist/core/model-tool-protocol.d.ts.map +1 -0
  360. package/dist/core/model-tool-protocol.js +43 -0
  361. package/dist/core/model-tool-protocol.js.map +1 -0
  362. package/dist/core/models/adaptation-store.d.ts +10 -5
  363. package/dist/core/models/adaptation-store.d.ts.map +1 -1
  364. package/dist/core/models/adaptation-store.js +129 -81
  365. package/dist/core/models/adaptation-store.js.map +1 -1
  366. package/dist/core/models/default-model-suggestions.d.ts.map +1 -1
  367. package/dist/core/models/default-model-suggestions.js +17 -0
  368. package/dist/core/models/default-model-suggestions.js.map +1 -1
  369. package/dist/core/models/fitness-store.d.ts +4 -11
  370. package/dist/core/models/fitness-store.d.ts.map +1 -1
  371. package/dist/core/models/fitness-store.js +87 -51
  372. package/dist/core/models/fitness-store.js.map +1 -1
  373. package/dist/core/models/host-state-store.d.ts +34 -0
  374. package/dist/core/models/host-state-store.d.ts.map +1 -0
  375. package/dist/core/models/host-state-store.js +86 -0
  376. package/dist/core/models/host-state-store.js.map +1 -0
  377. package/dist/core/models/llamacpp-runtime.d.ts +180 -0
  378. package/dist/core/models/llamacpp-runtime.d.ts.map +1 -0
  379. package/dist/core/models/llamacpp-runtime.js +475 -0
  380. package/dist/core/models/llamacpp-runtime.js.map +1 -0
  381. package/dist/core/models/local-registration.d.ts +40 -0
  382. package/dist/core/models/local-registration.d.ts.map +1 -1
  383. package/dist/core/models/local-registration.js +94 -5
  384. package/dist/core/models/local-registration.js.map +1 -1
  385. package/dist/core/models/local-runtime.d.ts.map +1 -1
  386. package/dist/core/models/local-runtime.js +6 -5
  387. package/dist/core/models/local-runtime.js.map +1 -1
  388. package/dist/core/models/model-ref.d.ts +7 -0
  389. package/dist/core/models/model-ref.d.ts.map +1 -1
  390. package/dist/core/models/model-ref.js +26 -0
  391. package/dist/core/models/model-ref.js.map +1 -1
  392. package/dist/core/models/needle-runtime.d.ts +257 -0
  393. package/dist/core/models/needle-runtime.d.ts.map +1 -0
  394. package/dist/core/models/needle-runtime.js +519 -0
  395. package/dist/core/models/needle-runtime.js.map +1 -0
  396. package/dist/core/models/prism-llamacpp-lifecycle.d.ts +89 -0
  397. package/dist/core/models/prism-llamacpp-lifecycle.d.ts.map +1 -0
  398. package/dist/core/models/prism-llamacpp-lifecycle.js +121 -0
  399. package/dist/core/models/prism-llamacpp-lifecycle.js.map +1 -0
  400. package/dist/core/orchestration/agent-resume.d.ts +24 -0
  401. package/dist/core/orchestration/agent-resume.d.ts.map +1 -0
  402. package/dist/core/orchestration/agent-resume.js +90 -0
  403. package/dist/core/orchestration/agent-resume.js.map +1 -0
  404. package/dist/core/orchestration/capability-gateway.d.ts +61 -0
  405. package/dist/core/orchestration/capability-gateway.d.ts.map +1 -0
  406. package/dist/core/orchestration/capability-gateway.js +152 -0
  407. package/dist/core/orchestration/capability-gateway.js.map +1 -0
  408. package/dist/core/orchestration/contracts.d.ts +343 -0
  409. package/dist/core/orchestration/contracts.d.ts.map +1 -0
  410. package/dist/core/orchestration/contracts.js +135 -0
  411. package/dist/core/orchestration/contracts.js.map +1 -0
  412. package/dist/core/orchestration/delegation-ledger.d.ts +56 -0
  413. package/dist/core/orchestration/delegation-ledger.d.ts.map +1 -0
  414. package/dist/core/orchestration/delegation-ledger.js +197 -0
  415. package/dist/core/orchestration/delegation-ledger.js.map +1 -0
  416. package/dist/core/orchestration/event-store.d.ts +83 -0
  417. package/dist/core/orchestration/event-store.d.ts.map +1 -0
  418. package/dist/core/orchestration/event-store.js +560 -0
  419. package/dist/core/orchestration/event-store.js.map +1 -0
  420. package/dist/core/orchestration/lane-tool-manifests.d.ts +9 -0
  421. package/dist/core/orchestration/lane-tool-manifests.d.ts.map +1 -0
  422. package/dist/core/orchestration/lane-tool-manifests.js +37 -0
  423. package/dist/core/orchestration/lane-tool-manifests.js.map +1 -0
  424. package/dist/core/orchestration/model-binding.d.ts +15 -0
  425. package/dist/core/orchestration/model-binding.d.ts.map +1 -0
  426. package/dist/core/orchestration/model-binding.js +29 -0
  427. package/dist/core/orchestration/model-binding.js.map +1 -0
  428. package/dist/core/orchestration/policy-compiler.d.ts +49 -0
  429. package/dist/core/orchestration/policy-compiler.d.ts.map +1 -0
  430. package/dist/core/orchestration/policy-compiler.js +191 -0
  431. package/dist/core/orchestration/policy-compiler.js.map +1 -0
  432. package/dist/core/orchestration/policy-gate.d.ts +18 -0
  433. package/dist/core/orchestration/policy-gate.d.ts.map +1 -0
  434. package/dist/core/orchestration/policy-gate.js +24 -0
  435. package/dist/core/orchestration/policy-gate.js.map +1 -0
  436. package/dist/core/orchestration/profile-registry.d.ts +51 -0
  437. package/dist/core/orchestration/profile-registry.d.ts.map +1 -0
  438. package/dist/core/orchestration/profile-registry.js +393 -0
  439. package/dist/core/orchestration/profile-registry.js.map +1 -0
  440. package/dist/core/orchestration/profile-store.d.ts +31 -0
  441. package/dist/core/orchestration/profile-store.d.ts.map +1 -0
  442. package/dist/core/orchestration/profile-store.js +136 -0
  443. package/dist/core/orchestration/profile-store.js.map +1 -0
  444. package/dist/core/orchestration/risk-budget.d.ts +9 -0
  445. package/dist/core/orchestration/risk-budget.d.ts.map +1 -0
  446. package/dist/core/orchestration/risk-budget.js +48 -0
  447. package/dist/core/orchestration/risk-budget.js.map +1 -0
  448. package/dist/core/orchestration/task-runtime.d.ts +168 -0
  449. package/dist/core/orchestration/task-runtime.d.ts.map +1 -0
  450. package/dist/core/orchestration/task-runtime.js +1600 -0
  451. package/dist/core/orchestration/task-runtime.js.map +1 -0
  452. package/dist/core/orchestration/work-state-projection.d.ts +32 -0
  453. package/dist/core/orchestration/work-state-projection.d.ts.map +1 -0
  454. package/dist/core/orchestration/work-state-projection.js +116 -0
  455. package/dist/core/orchestration/work-state-projection.js.map +1 -0
  456. package/dist/core/orchestration/worker-execution-contract.d.ts +21 -0
  457. package/dist/core/orchestration/worker-execution-contract.d.ts.map +1 -0
  458. package/dist/core/orchestration/worker-execution-contract.js +179 -0
  459. package/dist/core/orchestration/worker-execution-contract.js.map +1 -0
  460. package/dist/core/orchestration/worker-result-adapter.d.ts +21 -0
  461. package/dist/core/orchestration/worker-result-adapter.d.ts.map +1 -0
  462. package/dist/core/orchestration/worker-result-adapter.js +109 -0
  463. package/dist/core/orchestration/worker-result-adapter.js.map +1 -0
  464. package/dist/core/package-manager.d.ts.map +1 -1
  465. package/dist/core/package-manager.js +11 -10
  466. package/dist/core/package-manager.js.map +1 -1
  467. package/dist/core/process-identity.d.ts +11 -0
  468. package/dist/core/process-identity.d.ts.map +1 -0
  469. package/dist/core/process-identity.js +26 -0
  470. package/dist/core/process-identity.js.map +1 -0
  471. package/dist/core/process-matrix/codes.d.ts +83 -0
  472. package/dist/core/process-matrix/codes.d.ts.map +1 -0
  473. package/dist/core/process-matrix/codes.js +15 -0
  474. package/dist/core/process-matrix/codes.js.map +1 -0
  475. package/dist/core/process-matrix/resume-launcher.d.ts +26 -0
  476. package/dist/core/process-matrix/resume-launcher.d.ts.map +1 -0
  477. package/dist/core/process-matrix/resume-launcher.js +62 -0
  478. package/dist/core/process-matrix/resume-launcher.js.map +1 -0
  479. package/dist/core/process-matrix/runtime.d.ts +78 -0
  480. package/dist/core/process-matrix/runtime.d.ts.map +1 -0
  481. package/dist/core/process-matrix/runtime.js +633 -0
  482. package/dist/core/process-matrix/runtime.js.map +1 -0
  483. package/dist/core/process-matrix/store.d.ts +25 -0
  484. package/dist/core/process-matrix/store.d.ts.map +1 -0
  485. package/dist/core/process-matrix/store.js +189 -0
  486. package/dist/core/process-matrix/store.js.map +1 -0
  487. package/dist/core/process-matrix/supervisor.d.ts +75 -0
  488. package/dist/core/process-matrix/supervisor.d.ts.map +1 -0
  489. package/dist/core/process-matrix/supervisor.js +161 -0
  490. package/dist/core/process-matrix/supervisor.js.map +1 -0
  491. package/dist/core/profile-registry.d.ts +7 -0
  492. package/dist/core/profile-registry.d.ts.map +1 -1
  493. package/dist/core/profile-registry.js +25 -7
  494. package/dist/core/profile-registry.js.map +1 -1
  495. package/dist/core/python-runtime.d.ts.map +1 -1
  496. package/dist/core/python-runtime.js +3 -3
  497. package/dist/core/python-runtime.js.map +1 -1
  498. package/dist/core/reflection-controller.d.ts +33 -9
  499. package/dist/core/reflection-controller.d.ts.map +1 -1
  500. package/dist/core/reflection-controller.js +217 -127
  501. package/dist/core/reflection-controller.js.map +1 -1
  502. package/dist/core/reload-blockers.d.ts +36 -0
  503. package/dist/core/reload-blockers.d.ts.map +1 -1
  504. package/dist/core/reload-blockers.js +50 -8
  505. package/dist/core/reload-blockers.js.map +1 -1
  506. package/dist/core/research/evidence-bundle.d.ts.map +1 -1
  507. package/dist/core/research/evidence-bundle.js +1 -6
  508. package/dist/core/research/evidence-bundle.js.map +1 -1
  509. package/dist/core/research/lane-model-resolver.d.ts +33 -0
  510. package/dist/core/research/lane-model-resolver.d.ts.map +1 -0
  511. package/dist/core/research/lane-model-resolver.js +65 -0
  512. package/dist/core/research/lane-model-resolver.js.map +1 -0
  513. package/dist/core/research/model-fitness-controller.d.ts +38 -0
  514. package/dist/core/research/model-fitness-controller.d.ts.map +1 -0
  515. package/dist/core/research/model-fitness-controller.js +106 -0
  516. package/dist/core/research/model-fitness-controller.js.map +1 -0
  517. package/dist/core/research/model-fitness.d.ts +1 -1
  518. package/dist/core/research/model-fitness.d.ts.map +1 -1
  519. package/dist/core/research/model-fitness.js +4 -4
  520. package/dist/core/research/model-fitness.js.map +1 -1
  521. package/dist/core/research/research-gate.d.ts.map +1 -1
  522. package/dist/core/research/research-gate.js +7 -7
  523. package/dist/core/research/research-gate.js.map +1 -1
  524. package/dist/core/research/research-lane-controller.d.ts +62 -0
  525. package/dist/core/research/research-lane-controller.d.ts.map +1 -0
  526. package/dist/core/research/research-lane-controller.js +292 -0
  527. package/dist/core/research/research-lane-controller.js.map +1 -0
  528. package/dist/core/research/session-evidence-bundle.d.ts +2 -4
  529. package/dist/core/research/session-evidence-bundle.d.ts.map +1 -1
  530. package/dist/core/research/session-evidence-bundle.js +10 -46
  531. package/dist/core/research/session-evidence-bundle.js.map +1 -1
  532. package/dist/core/resource-loader.d.ts.map +1 -1
  533. package/dist/core/resource-loader.js +15 -9
  534. package/dist/core/resource-loader.js.map +1 -1
  535. package/dist/core/risk-classifier.d.ts +6 -0
  536. package/dist/core/risk-classifier.d.ts.map +1 -0
  537. package/dist/core/risk-classifier.js +225 -0
  538. package/dist/core/risk-classifier.js.map +1 -0
  539. package/dist/core/runtime-builder.d.ts +76 -17
  540. package/dist/core/runtime-builder.d.ts.map +1 -1
  541. package/dist/core/runtime-builder.js +367 -124
  542. package/dist/core/runtime-builder.js.map +1 -1
  543. package/dist/core/scout-controller.d.ts +6 -0
  544. package/dist/core/scout-controller.d.ts.map +1 -1
  545. package/dist/core/scout-controller.js +66 -52
  546. package/dist/core/scout-controller.js.map +1 -1
  547. package/dist/core/sdk.d.ts +6 -3
  548. package/dist/core/sdk.d.ts.map +1 -1
  549. package/dist/core/sdk.js +64 -27
  550. package/dist/core/sdk.js.map +1 -1
  551. package/dist/core/session-analytics.d.ts.map +1 -1
  552. package/dist/core/session-analytics.js +28 -1
  553. package/dist/core/session-analytics.js.map +1 -1
  554. package/dist/core/session-image-store.d.ts +33 -0
  555. package/dist/core/session-image-store.d.ts.map +1 -0
  556. package/dist/core/session-image-store.js +283 -0
  557. package/dist/core/session-image-store.js.map +1 -0
  558. package/dist/core/session-role.d.ts +33 -0
  559. package/dist/core/session-role.d.ts.map +1 -0
  560. package/dist/core/session-role.js +58 -0
  561. package/dist/core/session-role.js.map +1 -0
  562. package/dist/core/session-snapshot.d.ts +34 -0
  563. package/dist/core/session-snapshot.d.ts.map +1 -0
  564. package/dist/core/session-snapshot.js +68 -0
  565. package/dist/core/session-snapshot.js.map +1 -0
  566. package/dist/core/session-supervision-runtime.d.ts +31 -0
  567. package/dist/core/session-supervision-runtime.d.ts.map +1 -0
  568. package/dist/core/session-supervision-runtime.js +97 -0
  569. package/dist/core/session-supervision-runtime.js.map +1 -0
  570. package/dist/core/settings-manager.d.ts +51 -7
  571. package/dist/core/settings-manager.d.ts.map +1 -1
  572. package/dist/core/settings-manager.js +168 -82
  573. package/dist/core/settings-manager.js.map +1 -1
  574. package/dist/core/system-prompt-builder.d.ts +12 -0
  575. package/dist/core/system-prompt-builder.d.ts.map +1 -1
  576. package/dist/core/system-prompt-builder.js +6 -0
  577. package/dist/core/system-prompt-builder.js.map +1 -1
  578. package/dist/core/system-prompt.d.ts +14 -1
  579. package/dist/core/system-prompt.d.ts.map +1 -1
  580. package/dist/core/system-prompt.js +20 -3
  581. package/dist/core/system-prompt.js.map +1 -1
  582. package/dist/core/tasks/session-task-state.d.ts +13 -6
  583. package/dist/core/tasks/session-task-state.d.ts.map +1 -1
  584. package/dist/core/tasks/session-task-state.js +20 -22
  585. package/dist/core/tasks/session-task-state.js.map +1 -1
  586. package/dist/core/tasks/task-contract-monitor.d.ts +45 -0
  587. package/dist/core/tasks/task-contract-monitor.d.ts.map +1 -0
  588. package/dist/core/tasks/task-contract-monitor.js +56 -0
  589. package/dist/core/tasks/task-contract-monitor.js.map +1 -0
  590. package/dist/core/tasks/task-projection.d.ts +20 -0
  591. package/dist/core/tasks/task-projection.d.ts.map +1 -0
  592. package/dist/core/tasks/task-projection.js +47 -0
  593. package/dist/core/tasks/task-projection.js.map +1 -0
  594. package/dist/core/tasks/task-state.d.ts +12 -0
  595. package/dist/core/tasks/task-state.d.ts.map +1 -1
  596. package/dist/core/tasks/task-state.js +56 -12
  597. package/dist/core/tasks/task-state.js.map +1 -1
  598. package/dist/core/tool-capability-policy.d.ts +13 -0
  599. package/dist/core/tool-capability-policy.d.ts.map +1 -0
  600. package/dist/core/tool-capability-policy.js +85 -0
  601. package/dist/core/tool-capability-policy.js.map +1 -0
  602. package/dist/core/tool-gate-controller.d.ts.map +1 -1
  603. package/dist/core/tool-gate-controller.js +5 -0
  604. package/dist/core/tool-gate-controller.js.map +1 -1
  605. package/dist/core/tool-protocol-controller.d.ts +91 -0
  606. package/dist/core/tool-protocol-controller.d.ts.map +1 -0
  607. package/dist/core/tool-protocol-controller.js +512 -0
  608. package/dist/core/tool-protocol-controller.js.map +1 -0
  609. package/dist/core/tool-recovery-log-records.d.ts +6 -0
  610. package/dist/core/tool-recovery-log-records.d.ts.map +1 -1
  611. package/dist/core/tool-recovery-log-records.js +13 -31
  612. package/dist/core/tool-recovery-log-records.js.map +1 -1
  613. package/dist/core/tool-selection/promotion.d.ts +54 -0
  614. package/dist/core/tool-selection/promotion.d.ts.map +1 -0
  615. package/dist/core/tool-selection/promotion.js +81 -0
  616. package/dist/core/tool-selection/promotion.js.map +1 -0
  617. package/dist/core/tool-selection/tool-performance-store.d.ts +39 -6
  618. package/dist/core/tool-selection/tool-performance-store.d.ts.map +1 -1
  619. package/dist/core/tool-selection/tool-performance-store.js +153 -110
  620. package/dist/core/tool-selection/tool-performance-store.js.map +1 -1
  621. package/dist/core/tool-selection/tool-selection-controller.d.ts +45 -0
  622. package/dist/core/tool-selection/tool-selection-controller.d.ts.map +1 -1
  623. package/dist/core/tool-selection/tool-selection-controller.js +96 -0
  624. package/dist/core/tool-selection/tool-selection-controller.js.map +1 -1
  625. package/dist/core/tools/ask-question.d.ts +124 -0
  626. package/dist/core/tools/ask-question.d.ts.map +1 -0
  627. package/dist/core/tools/ask-question.js +693 -0
  628. package/dist/core/tools/ask-question.js.map +1 -0
  629. package/dist/core/tools/bash.d.ts +18 -0
  630. package/dist/core/tools/bash.d.ts.map +1 -1
  631. package/dist/core/tools/bash.js +95 -16
  632. package/dist/core/tools/bash.js.map +1 -1
  633. package/dist/core/tools/delegate-status.d.ts +44 -2
  634. package/dist/core/tools/delegate-status.d.ts.map +1 -1
  635. package/dist/core/tools/delegate-status.js +214 -19
  636. package/dist/core/tools/delegate-status.js.map +1 -1
  637. package/dist/core/tools/delegate.d.ts +15 -13
  638. package/dist/core/tools/delegate.d.ts.map +1 -1
  639. package/dist/core/tools/delegate.js +124 -22
  640. package/dist/core/tools/delegate.js.map +1 -1
  641. package/dist/core/tools/extensionify.d.ts.map +1 -1
  642. package/dist/core/tools/extensionify.js +1 -0
  643. package/dist/core/tools/extensionify.js.map +1 -1
  644. package/dist/core/tools/goal.d.ts +94 -3
  645. package/dist/core/tools/goal.d.ts.map +1 -1
  646. package/dist/core/tools/goal.js +165 -15
  647. package/dist/core/tools/goal.js.map +1 -1
  648. package/dist/core/tools/model-fitness.d.ts +7 -0
  649. package/dist/core/tools/model-fitness.d.ts.map +1 -1
  650. package/dist/core/tools/model-fitness.js +4 -4
  651. package/dist/core/tools/model-fitness.js.map +1 -1
  652. package/dist/core/tools/orchestration-panel.d.ts +43 -0
  653. package/dist/core/tools/orchestration-panel.d.ts.map +1 -0
  654. package/dist/core/tools/orchestration-panel.js +168 -0
  655. package/dist/core/tools/orchestration-panel.js.map +1 -0
  656. package/dist/core/tools/run-process.d.ts +26 -0
  657. package/dist/core/tools/run-process.d.ts.map +1 -0
  658. package/dist/core/tools/run-process.js +138 -0
  659. package/dist/core/tools/run-process.js.map +1 -0
  660. package/dist/core/tools/shell-contract-router.d.ts +6 -1
  661. package/dist/core/tools/shell-contract-router.d.ts.map +1 -1
  662. package/dist/core/tools/shell-contract-router.js +23 -2
  663. package/dist/core/tools/shell-contract-router.js.map +1 -1
  664. package/dist/core/tools/shell-session.d.ts +89 -0
  665. package/dist/core/tools/shell-session.d.ts.map +1 -0
  666. package/dist/core/tools/shell-session.js +432 -0
  667. package/dist/core/tools/shell-session.js.map +1 -0
  668. package/dist/core/tools/task-steps.d.ts +6 -0
  669. package/dist/core/tools/task-steps.d.ts.map +1 -1
  670. package/dist/core/tools/task-steps.js +165 -8
  671. package/dist/core/tools/task-steps.js.map +1 -1
  672. package/dist/core/tools/tmux-dispatch.d.ts +84 -0
  673. package/dist/core/tools/tmux-dispatch.d.ts.map +1 -0
  674. package/dist/core/tools/tmux-dispatch.js +91 -0
  675. package/dist/core/tools/tmux-dispatch.js.map +1 -0
  676. package/dist/core/tools/windows-shell-engine.d.ts +42 -0
  677. package/dist/core/tools/windows-shell-engine.d.ts.map +1 -0
  678. package/dist/core/tools/windows-shell-engine.js +151 -0
  679. package/dist/core/tools/windows-shell-engine.js.map +1 -0
  680. package/dist/core/tools/windows-shell-state.d.ts +40 -0
  681. package/dist/core/tools/windows-shell-state.d.ts.map +1 -0
  682. package/dist/core/tools/windows-shell-state.js +59 -0
  683. package/dist/core/tools/windows-shell-state.js.map +1 -0
  684. package/dist/core/tools/worktree-sync.d.ts +24 -0
  685. package/dist/core/tools/worktree-sync.d.ts.map +1 -0
  686. package/dist/core/tools/worktree-sync.js +338 -0
  687. package/dist/core/tools/worktree-sync.js.map +1 -0
  688. package/dist/core/trust-manager.d.ts +4 -1
  689. package/dist/core/trust-manager.d.ts.map +1 -1
  690. package/dist/core/trust-manager.js +20 -2
  691. package/dist/core/trust-manager.js.map +1 -1
  692. package/dist/core/util/atomic-file.d.ts +55 -0
  693. package/dist/core/util/atomic-file.d.ts.map +1 -0
  694. package/dist/core/util/atomic-file.js +255 -0
  695. package/dist/core/util/atomic-file.js.map +1 -0
  696. package/dist/core/util/bounded-jsonl.d.ts +10 -0
  697. package/dist/core/util/bounded-jsonl.d.ts.map +1 -0
  698. package/dist/core/util/bounded-jsonl.js +75 -0
  699. package/dist/core/util/bounded-jsonl.js.map +1 -0
  700. package/dist/core/util/minimatch-cache.d.ts +33 -0
  701. package/dist/core/util/minimatch-cache.d.ts.map +1 -0
  702. package/dist/core/util/minimatch-cache.js +0 -0
  703. package/dist/core/util/minimatch-cache.js.map +1 -0
  704. package/dist/core/util/value-guards.d.ts +5 -0
  705. package/dist/core/util/value-guards.d.ts.map +1 -0
  706. package/dist/core/util/value-guards.js +12 -0
  707. package/dist/core/util/value-guards.js.map +1 -0
  708. package/dist/core/worktree-sync/codes.d.ts +227 -0
  709. package/dist/core/worktree-sync/codes.d.ts.map +1 -0
  710. package/dist/core/worktree-sync/codes.js +14 -0
  711. package/dist/core/worktree-sync/codes.js.map +1 -0
  712. package/dist/core/worktree-sync/git-engine.d.ts +156 -0
  713. package/dist/core/worktree-sync/git-engine.d.ts.map +1 -0
  714. package/dist/core/worktree-sync/git-engine.js +1191 -0
  715. package/dist/core/worktree-sync/git-engine.js.map +1 -0
  716. package/dist/core/worktree-sync/lane-gate.d.ts +75 -0
  717. package/dist/core/worktree-sync/lane-gate.d.ts.map +1 -0
  718. package/dist/core/worktree-sync/lane-gate.js +360 -0
  719. package/dist/core/worktree-sync/lane-gate.js.map +1 -0
  720. package/dist/core/worktree-sync/runtime.d.ts +47 -0
  721. package/dist/core/worktree-sync/runtime.d.ts.map +1 -0
  722. package/dist/core/worktree-sync/runtime.js +96 -0
  723. package/dist/core/worktree-sync/runtime.js.map +1 -0
  724. package/dist/core/worktree-sync/store.d.ts +69 -0
  725. package/dist/core/worktree-sync/store.d.ts.map +1 -0
  726. package/dist/core/worktree-sync/store.js +252 -0
  727. package/dist/core/worktree-sync/store.js.map +1 -0
  728. package/dist/core/worktree-sync/watcher.d.ts +29 -0
  729. package/dist/core/worktree-sync/watcher.d.ts.map +1 -0
  730. package/dist/core/worktree-sync/watcher.js +93 -0
  731. package/dist/core/worktree-sync/watcher.js.map +1 -0
  732. package/dist/index.d.ts +13 -3
  733. package/dist/index.d.ts.map +1 -1
  734. package/dist/index.js +12 -2
  735. package/dist/index.js.map +1 -1
  736. package/dist/main.d.ts.map +1 -1
  737. package/dist/main.js +179 -1
  738. package/dist/main.js.map +1 -1
  739. package/dist/migrations.d.ts +7 -0
  740. package/dist/migrations.d.ts.map +1 -1
  741. package/dist/migrations.js +197 -1
  742. package/dist/migrations.js.map +1 -1
  743. package/dist/modes/interactive/auto-learn-controller.d.ts +16 -1
  744. package/dist/modes/interactive/auto-learn-controller.d.ts.map +1 -1
  745. package/dist/modes/interactive/auto-learn-controller.js +50 -8
  746. package/dist/modes/interactive/auto-learn-controller.js.map +1 -1
  747. package/dist/modes/interactive/clipboard-input.d.ts +7 -1
  748. package/dist/modes/interactive/clipboard-input.d.ts.map +1 -1
  749. package/dist/modes/interactive/clipboard-input.js +44 -6
  750. package/dist/modes/interactive/clipboard-input.js.map +1 -1
  751. package/dist/modes/interactive/components/profile-resource-editor.d.ts.map +1 -1
  752. package/dist/modes/interactive/components/profile-resource-editor.js +23 -1
  753. package/dist/modes/interactive/components/profile-resource-editor.js.map +1 -1
  754. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  755. package/dist/modes/interactive/components/settings-selector.js +2 -2
  756. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  757. package/dist/modes/interactive/config-backup.d.ts.map +1 -1
  758. package/dist/modes/interactive/config-backup.js +5 -4
  759. package/dist/modes/interactive/config-backup.js.map +1 -1
  760. package/dist/modes/interactive/extension-ui-host.d.ts +14 -0
  761. package/dist/modes/interactive/extension-ui-host.d.ts.map +1 -1
  762. package/dist/modes/interactive/extension-ui-host.js +76 -15
  763. package/dist/modes/interactive/extension-ui-host.js.map +1 -1
  764. package/dist/modes/interactive/interactive-mode.d.ts +4 -0
  765. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  766. package/dist/modes/interactive/interactive-mode.js +67 -1
  767. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  768. package/dist/modes/interactive/key-handlers.d.ts.map +1 -1
  769. package/dist/modes/interactive/key-handlers.js +1 -1
  770. package/dist/modes/interactive/key-handlers.js.map +1 -1
  771. package/dist/modes/interactive/local-model-commands.d.ts +43 -0
  772. package/dist/modes/interactive/local-model-commands.d.ts.map +1 -1
  773. package/dist/modes/interactive/local-model-commands.js +290 -3
  774. package/dist/modes/interactive/local-model-commands.js.map +1 -1
  775. package/dist/modes/interactive/profile-menu-controller.d.ts.map +1 -1
  776. package/dist/modes/interactive/profile-menu-controller.js +7 -7
  777. package/dist/modes/interactive/profile-menu-controller.js.map +1 -1
  778. package/dist/modes/interactive/report-commands.d.ts.map +1 -1
  779. package/dist/modes/interactive/report-commands.js +21 -0
  780. package/dist/modes/interactive/report-commands.js.map +1 -1
  781. package/dist/modes/interactive/session-flow-commands.d.ts +17 -2
  782. package/dist/modes/interactive/session-flow-commands.d.ts.map +1 -1
  783. package/dist/modes/interactive/session-flow-commands.js +74 -21
  784. package/dist/modes/interactive/session-flow-commands.js.map +1 -1
  785. package/dist/modes/interactive/session-io-commands.d.ts.map +1 -1
  786. package/dist/modes/interactive/session-io-commands.js +16 -6
  787. package/dist/modes/interactive/session-io-commands.js.map +1 -1
  788. package/dist/modes/interactive/session-replacement-errors.d.ts +7 -0
  789. package/dist/modes/interactive/session-replacement-errors.d.ts.map +1 -0
  790. package/dist/modes/interactive/session-replacement-errors.js +15 -0
  791. package/dist/modes/interactive/session-replacement-errors.js.map +1 -0
  792. package/dist/modes/interactive/startup-checks.d.ts.map +1 -1
  793. package/dist/modes/interactive/startup-checks.js +1 -1
  794. package/dist/modes/interactive/startup-checks.js.map +1 -1
  795. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  796. package/dist/modes/rpc/rpc-mode.js +82 -23
  797. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  798. package/dist/modes/rpc/rpc-types.d.ts +15 -0
  799. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  800. package/dist/modes/rpc/rpc-types.js +138 -1
  801. package/dist/modes/rpc/rpc-types.js.map +1 -1
  802. package/dist/utils/clipboard-image.d.ts.map +1 -1
  803. package/dist/utils/clipboard-image.js +2 -13
  804. package/dist/utils/clipboard-image.js.map +1 -1
  805. package/dist/utils/clipboard-native.d.ts +1 -0
  806. package/dist/utils/clipboard-native.d.ts.map +1 -1
  807. package/dist/utils/clipboard-native.js.map +1 -1
  808. package/dist/utils/clipboard.d.ts +1 -0
  809. package/dist/utils/clipboard.d.ts.map +1 -1
  810. package/dist/utils/clipboard.js +52 -1
  811. package/dist/utils/clipboard.js.map +1 -1
  812. package/dist/utils/fs-watch.d.ts +11 -0
  813. package/dist/utils/fs-watch.d.ts.map +1 -1
  814. package/dist/utils/fs-watch.js +20 -2
  815. package/dist/utils/fs-watch.js.map +1 -1
  816. package/dist/utils/highlight-js-languages.d.ts +4 -0
  817. package/dist/utils/highlight-js-languages.d.ts.map +1 -0
  818. package/dist/utils/highlight-js-languages.js +573 -0
  819. package/dist/utils/highlight-js-languages.js.map +1 -0
  820. package/dist/utils/platform.d.ts +3 -0
  821. package/dist/utils/platform.d.ts.map +1 -0
  822. package/dist/utils/platform.js +8 -0
  823. package/dist/utils/platform.js.map +1 -0
  824. package/dist/utils/shell.d.ts +7 -1
  825. package/dist/utils/shell.d.ts.map +1 -1
  826. package/dist/utils/shell.js +21 -6
  827. package/dist/utils/shell.js.map +1 -1
  828. package/dist/utils/syntax-highlight.d.ts.map +1 -1
  829. package/dist/utils/syntax-highlight.js +53 -5
  830. package/dist/utils/syntax-highlight.js.map +1 -1
  831. package/dist/utils/tools-manager.d.ts.map +1 -1
  832. package/dist/utils/tools-manager.js +112 -1
  833. package/dist/utils/tools-manager.js.map +1 -1
  834. package/dist/utils/work-directory.d.ts +11 -0
  835. package/dist/utils/work-directory.d.ts.map +1 -1
  836. package/dist/utils/work-directory.js +30 -9
  837. package/dist/utils/work-directory.js.map +1 -1
  838. package/docs/UI_POLISH_ORCHESTRATION.md +44 -0
  839. package/docs/UI_QUALITY_ORCHESTRATION.md +30 -0
  840. package/docs/docs.json +4 -0
  841. package/docs/extensions.md +62 -2
  842. package/docs/harness-architecture.md +156 -0
  843. package/docs/keybindings.md +11 -1
  844. package/docs/process-matrix.md +153 -0
  845. package/docs/rpc.md +45 -2
  846. package/docs/sessions.md +15 -0
  847. package/docs/settings.md +128 -11
  848. package/docs/task-steps.md +8 -0
  849. package/docs/telemetry.md +19 -0
  850. package/docs/tmux-agent-manager.md +92 -2
  851. package/docs/ui-reference/README.md +9 -0
  852. package/docs/ui-reference/orchestration-after.txt +7 -0
  853. package/docs/ui-reference/orchestration-before.txt +7 -0
  854. package/docs/ui-reference/orchestration-reference.txt +6 -0
  855. package/docs/usage.md +14 -2
  856. package/docs/windows.md +52 -3
  857. package/docs/work-directory.md +42 -2
  858. package/docs/worktree-sync.md +250 -0
  859. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  860. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  861. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  862. package/examples/extensions/question.ts +34 -245
  863. package/examples/extensions/questionnaire.ts +41 -407
  864. package/examples/extensions/sandbox/package-lock.json +2 -2
  865. package/examples/extensions/sandbox/package.json +1 -1
  866. package/examples/extensions/with-deps/package-lock.json +2 -2
  867. package/examples/extensions/with-deps/package.json +1 -1
  868. package/npm-shrinkwrap.json +12 -12
  869. package/package.json +10 -4
  870. package/dist/core/delegation/session-worker-result.d.ts +0 -16
  871. package/dist/core/delegation/session-worker-result.d.ts.map +0 -1
  872. package/dist/core/delegation/session-worker-result.js +0 -53
  873. package/dist/core/delegation/session-worker-result.js.map +0 -1
  874. package/dist/core/delegation/worker-result.d.ts +0 -15
  875. package/dist/core/delegation/worker-result.d.ts.map +0 -1
  876. package/dist/core/delegation/worker-result.js +0 -161
  877. package/dist/core/delegation/worker-result.js.map +0 -1
  878. package/dist/core/telemetry.d.ts.map +0 -1
  879. package/dist/core/telemetry.js.map +0 -1
  880. package/docs/integration-sweep-builder-blueprint-2026-07-09.md +0 -365
  881. package/docs/integration-sweep-resume-2026-07-09.md +0 -407
@@ -32,9 +32,11 @@
32
32
  * load / unload / reconcile API and for `getAllTools` / `getToolDefinition`, and a private
33
33
  * `_refreshToolRegistry` delegation for its internal callers.
34
34
  */
35
+ import { createHash } from "node:crypto";
35
36
  import { existsSync, readFileSync } from "node:fs";
36
37
  import { isAbsolute, join } from "node:path";
37
38
  import { DEFAULT_ACTIVE_TOOL_NAMES, mapToolNamesForPlatform } from "./default-tool-surface.js";
39
+ import { acknowledgeWorkerClaimReview } from "./delegation/session-worker-claim.js";
38
40
  import { createCoreDiagnosticsToolDefinitions } from "./extensions/builtin.js";
39
41
  import { ExtensionRunner, wrapRegisteredTools, } from "./extensions/index.js";
40
42
  import { disposeExtensionEventSubscriptions } from "./extensions/loader.js";
@@ -42,23 +44,68 @@ import { emitSessionShutdownEvent } from "./extensions/runner.js";
42
44
  import { resolveCliModel } from "./model-resolver.js";
43
45
  import { evaluateSurfaceFitness } from "./model-router/fitness-gate.js";
44
46
  import { FitnessStore } from "./models/fitness-store.js";
47
+ import { describeInFlightWorkUnit, getInFlightWorkUnits } from "./reload-blockers.js";
45
48
  import { ScoutController } from "./scout-controller.js";
49
+ import { getSessionRole, isWorkerSession, WORKER_FORBIDDEN_TOOLS } from "./session-role.js";
46
50
  import { matchesResourceProfilePattern, } from "./settings-manager.js";
47
51
  import { createSyntheticSourceInfo } from "./source-info.js";
52
+ import { projectOpenTaskSteps } from "./tasks/task-projection.js";
48
53
  import { buildReflexUserPrompt, parseReflexPlan, REFLEX_INTERPRETER_SYSTEM_PROMPT, } from "./toolkit/reflex-interpreter.js";
49
54
  import { executeToolkitScript } from "./toolkit/script-runner.js";
55
+ import { createAskQuestionToolDefinition } from "./tools/ask-question.js";
50
56
  import { createContextScoutToolDefinition } from "./tools/context-scout.js";
51
57
  import { createDelegateToolDefinition } from "./tools/delegate.js";
52
58
  import { createDelegateStatusToolDefinition } from "./tools/delegate-status.js";
53
59
  import { createFindTool } from "./tools/find.js";
54
60
  import { createGoalToolDefinition } from "./tools/goal.js";
55
61
  import { createGrepTool } from "./tools/grep.js";
56
- import { createAllToolDefinitions } from "./tools/index.js";
62
+ import { allToolNames, createToolDefinition } from "./tools/index.js";
57
63
  import { createModelFitnessToolDefinition } from "./tools/model-fitness.js";
64
+ import { resolveToCwd } from "./tools/path-utils.js";
58
65
  import { createReadTool } from "./tools/read.js";
66
+ import { createRunProcessToolDefinition } from "./tools/run-process.js";
59
67
  import { createRunToolkitScriptToolDefinition } from "./tools/run-toolkit-script.js";
60
68
  import { createTaskStepsToolDefinition } from "./tools/task-steps.js";
69
+ import { dispatchTmuxWorker } from "./tools/tmux-dispatch.js";
61
70
  import { createToolDefinitionFromAgentTool } from "./tools/tool-definition-wrapper.js";
71
+ import { createWorktreeSyncToolDefinition } from "./tools/worktree-sync.js";
72
+ import { createLane } from "./worktree-sync/git-engine.js";
73
+ import { WorktreeLaneGate } from "./worktree-sync/lane-gate.js";
74
+ import { buildWorktreeSyncEngineDeps, getBoundWorktreeLaneKey } from "./worktree-sync/runtime.js";
75
+ /**
76
+ * Deterministic `addSpawnedUsage` reportId: `kind` + session id + a content hash of `identity`
77
+ * (never `Date.now`/random). Same identity on a retry of the same logical work unit yields the same
78
+ * id, so the ledger's `seenSubagentReportIds` dedupe catches a duplicate report instead of
79
+ * double-counting spend.
80
+ */
81
+ function deriveSpawnedUsageReportId(kind, sessionId, identity) {
82
+ const digest = createHash("sha256").update(identity).digest("hex").slice(0, 16);
83
+ return `${kind}:${sessionId}:${digest}`;
84
+ }
85
+ /**
86
+ * Is `toolCallId` a real, answered tool call on `sessionManager`'s active branch? A
87
+ * toolCallId is "real" iff a toolResult message on that branch responded to it -- the same
88
+ * toolResult/toolCallId match `context-pipeline.ts`'s `_buildSessionEntryIdLookup` uses, and
89
+ * branch-scoped (via `getBranch()`) so a sibling branch's tool calls never count. Exported (pure,
90
+ * no `this`) so the goal tool's `hasToolCallId` wiring below is directly testable against a real
91
+ * `SessionManager` without constructing the whole `RuntimeBuilder`.
92
+ */
93
+ export function hasAnsweredToolCallOnBranch(sessionManager, toolCallId) {
94
+ return sessionManager
95
+ .getBranch()
96
+ .some((entry) => entry.type === "message" && entry.message.role === "toolResult" && entry.message.toolCallId === toolCallId);
97
+ }
98
+ /**
99
+ * Goal-tool adapter over the canonical open-task projection. Exported (pure, no `this`) so the
100
+ * production `getOpenTaskSteps` wiring below remains directly testable without another filter.
101
+ */
102
+ export function deriveOpenTaskStepRefs(taskStepsState) {
103
+ return projectOpenTaskSteps(taskStepsState).map((step) => ({
104
+ id: step.id,
105
+ content: step.content,
106
+ ...(step.requirementIds?.length ? { requirementIds: step.requirementIds } : {}),
107
+ }));
108
+ }
62
109
  /**
63
110
  * Owns the tool-registry build and the self-modification-safe extension reload extracted from
64
111
  * {@link AgentSession}. See the module header for the snapshot-ownership and host-binding boundaries.
@@ -76,6 +123,50 @@ export class RuntimeBuilder {
76
123
  constructor(deps) {
77
124
  this.deps = deps;
78
125
  }
126
+ /**
127
+ * Resolve the construction and activation policy once for a runtime generation. This is the
128
+ * UAC choke point: callers must consult it before invoking a tool factory, not merely before
129
+ * placing an already-created definition in the live registry.
130
+ */
131
+ _createToolAccessPolicy() {
132
+ const role = getSessionRole();
133
+ const configuredAllowedToolNames = this.deps.getAllowedToolNames();
134
+ const allowedToolNames = configuredAllowedToolNames
135
+ ? new Set(mapToolNamesForPlatform([...configuredAllowedToolNames]))
136
+ : undefined;
137
+ const configuredExcludedToolNames = this.deps.getExcludedToolNames();
138
+ const excludedToolNames = configuredExcludedToolNames
139
+ ? new Set(mapToolNamesForPlatform([...configuredExcludedToolNames]))
140
+ : undefined;
141
+ const configuredToolProfileFilter = this.deps.getToolProfileFilter();
142
+ const toolProfileFilter = configuredToolProfileFilter
143
+ ? {
144
+ allow: mapToolNamesForPlatform(configuredToolProfileFilter.allow),
145
+ block: mapToolNamesForPlatform(configuredToolProfileFilter.block),
146
+ }
147
+ : undefined;
148
+ return {
149
+ allowedToolNames,
150
+ toolProfileFilter,
151
+ allows: (name) => {
152
+ // Strict worker UAC ceiling wins over every explicit grant.
153
+ if (role === "worker" && WORKER_FORBIDDEN_TOOLS.has(name))
154
+ return false;
155
+ if (allowedToolNames && !allowedToolNames.has(name))
156
+ return false;
157
+ if (excludedToolNames?.has(name))
158
+ return false;
159
+ if (!toolProfileFilter)
160
+ return true;
161
+ if (toolProfileFilter.allow.length > 0 && !matchesResourceProfilePattern(name, toolProfileFilter.allow)) {
162
+ return false;
163
+ }
164
+ if (matchesResourceProfilePattern(name, toolProfileFilter.block))
165
+ return false;
166
+ return true;
167
+ },
168
+ };
169
+ }
79
170
  async _runContextScout(query, maxTurns, artifactStore) {
80
171
  const cwd = this.deps.getCwd();
81
172
  const controller = new ScoutController({
@@ -89,6 +180,9 @@ export class RuntimeBuilder {
89
180
  streamFn: this.deps.getAgent().streamFn,
90
181
  fileExists: (path) => existsSync(resolveCwdPath(cwd, path)),
91
182
  countLines: (path) => countFileLines(resolveCwdPath(cwd, path)),
183
+ // Lets the scout register itself in the reload-gate quiesce registry (see
184
+ // reload-blockers.ts) for its own agentDir — the same key `_assertReloadQuiescent` reads.
185
+ getAgentDir: () => this.deps.getAgentDir(),
92
186
  });
93
187
  return controller.run(query, maxTurns);
94
188
  }
@@ -129,35 +223,9 @@ export class RuntimeBuilder {
129
223
  // capability/profile-filtered, so feeding it back through setActiveToolsByName would
130
224
  // permanently shrink what a later switch to a larger model (or permissive profile) restores.
131
225
  const previousActiveToolNames = mapToolNamesForPlatform(this.deps.getRequestedActiveToolNames() ?? this.deps.getActiveToolNames());
132
- const configuredAllowedToolNames = this.deps.getAllowedToolNames();
133
- const allowedToolNames = configuredAllowedToolNames
134
- ? new Set(mapToolNamesForPlatform([...configuredAllowedToolNames]))
135
- : undefined;
136
- const configuredExcludedToolNames = this.deps.getExcludedToolNames();
137
- const excludedToolNames = configuredExcludedToolNames
138
- ? new Set(mapToolNamesForPlatform([...configuredExcludedToolNames]))
139
- : undefined;
140
- const configuredToolProfileFilter = this.deps.getToolProfileFilter();
141
- const toolProfileFilter = configuredToolProfileFilter
142
- ? {
143
- allow: mapToolNamesForPlatform(configuredToolProfileFilter.allow),
144
- block: mapToolNamesForPlatform(configuredToolProfileFilter.block),
145
- }
146
- : undefined;
147
- const isAllowedTool = (name) => {
148
- if (allowedToolNames && !allowedToolNames.has(name))
149
- return false;
150
- if (excludedToolNames?.has(name))
151
- return false;
152
- if (!toolProfileFilter)
153
- return true;
154
- if (toolProfileFilter.allow.length > 0 && !matchesResourceProfilePattern(name, toolProfileFilter.allow)) {
155
- return false;
156
- }
157
- if (matchesResourceProfilePattern(name, toolProfileFilter.block))
158
- return false;
159
- return true;
160
- };
226
+ const toolAccess = this._createToolAccessPolicy();
227
+ const { allowedToolNames, toolProfileFilter } = toolAccess;
228
+ const isAllowedTool = toolAccess.allows;
161
229
  const registeredTools = this.deps.getExtensionRunner().getAllRegisteredTools();
162
230
  const allCustomTools = [
163
231
  ...registeredTools,
@@ -262,7 +330,7 @@ export class RuntimeBuilder {
262
330
  nextActiveToolNames.push(toolName);
263
331
  }
264
332
  }
265
- // G13: an explicit grant that binds to NO registered tool is a silent no-op — typo'd
333
+ // An explicit grant that binds to NO registered tool is a silent no-op — typo'd
266
334
  // name, or the owning extension is not granted/loaded. Surface it.
267
335
  this.deps.setUnboundToolGrantWarnings(explicitAllowPatterns
268
336
  .filter((pattern) => !boundPatterns.has(pattern))
@@ -371,95 +439,252 @@ export class RuntimeBuilder {
371
439
  const shellCommandPrefix = settingsManager.getShellCommandPrefix();
372
440
  const shellPath = settingsManager.getShellPath();
373
441
  const baseToolsOverride = this.deps.getBaseToolsOverride();
442
+ const toolAccess = this._createToolAccessPolicy();
374
443
  // Artifact-producing tools must not emit a "Full output: artifact tool-output:<id>" handle
375
444
  // that nothing can resolve. If artifact_retrieve is explicitly excluded/blocked/outside
376
445
  // an active allowlist, don't hand grep/find/run_toolkit_script an artifact store at all:
377
446
  // they fall back to their bounded preview/truncation behavior, with no payload/meta files
378
447
  // ever written and no retrieval promise made.
379
- const toolArtifactStore = this.deps.isToolOrCommandAllowedByProfile("artifact_retrieve")
380
- ? this.deps.getToolArtifactStore()
381
- : undefined;
382
- const baseToolDefinitions = baseToolsOverride
383
- ? Object.fromEntries(Object.entries(baseToolsOverride).map(([name, tool]) => [name, createToolDefinitionFromAgentTool(tool)]))
384
- : createAllToolDefinitions(this.deps.getCwd(), {
385
- read: { autoResizeImages },
386
- bash: { commandPrefix: shellCommandPrefix, shellPath },
387
- grep: { artifactStore: toolArtifactStore },
388
- find: { artifactStore: toolArtifactStore },
389
- artifact_retrieve: { artifactStore: toolArtifactStore },
390
- });
391
- this._baseToolDefinitions = new Map(Object.entries(baseToolDefinitions).map(([name, tool]) => [name, tool]));
448
+ const toolArtifactStore = !baseToolsOverride && toolAccess.allows("artifact_retrieve") ? this.deps.getToolArtifactStore() : undefined;
449
+ const toolOptions = {
450
+ read: { autoResizeImages },
451
+ bash: {
452
+ commandPrefix: shellCommandPrefix,
453
+ shellPath,
454
+ sessionKey: this.deps.getShellSessionKey(),
455
+ platform: process.platform,
456
+ },
457
+ grep: { artifactStore: toolArtifactStore },
458
+ find: { artifactStore: toolArtifactStore },
459
+ artifact_retrieve: { artifactStore: toolArtifactStore },
460
+ };
461
+ this._baseToolDefinitions = baseToolsOverride
462
+ ? new Map(Object.entries(baseToolsOverride)
463
+ .filter(([name]) => toolAccess.allows(name))
464
+ .map(([name, tool]) => [name, createToolDefinitionFromAgentTool(tool)]))
465
+ : new Map([...allToolNames]
466
+ .filter((name) => toolAccess.allows(name))
467
+ .map((name) => [name, createToolDefinition(name, this.deps.getCwd(), toolOptions)]));
392
468
  if (!baseToolsOverride) {
393
- for (const definition of createCoreDiagnosticsToolDefinitions(() => this.deps.getActiveToolNames(), () => this.getAllTools(), (messages) => this.deps.getContextGcReport(messages), () => this.deps.getMemoryAuditDiagnostics())) {
394
- this._baseToolDefinitions.set(definition.name, definition);
469
+ if (toolAccess.allows("run_process")) {
470
+ const orchestrationProfile = this.deps.getOrchestrationProfile?.();
471
+ if (orchestrationProfile?.executionPolicy) {
472
+ this._baseToolDefinitions.set("run_process", createRunProcessToolDefinition(this.deps.getCwd(), {
473
+ policy: orchestrationProfile.executionPolicy,
474
+ maxWallClockMs: orchestrationProfile.budget.maxWallClockMs ?? 0,
475
+ }));
476
+ }
395
477
  }
396
- const goalToolDefinition = createGoalToolDefinition({
397
- getGoalState: () => this.deps.getGoalStateSnapshot(),
398
- saveGoalState: (state) => {
399
- this.deps.saveGoalStateSnapshot(state);
400
- },
401
- });
402
- this._baseToolDefinitions.set(goalToolDefinition.name, goalToolDefinition);
403
- const taskStepsToolDefinition = createTaskStepsToolDefinition({
404
- getTaskStepsState: () => this.deps.getTaskStepsStateSnapshot(),
405
- saveTaskStepsState: (state) => {
406
- this.deps.saveTaskStepsStateSnapshot(state);
407
- },
408
- });
409
- this._baseToolDefinitions.set(taskStepsToolDefinition.name, taskStepsToolDefinition);
410
- const delegateToolDefinition = createDelegateToolDefinition({
411
- startWorkerDelegation: (args) => this.deps.startWorkerDelegation(args),
412
- runWorkerDelegation: (args) => this.deps.runWorkerDelegationOnce(args),
413
- });
414
- const delegateStatusToolDefinition = createDelegateStatusToolDefinition({
415
- getLaneRecords: () => this.deps.getWorkerLaneRecords(),
416
- getWorkerResultSnapshots: () => this.deps.getWorkerResultSnapshots(),
478
+ if (toolAccess.allows("context_audit")) {
479
+ for (const definition of createCoreDiagnosticsToolDefinitions(() => this.deps.getActiveToolNames(), () => this.getAllTools(), (messages) => this.deps.getContextGcReport(messages), () => this.deps.getMemoryAuditDiagnostics())) {
480
+ this._baseToolDefinitions.set(definition.name, definition);
481
+ }
482
+ }
483
+ // Hoisted above the goal-tool registration (rather than declared only inside the
484
+ // worktreeSync-enabled block further below) so the SAME settings/deps factory backs both
485
+ // the goal->tmux lane-first dispatch dep (`createLaneWorktree`, immediately below) and the
486
+ // `worktree_sync` tool registration later in this method -- one source of truth, no drift.
487
+ const worktreeSyncSettings = toolAccess.allows("goal") || toolAccess.allows("worktree_sync")
488
+ ? settingsManager.getWorktreeSyncSettings()
489
+ : undefined;
490
+ const worktreeSyncEngineDeps = () => buildWorktreeSyncEngineDeps({
491
+ cwd: this.deps.getCwd(),
492
+ agentDir: this.deps.getAgentDir(),
493
+ settingsManager: this.deps.getSettingsManager(),
494
+ sessionId: this.deps.getSessionManager().getSessionId(),
417
495
  });
418
- this._baseToolDefinitions.set(delegateToolDefinition.name, delegateToolDefinition);
419
- this._baseToolDefinitions.set(delegateStatusToolDefinition.name, delegateStatusToolDefinition);
496
+ if (toolAccess.allows("goal")) {
497
+ const goalToolDefinition = createGoalToolDefinition({
498
+ getGoalState: () => this.deps.getGoalStateSnapshot(),
499
+ saveGoalState: (state) => {
500
+ this.deps.saveGoalStateSnapshot(state);
501
+ },
502
+ // kind:"tool" evidence refs verify against real session records.
503
+ hasToolCallId: (toolCallId) => hasAnsweredToolCallOnBranch(this.deps.getSessionManager(), toolCallId),
504
+ // kind:"worker" evidence refs verify against the SAME live lane/claim accessors the
505
+ // delegate_status tool already uses below -- live wiring (these were declared optional
506
+ // and read-defensive on the goal-tool deps type).
507
+ getLaneRecords: () => this.deps.getWorkerLaneRecords(),
508
+ getWorkerClaimSnapshots: () => this.deps.getWorkerClaimSnapshots(),
509
+ // dispatch_worker's tool-layer side effect for the default (in_process) route: starts a
510
+ // real in-process worker lane through the SAME starter the delegate tool uses (below),
511
+ // adapted from its `{started:true;record}|{started:false;skipReason}` shape onto this
512
+ // tool's narrower `{laneId}|{skipReason}` shape.
513
+ startWorkerDelegation: (args) => {
514
+ const outcome = this.deps.startWorkerDelegation({ instructions: args.instructions });
515
+ return outcome.started ? { laneId: outcome.record.laneId } : { skipReason: outcome.skipReason };
516
+ },
517
+ // dispatch_worker's tool-layer side effect for `dispatchTarget:"tmux"`: core structurally
518
+ // invokes the SAME tmux_agent_manager fire_task call the model itself would make (no
519
+ // extension change, no faked launch/laneId) -- see tmux-dispatch.ts's doc comment.
520
+ dispatchTmuxWorker: (args) => dispatchTmuxWorker({
521
+ getToolDefinition: (name) => this.getToolDefinition(name),
522
+ createExtensionContext: () => this.deps.getExtensionRunner().createContext(),
523
+ resolveManagedLaneId: (id) => this.deps.resolveManagedLaneId(id),
524
+ getGoalId: () => this.deps.getGoalStateSnapshot()?.goalId,
525
+ evaluateWorkerLaneRefusal: () => this.deps.getLaneWorkerRefusal(),
526
+ // Lane-first dispatch, wired ONLY when worktree-sync is enabled -- absent otherwise,
527
+ // so a disabled/default session gets the existing byte-identical fire_task params.
528
+ createLaneWorktree: worktreeSyncSettings?.enabled
529
+ ? async (laneArgs) => {
530
+ const created = await createLane(worktreeSyncEngineDeps(), {
531
+ ...(laneArgs.goalId !== undefined ? { goalId: laneArgs.goalId } : {}),
532
+ requirementId: laneArgs.requirementId,
533
+ });
534
+ // Never fake a lane: any non-"ok" engine code (max lanes, invalid key, git
535
+ // error, ...) is refused, mapped by the caller onto the stable
536
+ // "worktree_create_failed" skip reason before any fire_task call runs.
537
+ if (created.code !== "ok")
538
+ return { skipReason: created.code };
539
+ return { laneKey: created.lane.laneKey, worktreePath: created.lane.worktreePath };
540
+ }
541
+ : undefined,
542
+ }, args),
543
+ cwd: () => this.deps.getCwd(),
544
+ // Reuses the already branch-scoped getTaskStepsStateSnapshot dep -- no new
545
+ // SessionManager access needed for the cross-visibility nudge.
546
+ getOpenTaskSteps: () => deriveOpenTaskStepRefs(this.deps.getTaskStepsStateSnapshot()),
547
+ });
548
+ this._baseToolDefinitions.set(goalToolDefinition.name, goalToolDefinition);
549
+ }
550
+ if (toolAccess.allows("task_steps")) {
551
+ const taskStepsToolDefinition = createTaskStepsToolDefinition({
552
+ getTaskStepsState: () => this.deps.getTaskStepsStateSnapshot(),
553
+ saveTaskStepsState: (state) => {
554
+ this.deps.saveTaskStepsStateSnapshot(state);
555
+ },
556
+ });
557
+ this._baseToolDefinitions.set(taskStepsToolDefinition.name, taskStepsToolDefinition);
558
+ }
559
+ if (toolAccess.allows("ask_question")) {
560
+ const askQuestionToolDefinition = createAskQuestionToolDefinition({
561
+ sessionManager: this.deps.getSessionManager(),
562
+ artifactStore: toolArtifactStore,
563
+ getImageStore: () => this.deps.getSessionImageStore(),
564
+ });
565
+ this._baseToolDefinitions.set(askQuestionToolDefinition.name, askQuestionToolDefinition);
566
+ }
567
+ if (toolAccess.allows("delegate")) {
568
+ const delegateToolDefinition = createDelegateToolDefinition({
569
+ startWorkerDelegation: (args) => this.deps.startWorkerDelegation(args),
570
+ runWorkerDelegation: (args) => this.deps.runWorkerDelegationOnce(args),
571
+ orchestrationProfiles: this.deps.getOrchestrationProfileCatalog(),
572
+ });
573
+ this._baseToolDefinitions.set(delegateToolDefinition.name, delegateToolDefinition);
574
+ }
575
+ if (toolAccess.allows("delegate_status")) {
576
+ const delegateStatusToolDefinition = createDelegateStatusToolDefinition({
577
+ getLaneRecords: () => this.deps.getWorkerLaneRecords(),
578
+ getWorkerClaimSnapshots: () => this.deps.getWorkerClaimSnapshots(),
579
+ // Durable ack persists straight through the session log; routed here (rather than
580
+ // a new agent-session dep) because getSessionManager() is already a stable, generic
581
+ // passthrough dep, so no other package needs to change for this to work.
582
+ acknowledgeWorkerReview: (requestId) => acknowledgeWorkerClaimReview(this.deps.getSessionManager(), requestId),
583
+ });
584
+ this._baseToolDefinitions.set(delegateStatusToolDefinition.name, delegateStatusToolDefinition);
585
+ }
420
586
  // Registered but not default-active: probes spend tokens on the probed model, so
421
587
  // activation is an explicit choice (settings/profile/setActiveTools or /autonomy fitness).
422
- const modelFitnessToolDefinition = createModelFitnessToolDefinition({
423
- runProbe: (args) => this.deps.runModelFitness(args),
424
- });
425
- this._baseToolDefinitions.set(modelFitnessToolDefinition.name, modelFitnessToolDefinition);
426
- if (settingsManager.getScoutSettings().enabled) {
588
+ if (toolAccess.allows("model_fitness")) {
589
+ const modelFitnessToolDefinition = createModelFitnessToolDefinition({
590
+ runProbe: (args) => this.deps.runModelFitness(args),
591
+ });
592
+ this._baseToolDefinitions.set(modelFitnessToolDefinition.name, modelFitnessToolDefinition);
593
+ }
594
+ if (toolAccess.allows("context_scout") && settingsManager.getScoutSettings().enabled) {
427
595
  const contextScoutToolDefinition = createContextScoutToolDefinition({
428
596
  runScout: (input) => this._runContextScout(input.query, input.maxTurns, toolArtifactStore),
429
597
  });
430
598
  this._baseToolDefinitions.set(contextScoutToolDefinition.name, contextScoutToolDefinition);
431
599
  }
432
- const runToolkitScriptToolDefinition = createRunToolkitScriptToolDefinition({
433
- getScripts: () => this.deps.getSettingsManager().getToolkitScripts(),
434
- execute: (script, scriptArgs) => executeToolkitScript({ script, scriptArgs, cwd: this.deps.getCwd() }),
435
- artifactStore: toolArtifactStore,
436
- // Reflex brain (fitness-gated local model): resolves ambiguous requests into a
437
- // registry pick. Best-effort — absent/unfit brain keeps the shortlist behavior.
438
- interpret: async (request, scripts) => {
439
- const model = this.deps.resolveCurationModelIfFit();
440
- if (!model)
441
- return undefined;
442
- const completion = await this.deps.runIsolatedCompletion({
443
- systemPrompt: REFLEX_INTERPRETER_SYSTEM_PROMPT,
444
- messages: [
445
- {
446
- role: "user",
447
- content: [{ type: "text", text: buildReflexUserPrompt(request, scripts) }],
448
- timestamp: Date.now(),
449
- },
450
- ],
451
- model,
452
- thinkingLevel: "off",
453
- maxTokens: 256,
454
- cacheRetention: "short",
600
+ if (toolAccess.allows("run_toolkit_script")) {
601
+ const runToolkitScriptToolDefinition = createRunToolkitScriptToolDefinition({
602
+ getScripts: () => this.deps.getSettingsManager().getToolkitScripts(),
603
+ execute: (script, scriptArgs) => executeToolkitScript({ script, scriptArgs, cwd: this.deps.getCwd() }),
604
+ artifactStore: toolArtifactStore,
605
+ // Reflex brain (fitness-gated local model): resolves ambiguous requests into a
606
+ // registry pick. Best-effort — absent/unfit brain keeps the shortlist behavior.
607
+ interpret: async (request, scripts) => {
608
+ const model = this.deps.resolveCurationModelIfFit();
609
+ if (!model)
610
+ return undefined;
611
+ const completion = await this.deps.runIsolatedCompletion({
612
+ systemPrompt: REFLEX_INTERPRETER_SYSTEM_PROMPT,
613
+ messages: [
614
+ {
615
+ role: "user",
616
+ content: [{ type: "text", text: buildReflexUserPrompt(request, scripts) }],
617
+ timestamp: Date.now(),
618
+ },
619
+ ],
620
+ model,
621
+ thinkingLevel: "off",
622
+ maxTokens: 256,
623
+ cacheRetention: "short",
624
+ // Stable per-lane synthetic affinity key so repeat ambiguous-request
625
+ // interpretations hit the same cache-warm backend.
626
+ laneKind: "toolkit-brain",
627
+ });
628
+ if (completion.usage.cost.total > 0 || completion.usage.totalTokens > 0) {
629
+ // `reportId` keyed on the ambiguous request text driving THIS interpretation —
630
+ // stable across a retry of the same tool call, distinct across genuinely
631
+ // different requests.
632
+ const reportId = deriveSpawnedUsageReportId("toolkit-brain", this.deps.getSessionManager().getSessionId(), request);
633
+ this.deps.addSpawnedUsage(completion.usage, { label: "toolkit-brain", reportId });
634
+ }
635
+ return parseReflexPlan(completion.text);
636
+ },
637
+ });
638
+ this._baseToolDefinitions.set(runToolkitScriptToolDefinition.name, runToolkitScriptToolDefinition);
639
+ }
640
+ // Worktree-sync (opt-in): the closed-action lane workflow tool, plus -- for a session
641
+ // launched lane-bound (PI_WORKTREE_LANE) -- the G8/G10 lane gate wrapped UNDER the
642
+ // file-mutation tools (edit/write, plus cooperative bash only for interactive lanes), so a sync_required lane fails closed with the
643
+ // exact recovery step rather than relying on prompt compliance. `worktreeSyncSettings` /
644
+ // `worktreeSyncEngineDeps` are hoisted above (declared before the goal-tool registration)
645
+ // so the goal->tmux lane-first dispatch dep and this tool share one settings/deps source.
646
+ if (toolAccess.allows("worktree_sync") && worktreeSyncSettings?.enabled) {
647
+ const worktreeSyncToolDefinition = createWorktreeSyncToolDefinition({
648
+ engineDeps: worktreeSyncEngineDeps,
649
+ settings: () => this.deps.getSettingsManager().getWorktreeSyncSettings(),
650
+ boundLaneKey: () => getBoundWorktreeLaneKey(),
651
+ isWorker: () => isWorkerSession(),
652
+ });
653
+ this._baseToolDefinitions.set(worktreeSyncToolDefinition.name, worktreeSyncToolDefinition);
654
+ const boundLaneKey = getBoundWorktreeLaneKey();
655
+ if (boundLaneKey) {
656
+ const laneGate = new WorktreeLaneGate({
657
+ laneKey: boundLaneKey,
658
+ engineDeps: worktreeSyncEngineDeps,
659
+ policy: () => this.deps.getSettingsManager().getWorktreeSyncSettings().syncPolicy,
660
+ hardShell: isWorkerSession(),
661
+ trustedGateCommand: () => this.deps.getSettingsManager().getWorktreeSyncSettings().gateCommand,
455
662
  });
456
- if (completion.usage.cost.total > 0 || completion.usage.totalTokens > 0) {
457
- this.deps.addSpawnedUsage(completion.usage, { label: "toolkit-brain" });
663
+ for (const gatedToolName of ["edit", "write", "bash"]) {
664
+ const original = this._baseToolDefinitions.get(gatedToolName);
665
+ if (!original)
666
+ continue;
667
+ this._baseToolDefinitions.set(gatedToolName, {
668
+ ...original,
669
+ execute: async (toolCallId, params, signal, onUpdate, ctx) => {
670
+ const bashCommand = gatedToolName === "bash" ? params?.command : undefined;
671
+ const rawPath = gatedToolName === "edit" || gatedToolName === "write"
672
+ ? params?.path
673
+ : undefined;
674
+ const targetPath = rawPath !== undefined ? resolveToCwd(rawPath, this.deps.getCwd()) : undefined;
675
+ const check = await laneGate.checkMutation(gatedToolName, bashCommand, targetPath);
676
+ if (!check.allowed) {
677
+ return {
678
+ content: [{ type: "text", text: check.message }],
679
+ details: { code: check.code },
680
+ };
681
+ }
682
+ return original.execute(toolCallId, params, signal, onUpdate, ctx);
683
+ },
684
+ });
458
685
  }
459
- return parseReflexPlan(completion.text);
460
- },
461
- });
462
- this._baseToolDefinitions.set(runToolkitScriptToolDefinition.name, runToolkitScriptToolDefinition);
686
+ }
687
+ }
463
688
  }
464
689
  const extensionsResult = this.deps.getResourceLoader().getExtensions();
465
690
  if (options.flagValues) {
@@ -482,10 +707,21 @@ export class RuntimeBuilder {
482
707
  throw error;
483
708
  }
484
709
  this.deps.applyExtensionBindings(runner);
710
+ const boundLaneKey = getBoundWorktreeLaneKey();
711
+ const hardLaneWorker = boundLaneKey !== undefined && isWorkerSession();
712
+ const explicitlyRequestedTools = options.activeToolNames ?? (baseToolsOverride ? Object.keys(baseToolsOverride) : undefined);
713
+ if (hardLaneWorker && explicitlyRequestedTools?.includes("bash")) {
714
+ throw new Error("hard lane workers cannot request unrestricted bash; use typed worktree_sync actions");
715
+ }
485
716
  const defaultActiveToolNames = mapToolNamesForPlatform(baseToolsOverride
486
717
  ? Object.keys(baseToolsOverride)
487
718
  : [...DEFAULT_ACTIVE_TOOL_NAMES, ...(settingsManager.getScoutSettings().enabled ? ["context_scout"] : [])]);
488
- const baseActiveToolNames = mapToolNamesForPlatform(options.activeToolNames ?? defaultActiveToolNames);
719
+ const baseActiveToolNames = mapToolNamesForPlatform(options.activeToolNames ?? defaultActiveToolNames).filter((name) => !hardLaneWorker || name !== "bash");
720
+ if (hardLaneWorker &&
721
+ settingsManager.getWorktreeSyncSettings().enabled &&
722
+ !baseActiveToolNames.includes("worktree_sync")) {
723
+ baseActiveToolNames.push("worktree_sync");
724
+ }
489
725
  this.refreshToolRegistry({
490
726
  activeToolNames: baseActiveToolNames,
491
727
  includeAllExtensionTools: options.includeAllExtensionTools,
@@ -525,13 +761,29 @@ export class RuntimeBuilder {
525
761
  this._reloadRequested = false;
526
762
  }
527
763
  }
528
- async _reloadOnce() {
764
+ /**
765
+ * Unified reload-gate quiescence check: refuses the caller's action (message-prefixed by
766
+ * `action`) while the agent is streaming, is compacting, or ANY background work unit is still
767
+ * registered in the in-process quiesce registry — background lanes (research/worker/
768
+ * model-fitness), a context-scout run, or an isolated completion (see reload-blockers.ts). Every
769
+ * live-op entry point below calls this so they refuse identically; this is a synchronous refusal
770
+ * (not a wait/poll) — callers retry via the same coalescing `reload()` already provides.
771
+ */
772
+ _assertReloadQuiescent(action) {
529
773
  if (this.deps.isStreaming()) {
530
- throw new Error("Cannot reload while the agent is streaming or a tool call is active");
774
+ throw new Error(`Cannot ${action} while the agent is streaming or a tool call is active`);
531
775
  }
532
776
  if (this.deps.isCompacting()) {
533
- throw new Error("Cannot reload while context compaction or branch summarization is active");
777
+ throw new Error(`Cannot ${action} while context compaction or branch summarization is active`);
778
+ }
779
+ const units = getInFlightWorkUnits(this.deps.getAgentDir());
780
+ if (units.length > 0) {
781
+ const summary = units.map(describeInFlightWorkUnit).join(", ");
782
+ throw new Error(`Cannot ${action} while background work is in flight: ${summary}`);
534
783
  }
784
+ }
785
+ async _reloadOnce() {
786
+ this._assertReloadQuiescent("reload");
535
787
  const previousRunner = this.deps.getExtensionRunner();
536
788
  const snapshot = this._createReloadRuntimeSnapshot();
537
789
  // Preserve the pre-filter tool REQUEST across the rebuild, not the capability/profile-filtered
@@ -600,6 +852,9 @@ export class RuntimeBuilder {
600
852
  await this.deps.getResourceLoader().commitReload?.();
601
853
  // Re-derive the memory subsystem from the reloaded settings/providers.
602
854
  await this.deps.initializeMemory();
855
+ // This generation has fully committed (no rollback below this point), so any local
856
+ // runtime the host no longer routes to under the new configuration can be stopped now.
857
+ this.deps.reconcileLocalRuntimes?.();
603
858
  }
604
859
  catch (error) {
605
860
  offReloadErrors?.();
@@ -618,12 +873,7 @@ export class RuntimeBuilder {
618
873
  * Falls back to full reload on error.
619
874
  */
620
875
  async unloadExtensionLive(extensionPath) {
621
- if (this.deps.isStreaming()) {
622
- throw new Error("Cannot unload extension while the agent is streaming or a tool call is active");
623
- }
624
- if (this.deps.isCompacting()) {
625
- throw new Error("Cannot unload extension while context compaction or branch summarization is active");
626
- }
876
+ this._assertReloadQuiescent("unload extension");
627
877
  const ext = this.deps.getResourceLoader().getLoadedExtension(extensionPath);
628
878
  if (!ext) {
629
879
  return; // Nothing to unload
@@ -682,11 +932,9 @@ export class RuntimeBuilder {
682
932
  * Falls back to full reload on error.
683
933
  */
684
934
  async loadExtensionLive(extensionPath) {
685
- if (this.deps.isStreaming()) {
686
- throw new Error("Cannot load extension while the agent is streaming or a tool call is active");
687
- }
688
- if (this.deps.isCompacting()) {
689
- throw new Error("Cannot load extension while context compaction or branch summarization is active");
935
+ this._assertReloadQuiescent("load extension");
936
+ if (!this.deps.getSettingsManager().isResourceAllowedByProfile("extensions", extensionPath)) {
937
+ throw new Error(`Cannot load extension outside the active resource profile: ${extensionPath}`);
690
938
  }
691
939
  const previousRunner = this.deps.getExtensionRunner();
692
940
  try {
@@ -728,12 +976,7 @@ export class RuntimeBuilder {
728
976
  * Falls back to full reload if any individual load/unload fails.
729
977
  */
730
978
  async reconcileLoadedExtensions() {
731
- if (this.deps.isStreaming()) {
732
- throw new Error("Cannot reconcile extensions while the agent is streaming or a tool call is active");
733
- }
734
- if (this.deps.isCompacting()) {
735
- throw new Error("Cannot reconcile extensions while context compaction or branch summarization is active");
736
- }
979
+ this._assertReloadQuiescent("reconcile extensions");
737
980
  try {
738
981
  // Get all discoverable extension paths
739
982
  const allDiscoverablePaths = await this.deps.getResourceLoader().getDiscoverableExtensionPaths();