@abot-ai/runtime 1.9.0 → 2.0.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 (506) hide show
  1. package/README.md +5 -1
  2. package/dist/scripts/add-runtime-model.js +11 -5
  3. package/dist/scripts/init-runtime.js +15 -10
  4. package/dist/scripts/runtime-model-addition.js +6 -1
  5. package/dist/scripts/runtime-setup-command-options.d.ts +11 -0
  6. package/dist/scripts/runtime-setup-command-options.js +41 -0
  7. package/dist/scripts/runtime-setup-files.d.ts +3 -2
  8. package/dist/scripts/runtime-setup-files.js +19 -4
  9. package/dist/scripts/runtime-setup-model-options.d.ts +8 -0
  10. package/dist/scripts/runtime-setup-model-options.js +40 -0
  11. package/dist/scripts/runtime-setup-presentation.js +2 -2
  12. package/dist/scripts/runtime-setup-provider-options.d.ts +4 -0
  13. package/dist/scripts/runtime-setup-provider-options.js +20 -0
  14. package/dist/src/model-gateway/client/contracts.d.ts +3 -0
  15. package/dist/src/model-gateway/client/input-token-count.js +36 -16
  16. package/dist/src/model-gateway/client/message-projection.d.ts +2 -0
  17. package/dist/src/model-gateway/client/message-projection.js +1 -0
  18. package/dist/src/model-gateway/client/options.js +1 -1
  19. package/dist/src/model-gateway/client/raw.js +1 -0
  20. package/dist/src/model-gateway/index.d.ts +1 -1
  21. package/dist/src/model-gateway/observability/input-token-count-diagnostics.d.ts +26 -0
  22. package/dist/src/model-gateway/observability/input-token-count-diagnostics.js +178 -0
  23. package/dist/src/model-gateway/policy/invocation-policy.d.ts +1 -3
  24. package/dist/src/model-gateway/policy/invocation-policy.js +3 -30
  25. package/dist/src/model-gateway/policy/reasoning-mode-budget.d.ts +5 -0
  26. package/dist/src/model-gateway/policy/reasoning-mode-budget.js +13 -0
  27. package/dist/src/model-gateway/policy/reasoning-policy.d.ts +10 -0
  28. package/dist/src/model-gateway/policy/reasoning-policy.js +124 -0
  29. package/dist/src/model-gateway/protocol/openai-embedding-response.d.ts +1 -0
  30. package/dist/src/model-gateway/protocol/openai-embedding-response.js +28 -0
  31. package/dist/src/model-gateway/protocol/sse-data.d.ts +9 -0
  32. package/dist/src/model-gateway/protocol/sse-data.js +67 -0
  33. package/dist/src/model-gateway/providers/envelope-budget.js +10 -1
  34. package/dist/src/model-gateway/providers/llamacpp/adapter.d.ts +2 -0
  35. package/dist/src/model-gateway/providers/llamacpp/adapter.js +79 -0
  36. package/dist/src/model-gateway/providers/llamacpp/connection.d.ts +9 -0
  37. package/dist/src/model-gateway/providers/llamacpp/connection.js +73 -0
  38. package/dist/src/model-gateway/providers/llamacpp/diagnostics.d.ts +2 -0
  39. package/dist/src/model-gateway/providers/llamacpp/diagnostics.js +17 -0
  40. package/dist/src/model-gateway/providers/llamacpp/embeddings.d.ts +2 -0
  41. package/dist/src/model-gateway/providers/llamacpp/embeddings.js +56 -0
  42. package/dist/src/model-gateway/providers/llamacpp/input-token-count.d.ts +3 -0
  43. package/dist/src/model-gateway/providers/llamacpp/input-token-count.js +59 -0
  44. package/dist/src/model-gateway/providers/llamacpp/message-projection.d.ts +2 -0
  45. package/dist/src/model-gateway/providers/llamacpp/message-projection.js +33 -0
  46. package/dist/src/model-gateway/providers/llamacpp/payload.d.ts +2 -0
  47. package/dist/src/model-gateway/providers/llamacpp/payload.js +44 -0
  48. package/dist/src/model-gateway/providers/llamacpp/response-lifetime.d.ts +1 -0
  49. package/dist/src/model-gateway/providers/llamacpp/response-lifetime.js +56 -0
  50. package/dist/src/model-gateway/providers/llamacpp/schema-format.d.ts +2 -0
  51. package/dist/src/model-gateway/providers/llamacpp/schema-format.js +29 -0
  52. package/dist/src/model-gateway/providers/llamacpp/settings.d.ts +9 -0
  53. package/dist/src/model-gateway/providers/llamacpp/settings.js +25 -0
  54. package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.d.ts +10 -0
  55. package/dist/src/model-gateway/providers/llamacpp/stream-normalizer.js +85 -0
  56. package/dist/src/model-gateway/providers/llamacpp/stream.d.ts +9 -0
  57. package/dist/src/model-gateway/providers/llamacpp/stream.js +33 -0
  58. package/dist/src/model-gateway/providers/openai/embeddings.js +2 -29
  59. package/dist/src/model-gateway/providers/openai/sse-data.d.ts +1 -9
  60. package/dist/src/model-gateway/providers/openai/sse-data.js +1 -67
  61. package/dist/src/model-gateway/providers/registry.js +2 -0
  62. package/dist/src/model-gateway/server/input-token-count-handler.js +10 -1
  63. package/dist/src/model-gateway/types.d.ts +11 -1
  64. package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.d.ts +4 -0
  65. package/dist/src/runtime/adapters/long-term-memory/onboarding-provider-availability.js +11 -0
  66. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +28 -1
  67. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.d.ts +1 -0
  68. package/dist/src/runtime/adapters/registered-tool-payload-related-artifacts.js +6 -1
  69. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/contracts.d.ts +1 -0
  70. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.d.ts +1 -0
  71. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +2 -0
  72. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.d.ts +1 -0
  73. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-lifecycle.js +2 -0
  74. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.d.ts +1 -0
  75. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-stages.js +1 -0
  76. package/dist/src/runtime/adapters/registered-tool-worker-capabilities.js +1 -0
  77. package/dist/src/runtime/adapters/scheduler-runtime.js +2 -0
  78. package/dist/src/runtime/automations/agent-step-executor.js +1 -0
  79. package/dist/src/runtime/automations/catalog.d.ts +3 -0
  80. package/dist/src/runtime/automations/catalog.js +2 -0
  81. package/dist/src/runtime/automations/definition-contracts.d.ts +2 -0
  82. package/dist/src/runtime/automations/definition-input.js +3 -1
  83. package/dist/src/runtime/automations/draft-mutations.js +5 -1
  84. package/dist/src/runtime/automations/model-dependency-projection.d.ts +3 -1
  85. package/dist/src/runtime/automations/model-dependency-projection.js +4 -2
  86. package/dist/src/runtime/automations/publication-validation.js +7 -0
  87. package/dist/src/runtime/automations/saved-agent-management.js +1 -0
  88. package/dist/src/runtime/automations/service.d.ts +3 -0
  89. package/dist/src/runtime/capabilities/automation-builder/payload-schema.js +7 -5
  90. package/dist/src/runtime/capabilities/automations/authoring-catalog.d.ts +9 -0
  91. package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -0
  92. package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +3 -0
  93. package/dist/src/runtime/capabilities/automations/tool-contract.js +3 -2
  94. package/dist/src/runtime/capabilities/automations/tool-module.js +16 -7
  95. package/dist/src/runtime/capabilities/model-reasoning-controls.d.ts +23 -0
  96. package/dist/src/runtime/capabilities/model-reasoning-controls.js +56 -0
  97. package/dist/src/runtime/capabilities/scheduling/create-operations.js +2 -0
  98. package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +1 -0
  99. package/dist/src/runtime/capabilities/scheduling/tool-module.js +5 -2
  100. package/dist/src/runtime/capabilities/scheduling/update-operations.js +2 -0
  101. package/dist/src/runtime/config/builders.js +6 -0
  102. package/dist/src/runtime/config/effective-model-config-validation.js +4 -0
  103. package/dist/src/runtime/config/llamacpp-profile-validation.d.ts +3 -0
  104. package/dist/src/runtime/config/llamacpp-profile-validation.js +15 -0
  105. package/dist/src/runtime/config/model-reasoning-schema.d.ts +40 -0
  106. package/dist/src/runtime/config/model-reasoning-schema.js +38 -0
  107. package/dist/src/runtime/config/model-reasoning-validation.d.ts +3 -0
  108. package/dist/src/runtime/config/model-reasoning-validation.js +37 -0
  109. package/dist/src/runtime/config/runner/step-instructions.d.ts +4 -0
  110. package/dist/src/runtime/config/runner/step-instructions.js +10 -6
  111. package/dist/src/runtime/config/schema.js +3 -0
  112. package/dist/src/runtime/config/validation/model-invocation-config-validation.js +14 -0
  113. package/dist/src/runtime/context/compacted-capability-result-receipt.d.ts +2 -0
  114. package/dist/src/runtime/context/compacted-capability-result-receipt.js +8 -7
  115. package/dist/src/runtime/context/execution-compacted-evidence.d.ts +4 -0
  116. package/dist/src/runtime/context/execution-compacted-evidence.js +2 -23
  117. package/dist/src/runtime/context/execution-compaction-checkpoint-selection.d.ts +19 -0
  118. package/dist/src/runtime/context/execution-compaction-checkpoint-selection.js +104 -0
  119. package/dist/src/runtime/context/model-step-compaction-inheritance.d.ts +12 -0
  120. package/dist/src/runtime/context/model-step-compaction-inheritance.js +28 -0
  121. package/dist/src/runtime/context/model-step-compaction-projection.d.ts +12 -0
  122. package/dist/src/runtime/context/model-step-compaction-projection.js +322 -0
  123. package/dist/src/runtime/context/model-step-compaction.d.ts +2 -1
  124. package/dist/src/runtime/context/model-step-compaction.js +25 -316
  125. package/dist/src/runtime/context/operation-supervision-compacted-evidence.js +7 -1
  126. package/dist/src/runtime/context/request-context.d.ts +2 -0
  127. package/dist/src/runtime/context/request-context.js +16 -0
  128. package/dist/src/runtime/context/request-tool-results-checkpoint.d.ts +2 -1
  129. package/dist/src/runtime/context/request-tool-results-checkpoint.js +35 -6
  130. package/dist/src/runtime/context/request-tool-results.js +3 -1
  131. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.d.ts +5 -1
  132. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.js +10 -4
  133. package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.d.ts +4 -0
  134. package/dist/src/runtime/context/semantic-compaction/execution-evidence-instructions.js +38 -0
  135. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +3 -1
  136. package/dist/src/runtime/context/semantic-compaction/generation-input.js +15 -10
  137. package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.d.ts +8 -0
  138. package/dist/src/runtime/context/semantic-compaction/inherited-source-digests.js +76 -0
  139. package/dist/src/runtime/context/semantic-compaction/replacement-budget.js +3 -1
  140. package/dist/src/runtime/context/semantic-compaction/run.js +6 -12
  141. package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +1 -1
  142. package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +20 -2
  143. package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.d.ts +2 -0
  144. package/dist/src/runtime/knowledge-skills/builtins/what-can-i-do.js +27 -0
  145. package/dist/src/runtime/knowledge-skills/catalog.js +2 -0
  146. package/dist/src/runtime/local-application.d.ts +5 -0
  147. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -1
  148. package/dist/src/runtime/local-host/app-service-dispatch.js +2 -0
  149. package/dist/src/runtime/local-host/client-services.d.ts +5 -0
  150. package/dist/src/runtime/local-host/saved-approvals.js +1 -0
  151. package/dist/src/runtime/long-term-memory/onboarding/configuration.js +5 -7
  152. package/dist/src/runtime/long-term-memory/onboarding/contracts.d.ts +26 -0
  153. package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.d.ts +1 -0
  154. package/dist/src/runtime/long-term-memory/onboarding/embedding-profile-id.js +8 -0
  155. package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.d.ts +17 -0
  156. package/dist/src/runtime/long-term-memory/onboarding/saved-profiles.js +77 -0
  157. package/dist/src/runtime/long-term-memory/onboarding/service.js +40 -10
  158. package/dist/src/runtime/model/input-token-count.js +1 -0
  159. package/dist/src/runtime/model/invoke-step.js +12 -0
  160. package/dist/src/runtime/model/invoke-structured-step.d.ts +4 -1
  161. package/dist/src/runtime/model/invoke-structured-step.js +4 -0
  162. package/dist/src/runtime/model/model-catalog.d.ts +3 -0
  163. package/dist/src/runtime/model/model-catalog.js +2 -0
  164. package/dist/src/runtime/model/model-context-budget.d.ts +5 -0
  165. package/dist/src/runtime/model/model-context-budget.js +2 -0
  166. package/dist/src/runtime/model/model-step-port.d.ts +7 -0
  167. package/dist/src/runtime/model/optional-context-admission.d.ts +18 -0
  168. package/dist/src/runtime/model/optional-context-admission.js +23 -0
  169. package/dist/src/runtime/ports.d.ts +3 -1
  170. package/dist/src/runtime/projects/contracts.d.ts +6 -0
  171. package/dist/src/runtime/projects/registry-format.d.ts +3 -0
  172. package/dist/src/runtime/projects/registry-format.js +50 -0
  173. package/dist/src/runtime/projects/repository.d.ts +6 -3
  174. package/dist/src/runtime/projects/repository.js +26 -19
  175. package/dist/src/runtime/projects/service.js +11 -0
  176. package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
  177. package/dist/src/runtime/request/approval-wait/snapshot.d.ts +1 -1
  178. package/dist/src/runtime/request/approval-wait/snapshot.js +1 -0
  179. package/dist/src/runtime/request/contracts.d.ts +5 -1
  180. package/dist/src/runtime/request/execution-facets.js +2 -0
  181. package/dist/src/runtime/request/execution-payload-artifact-policy.d.ts +3 -0
  182. package/dist/src/runtime/request/execution-payload-artifact-policy.js +6 -0
  183. package/dist/src/runtime/request/execution-payload-compacted-evidence.js +1 -0
  184. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
  185. package/dist/src/runtime/request/execution-scope-surfaces.js +3 -0
  186. package/dist/src/runtime/request/execution-scope.d.ts +2 -0
  187. package/dist/src/runtime/request/execution-scope.js +2 -0
  188. package/dist/src/runtime/request/input.d.ts +1 -0
  189. package/dist/src/runtime/request/input.js +1 -0
  190. package/dist/src/runtime/request/prepared-execution.d.ts +1 -0
  191. package/dist/src/runtime/request/prepared-execution.js +3 -0
  192. package/dist/src/runtime/request/reasoning-preference.d.ts +10 -0
  193. package/dist/src/runtime/request/reasoning-preference.js +29 -0
  194. package/dist/src/runtime/request/root-reference-action.js +3 -3
  195. package/dist/src/runtime/request/root-skill-read-admission.d.ts +4 -0
  196. package/dist/src/runtime/request/root-skill-read-admission.js +14 -0
  197. package/dist/src/runtime/request/root-skill-read.js +13 -5
  198. package/dist/src/runtime/request/supervisor-skill-selection-window.d.ts +16 -0
  199. package/dist/src/runtime/request/supervisor-skill-selection-window.js +17 -0
  200. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  201. package/dist/src/runtime/scheduler/contracts.d.ts +7 -1
  202. package/dist/src/runtime/scheduler/job-management.js +7 -1
  203. package/dist/src/runtime/scheduler/run-records.js +2 -0
  204. package/dist/src/runtime/scheduler/schedule-validation.js +2 -0
  205. package/dist/src/runtime/scheduler/scheduler-engine.js +1 -0
  206. package/dist/src/runtime/scheduler/snapshot-validation.js +2 -0
  207. package/dist/src/runtime/steps/auditor-decision/projection.js +2 -0
  208. package/dist/src/runtime/steps/execution-agent/capability-controls-partition.d.ts +9 -0
  209. package/dist/src/runtime/steps/execution-agent/capability-controls-partition.js +29 -0
  210. package/dist/src/runtime/steps/execution-agent/capability-scope.d.ts +17 -0
  211. package/dist/src/runtime/steps/execution-agent/capability-scope.js +54 -0
  212. package/dist/src/runtime/steps/execution-agent/compaction.js +22 -6
  213. package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.js +2 -0
  214. package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.d.ts +6 -0
  215. package/dist/src/runtime/steps/execution-agent/evidence-reuse-instructions.js +13 -0
  216. package/dist/src/runtime/steps/execution-agent/format.js +3 -6
  217. package/dist/src/runtime/steps/execution-agent/input.d.ts +5 -1
  218. package/dist/src/runtime/steps/execution-agent/input.js +10 -36
  219. package/dist/src/runtime/steps/execution-agent/observation-guidance.d.ts +11 -0
  220. package/dist/src/runtime/steps/execution-agent/observation-guidance.js +33 -0
  221. package/dist/src/runtime/steps/execution-agent/prompt.js +2 -0
  222. package/dist/src/runtime/steps/execution-agent/refinement.d.ts +3 -2
  223. package/dist/src/runtime/steps/execution-agent/refinement.js +17 -6
  224. package/dist/src/runtime/steps/execution-agent/run.js +7 -1
  225. package/dist/src/runtime/steps/skill-read-decision.d.ts +1 -0
  226. package/dist/src/runtime/steps/skill-read-decision.js +9 -4
  227. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +6 -1
  228. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +15 -0
  229. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +1 -1
  230. package/dist/src/runtime/steps/supervisor-decision/contracts.js +2 -0
  231. package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +3 -0
  232. package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +22 -3
  233. package/dist/src/runtime/steps/supervisor-decision/delegation-contract.d.ts +9 -0
  234. package/dist/src/runtime/steps/supervisor-decision/delegation-contract.js +82 -0
  235. package/dist/src/runtime/steps/supervisor-decision/delegation-input.d.ts +7 -0
  236. package/dist/src/runtime/steps/supervisor-decision/delegation-input.js +105 -0
  237. package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.d.ts +7 -0
  238. package/dist/src/runtime/steps/supervisor-decision/delegation-prompt.js +13 -0
  239. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -0
  240. package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +3 -5
  241. package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +5 -21
  242. package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +4 -1
  243. package/dist/src/runtime/steps/supervisor-decision/preparation.js +58 -6
  244. package/dist/src/runtime/steps/supervisor-decision/procedure-entry.d.ts +22 -0
  245. package/dist/src/runtime/steps/supervisor-decision/procedure-entry.js +61 -0
  246. package/dist/src/runtime/steps/supervisor-decision/procedure-gate.d.ts +39 -0
  247. package/dist/src/runtime/steps/supervisor-decision/procedure-gate.js +146 -0
  248. package/dist/src/runtime/steps/supervisor-decision/procedure-memory.d.ts +9 -0
  249. package/dist/src/runtime/steps/supervisor-decision/procedure-memory.js +100 -0
  250. package/dist/src/runtime/steps/supervisor-decision/procedure-recall.d.ts +10 -0
  251. package/dist/src/runtime/steps/supervisor-decision/procedure-recall.js +52 -0
  252. package/dist/src/runtime/steps/supervisor-decision/prompt.js +3 -16
  253. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -2
  254. package/dist/src/runtime/steps/supervisor-decision/role-guidance.d.ts +3 -0
  255. package/dist/src/runtime/steps/supervisor-decision/role-guidance.js +20 -0
  256. package/dist/src/runtime/steps/supervisor-decision/run.js +50 -7
  257. package/dist/src/runtime/steps/supervisor-decision/skill-read-state.d.ts +10 -0
  258. package/dist/src/runtime/steps/supervisor-decision/skill-read-state.js +45 -0
  259. package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.d.ts +15 -0
  260. package/dist/src/runtime/steps/supervisor-decision/skill-selection-candidates.js +25 -0
  261. package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.d.ts +3 -0
  262. package/dist/src/runtime/steps/supervisor-decision/skill-selection-catalog.js +15 -0
  263. package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.d.ts +10 -0
  264. package/dist/src/runtime/steps/supervisor-decision/skill-selection-continuation.js +65 -0
  265. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +3 -1
  266. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +20 -22
  267. package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +3 -2
  268. package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +62 -15
  269. package/dist/src/runtime/steps/supervisor-response/prompt.js +18 -4
  270. package/dist/src/shared/model-reasoning-modes.d.ts +5 -0
  271. package/dist/src/shared/model-reasoning-modes.js +20 -0
  272. package/dist/src/shared/model-reasoning-schema.d.ts +38 -0
  273. package/dist/src/shared/model-reasoning-schema.js +29 -0
  274. package/dist/src/shared/model-reasoning.d.ts +35 -0
  275. package/dist/src/shared/model-reasoning.js +100 -0
  276. package/dist/src/web-ui/app/ARCHITECTURE.md +13 -0
  277. package/dist/src/web-ui/app/app-bootstrap.js +9 -12
  278. package/dist/src/web-ui/app/app-dom.js +6 -1
  279. package/dist/src/web-ui/app/app-state.js +1 -0
  280. package/dist/src/web-ui/app/app.js +8 -3
  281. package/dist/src/web-ui/app/appearance-feature.js +28 -0
  282. package/dist/src/web-ui/app/automations-feature.js +20 -11
  283. package/dist/src/web-ui/app/components/appearance-dialog.js +79 -0
  284. package/dist/src/web-ui/app/components/automations/archive-actions.js +5 -3
  285. package/dist/src/web-ui/app/components/automations/authoring-entry.js +26 -7
  286. package/dist/src/web-ui/app/components/automations/confirmation-actions.js +78 -0
  287. package/dist/src/web-ui/app/components/automations/draft-recovery-actions.js +1 -0
  288. package/dist/src/web-ui/app/components/automations/node-inspector.js +5 -1
  289. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +4 -2
  290. package/dist/src/web-ui/app/components/automations/timeline.js +2 -2
  291. package/dist/src/web-ui/app/components/automations/workspace-navigation.js +37 -0
  292. package/dist/src/web-ui/app/components/automations/workspace.js +31 -46
  293. package/dist/src/web-ui/app/components/config-workspace/config-model.js +6 -0
  294. package/dist/src/web-ui/app/components/config-workspace/model-removal.js +4 -2
  295. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +8 -16
  296. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget-edit.js +113 -0
  297. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.d.ts +16 -0
  298. package/dist/src/web-ui/app/components/config-workspace/reasoning-budget.js +67 -0
  299. package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.d.ts +7 -0
  300. package/dist/src/web-ui/app/components/config-workspace/reasoning-mode-budgets.js +25 -0
  301. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +15 -7
  302. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +32 -12
  303. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +1 -1
  304. package/dist/src/web-ui/app/components/config-workspace.js +2 -1
  305. package/dist/src/web-ui/app/components/confirmation-dialog.js +88 -0
  306. package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -0
  307. package/dist/src/web-ui/app/components/conversation-activity.js +32 -3
  308. package/dist/src/web-ui/app/components/conversation-memory-activity.js +31 -0
  309. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +2 -0
  310. package/dist/src/web-ui/app/components/conversation-role-cards.js +14 -11
  311. package/dist/src/web-ui/app/components/conversation-skill-activity.js +67 -0
  312. package/dist/src/web-ui/app/components/conversation-tools.js +5 -5
  313. package/dist/src/web-ui/app/components/conversation-view.js +6 -0
  314. package/dist/src/web-ui/app/components/dashboard/approvals.js +13 -1
  315. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.d.ts +38 -0
  316. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-dialog.js +289 -0
  317. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-feature.js +75 -0
  318. package/dist/src/web-ui/app/components/long-term-memory/embedding-connection-rendering.js +31 -0
  319. package/dist/src/web-ui/app/components/long-term-memory/manager.js +15 -5
  320. package/dist/src/web-ui/app/components/long-term-memory/saved-embedding-profiles.js +114 -0
  321. package/dist/src/web-ui/app/components/long-term-memory/setup-rendering.js +55 -0
  322. package/dist/src/web-ui/app/components/long-term-memory-setup.js +141 -76
  323. package/dist/src/web-ui/app/components/model-setup/rendering.js +3 -2
  324. package/dist/src/web-ui/app/components/model-setup/validation.js +6 -2
  325. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +1 -0
  326. package/dist/src/web-ui/app/components/model-setup/wizard.js +28 -5
  327. package/dist/src/web-ui/app/components/passive-learning/memory.js +12 -5
  328. package/dist/src/web-ui/app/components/plugins/manager.js +14 -0
  329. package/dist/src/web-ui/app/components/plugins/removal.js +10 -2
  330. package/dist/src/web-ui/app/components/project-group-actions.js +35 -0
  331. package/dist/src/web-ui/app/components/project-session-groups.js +17 -31
  332. package/dist/src/web-ui/app/components/runtime-setup/commands.js +1 -1
  333. package/dist/src/web-ui/app/components/runtime-setup/connection-form.d.ts +15 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +32 -9
  335. package/dist/src/web-ui/app/components/runtime-setup/connection-input.js +23 -0
  336. package/dist/src/web-ui/app/components/runtime-setup/connection-inspection.js +57 -0
  337. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +18 -4
  338. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +3 -0
  339. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-options.js +54 -0
  340. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +3 -0
  341. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +22 -22
  342. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +60 -16
  343. package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.d.ts +17 -0
  344. package/dist/src/web-ui/app/components/runtime-setup/reasoning-fields.js +54 -0
  345. package/dist/src/web-ui/app/components/runtime-setup/validation.js +5 -1
  346. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +9 -3
  347. package/dist/src/web-ui/app/components/runtime-setup-guide.js +20 -29
  348. package/dist/src/web-ui/app/components/schedules/details.js +2 -2
  349. package/dist/src/web-ui/app/components/schedules/form.js +12 -5
  350. package/dist/src/web-ui/app/components/schedules/workspace.js +30 -18
  351. package/dist/src/web-ui/app/components/session-list-viewport.js +49 -0
  352. package/dist/src/web-ui/app/components/session-search-disclosure.js +27 -0
  353. package/dist/src/web-ui/app/components/skills/workspace.js +7 -3
  354. package/dist/src/web-ui/app/components/spark-chat/panel.js +7 -3
  355. package/dist/src/web-ui/app/components/spark-chat/settings.js +57 -15
  356. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +2 -1
  357. package/dist/src/web-ui/app/components/tool-approval-card.js +10 -2
  358. package/dist/src/web-ui/app/components/tool-approval-rejection-input.js +116 -0
  359. package/dist/src/web-ui/app/components/workspace-shell.js +30 -38
  360. package/dist/src/web-ui/app/components/workspace-transitions.js +42 -0
  361. package/dist/src/web-ui/app/configuration-feature.js +34 -4
  362. package/dist/src/web-ui/app/controllers/app-event-bindings.js +45 -29
  363. package/dist/src/web-ui/app/controllers/appearance-controller.js +105 -0
  364. package/dist/src/web-ui/app/controllers/automations-controller.js +9 -1
  365. package/dist/src/web-ui/app/controllers/composer-feature.d.ts +1 -1
  366. package/dist/src/web-ui/app/controllers/composer-feature.js +10 -3
  367. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +1 -1
  368. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +9 -3
  369. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +1 -1
  370. package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +8 -2
  371. package/dist/src/web-ui/app/controllers/dashboard-approvals-controller.js +10 -9
  372. package/dist/src/web-ui/app/controllers/environment-transition.js +2 -2
  373. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +9 -7
  374. package/dist/src/web-ui/app/controllers/preference-view-sync.js +35 -0
  375. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +4 -0
  376. package/dist/src/web-ui/app/controllers/projects-controller.js +64 -3
  377. package/dist/src/web-ui/app/controllers/reasoning-budget-controller.d.ts +17 -0
  378. package/dist/src/web-ui/app/controllers/reasoning-budget-controller.js +80 -0
  379. package/dist/src/web-ui/app/controllers/reasoning-budget-menu-events.js +45 -0
  380. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +35 -40
  381. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +6 -1
  382. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +16 -3
  383. package/dist/src/web-ui/app/controllers/session-controller.js +34 -9
  384. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +4 -3
  385. package/dist/src/web-ui/app/controllers/skills-controller.js +33 -16
  386. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +1 -1
  387. package/dist/src/web-ui/app/controllers/spark-handoff-navigation.js +7 -1
  388. package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +2 -1
  389. package/dist/src/web-ui/app/controllers/tool-approval-controller.js +36 -3
  390. package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +8 -2
  391. package/dist/src/web-ui/app/controllers/workspace-route-controller.js +41 -10
  392. package/dist/src/web-ui/app/index.html +38 -32
  393. package/dist/src/web-ui/app/lib/color-palettes.d.ts +17 -0
  394. package/dist/src/web-ui/app/lib/color-palettes.js +20 -0
  395. package/dist/src/web-ui/app/lib/memory-activity-model.d.ts +12 -0
  396. package/dist/src/web-ui/app/lib/memory-activity-model.js +61 -0
  397. package/dist/src/web-ui/app/lib/navigation-display.d.ts +8 -0
  398. package/dist/src/web-ui/app/lib/navigation-display.js +12 -0
  399. package/dist/src/web-ui/app/lib/reasoning-controls.js +47 -6
  400. package/dist/src/web-ui/app/lib/reasoning-preference.d.ts +9 -0
  401. package/dist/src/web-ui/app/lib/reasoning-preference.js +75 -0
  402. package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +4 -0
  403. package/dist/src/web-ui/app/lib/session-composer-queue.js +4 -0
  404. package/dist/src/web-ui/app/lib/session-project-groups.js +28 -0
  405. package/dist/src/web-ui/app/lib/session-sidebar-order.js +7 -5
  406. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +1 -0
  407. package/dist/src/web-ui/app/lib/tool-activity-event.js +1 -0
  408. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +1 -0
  409. package/dist/src/web-ui/app/lib/tool-activity-model.js +1 -0
  410. package/dist/src/web-ui/app/lib/tool-approval-rejection-drafts.js +45 -0
  411. package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +1 -1
  412. package/dist/src/web-ui/app/notifications-feature.js +10 -2
  413. package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
  414. package/dist/src/web-ui/app/projects-feature.js +40 -10
  415. package/dist/src/web-ui/app/runtime-onboarding-feature.js +1 -0
  416. package/dist/src/web-ui/app/schedules-feature.js +28 -5
  417. package/dist/src/web-ui/app/services/client-preferences.d.ts +4 -1
  418. package/dist/src/web-ui/app/services/client-preferences.js +2 -0
  419. package/dist/src/web-ui/app/services/conversation-reasoning-preferences.d.ts +11 -0
  420. package/dist/src/web-ui/app/services/conversation-reasoning-preferences.js +30 -0
  421. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +6 -4
  422. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +5 -0
  423. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +21 -0
  424. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +2 -1
  425. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +4 -0
  426. package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.js +2 -0
  427. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +16 -0
  428. package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
  429. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +33 -13
  430. package/dist/src/web-ui/app/skills-feature.js +2 -3
  431. package/dist/src/web-ui/app/spark-chat-conversation.js +29 -3
  432. package/dist/src/web-ui/app/spark-chat-feature.js +13 -7
  433. package/dist/src/web-ui/app/styles/01-color-palettes.css +90 -0
  434. package/dist/src/web-ui/app/styles/11-product-links.css +6 -2
  435. package/dist/src/web-ui/app/styles/11-workspace-header-width.css +37 -25
  436. package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +56 -22
  437. package/dist/src/web-ui/app/styles/13-projects.css +56 -19
  438. package/dist/src/web-ui/app/styles/19-runtime-setup.css +16 -0
  439. package/dist/src/web-ui/app/styles/22-reasoning-budget.css +39 -0
  440. package/dist/src/web-ui/app/styles/27-conversation-memory.css +45 -0
  441. package/dist/src/web-ui/app/styles/27-conversation-skills.css +96 -0
  442. package/dist/src/web-ui/app/styles/28-tool-approval-card.css +38 -1
  443. package/dist/src/web-ui/app/styles/35-embedding-profiles.css +159 -0
  444. package/dist/src/web-ui/app/styles/54-spark-chat.css +62 -46
  445. package/dist/src/web-ui/app/styles/65-appearance.css +60 -0
  446. package/dist/src/web-ui/app/styles/66-navigation-display.css +30 -0
  447. package/dist/src/web-ui/app/styles/67-confirmation-dialog.css +32 -0
  448. package/dist/src/web-ui/app/styles.css +8 -0
  449. package/dist/src/web-ui/client-state/preference-shapes.js +6 -1
  450. package/dist/src/web-ui/client-state/preferences.js +8 -2
  451. package/dist/src/web-ui/client-state/reasoning-preference-shape.d.ts +1 -0
  452. package/dist/src/web-ui/client-state/reasoning-preference-shape.js +18 -0
  453. package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
  454. package/dist/src/web-ui/local-runtime/api-router.js +11 -0
  455. package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.d.ts +7 -0
  456. package/dist/src/web-ui/local-runtime/memory-embedding-connection-input.js +22 -0
  457. package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.d.ts +20 -0
  458. package/dist/src/web-ui/local-runtime/memory-embedding-connection-service.js +47 -0
  459. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +32 -0
  460. package/dist/src/web-ui/local-runtime/model-connection-inspection.d.ts +7 -0
  461. package/dist/src/web-ui/local-runtime/model-connection-inspection.js +48 -0
  462. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +2 -1
  463. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +3 -1
  464. package/dist/src/web-ui/local-runtime/model-setup-identity.js +1 -1
  465. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +5 -2
  466. package/dist/src/web-ui/local-runtime/model-setup-input.js +29 -6
  467. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +1 -1
  468. package/dist/src/web-ui/local-runtime/model-setup-provider.js +9 -6
  469. package/dist/src/web-ui/local-runtime/model-setup-retry.js +4 -1
  470. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +2 -1
  471. package/dist/src/web-ui/local-runtime/pending-tool-approvals.js +4 -1
  472. package/dist/src/web-ui/local-runtime/project-routes.js +10 -2
  473. package/dist/src/web-ui/local-runtime/request-execution.js +1 -0
  474. package/dist/src/web-ui/local-runtime/runtime-setup-auth.d.ts +2 -0
  475. package/dist/src/web-ui/local-runtime/runtime-setup-auth.js +20 -0
  476. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +3 -2
  477. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +6 -1
  478. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +3 -2
  479. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +17 -5
  480. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +4 -1
  481. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +6 -2
  482. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +11 -2
  483. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +11 -2
  484. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +3 -2
  485. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +25 -4
  486. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +19 -9
  487. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +3 -1
  488. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +38 -6
  489. package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.d.ts +11 -0
  490. package/dist/src/web-ui/local-runtime/setup-embedding-llamacpp.js +53 -0
  491. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +23 -9
  492. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +7 -2
  493. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +5 -3
  494. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +1 -0
  495. package/docs/configuration.md +10 -8
  496. package/docs/installation.md +11 -5
  497. package/docs/llamacpp.md +248 -0
  498. package/docs/long-term-memory.md +12 -0
  499. package/docs/running-locally.md +7 -1
  500. package/package.json +2 -1
  501. package/plugins/project-orientation/source/index.ts +2 -3
  502. package/plugins/project-orientation/source/inspection-failure.ts +1 -1
  503. package/plugins/project-orientation/source/project-target.ts +29 -0
  504. package/plugins/project-orientation/src/index.cjs +21 -2
  505. package/runtime.config.schema.json +140 -0
  506. package/src/runtime/README.md +50 -4
@@ -1,5 +1,6 @@
1
1
  import type { KnowledgeSkillStore } from "../knowledge-skills/store.js";
2
2
  import type { SuperFailureFinalization } from "./super-failure-explanation.js";
3
+ import type { SupervisorSkillSelectionWindows } from "./supervisor-skill-selection-window.js";
3
4
  import type { RequestModelStepPort } from "../model/model-step-port.js";
4
5
  import { type RequestExecutionSeed, type RequestModelInvocationView } from "./contracts.js";
5
6
  import type { RequestSeedFacets } from "./execution-facets.js";
@@ -15,4 +16,5 @@ export declare function createScopeSurface(input: Readonly<{
15
16
  capabilities: RequestWorkerCapabilities;
16
17
  knowledgeSkillStore?: KnowledgeSkillStore;
17
18
  superFailureFinalization?: SuperFailureFinalization | undefined;
19
+ supervisorSkillSelectionWindows: SupervisorSkillSelectionWindows;
18
20
  }>): RequestExecutionScope;
@@ -14,6 +14,7 @@ export function createCapabilityCompositionView(facets, modelSteps) {
14
14
  requestId: enumerableGetter(() => facets.identity.requestId),
15
15
  runnerConfig: enumerableGetter(() => facets.model.runnerConfig),
16
16
  agentMode: enumerableGetter(() => facets.input.agentMode),
17
+ ...(facets.model.reasoningPreference ? { reasoningPreference: enumerableGetter(() => facets.model.reasoningPreference) } : {}),
17
18
  ...(facets.model.modelPreference !== undefined
18
19
  ? {
19
20
  modelPreference: enumerableGetter(() => facets.model.modelPreference),
@@ -113,6 +114,7 @@ export function createScopeSurface(input) {
113
114
  policy: hiddenValue(policy),
114
115
  modelInvocation: hiddenValue(modelInvocation),
115
116
  capabilities: hiddenValue(capabilities),
117
+ supervisorSkillSelectionWindows: hiddenValue(input.supervisorSkillSelectionWindows),
116
118
  ...(input.knowledgeSkillStore ? { knowledgeSkillStore: hiddenValue(input.knowledgeSkillStore) } : {}),
117
119
  ...(input.superFailureFinalization
118
120
  ? {
@@ -167,6 +169,7 @@ function requestSeedDescriptors(facets, executionPolicySelection, includeSession
167
169
  automationOutputContract: enumerableGetter(() => facets.input.automationOutputContract),
168
170
  }
169
171
  : {}),
172
+ ...(facets.model.reasoningPreference ? { reasoningPreference: enumerableGetter(() => facets.model.reasoningPreference) } : {}),
170
173
  ...(facets.model.modelPreference !== undefined
171
174
  ? {
172
175
  modelPreference: enumerableGetter(() => facets.model.modelPreference),
@@ -6,6 +6,7 @@ import type { ToolAvailabilitySource } from "../capabilities/tool-availability.j
6
6
  import type { WorkerCapabilityAdapterProvider } from "../orchestration/worker-capabilities/index.js";
7
7
  import type { AcceptedRequestInput, BoundRequestModelInvocationContext, RequestSessionSnapshot, RequestExecutionSeed, RequestIdentity, RequestLifecycleRuntime, RequestModelInvocationView, RequestModelRuntime, RequestMemoryRuntime, RequestPresentation } from "./contracts.js";
8
8
  import type { CompiledExecutionPolicy } from "./root-contract.js";
9
+ import { type SupervisorSkillSelectionWindows } from "./supervisor-skill-selection-window.js";
9
10
  /** Request fields required while the request-bound capability catalog is built. */
10
11
  export type RequestCapabilityCompositionView = BoundRequestModelInvocationContext & Readonly<Pick<RequestExecutionSeed, "sessionId" | "prompt" | "historyMessages" | "sessionMemory" | "attachments" | "toolPermissionMode" | "toolApprovalController" | "effectPersistence" | "onEvent" | "contextCompactionStore">>;
11
12
  /**
@@ -38,6 +39,7 @@ export type RequestExecutionScope = RequestExecutionSeed & BoundRequestModelInvo
38
39
  superFailureFinalization?: SuperFailureFinalization;
39
40
  workerCapabilities: RequestWorkerCapabilities;
40
41
  knowledgeSkillStore?: KnowledgeSkillStore;
42
+ supervisorSkillSelectionWindows: SupervisorSkillSelectionWindows;
41
43
  }>;
42
44
  export type CompiledRequestExecutionPolicy = RequestExecutionScope["executionPolicy"];
43
45
  export type RequestWorkerCapabilityProviderSource = Pick<RequestExecutionScope, "workerCapabilities">;
@@ -6,6 +6,7 @@ import { createSuperFailureFinalization, } from "./super-failure-explanation.js"
6
6
  import { RequestModelStepInvoker } from "../model/invoke-step.js";
7
7
  import { createModelInvocationView, createRequestSeedFacets, } from "./execution-facets.js";
8
8
  import { createCapabilityCompositionView, createCapabilityExecutionView, createScopeSurface, REQUEST_EXECUTION_SCOPE, } from "./execution-scope-surfaces.js";
9
+ import { createSupervisorSkillSelectionWindows } from "./supervisor-skill-selection-window.js";
9
10
  export function createRequestExecutionScope(input) {
10
11
  const facets = createRequestSeedFacets(input.seed);
11
12
  const policy = createRequestExecutionPolicyFacet(input.seed.executionPolicySelection, input.executionPolicy);
@@ -25,6 +26,7 @@ export function createRequestExecutionScope(input) {
25
26
  modelInvocation,
26
27
  modelSteps,
27
28
  capabilities,
29
+ supervisorSkillSelectionWindows: createSupervisorSkillSelectionWindows(),
28
30
  ...(input.knowledgeSkillStore && !isSkillStoreDeniedForModel(input.seed)
29
31
  ? { knowledgeSkillStore: input.knowledgeSkillStore }
30
32
  : {}),
@@ -7,5 +7,6 @@ export declare function parseRequestInput(msg: RunRequestMessage): {
7
7
  rawAttachments: unknown;
8
8
  rawAgentMode: unknown;
9
9
  rawModelPreference: unknown;
10
+ rawReasoningPreference?: unknown;
10
11
  toolPermissionMode: ToolPermissionMode;
11
12
  };
@@ -11,6 +11,7 @@ export function parseRequestInput(msg) {
11
11
  rawAttachments: msg.attachments,
12
12
  rawAgentMode: msg.agentMode,
13
13
  rawModelPreference: msg.modelPreference,
14
+ rawReasoningPreference: msg.reasoningPreference,
14
15
  toolPermissionMode: resolveToolPermissionMode(msg.toolPermissionMode),
15
16
  };
16
17
  }
@@ -47,6 +47,7 @@ export declare function prepareRequestExecution(params: RequestPreparationInput)
47
47
  attachments?: import("../../model-gateway/types.js").ModelGatewayAttachment[];
48
48
  agentMode: AgentMode;
49
49
  modelPreference?: import("../../model-gateway/types.js").ModelPreference;
50
+ reasoningPreference?: import("../../shared/model-reasoning.js").ModelReasoningPreference;
50
51
  modelPolicy?: import("../../model-gateway/types.js").ModelGatewayPolicyConfig;
51
52
  modelGatewayClient: Pick<import("../ports.js").ModelGatewayClient, "invoke" | "invokeRaw" | "countInputTokens">;
52
53
  contextCompactionStore?: import("../context/semantic-compaction/store.js").RequestContextCompactionStore;
@@ -1,3 +1,4 @@
1
+ import { captureRequestReasoningPreference } from "./reasoning-preference.js";
1
2
  import { bindRequestWorkingDirectory } from "../capabilities/request-working-directory.js";
2
3
  import { createRuntimeToolPathResolver } from "../capabilities/runtime-target-path.js";
3
4
  import { isSparkSession } from "../../sessions/spark-session.js";
@@ -35,6 +36,7 @@ export async function prepareRequestExecution(params) {
35
36
  ? { modelExecutionPolicies: loaded.modelExecutionPolicies }
36
37
  : {}),
37
38
  });
39
+ const reasoningPreference = captureRequestReasoningPreference(input.rawReasoningPreference, selection);
38
40
  const executionPolicy = resolveRequestExecutionPolicy(resume?.snapshot.seed.executionPolicySelection?.policy ??
39
41
  selection.execution.policy);
40
42
  params.onFailurePolicyReady?.(executionPolicy);
@@ -127,6 +129,7 @@ export async function prepareRequestExecution(params) {
127
129
  executionPolicySelection: selection.execution,
128
130
  ...(modelAttachments?.length ? { attachments: modelAttachments } : {}),
129
131
  agentMode: selection.agentMode,
132
+ ...(reasoningPreference ? { reasoningPreference } : {}),
130
133
  ...(selection.modelPreference
131
134
  ? { modelPreference: selection.modelPreference }
132
135
  : {}),
@@ -0,0 +1,10 @@
1
+ import { type ModelReasoningPreference } from "../../shared/model-reasoning.js";
2
+ import type { ModelGatewayPolicyConfig, ModelPreference } from "../../model-gateway/types.js";
3
+ /** Validate before session admission or tool effects; never infer a new model. */
4
+ export declare function captureRequestReasoningPreference(value: unknown, selection: {
5
+ modelPreference?: ModelPreference;
6
+ modelPolicy?: ModelGatewayPolicyConfig;
7
+ execution: {
8
+ primaryProfileId?: string;
9
+ };
10
+ }): ModelReasoningPreference | undefined;
@@ -0,0 +1,29 @@
1
+ import { resolveProfileCandidate } from "../../shared/invocation-profile-selection.js";
2
+ import { ModelReasoningConfigurationError, parseModelReasoningPreference, supportsModelReasoningBudget, } from "../../shared/model-reasoning.js";
3
+ /** Validate before session admission or tool effects; never infer a new model. */
4
+ export function captureRequestReasoningPreference(value, selection) {
5
+ const preference = parseModelReasoningPreference(value);
6
+ if (!preference)
7
+ return undefined;
8
+ const requestedId = selection.modelPreference?.profileId;
9
+ const selectedId = requestedId
10
+ ? resolveProfileCandidate({
11
+ profileId: requestedId,
12
+ policy: selection.modelPolicy,
13
+ source: "clientPreference",
14
+ resolveProfile: (id, policy) => policy?.profiles?.[id],
15
+ })?.profileId ?? requestedId
16
+ : selection.execution.primaryProfileId;
17
+ if (selectedId !== preference.profileId) {
18
+ throw new ModelReasoningConfigurationError("reasoning_preference_profile_mismatch", "reasoning preference must bind the requested model profile");
19
+ }
20
+ const profile = selection.modelPolicy?.profiles?.[preference.profileId];
21
+ const provider = profile?.provider ? selection.modelPolicy?.providers?.[profile.provider] : undefined;
22
+ if (!supportsModelReasoningBudget({
23
+ provider: provider?.type ?? "",
24
+ supportsThinking: profile?.supportsThinking,
25
+ })) {
26
+ throw new ModelReasoningConfigurationError("reasoning_budget_unsupported", `profile ${preference.profileId} does not declare numeric reasoning controls`);
27
+ }
28
+ return preference;
29
+ }
@@ -15,13 +15,13 @@ export async function performRootReferenceAction(request, ledger, activation, re
15
15
  };
16
16
  if (params.decision.action === "recall_memory") {
17
17
  await performRootMemoryRecall({ ...params, query: params.decision.query });
18
- return params.resume;
18
+ return projectResumeAfterRootReferenceAction(params.ledger.current(), params.resume);
19
19
  }
20
20
  await performRootSkillRead({ ...params, decision: params.decision });
21
- return projectResumeAfterSkillRead(params.ledger.current(), params.resume);
21
+ return projectResumeAfterRootReferenceAction(params.ledger.current(), params.resume);
22
22
  }
23
23
  /** A reference read advances the root activation without changing its completed children. */
24
- function projectResumeAfterSkillRead(head, resume) {
24
+ function projectResumeAfterRootReferenceAction(head, resume) {
25
25
  if (!resume)
26
26
  return undefined;
27
27
  const call = head.state.calls.find(({ callId }) => callId === resume.callerCallId);
@@ -0,0 +1,4 @@
1
+ import type { RoleCallLedgerHead } from "../orchestration/role-calls/index.js";
2
+ import type { SkillReadDecision } from "../steps/skill-read-decision.js";
3
+ /** Enforce request-local read identity before any document lookup or ledger commit. */
4
+ export declare function assertRootSkillReadAdmission(head: RoleCallLedgerHead, decision: SkillReadDecision): void;
@@ -0,0 +1,14 @@
1
+ import { collectSuccessfulSkillReadIdentities } from "../steps/supervisor-decision/skill-read-state.js";
2
+ /** Enforce request-local read identity before any document lookup or ledger commit. */
3
+ export function assertRootSkillReadAdmission(head, decision) {
4
+ if (decision.action !== "read_skills")
5
+ return;
6
+ const hasRepeatedRootSkillReadIds = new Set(decision.skillIds).size !== decision.skillIds.length;
7
+ if (hasRepeatedRootSkillReadIds)
8
+ throw new Error("skill_read_duplicate_ids");
9
+ const completedIds = new Set(collectSuccessfulSkillReadIdentities(head.state.skillReads ?? [])
10
+ .map(({ skillId }) => skillId));
11
+ const repeatsCompletedRootSkillRead = decision.skillIds.some((skillId) => completedIds.has(skillId));
12
+ if (repeatsCompletedRootSkillRead)
13
+ throw new Error("skill_read_already_completed");
14
+ }
@@ -1,9 +1,9 @@
1
1
  import { findRoleActivationReservationIssue, resolveRoleActivationBudget, } from "../orchestration/role-calls/activation-budget.js";
2
2
  import { hasSuperContextContract } from "../context/super-context-policy.js";
3
3
  import { KnowledgeSkillError } from "../knowledge-skills/personal-contracts.js";
4
- import { resolveKnowledgeSkillReadTargets } from "../capabilities/knowledge-skills/read-targets.js";
5
4
  import { emitRuntimeStatus } from "../events/runtime-status.js";
6
5
  import { resolveRequestSteeringInbox } from "./request-steering.js";
6
+ import { assertRootSkillReadAdmission } from "./root-skill-read-admission.js";
7
7
  /** Read synchronously, then commit the exact snapshot and the next root activation together. */
8
8
  export async function performRootSkillRead(params) {
9
9
  const { request, head, call } = params;
@@ -29,6 +29,7 @@ export async function performRootSkillRead(params) {
29
29
  const exhausted = findRoleActivationReservationIssue(head.state, head.policy, reservation);
30
30
  if (exhausted)
31
31
  throw new Error(`role_call_ledger_rejected:${exhausted.code}`);
32
+ assertRootSkillReadAdmission(head, params.decision);
32
33
  const payload = readStore(request.knowledgeSkillStore, params.decision);
33
34
  request.abortSignal.throwIfAborted();
34
35
  if (!steering.isCurrent(params.steeringVersion))
@@ -56,15 +57,19 @@ function readStore(store, decision) {
56
57
  skills: store.list().map((skill) => ({ ...skill })),
57
58
  },
58
59
  };
59
- const resolved = resolveKnowledgeSkillReadTargets(store, decision.skillIds);
60
- if (!resolved.ok)
61
- return failedRead(decision, resolved.errorCode);
60
+ const skills = [];
61
+ for (const skillId of decision.skillIds) {
62
+ const skill = store.read(skillId);
63
+ if (!isExactRootSkillDocument(skill, skillId))
64
+ return failedRead(decision, "knowledge_skill_not_found");
65
+ skills.push({ ...skill });
66
+ }
62
67
  return {
63
68
  operation: "read_skills",
64
69
  selectors: [...decision.skillIds],
65
70
  result: {
66
71
  outcome: "completed",
67
- skills: resolved.skills.map((skill) => ({ ...skill })),
72
+ skills,
68
73
  },
69
74
  };
70
75
  }
@@ -74,6 +79,9 @@ function readStore(store, decision) {
74
79
  throw error;
75
80
  }
76
81
  }
82
+ function isExactRootSkillDocument(skill, skillId) {
83
+ return skill?.skillId === skillId;
84
+ }
77
85
  function failedRead(decision, errorCode) {
78
86
  const result = { outcome: "failed", errorCode, skills: [] };
79
87
  if (decision.action === "list_skills")
@@ -0,0 +1,16 @@
1
+ export type SupervisorSkillSelectionWindow = Readonly<{
2
+ isOpen(): boolean;
3
+ complete(): void;
4
+ }>;
5
+ export type SupervisorSkillSelectionWindows = Readonly<{
6
+ bind(entry: Readonly<{
7
+ rootCallId: string;
8
+ returnedResultRef?: string;
9
+ }>): SupervisorSkillSelectionWindow;
10
+ }>;
11
+ /**
12
+ * Request-local preparation progress, never session or checkpoint state.
13
+ * A canonical direct-child result identifies a new entry into Supervisor.
14
+ * Repeated activations, steering and reference reads retain the same entry.
15
+ */
16
+ export declare function createSupervisorSkillSelectionWindows(): SupervisorSkillSelectionWindows;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Request-local preparation progress, never session or checkpoint state.
3
+ * A canonical direct-child result identifies a new entry into Supervisor.
4
+ * Repeated activations, steering and reference reads retain the same entry.
5
+ */
6
+ export function createSupervisorSkillSelectionWindows() {
7
+ const completedEntries = new Set();
8
+ return Object.freeze({
9
+ bind(entry) {
10
+ const key = JSON.stringify([entry.rootCallId, entry.returnedResultRef ?? null]);
11
+ return Object.freeze({
12
+ isOpen: () => !completedEntries.has(key),
13
+ complete: () => { completedEntries.add(key); },
14
+ });
15
+ },
16
+ });
17
+ }
@@ -1,3 +1,4 @@
1
+ import { allowsAutomaticPayloadArtifactLoading } from "./execution-payload-artifact-policy.js";
1
2
  import { projectAvailableSkills, } from "../knowledge-skills/available-skills.js";
2
3
  import { randomUUID } from "node:crypto";
3
4
  import { createBundledPluginSkillProvider, createConfiguredSkillProvider, } from "../adapters/configured-skill-provider.js";
@@ -42,6 +43,7 @@ export function createRequestWorkerCapabilityProvider(params) {
42
43
  }
43
44
  const provider = createRegisteredToolWorkerCapabilityProvider({
44
45
  getRequestToolRegistry,
46
+ allowRelatedArtifactLoading: allowsAutomaticPayloadArtifactLoading(params.executionPolicyAuthority),
45
47
  requestId: params.request.requestId,
46
48
  ...(params.request.toolResources
47
49
  ? { toolResources: params.request.toolResources }
@@ -1,3 +1,4 @@
1
+ import type { ModelReasoningPreference } from "../../shared/model-reasoning.js";
1
2
  import type { AgentMode } from "../../shared/types.js";
2
3
  import type { AutomationJournalState } from "../automations/storage-records.js";
3
4
  import type { SchedulerToolPermissionMode } from "./tool-permission-mode.js";
@@ -67,6 +68,7 @@ export interface SchedulerJob {
67
68
  prompt: string;
68
69
  modelProfileId: string;
69
70
  agentMode: AgentMode;
71
+ reasoningPreference?: ModelReasoningPreference;
70
72
  toolPermissionMode: SchedulerToolPermissionMode;
71
73
  timeZone: string;
72
74
  schedule: SchedulerTimedSchedule;
@@ -109,10 +111,13 @@ export interface CreateSchedulerJobInput {
109
111
  prompt: string;
110
112
  modelProfileId: string;
111
113
  agentMode: AgentMode;
114
+ reasoningPreference?: ModelReasoningPreference;
112
115
  timeZone: string;
113
116
  schedule: SchedulerScheduleInput;
114
117
  }
115
- export type UpdateSchedulerJobInput = Partial<Omit<CreateSchedulerJobInput, "sessionId">>;
118
+ export type UpdateSchedulerJobInput = Partial<Omit<CreateSchedulerJobInput, "sessionId" | "reasoningPreference">> & {
119
+ reasoningPreference?: ModelReasoningPreference | null;
120
+ };
116
121
  export type SchedulerRunStatus = "pending" | "running" | "succeeded" | "failed" | "cancelled" | "interrupted" | "missed";
117
122
  export interface SchedulerRun {
118
123
  /** Legacy records omit this discriminator and are normalized when loaded. */
@@ -130,6 +135,7 @@ export interface SchedulerRun {
130
135
  prompt: string;
131
136
  modelProfileId: string;
132
137
  agentMode: AgentMode;
138
+ reasoningPreference?: ModelReasoningPreference;
133
139
  timeZone: string;
134
140
  jobRevision: number;
135
141
  scheduledAt: string;
@@ -1,3 +1,4 @@
1
+ import { parseBoundModelReasoningPreference } from "../../shared/model-reasoning.js";
1
2
  import { randomUUID } from "node:crypto";
2
3
  import { requireSchedulerToolPermissionMode } from "./tool-permission-mode.js";
3
4
  import { nextSchedulerOccurrence } from "./next-occurrence.js";
@@ -26,6 +27,7 @@ export function createSchedulerJob(context, input) {
26
27
  prompt: input.prompt,
27
28
  modelProfileId: input.modelProfileId,
28
29
  agentMode: input.agentMode,
30
+ ...(input.reasoningPreference ? { reasoningPreference: parseBoundModelReasoningPreference(input.reasoningPreference, input.modelProfileId) } : {}),
29
31
  toolPermissionMode: requireSchedulerToolPermissionMode(input.toolPermissionMode),
30
32
  timeZone: input.timeZone,
31
33
  schedule,
@@ -53,7 +55,7 @@ export function updateSchedulerJob(context, jobId, patch) {
53
55
  if (job.state === "cancelled")
54
56
  throw new Error("scheduler_job_cancelled");
55
57
  const editable = pickEditableFields(patch);
56
- const input = { ...job, ...editable };
58
+ const input = { ...job, ...editable, reasoningPreference: editable.reasoningPreference === null ? undefined : (editable.reasoningPreference ?? job.reasoningPreference) };
57
59
  validateSchedulerJobInput(input);
58
60
  const now = context.now();
59
61
  const schedule = normalizeSchedulerScheduleUpdate(job.schedule, editable.schedule, now);
@@ -71,6 +73,7 @@ export function updateSchedulerJob(context, jobId, patch) {
71
73
  const pending = findPendingRun(state, jobId);
72
74
  cancelPendingRuns(state, jobId, new Date(now).toISOString());
73
75
  Object.assign(job, editable, {
76
+ reasoningPreference: parseBoundModelReasoningPreference(input.reasoningPreference, input.modelProfileId),
74
77
  schedule,
75
78
  nextRunAt,
76
79
  updatedAt: new Date(now).toISOString(),
@@ -103,6 +106,8 @@ function hasSchedulerTimingChanges(job, candidate) {
103
106
  function hasSchedulerJobChanges(job, candidate) {
104
107
  if (hasSchedulerTimingChanges(job, candidate))
105
108
  return true;
109
+ if (JSON.stringify(job.reasoningPreference) !== JSON.stringify(candidate.reasoningPreference))
110
+ return true;
106
111
  return [
107
112
  "title",
108
113
  "prompt",
@@ -119,6 +124,7 @@ function pickEditableFields(patch) {
119
124
  "prompt",
120
125
  "modelProfileId",
121
126
  "agentMode",
127
+ "reasoningPreference",
122
128
  "toolPermissionMode",
123
129
  "timeZone",
124
130
  "schedule",
@@ -1,3 +1,4 @@
1
+ import { parseBoundModelReasoningPreference } from "../../shared/model-reasoning.js";
1
2
  import { randomUUID } from "node:crypto";
2
3
  import { isRequestSchedulerJob, isRequestSchedulerRun, } from "./scheduler-target.js";
3
4
  export function makeSchedulerRun(job, scheduledAt, trigger) {
@@ -11,6 +12,7 @@ export function makeSchedulerRun(job, scheduledAt, trigger) {
11
12
  prompt: job.prompt,
12
13
  modelProfileId: job.modelProfileId,
13
14
  agentMode: job.agentMode,
15
+ ...(job.reasoningPreference ? { reasoningPreference: parseBoundModelReasoningPreference(job.reasoningPreference, job.modelProfileId) } : {}),
14
16
  toolPermissionMode: job.toolPermissionMode,
15
17
  timeZone: job.timeZone,
16
18
  jobRevision: job.revision,
@@ -1,3 +1,4 @@
1
+ import { parseBoundModelReasoningPreference } from "../../shared/model-reasoning.js";
1
2
  import { requireSchedulerToolPermissionMode } from "./tool-permission-mode.js";
2
3
  import { SchedulerValidationError } from "./validation-error.js";
3
4
  import { parseSchedulerInstant, schedulerInstantFromMilliseconds, } from "./instant-validation.js";
@@ -28,6 +29,7 @@ export function validateSchedulerJobInput(input) {
28
29
  if (!allowedModes.includes(input.agentMode)) {
29
30
  throw new SchedulerValidationError("scheduler_invalid_job", "agentMode is invalid");
30
31
  }
32
+ parseBoundModelReasoningPreference(input.reasoningPreference, input.modelProfileId);
31
33
  requireSchedulerToolPermissionMode(input.toolPermissionMode);
32
34
  validateTimeZone(input.timeZone);
33
35
  }
@@ -164,6 +164,7 @@ function startCapturedRun(context, job, run) {
164
164
  title: run.title,
165
165
  modelProfileId: run.modelProfileId,
166
166
  agentMode: run.agentMode,
167
+ reasoningPreference: run.reasoningPreference,
167
168
  toolPermissionMode: run.toolPermissionMode ?? "full_access",
168
169
  timeZone: run.timeZone,
169
170
  revision: run.jobRevision,
@@ -1,3 +1,4 @@
1
+ import { parseBoundModelReasoningPreference } from "../../shared/model-reasoning.js";
1
2
  import { parseStoredAutomationJob, parseStoredAutomationRun, } from "./automation-snapshot-validation.js";
2
3
  import { sameSchedulerTarget } from "./scheduler-target.js";
3
4
  import { normalizeStoredSchedulerSchedule, validateSchedulerJobInput, validateTimeZone, } from "./schedule-validation.js";
@@ -74,6 +75,7 @@ export function parseStoredRun(value) {
74
75
  failSnapshot();
75
76
  if (Number(value.jobRevision) < 1)
76
77
  failSnapshot();
78
+ parseBoundModelReasoningPreference(value.reasoningPreference, String(value.modelProfileId));
77
79
  requireSchedulerToolPermissionMode(value.toolPermissionMode);
78
80
  validateTimeZone(String(value.timeZone));
79
81
  const states = [
@@ -21,6 +21,8 @@ export function projectAuditorAssignment(request, head, call) {
21
21
  prompt: request.prompt,
22
22
  objective: projectExecutionCompactionObjective(request.prompt, steering.updates),
23
23
  callId: caller.callId,
24
+ updates: steering.updates,
25
+ sourceRevision: head.revision,
24
26
  store: request.contextCompactionStore,
25
27
  results: head.state.capabilityExecutions
26
28
  .filter((execution) => execution.callId === caller.callId && execution.status === "settled")
@@ -0,0 +1,9 @@
1
+ import { type CapabilityControlsPartitionResult, type CapabilityDescriptor } from "../../orchestration/capability-adapters/index.js";
2
+ /** The evidence-owning EA selects the complete operation for ordinary observations. */
3
+ export declare function ownsExecutionObservationControls(descriptor: CapabilityDescriptor): boolean;
4
+ /**
5
+ * This is an EA model-facing projection, not a change to the shared descriptor.
6
+ * Optional controls remain optional: a generated null is an intentional omission,
7
+ * normalized by the decision parser before execution, never a later choice.
8
+ */
9
+ export declare function partitionExecutionCapabilityControls(descriptor: CapabilityDescriptor): CapabilityControlsPartitionResult;
@@ -0,0 +1,29 @@
1
+ import { EMPTY_CAPABILITY_CONTROLS_SCHEMA, partitionCapabilityControlsSchema, } from "../../orchestration/capability-adapters/index.js";
2
+ /** The evidence-owning EA selects the complete operation for ordinary observations. */
3
+ export function ownsExecutionObservationControls(descriptor) {
4
+ if (descriptor.effect !== "observation")
5
+ return false;
6
+ return descriptor.requiresPayloadAuthoringObjective !== true;
7
+ }
8
+ /**
9
+ * This is an EA model-facing projection, not a change to the shared descriptor.
10
+ * Optional controls remain optional: a generated null is an intentional omission,
11
+ * normalized by the decision parser before execution, never a later choice.
12
+ */
13
+ export function partitionExecutionCapabilityControls(descriptor) {
14
+ const partition = partitionCapabilityControlsSchema(descriptor.controls, descriptor.selectionControlIds);
15
+ if (!partition.ok)
16
+ return partition;
17
+ if (!ownsExecutionObservationControls(descriptor))
18
+ return partition;
19
+ const fullSchema = partition.value.fullSchema;
20
+ return Object.freeze({
21
+ ok: true,
22
+ value: Object.freeze({
23
+ fullSchema,
24
+ selectionSchema: fullSchema,
25
+ remainingSchema: EMPTY_CAPABILITY_CONTROLS_SCHEMA,
26
+ selectionControlIds: Object.freeze(Object.keys(fullSchema.properties)),
27
+ }),
28
+ });
29
+ }
@@ -0,0 +1,17 @@
1
+ import { type CapabilityCatalogGroup, type CapabilityDescriptor } from "../../orchestration/capability-adapters/index.js";
2
+ import type { RoleCallFrame, RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
3
+ import { type RequestExecutionScope } from "../../request/execution-scope.js";
4
+ /** One decision-local capability offer shared by guidance loading and input. */
5
+ export type ExecutionCapabilityScope = Readonly<{
6
+ capabilities: readonly CapabilityDescriptor[];
7
+ capabilityCatalogGroups: readonly CapabilityCatalogGroup[];
8
+ activeCapabilityCatalogGroupIds: readonly string[] | null;
9
+ knownGroupIds: readonly string[];
10
+ remainingExecutions: number;
11
+ capabilityScopeAction: "open" | "extend" | null;
12
+ }>;
13
+ export declare function resolveExecutionCapabilityScope(request: RequestExecutionScope, options: Readonly<{
14
+ head: RoleCallLedgerHead;
15
+ call: RoleCallFrame;
16
+ }>): ExecutionCapabilityScope;
17
+ export declare function assertExecutionAgentCanonicalSource(request: RequestExecutionScope, head: RoleCallLedgerHead, call: RoleCallFrame): void;
@@ -0,0 +1,54 @@
1
+ import { projectCapabilityCatalogGroups, projectCapabilityScope, } from "../../orchestration/capability-adapters/index.js";
2
+ import { resolveRequestWorkerCapabilities, } from "../../request/execution-scope.js";
3
+ export function resolveExecutionCapabilityScope(request, options) {
4
+ assertExecutionAgentCanonicalSource(request, options.head, options.call);
5
+ const allCapabilities = resolveRequestWorkerCapabilities(request).provider.getDescriptors();
6
+ const capabilityCatalogGroups = projectCapabilityCatalogGroups(allCapabilities);
7
+ const activeCapabilityCatalogGroupIds = options.call.workerCapabilityScope
8
+ ? Object.freeze([...options.call.workerCapabilityScope.catalogGroupIds])
9
+ : null;
10
+ const remainingExecutions = options.head.policy.limits.maxCapabilityExecutions -
11
+ options.head.state.capabilityExecutions.length;
12
+ const capabilities = canOfferScopedCapabilities(activeCapabilityCatalogGroupIds, remainingExecutions)
13
+ ? projectCapabilityScope({
14
+ entries: allCapabilities,
15
+ scope: options.call.workerCapabilityScope,
16
+ descriptorOf: (entry) => entry,
17
+ }).entries
18
+ : Object.freeze([]);
19
+ const knownGroupIds = Object.freeze(capabilityCatalogGroups.map(({ groupId }) => groupId));
20
+ return Object.freeze({
21
+ capabilities,
22
+ capabilityCatalogGroups,
23
+ activeCapabilityCatalogGroupIds,
24
+ knownGroupIds,
25
+ remainingExecutions,
26
+ capabilityScopeAction: resolveCapabilityScopeAction(activeCapabilityCatalogGroupIds, knownGroupIds, remainingExecutions),
27
+ });
28
+ }
29
+ export function assertExecutionAgentCanonicalSource(request, head, call) {
30
+ if (head.state.requestId !== request.requestId ||
31
+ head.state.phase !== "running" ||
32
+ head.state.rootCallId !== call.callId ||
33
+ head.state.activeCallId !== call.callId ||
34
+ call.parentCallId !== null ||
35
+ call.status !== "active") {
36
+ throw new Error("execution_agent_head_invalid");
37
+ }
38
+ }
39
+ function canOfferScopedCapabilities(activeGroupIds, remainingExecutions) {
40
+ if (activeGroupIds === null)
41
+ return false;
42
+ return remainingExecutions > 0;
43
+ }
44
+ function resolveCapabilityScopeAction(activeGroupIds, knownGroupIds, remainingExecutions) {
45
+ if (remainingExecutions <= 0)
46
+ return null;
47
+ if (knownGroupIds.length === 0)
48
+ return null;
49
+ if (activeGroupIds === null)
50
+ return "open";
51
+ if (knownGroupIds.some((groupId) => !activeGroupIds.includes(groupId)))
52
+ return "extend";
53
+ return null;
54
+ }
@@ -1,9 +1,27 @@
1
+ import { resolveExecutionEvidenceCheckpoint } from "../../context/execution-compaction-checkpoint-selection.js";
1
2
  import { executionCompactionScopeId, projectExecutionCompactionObjective, } from "../../context/execution-compaction-objective.js";
2
3
  import { createModelStepCompactionController } from "../../context/model-step-compaction.js";
3
4
  import { buildExecutionCapabilityResultSource } from "./capability-result-context.js";
4
5
  export function createExecutionAgentCompactionController(request, options) {
5
6
  const objective = projectExecutionCompactionObjective(request.prompt, options.steeringSnapshot.updates);
6
7
  const call = Object.freeze({ ...options.call, objective });
8
+ const scopeId = executionCompactionScopeId({
9
+ callId: call.callId,
10
+ prompt: request.prompt,
11
+ objective,
12
+ ...(options.scopeSuffix ? { scopeSuffix: options.scopeSuffix } : {}),
13
+ });
14
+ const checkpoint = resolveExecutionEvidenceCheckpoint({
15
+ requestId: request.requestId,
16
+ prompt: request.prompt,
17
+ objective,
18
+ callId: call.callId,
19
+ store: request.contextCompactionStore,
20
+ updates: options.steeringSnapshot.updates,
21
+ allowedConsumers: options.allowedConsumers,
22
+ scopeSuffix: options.scopeSuffix,
23
+ sourceRevision: options.head.revision,
24
+ });
7
25
  return createModelStepCompactionController(request, {
8
26
  call,
9
27
  sourceRevision: options.head.revision,
@@ -16,11 +34,9 @@ export function createExecutionAgentCompactionController(request, options) {
16
34
  .map((execution) => buildExecutionCapabilityResultSource(options.head, execution)),
17
35
  allowedConsumers: options.allowedConsumers,
18
36
  consumer: options.consumer,
19
- scopeId: executionCompactionScopeId({
20
- callId: call.callId,
21
- prompt: request.prompt,
22
- objective,
23
- ...(options.scopeSuffix ? { scopeSuffix: options.scopeSuffix } : {}),
24
- }),
37
+ scopeId,
38
+ ...(checkpoint && checkpoint.scopeId !== scopeId
39
+ ? { inheritedCheckpoint: checkpoint }
40
+ : {}),
25
41
  });
26
42
  }
@@ -14,6 +14,8 @@ export function buildExecutionControlsEvidenceMessage(view, params) {
14
14
  prompt: params.compaction.prompt,
15
15
  objective: projectExecutionCompactionObjective(params.compaction.prompt, params.steering.updates),
16
16
  callId: params.callId,
17
+ updates: params.steering.updates,
18
+ sourceRevision: view.sourceRevision,
17
19
  store: params.compaction.store,
18
20
  results: view.results.map((result) => ({
19
21
  ...result,
@@ -0,0 +1,6 @@
1
+ /** Decision-only policy; source evidence remains in its canonical context lane. */
2
+ export declare const EXECUTION_EVIDENCE_REUSE_INSTRUCTIONS: string;
3
+ export declare function appendExecutionEvidenceReuseInstructions(params: Readonly<{
4
+ instructions: string;
5
+ hasCapabilities: boolean;
6
+ }>): string;