@abot-ai/runtime 1.8.0 → 1.9.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 (423) hide show
  1. package/README.md +216 -222
  2. package/dist/scripts/runtime-setup-files.js +46 -2
  3. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +8 -0
  4. package/dist/src/capabilities/tool-types.d.ts +4 -0
  5. package/dist/src/model-gateway/client/chat.js +9 -5
  6. package/dist/src/model-gateway/client/invocation-error.d.ts +9 -0
  7. package/dist/src/model-gateway/client/invocation-error.js +30 -0
  8. package/dist/src/model-gateway/client/stream-consumer.js +9 -2
  9. package/dist/src/model-gateway/client/stream-parser.js +2 -1
  10. package/dist/src/model-gateway/protocol/message-contract.d.ts +1 -0
  11. package/dist/src/model-gateway/protocol/message-contract.js +1 -1
  12. package/dist/src/model-gateway/server/chat-handler.js +5 -7
  13. package/dist/src/model-gateway/server/chat-stream-response.d.ts +7 -0
  14. package/dist/src/model-gateway/server/chat-stream-response.js +25 -0
  15. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +5 -1
  16. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +15 -1
  17. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +7 -5
  18. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +9 -2
  19. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +2 -2
  20. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +2 -2
  21. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +17 -11
  22. package/dist/src/runtime/automations/service.d.ts +1 -1
  23. package/dist/src/runtime/capabilities/automation-builder/tool-module.js +4 -4
  24. package/dist/src/runtime/capabilities/automations/draft-index.d.ts +1 -1
  25. package/dist/src/runtime/capabilities/automations/tool-module.js +4 -4
  26. package/dist/src/runtime/capabilities/core-tool-contracts.d.ts +29 -0
  27. package/dist/src/runtime/capabilities/core-tool-contracts.js +38 -0
  28. package/dist/src/runtime/capabilities/knowledge-skills/read-many.d.ts +4 -0
  29. package/dist/src/runtime/capabilities/knowledge-skills/read-many.js +21 -0
  30. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.d.ts +13 -0
  31. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.js +44 -0
  32. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.d.ts +141 -0
  33. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.js +58 -0
  34. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.d.ts +4 -0
  35. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.js +78 -0
  36. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.d.ts +12 -0
  37. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.js +21 -0
  38. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.d.ts +77 -0
  39. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.js +28 -0
  40. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.d.ts +3 -0
  41. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.js +34 -0
  42. package/dist/src/runtime/capabilities/scheduling/tool-module.js +3 -3
  43. package/dist/src/runtime/capabilities/tool-availability.js +6 -0
  44. package/dist/src/runtime/composition.d.ts +5 -0
  45. package/dist/src/runtime/context/capability-brief.d.ts +2 -2
  46. package/dist/src/runtime/context/capability-brief.js +3 -3
  47. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -2
  48. package/dist/src/runtime/context/capability-descriptions.js +57 -20
  49. package/dist/src/runtime/context/capability-result-compaction-source.d.ts +3 -1
  50. package/dist/src/runtime/context/capability-result-compaction-source.js +13 -1
  51. package/dist/src/runtime/context/core-skill-read-context.d.ts +16 -0
  52. package/dist/src/runtime/context/core-skill-read-context.js +76 -0
  53. package/dist/src/runtime/context/exact-evidence-match.d.ts +3 -0
  54. package/dist/src/runtime/context/exact-evidence-match.js +34 -0
  55. package/dist/src/runtime/context/model-step-compaction.js +20 -6
  56. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.d.ts +9 -0
  57. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.js +38 -0
  58. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +2 -0
  59. package/dist/src/runtime/context/semantic-compaction/prompt.js +7 -7
  60. package/dist/src/runtime/context/semantic-compaction/run.js +10 -3
  61. package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +33 -3
  62. package/dist/src/runtime/context/session-artifact-paths.d.ts +2 -1
  63. package/dist/src/runtime/context/session-artifact-paths.js +2 -1
  64. package/dist/src/runtime/context/session-memory/model-step-controller.d.ts +2 -2
  65. package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +1 -1
  66. package/dist/src/runtime/context/super-worker-compaction-failure.js +2 -1
  67. package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +2 -1
  68. package/dist/src/runtime/context/super-worker-compaction-sidecar.js +9 -3
  69. package/dist/src/runtime/default-environment-adapters.d.ts +2 -1
  70. package/dist/src/runtime/default-environment-adapters.js +5 -1
  71. package/dist/src/runtime/knowledge-skills/available-skills-projection.d.ts +17 -0
  72. package/dist/src/runtime/knowledge-skills/available-skills-projection.js +66 -0
  73. package/dist/src/runtime/knowledge-skills/available-skills.d.ts +7 -0
  74. package/dist/src/runtime/knowledge-skills/available-skills.js +17 -0
  75. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.d.ts +2 -0
  76. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.js +27 -0
  77. package/dist/src/runtime/knowledge-skills/builtins/computer-use.d.ts +2 -0
  78. package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +34 -0
  79. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.d.ts +2 -0
  80. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.js +29 -0
  81. package/dist/src/runtime/knowledge-skills/builtins/technical-work.d.ts +2 -0
  82. package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +27 -0
  83. package/dist/src/runtime/knowledge-skills/catalog.d.ts +2 -0
  84. package/dist/src/runtime/knowledge-skills/catalog.js +12 -0
  85. package/dist/src/runtime/knowledge-skills/personal-contracts.d.ts +48 -0
  86. package/dist/src/runtime/knowledge-skills/personal-contracts.js +29 -0
  87. package/dist/src/runtime/knowledge-skills/personal-documents.d.ts +6 -0
  88. package/dist/src/runtime/knowledge-skills/personal-documents.js +56 -0
  89. package/dist/src/runtime/knowledge-skills/personal-management.d.ts +9 -0
  90. package/dist/src/runtime/knowledge-skills/personal-management.js +64 -0
  91. package/dist/src/runtime/knowledge-skills/personal-repository.d.ts +6 -0
  92. package/dist/src/runtime/knowledge-skills/personal-repository.js +76 -0
  93. package/dist/src/runtime/knowledge-skills/personal-store.d.ts +4 -0
  94. package/dist/src/runtime/knowledge-skills/personal-store.js +33 -0
  95. package/dist/src/runtime/knowledge-skills/read-evidence.d.ts +3 -0
  96. package/dist/src/runtime/knowledge-skills/read-evidence.js +13 -0
  97. package/dist/src/runtime/knowledge-skills/store.d.ts +19 -0
  98. package/dist/src/runtime/knowledge-skills/store.js +41 -0
  99. package/dist/src/runtime/local-application.d.ts +2 -1
  100. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  101. package/dist/src/runtime/local-host/app-service-dispatch.js +5 -0
  102. package/dist/src/runtime/local-host/client-services.d.ts +3 -1
  103. package/dist/src/runtime/local-host/client-services.js +3 -2
  104. package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +7 -1
  105. package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +51 -25
  106. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.d.ts +5 -0
  107. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.js +28 -0
  108. package/dist/src/runtime/long-term-memory/initial-context.d.ts +18 -0
  109. package/dist/src/runtime/long-term-memory/initial-context.js +57 -0
  110. package/dist/src/runtime/long-term-memory/projection.js +1 -1
  111. package/dist/src/runtime/model/context-compaction-admission.d.ts +1 -0
  112. package/dist/src/runtime/model/context-compaction-admission.js +35 -1
  113. package/dist/src/runtime/model/context-compaction-contracts.d.ts +9 -1
  114. package/dist/src/runtime/model/invoke-step.js +6 -2
  115. package/dist/src/runtime/model/provider-failure.d.ts +13 -0
  116. package/dist/src/runtime/model/provider-failure.js +37 -0
  117. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
  118. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +4 -1
  119. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +1 -1
  120. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +7 -3
  121. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  122. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.d.ts +4 -0
  123. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.js +48 -0
  124. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  125. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  126. package/dist/src/runtime/orchestration/role-calls/contracts.js +3 -3
  127. package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -1
  128. package/dist/src/runtime/orchestration/role-calls/ledger.js +2 -2
  129. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +7 -0
  130. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +2 -0
  131. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +88 -0
  132. package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
  133. package/dist/src/runtime/orchestration/role-calls/reducer.js +2 -1
  134. package/dist/src/runtime/orchestration/role-calls/skill-read.d.ts +47 -0
  135. package/dist/src/runtime/orchestration/role-calls/skill-read.js +196 -0
  136. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +1 -1
  137. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +4 -2
  138. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +4 -1
  139. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +4 -2
  140. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +2 -2
  141. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +10 -4
  142. package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.d.ts +5 -0
  143. package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.js +31 -0
  144. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.d.ts +2 -0
  145. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +7 -2
  146. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.d.ts +19 -0
  147. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.js +43 -0
  148. package/dist/src/runtime/plugins/loader.js +7 -6
  149. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  150. package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
  151. package/dist/src/runtime/request/bound-runtime-handler.js +1 -0
  152. package/dist/src/runtime/request/capability-execution-freshness.js +6 -1
  153. package/dist/src/runtime/request/contracts.d.ts +2 -0
  154. package/dist/src/runtime/request/execution-agent-root-execution.js +11 -1
  155. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +2 -2
  156. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
  157. package/dist/src/runtime/request/execution-scope-surfaces.js +7 -0
  158. package/dist/src/runtime/request/execution-scope.d.ts +6 -2
  159. package/dist/src/runtime/request/execution-scope.js +11 -0
  160. package/dist/src/runtime/request/payload-settled-evidence.d.ts +11 -0
  161. package/dist/src/runtime/request/payload-settled-evidence.js +29 -0
  162. package/dist/src/runtime/request/prepared-execution.js +2 -0
  163. package/dist/src/runtime/request/role-call-delegation-events.d.ts +19 -0
  164. package/dist/src/runtime/request/role-call-delegation-events.js +52 -0
  165. package/dist/src/runtime/request/role-call-return-events.d.ts +19 -0
  166. package/dist/src/runtime/request/role-call-return-events.js +63 -0
  167. package/dist/src/runtime/request/role-executor-composition.js +2 -2
  168. package/dist/src/runtime/request/root-capability-binding.d.ts +24 -0
  169. package/dist/src/runtime/request/root-capability-binding.js +57 -0
  170. package/dist/src/runtime/request/root-capability-catalog.d.ts +16 -0
  171. package/dist/src/runtime/request/root-capability-catalog.js +20 -0
  172. package/dist/src/runtime/request/root-contract.d.ts +13 -1
  173. package/dist/src/runtime/request/root-execution-kernel.js +36 -68
  174. package/dist/src/runtime/request/root-reference-action.d.ts +15 -0
  175. package/dist/src/runtime/request/root-reference-action.js +48 -0
  176. package/dist/src/runtime/request/root-skill-read.d.ts +13 -0
  177. package/dist/src/runtime/request/root-skill-read.js +102 -0
  178. package/dist/src/runtime/request/runner.js +19 -3
  179. package/dist/src/runtime/request/super-payload-context-failure.js +13 -4
  180. package/dist/src/runtime/request/supervisor-root-execution.js +54 -1
  181. package/dist/src/runtime/request/supervisor-skill-edit-target.d.ts +9 -0
  182. package/dist/src/runtime/request/supervisor-skill-edit-target.js +25 -0
  183. package/dist/src/runtime/request/supervisor-skill-payload-context.d.ts +21 -0
  184. package/dist/src/runtime/request/supervisor-skill-payload-context.js +91 -0
  185. package/dist/src/runtime/request/supervisor-skill-write-preparation.d.ts +25 -0
  186. package/dist/src/runtime/request/supervisor-skill-write-preparation.js +71 -0
  187. package/dist/src/runtime/request/worker-capability-composition.d.ts +4 -1
  188. package/dist/src/runtime/request/worker-capability-composition.js +4 -1
  189. package/dist/src/runtime/request/worker-capability-payload.d.ts +1 -1
  190. package/dist/src/runtime/request/worker-capability-payload.js +44 -37
  191. package/dist/src/runtime/runtime-environment.d.ts +2 -0
  192. package/dist/src/runtime/runtime-environment.js +12 -1
  193. package/dist/src/runtime/scheduler/contracts.d.ts +4 -0
  194. package/dist/src/runtime/scheduler/run-list-filter.d.ts +11 -0
  195. package/dist/src/runtime/scheduler/run-list-filter.js +56 -0
  196. package/dist/src/runtime/scheduler/run-list-query.d.ts +2 -2
  197. package/dist/src/runtime/scheduler/run-list-query.js +4 -1
  198. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +2 -0
  199. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +2 -2
  200. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +2 -34
  201. package/dist/src/runtime/steps/auditor-decision/input.js +21 -3
  202. package/dist/src/runtime/steps/auditor-decision/projection.js +5 -0
  203. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  204. package/dist/src/runtime/steps/auditor-decision/prompt.js +14 -3
  205. package/dist/src/runtime/steps/capability-execution-guidance.d.ts +7 -0
  206. package/dist/src/runtime/steps/capability-execution-guidance.js +28 -0
  207. package/dist/src/runtime/steps/capability-execution-instructions.d.ts +0 -2
  208. package/dist/src/runtime/steps/capability-execution-instructions.js +0 -2
  209. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +5 -2
  210. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +22 -3
  211. package/dist/src/runtime/steps/execution-agent/compaction.d.ts +3 -2
  212. package/dist/src/runtime/steps/execution-agent/compaction.js +9 -1
  213. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +10 -0
  214. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +13 -1
  215. package/dist/src/runtime/steps/execution-agent/direct-response-configuration.d.ts +3 -0
  216. package/dist/src/runtime/steps/execution-agent/direct-response-configuration.js +64 -0
  217. package/dist/src/runtime/steps/execution-agent/direct-response-contract.d.ts +7 -0
  218. package/dist/src/runtime/steps/execution-agent/direct-response-contract.js +56 -0
  219. package/dist/src/runtime/steps/execution-agent/direct-response-policy.d.ts +9 -0
  220. package/dist/src/runtime/steps/execution-agent/direct-response-policy.js +30 -0
  221. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.d.ts +7 -0
  222. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +43 -0
  223. package/dist/src/runtime/steps/execution-agent/format.js +2 -0
  224. package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -0
  225. package/dist/src/runtime/steps/execution-agent/input.js +35 -2
  226. package/dist/src/runtime/steps/execution-agent/plugin-catalog.d.ts +4 -0
  227. package/dist/src/runtime/steps/execution-agent/plugin-catalog.js +8 -0
  228. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  229. package/dist/src/runtime/steps/execution-agent/prompt.js +42 -41
  230. package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +1 -0
  231. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -1
  232. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  233. package/dist/src/runtime/steps/execution-agent/response-run.js +6 -12
  234. package/dist/src/runtime/steps/execution-agent/run.js +5 -2
  235. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -3
  236. package/dist/src/runtime/steps/execution-agent/state-context.js +3 -40
  237. package/dist/src/runtime/steps/knowledge-skill-instructions.d.ts +3 -0
  238. package/dist/src/runtime/steps/knowledge-skill-instructions.js +3 -0
  239. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +4 -2
  240. package/dist/src/runtime/steps/planner-decision/capability-brief.js +5 -1
  241. package/dist/src/runtime/steps/planner-decision/input.d.ts +2 -2
  242. package/dist/src/runtime/steps/planner-decision/input.js +7 -1
  243. package/dist/src/runtime/steps/planner-decision/prompt.js +29 -49
  244. package/dist/src/runtime/steps/planner-graph/input.d.ts +2 -2
  245. package/dist/src/runtime/steps/planner-graph/input.js +9 -8
  246. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -2
  247. package/dist/src/runtime/steps/planner-graph/run.d.ts +2 -2
  248. package/dist/src/runtime/steps/planner-graph/run.js +5 -5
  249. package/dist/src/runtime/steps/planner-graph/skill-guidance.d.ts +5 -0
  250. package/dist/src/runtime/steps/planner-graph/skill-guidance.js +62 -0
  251. package/dist/src/runtime/steps/reviewer-decision/final-evidence.d.ts +1 -0
  252. package/dist/src/runtime/steps/reviewer-decision/final-evidence.js +3 -1
  253. package/dist/src/runtime/steps/reviewer-decision/input.d.ts +3 -1
  254. package/dist/src/runtime/steps/reviewer-decision/input.js +2 -22
  255. package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +21 -0
  256. package/dist/src/runtime/steps/reviewer-decision/model-context.js +32 -1
  257. package/dist/src/runtime/steps/reviewer-decision/projection.js +4 -0
  258. package/dist/src/runtime/steps/reviewer-decision/prompt.d.ts +1 -1
  259. package/dist/src/runtime/steps/reviewer-decision/prompt.js +15 -4
  260. package/dist/src/runtime/steps/reviewer-decision/run.d.ts +2 -0
  261. package/dist/src/runtime/steps/reviewer-decision/run.js +6 -0
  262. package/dist/src/runtime/steps/skill-read-decision.d.ts +34 -0
  263. package/dist/src/runtime/steps/skill-read-decision.js +91 -0
  264. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +22 -0
  265. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +132 -0
  266. package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +2 -0
  267. package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +9 -2
  268. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +12 -3
  269. package/dist/src/runtime/steps/supervisor-decision/contracts.js +3 -0
  270. package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +37 -0
  271. package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +124 -0
  272. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +5 -1
  273. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +4 -0
  274. package/dist/src/runtime/steps/supervisor-decision/format.d.ts +1 -0
  275. package/dist/src/runtime/steps/supervisor-decision/format.js +2 -0
  276. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +8 -1
  277. package/dist/src/runtime/steps/supervisor-decision/input.js +35 -11
  278. package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +1 -0
  279. package/dist/src/runtime/steps/supervisor-decision/parser.js +11 -0
  280. package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +26 -0
  281. package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +39 -0
  282. package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +17 -0
  283. package/dist/src/runtime/steps/supervisor-decision/preparation.js +65 -0
  284. package/dist/src/runtime/steps/supervisor-decision/presentation.d.ts +13 -0
  285. package/dist/src/runtime/steps/supervisor-decision/presentation.js +47 -0
  286. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +5 -0
  287. package/dist/src/runtime/steps/supervisor-decision/prompt.js +97 -106
  288. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +2 -0
  289. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -0
  290. package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +3 -0
  291. package/dist/src/runtime/steps/supervisor-decision/resume.js +20 -0
  292. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +7 -0
  293. package/dist/src/runtime/steps/supervisor-decision/run.js +76 -158
  294. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +21 -0
  295. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +29 -0
  296. package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +16 -0
  297. package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +44 -0
  298. package/dist/src/runtime/steps/supervisor-response/input.d.ts +3 -0
  299. package/dist/src/runtime/steps/supervisor-response/input.js +5 -0
  300. package/dist/src/runtime/steps/supervisor-response/prompt.js +2 -0
  301. package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +3 -0
  302. package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +24 -4
  303. package/dist/src/runtime/steps/supervisor-response/run.d.ts +7 -0
  304. package/dist/src/runtime/steps/supervisor-response/run.js +3 -6
  305. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.d.ts +43 -0
  306. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.js +85 -0
  307. package/dist/src/runtime/steps/supervisor-skill-authoring/input.d.ts +35 -0
  308. package/dist/src/runtime/steps/supervisor-skill-authoring/input.js +87 -0
  309. package/dist/src/runtime/steps/supervisor-skill-authoring/run.d.ts +10 -0
  310. package/dist/src/runtime/steps/supervisor-skill-authoring/run.js +35 -0
  311. package/dist/src/runtime/steps/supervisor-skill-instructions.d.ts +4 -0
  312. package/dist/src/runtime/steps/supervisor-skill-instructions.js +4 -0
  313. package/dist/src/runtime/steps/worker-capability-scope-decision.js +14 -1
  314. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +1 -0
  315. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.d.ts +5 -0
  316. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.js +31 -0
  317. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +2 -25
  318. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +4 -0
  319. package/dist/src/runtime/steps/worker-decision/prompt.js +6 -2
  320. package/dist/src/runtime/steps/worker-decision/result-author.js +6 -0
  321. package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
  322. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  323. package/dist/src/web-ui/app/app.js +7 -1
  324. package/dist/src/web-ui/app/components/automations/run-history-controls.js +77 -0
  325. package/dist/src/web-ui/app/components/automations/run-history.js +55 -0
  326. package/dist/src/web-ui/app/components/automations/run.js +3 -8
  327. package/dist/src/web-ui/app/components/automations/timeline.js +3 -2
  328. package/dist/src/web-ui/app/components/automations/workspace.js +11 -2
  329. package/dist/src/web-ui/app/components/conversation-role-cards.js +27 -0
  330. package/dist/src/web-ui/app/components/conversation-role-delegations.d.ts +12 -0
  331. package/dist/src/web-ui/app/components/conversation-role-delegations.js +24 -0
  332. package/dist/src/web-ui/app/components/conversation-role-history.d.ts +13 -0
  333. package/dist/src/web-ui/app/components/conversation-role-history.js +81 -0
  334. package/dist/src/web-ui/app/components/conversation-role-returns.d.ts +12 -0
  335. package/dist/src/web-ui/app/components/conversation-role-returns.js +23 -0
  336. package/dist/src/web-ui/app/components/dashboard/compact-layout.js +137 -0
  337. package/dist/src/web-ui/app/components/dashboard/icons.js +5 -0
  338. package/dist/src/web-ui/app/components/dashboard/widget-card.js +85 -0
  339. package/dist/src/web-ui/app/components/dashboard/widget-dialog.js +83 -0
  340. package/dist/src/web-ui/app/components/dashboard/widget-summaries.js +155 -0
  341. package/dist/src/web-ui/app/components/dashboard/workspace.js +28 -4
  342. package/dist/src/web-ui/app/components/onboarding-workspace-access.js +1 -1
  343. package/dist/src/web-ui/app/components/operations-summary.js +2 -1
  344. package/dist/src/web-ui/app/components/passive-learning/home-widget-preview.js +32 -0
  345. package/dist/src/web-ui/app/components/passive-learning/home.js +4 -1
  346. package/dist/src/web-ui/app/components/schedules/details.js +3 -2
  347. package/dist/src/web-ui/app/components/skills/workspace.js +119 -0
  348. package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -1
  349. package/dist/src/web-ui/app/components/spark-chat/settings.js +1 -1
  350. package/dist/src/web-ui/app/components/system-host/home-widget-permission-preview.js +75 -0
  351. package/dist/src/web-ui/app/components/system-host/home-widget-summary.js +93 -0
  352. package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +2 -2
  353. package/dist/src/web-ui/app/components/system-host/native-windows-access.js +1 -1
  354. package/dist/src/web-ui/app/components/system-host/rendering.js +3 -3
  355. package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +2 -2
  356. package/dist/src/web-ui/app/components/workspace-shell.js +11 -1
  357. package/dist/src/web-ui/app/computer-access-feature.js +13 -1
  358. package/dist/src/web-ui/app/configuration-feature.js +2 -0
  359. package/dist/src/web-ui/app/controllers/automation-read-projection.js +8 -4
  360. package/dist/src/web-ui/app/controllers/automation-run-actions.js +3 -1
  361. package/dist/src/web-ui/app/controllers/automation-run-history.js +159 -0
  362. package/dist/src/web-ui/app/controllers/automations-controller.js +27 -11
  363. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +6 -2
  364. package/dist/src/web-ui/app/controllers/operations-controller.js +2 -1
  365. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +22 -1
  366. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +1 -1
  367. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +7 -1
  368. package/dist/src/web-ui/app/controllers/skills-controller.js +237 -0
  369. package/dist/src/web-ui/app/dashboard-feature.js +9 -0
  370. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +5 -0
  371. package/dist/src/web-ui/app/lib/conversation-role-model.js +63 -5
  372. package/dist/src/web-ui/app/lib/event-presentation.js +34 -0
  373. package/dist/src/web-ui/app/lib/reasoning-controls.js +6 -1
  374. package/dist/src/web-ui/app/lib/role-delegation-event.d.ts +18 -0
  375. package/dist/src/web-ui/app/lib/role-delegation-event.js +47 -0
  376. package/dist/src/web-ui/app/lib/role-return-event.d.ts +19 -0
  377. package/dist/src/web-ui/app/lib/role-return-event.js +36 -0
  378. package/dist/src/web-ui/app/lib/tool-activity-event.js +8 -6
  379. package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +50 -0
  380. package/dist/src/web-ui/app/lib/workspace-route.js +1 -0
  381. package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
  382. package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +9 -1
  383. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
  384. package/dist/src/web-ui/app/services/runtime-web-client/skills.js +23 -0
  385. package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
  386. package/dist/src/web-ui/app/skills-feature.js +36 -0
  387. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +58 -0
  388. package/dist/src/web-ui/app/styles/40-skills.css +34 -0
  389. package/dist/src/web-ui/app/styles/50-automations.css +24 -3
  390. package/dist/src/web-ui/app/styles/95-home-widgets.css +110 -0
  391. package/dist/src/web-ui/app/styles.css +2 -0
  392. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  393. package/dist/src/web-ui/app/ui-behavior.js +1 -0
  394. package/dist/src/web-ui/client-state/store.js +3 -2
  395. package/dist/src/web-ui/client-state/transaction-order.d.ts +2 -0
  396. package/dist/src/web-ui/client-state/transaction-order.js +18 -0
  397. package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
  398. package/dist/src/web-ui/local-runtime/api-router.js +7 -0
  399. package/dist/src/web-ui/local-runtime/automation-routes.js +2 -1
  400. package/dist/src/web-ui/local-runtime/automation-run-page.d.ts +5 -0
  401. package/dist/src/web-ui/local-runtime/automation-run-page.js +26 -0
  402. package/dist/src/web-ui/local-runtime/skill-management-routes.d.ts +18 -0
  403. package/dist/src/web-ui/local-runtime/skill-management-routes.js +118 -0
  404. package/docs/configuration.md +8 -0
  405. package/docs/plugins.md +37 -32
  406. package/docs/runtime-public-contracts.md +37 -0
  407. package/examples/request-runner.config.example.json +3 -0
  408. package/package.json +1 -1
  409. package/plugins/capability-brief/plugin.json +1 -1
  410. package/plugins/code-outline/plugin.json +1 -1
  411. package/plugins/document-reader/plugin.json +1 -1
  412. package/plugins/exec/plugin.json +1 -1
  413. package/plugins/filesystem/plugin.json +1 -1
  414. package/plugins/json-inspector/plugin.json +1 -1
  415. package/plugins/local-search/plugin.json +1 -1
  416. package/plugins/memory/plugin.json +1 -1
  417. package/plugins/project-orientation/plugin.json +1 -1
  418. package/plugins/system/plugin.json +1 -1
  419. package/plugins/system-probe/plugin.json +1 -1
  420. package/plugins/web/plugin.json +1 -1
  421. package/plugins/web/skills/web_fetch_skill/SKILL.md +1 -2
  422. package/plugins/web/skills/web_search_skill/SKILL.md +3 -7
  423. package/src/runtime/README.md +96 -1
@@ -1,3 +1,5 @@
1
+ import type { KnowledgeSkillStore } from "../knowledge-skills/store.js";
2
+ import type { AvailableSkillsSource } from "../knowledge-skills/available-skills.js";
1
3
  import { type RuntimeFilesystemScope } from "../context/runtime-filesystem-scope.js";
2
4
  import { type SuperFailureFinalization } from "./super-failure-explanation.js";
3
5
  import type { ToolAvailabilitySource } from "../capabilities/tool-availability.js";
@@ -5,7 +7,7 @@ import type { WorkerCapabilityAdapterProvider } from "../orchestration/worker-ca
5
7
  import type { AcceptedRequestInput, BoundRequestModelInvocationContext, RequestSessionSnapshot, RequestExecutionSeed, RequestIdentity, RequestLifecycleRuntime, RequestModelInvocationView, RequestModelRuntime, RequestMemoryRuntime, RequestPresentation } from "./contracts.js";
6
8
  import type { CompiledExecutionPolicy } from "./root-contract.js";
7
9
  /** Request fields required while the request-bound capability catalog is built. */
8
- export type RequestCapabilityCompositionView = BoundRequestModelInvocationContext & Readonly<Pick<RequestExecutionSeed, "sessionId" | "prompt" | "historyMessages" | "toolPermissionMode" | "toolApprovalController" | "effectPersistence" | "onEvent" | "contextCompactionStore">>;
10
+ export type RequestCapabilityCompositionView = BoundRequestModelInvocationContext & Readonly<Pick<RequestExecutionSeed, "sessionId" | "prompt" | "historyMessages" | "sessionMemory" | "attachments" | "toolPermissionMode" | "toolApprovalController" | "effectPersistence" | "onEvent" | "contextCompactionStore">>;
9
11
  /**
10
12
  * Stable request-owned context delivered to capability adapters.
11
13
  * Passive session artifact paths and request containers are excluded.
@@ -13,7 +15,7 @@ export type RequestCapabilityCompositionView = BoundRequestModelInvocationContex
13
15
  export type RequestCapabilityExecutionView = Readonly<Omit<RequestExecutionSeed, "sessionArtifactPaths" | "sessionMemory" | "longTermMemory" | "memoryRecallLimit" | "scheduledExecution">> & BoundRequestModelInvocationContext;
14
16
  export type RequestWorkerCapabilities = Readonly<{
15
17
  filesystemScope?: RuntimeFilesystemScope;
16
- provider: WorkerCapabilityAdapterProvider<RequestCapabilityExecutionView> & Partial<ToolAvailabilitySource>;
18
+ provider: WorkerCapabilityAdapterProvider<RequestCapabilityExecutionView> & Partial<ToolAvailabilitySource & AvailableSkillsSource>;
17
19
  executionContext: RequestCapabilityExecutionView;
18
20
  }>;
19
21
  export type RequestExecutionPolicyFacet = Readonly<{
@@ -35,12 +37,14 @@ export type RequestExecutionScope = RequestExecutionSeed & BoundRequestModelInvo
35
37
  capabilities: RequestWorkerCapabilities;
36
38
  superFailureFinalization?: SuperFailureFinalization;
37
39
  workerCapabilities: RequestWorkerCapabilities;
40
+ knowledgeSkillStore?: KnowledgeSkillStore;
38
41
  }>;
39
42
  export type CompiledRequestExecutionPolicy = RequestExecutionScope["executionPolicy"];
40
43
  export type RequestWorkerCapabilityProviderSource = Pick<RequestExecutionScope, "workerCapabilities">;
41
44
  export type RequestWorkerCapabilityCatalog = Pick<WorkerCapabilityAdapterProvider<RequestCapabilityExecutionView>, "getDescriptors" | "getExecutionGuidance">;
42
45
  export declare function createRequestExecutionScope(input: Readonly<{
43
46
  seed: RequestExecutionSeed;
47
+ knowledgeSkillStore?: KnowledgeSkillStore;
44
48
  requestWorkingDirectory?: string;
45
49
  executionPolicy: CompiledRequestExecutionPolicy;
46
50
  superFailureFinalization?: SuperFailureFinalization;
@@ -1,3 +1,6 @@
1
+ import { matchesToolSelectionId } from "../../shared/tool-selection.js";
2
+ import { CORE_TOOL_CONTRACTS } from "../capabilities/core-tool-contracts.js";
3
+ import { captureModelPluginConfig } from "../config/model-plugin-config.js";
1
4
  import { captureRuntimeFilesystemScope, } from "../context/runtime-filesystem-scope.js";
2
5
  import { createSuperFailureFinalization, } from "./super-failure-explanation.js";
3
6
  import { RequestModelStepInvoker } from "../model/invoke-step.js";
@@ -22,6 +25,9 @@ export function createRequestExecutionScope(input) {
22
25
  modelInvocation,
23
26
  modelSteps,
24
27
  capabilities,
28
+ ...(input.knowledgeSkillStore && !isSkillStoreDeniedForModel(input.seed)
29
+ ? { knowledgeSkillStore: input.knowledgeSkillStore }
30
+ : {}),
25
31
  superFailureFinalization: input.superFailureFinalization ??
26
32
  createSuperFailureFinalization({
27
33
  request: input.seed,
@@ -44,3 +50,8 @@ function createRequestExecutionPolicyFacet(selection, executionPolicy) {
44
50
  executionPolicy,
45
51
  });
46
52
  }
53
+ /** Direct core reads retain the same captured model restriction as abot_skills. */
54
+ function isSkillStoreDeniedForModel(seed) {
55
+ const deniedSelectors = captureModelPluginConfig(seed.executionPolicySelection?.plugins)?.deny ?? [];
56
+ return deniedSelectors.some((selector) => matchesToolSelectionId("", CORE_TOOL_CONTRACTS.skills.name, selector));
57
+ }
@@ -0,0 +1,11 @@
1
+ import { type SemanticCompactionSource } from "../context/semantic-compaction/contracts.js";
2
+ import type { projectExecutionPayloadCompactedEvidence } from "./execution-payload-compacted-evidence.js";
3
+ type PayloadSettledResult = ReturnType<typeof projectExecutionPayloadCompactedEvidence>["results"][number];
4
+ /** Keep the adapter envelope exact and the pre-projection compaction identity stable. */
5
+ export declare function projectPayloadSettledEvidence(results: readonly PayloadSettledResult[]): Readonly<{
6
+ results: readonly PayloadSettledResult[];
7
+ resultSourceOverrides: readonly SemanticCompactionSource[];
8
+ deduplicatedReferenceDataCount: number;
9
+ deduplicatedReferenceDataChars: number;
10
+ }>;
11
+ export {};
@@ -0,0 +1,29 @@
1
+ import { findExactEvidencePath } from "../context/exact-evidence-match.js";
2
+ import { createSemanticCompactionSha256Fingerprint, } from "../context/semantic-compaction/contracts.js";
3
+ /** Keep the adapter envelope exact and the pre-projection compaction identity stable. */
4
+ export function projectPayloadSettledEvidence(results) {
5
+ const resultSourceOverrides = [];
6
+ let deduplicatedReferenceDataChars = 0;
7
+ const projected = results.map((result) => {
8
+ if (!("adapterResult" in result) || !result.referenceData)
9
+ return result;
10
+ const representedAt = findExactEvidencePath(result.adapterResult, result.referenceData);
11
+ if (!representedAt)
12
+ return result;
13
+ deduplicatedReferenceDataChars += result.referenceData.length;
14
+ const content = JSON.stringify(result);
15
+ resultSourceOverrides.push(Object.freeze({
16
+ sourceRef: `payload-result:${result.executionId}`,
17
+ sourceFingerprint: createSemanticCompactionSha256Fingerprint(content),
18
+ content,
19
+ }));
20
+ const { referenceData: _referenceData, ...singleCopyResult } = result;
21
+ return Object.freeze(singleCopyResult);
22
+ });
23
+ return Object.freeze({
24
+ results: Object.freeze(projected),
25
+ resultSourceOverrides: Object.freeze(resultSourceOverrides),
26
+ deduplicatedReferenceDataCount: resultSourceOverrides.length,
27
+ deduplicatedReferenceDataChars,
28
+ });
29
+ }
@@ -211,6 +211,7 @@ export async function prepareRequestExecution(params) {
211
211
  resources.assertRestoredStateClaimed();
212
212
  const request = createRequestExecutionScope({
213
213
  seed,
214
+ ...(options.knowledgeSkillStore ? { knowledgeSkillStore: options.knowledgeSkillStore } : {}),
214
215
  requestWorkingDirectory,
215
216
  executionPolicy,
216
217
  ...(superFailureFinalization ? { superFailureFinalization } : {}),
@@ -227,6 +228,7 @@ export async function prepareRequestExecution(params) {
227
228
  ? { runtimeConfig: options.runtimeConfig }
228
229
  : {}),
229
230
  ...(toolRegistry ? { toolRegistryOverride: toolRegistry } : {}),
231
+ knowledgeSkillStore: options.knowledgeSkillStore,
230
232
  }),
231
233
  });
232
234
  return {
@@ -0,0 +1,19 @@
1
+ import type { RoleCallLedger, RoleCallLedgerCommit } from "../orchestration/role-calls/index.js";
2
+ import { type RuntimeDelegateRoleId } from "../orchestration/roles.js";
3
+ export type RequestRoleDelegationEvent = Readonly<{
4
+ name: "role.delegated";
5
+ payload: Readonly<{
6
+ callerCallId: string;
7
+ callerRole: "supervisor";
8
+ childCallId: string;
9
+ childRole: RuntimeDelegateRoleId;
10
+ objective: string;
11
+ }>;
12
+ }>;
13
+ /** Projects the accepted assignment without changing role state or active stage. */
14
+ export declare function projectRequestRoleDelegationCommit(commit: RoleCallLedgerCommit): RequestRoleDelegationEvent | undefined;
15
+ /** Uses the existing synchronous commit boundary, including emission faults. */
16
+ export declare function attachRequestRoleDelegationEvents(params: Readonly<{
17
+ ledger: RoleCallLedger;
18
+ onEvent(name: string, payload: Record<string, unknown>): void;
19
+ }>): void;
@@ -0,0 +1,52 @@
1
+ import { consumeUnexpectedThenable } from "../orchestration/synchronous-boundary.js";
2
+ import { isRuntimeDelegateRoleId, } from "../orchestration/roles.js";
3
+ /** Projects the accepted assignment without changing role state or active stage. */
4
+ export function projectRequestRoleDelegationCommit(commit) {
5
+ if (!isDirectSupervisorChildOpen(commit))
6
+ return undefined;
7
+ const child = commit.head.state.calls.find((call) => call.callId === commit.effect.childCallId);
8
+ if (!isDirectSupervisorChild(child, commit.effect.callerCallId))
9
+ return undefined;
10
+ return Object.freeze({
11
+ name: "role.delegated",
12
+ payload: Object.freeze({
13
+ callerCallId: commit.effect.callerCallId,
14
+ callerRole: "supervisor",
15
+ childCallId: child.callId,
16
+ childRole: child.roleId,
17
+ objective: child.objective,
18
+ }),
19
+ });
20
+ }
21
+ /** Uses the existing synchronous commit boundary, including emission faults. */
22
+ export function attachRequestRoleDelegationEvents(params) {
23
+ params.ledger.commits.subscribe((commit) => {
24
+ const event = projectRequestRoleDelegationCommit(commit);
25
+ if (!event)
26
+ return;
27
+ const emitted = Reflect.apply(params.onEvent, undefined, [
28
+ event.name,
29
+ event.payload,
30
+ ]);
31
+ if (consumeUnexpectedThenable(emitted))
32
+ throw new TypeError("Request delegation event sink must be synchronous.");
33
+ });
34
+ }
35
+ function isDirectSupervisorChildOpen(commit) {
36
+ if (commit.effect.type !== "child_opened")
37
+ return false;
38
+ if (commit.head.policy.authority.rootContractId !== "supervisor")
39
+ return false;
40
+ return commit.effect.callerCallId === commit.head.state.rootCallId;
41
+ }
42
+ function isDirectSupervisorChild(child, callerCallId) {
43
+ if (!child)
44
+ return false;
45
+ if (child.parentCallId !== callerCallId)
46
+ return false;
47
+ if (child.depth !== 1)
48
+ return false;
49
+ if (!isRuntimeDelegateRoleId(child.roleId))
50
+ return false;
51
+ return typeof child.objective === "string";
52
+ }
@@ -0,0 +1,19 @@
1
+ import { type RoleCallLedger, type RoleCallLedgerCommit } from "../orchestration/role-calls/index.js";
2
+ export type RequestRoleReturnEvent = Readonly<{
3
+ name: "role.returned";
4
+ payload: Readonly<{
5
+ callerCallId: string;
6
+ callerRole: "supervisor";
7
+ childCallId: string;
8
+ childRole: "planner";
9
+ outcome: "completed" | "failed";
10
+ summary: string;
11
+ }>;
12
+ }>;
13
+ /** Projects the stored Planner result without changing role state or active stage. */
14
+ export declare function projectRequestRoleReturnCommit(commit: RoleCallLedgerCommit): RequestRoleReturnEvent | undefined;
15
+ /** Uses the existing synchronous commit boundary, including emission faults. */
16
+ export declare function attachRequestRoleReturnEvents(params: Readonly<{
17
+ ledger: RoleCallLedger;
18
+ onEvent(name: string, payload: Record<string, unknown>): void;
19
+ }>): void;
@@ -0,0 +1,63 @@
1
+ import { consumeUnexpectedThenable } from "../orchestration/synchronous-boundary.js";
2
+ import { isRoleCallResultText, } from "../orchestration/role-calls/index.js";
3
+ /** Projects the stored Planner result without changing role state or active stage. */
4
+ export function projectRequestRoleReturnCommit(commit) {
5
+ if (!isDirectSupervisorChildReturn(commit))
6
+ return undefined;
7
+ const child = commit.head.state.calls.find((call) => call.callId === commit.effect.childCallId);
8
+ if (!isReturnedPlanner(child, commit.effect))
9
+ return undefined;
10
+ const result = commit.head.state.results.find((candidate) => candidate.resultRef === child.resultRef);
11
+ if (!isMatchingPlannerResult(result, child))
12
+ return undefined;
13
+ return Object.freeze({
14
+ name: "role.returned",
15
+ payload: Object.freeze({
16
+ callerCallId: commit.effect.callerCallId,
17
+ callerRole: "supervisor",
18
+ childCallId: child.callId,
19
+ childRole: "planner",
20
+ outcome: result.outcome,
21
+ summary: result.summary,
22
+ }),
23
+ });
24
+ }
25
+ /** Uses the existing synchronous commit boundary, including emission faults. */
26
+ export function attachRequestRoleReturnEvents(params) {
27
+ params.ledger.commits.subscribe((commit) => {
28
+ const event = projectRequestRoleReturnCommit(commit);
29
+ if (!event)
30
+ return;
31
+ const emitted = Reflect.apply(params.onEvent, undefined, [
32
+ event.name,
33
+ event.payload,
34
+ ]);
35
+ if (consumeUnexpectedThenable(emitted))
36
+ throw new TypeError("Request return event sink must be synchronous.");
37
+ });
38
+ }
39
+ function isDirectSupervisorChildReturn(commit) {
40
+ if (commit.effect.type !== "child_returned")
41
+ return false;
42
+ if (commit.head.policy.authority.rootContractId !== "supervisor")
43
+ return false;
44
+ return commit.effect.callerCallId === commit.head.state.rootCallId;
45
+ }
46
+ function isReturnedPlanner(child, effect) {
47
+ if (!child)
48
+ return false;
49
+ if (child.parentCallId !== effect.callerCallId || child.depth !== 1)
50
+ return false;
51
+ if (child.roleId !== "planner" || child.status !== "completed")
52
+ return false;
53
+ return child.resultRef === effect.resultRef;
54
+ }
55
+ function isMatchingPlannerResult(result, child) {
56
+ if (!result)
57
+ return false;
58
+ if (result.producerCallId !== child.callId || result.roleId !== child.roleId)
59
+ return false;
60
+ if (result.outcome !== "completed" && result.outcome !== "failed")
61
+ return false;
62
+ return isRoleCallResultText(result.summary);
63
+ }
@@ -43,10 +43,10 @@ export const EXECUTION_AGENT_ROLE_EXECUTORS = projectRequestRoleExecutorRegistry
43
43
  ]);
44
44
  const SUPERVISOR_WORKER_V1_POLICY_DEFINITION = Object.freeze({
45
45
  id: "supervisor-worker-v1",
46
- version: 2,
46
+ version: 3,
47
47
  rootContract: SUPERVISOR_ROOT_CONTRACT,
48
48
  roleExecutors: REQUEST_ROLE_EXECUTORS,
49
- capabilityAuthorities: Object.freeze(["worker"]),
49
+ capabilityAuthorities: Object.freeze(["root", "worker"]),
50
50
  });
51
51
  const EXECUTION_AGENT_V1_POLICY_DEFINITION = Object.freeze({
52
52
  id: "execution-agent-v1",
@@ -0,0 +1,24 @@
1
+ import { type WorkerCapabilityBinding } from "../orchestration/worker-capabilities/index.js";
2
+ import { type RoleCallLedger, type RoleCallLedgerHead, type RoleCallFrame } from "../orchestration/role-calls/index.js";
3
+ import type { RequestExecutionScope, RequestCapabilityExecutionView } from "./execution-scope.js";
4
+ import type { RootActivation } from "./root-execution-contracts.js";
5
+ import type { RootContractDecision } from "./root-contract.js";
6
+ /** Existing root capability preparation, shared without changing either policy's execution path. */
7
+ export declare function prepareRootCapabilityBinding(params: {
8
+ request: RequestExecutionScope;
9
+ ledger: RoleCallLedger;
10
+ activation: RootActivation & Readonly<{
11
+ decisionSteeringVersion: number;
12
+ }>;
13
+ decision: Extract<RootContractDecision, {
14
+ action: "invoke_capability" | "invoke_capabilities";
15
+ }>;
16
+ }): Promise<{
17
+ head: RoleCallLedgerHead;
18
+ call: RoleCallFrame;
19
+ binding: WorkerCapabilityBinding<RequestCapabilityExecutionView>;
20
+ }>;
21
+ export declare function requireRootCallFrame(params: {
22
+ head: RoleCallLedgerHead;
23
+ callId: string;
24
+ }): RoleCallFrame;
@@ -0,0 +1,57 @@
1
+ import { createRootExecutionFreshness } from "./capability-execution-freshness.js";
2
+ import { createRoleCapabilityBinding } from "../orchestration/worker-capabilities/index.js";
3
+ import { resolveRoleCallTransactions } from "../orchestration/role-calls/index.js";
4
+ import { RUNTIME_ROOT_ROLE_ID } from "../orchestration/roles.js";
5
+ import { resolveRequestSteeringInbox } from "./request-steering.js";
6
+ /** Existing root capability preparation, shared without changing either policy's execution path. */
7
+ export async function prepareRootCapabilityBinding(params) {
8
+ const { request, ledger, activation, decision } = params;
9
+ const transactions = resolveRoleCallTransactions(ledger);
10
+ const requestSteering = resolveRequestSteeringInbox(request.requestSteering);
11
+ let head = activation.head;
12
+ let call = activation.call;
13
+ if (decision.workingDirectory !== undefined) {
14
+ const established = await transactions.establishWorkingDirectory({
15
+ expectedHead: head,
16
+ callId: call.callId,
17
+ invocationAttempt: call.activationCount,
18
+ workingDirectory: decision.workingDirectory,
19
+ });
20
+ if (!established.ok) {
21
+ throw new Error(`role_call_ledger_rejected:${established.issueCode}`);
22
+ }
23
+ head = established.commit.head;
24
+ call = requireRootCallFrame({ head, callId: call.callId });
25
+ }
26
+ const binding = createRoleCapabilityBinding({
27
+ requestId: request.requestId,
28
+ context: request.workerCapabilities.executionContext,
29
+ call,
30
+ ledger,
31
+ adapters: request.workerCapabilities.provider.getAdapters(),
32
+ ...(request.approvalGate
33
+ ? { approvalGate: request.approvalGate }
34
+ : {}),
35
+ ...(request.executionPolicy.authority.capabilityAuthorities.includes("root")
36
+ ? {
37
+ executionFreshness: createRootExecutionFreshness({
38
+ requestSteering,
39
+ steeringVersion: activation.decisionSteeringVersion,
40
+ }),
41
+ }
42
+ : {}),
43
+ });
44
+ return { head, call, binding };
45
+ }
46
+ export function requireRootCallFrame(params) {
47
+ const call = params.head.state.calls.find((candidate) => candidate.callId === params.callId);
48
+ if (!call ||
49
+ call.callId !== params.head.state.rootCallId ||
50
+ call.parentCallId !== null ||
51
+ call.roleId !== RUNTIME_ROOT_ROLE_ID ||
52
+ call.depth !== 0 ||
53
+ call.status !== "active") {
54
+ throw new Error("supervisor_call_frame_missing");
55
+ }
56
+ return call;
57
+ }
@@ -0,0 +1,16 @@
1
+ import type { ExecutionPolicyAuthoritySnapshot } from "../orchestration/role-calls/index.js";
2
+ import type { RuntimeDelegateRoleId } from "../orchestration/roles.js";
3
+ import type { WorkerCapabilityDescriptor } from "../orchestration/worker-capabilities/contracts.js";
4
+ /** Capture both role projections from the same request-session descriptor read. */
5
+ export declare function captureRootCapabilityCatalog(params: {
6
+ authority: ExecutionPolicyAuthoritySnapshot;
7
+ roleIds: readonly RuntimeDelegateRoleId[];
8
+ getDescriptors: () => readonly WorkerCapabilityDescriptor[];
9
+ }): Readonly<{
10
+ availableWorkerCapabilityCatalog: readonly Readonly<{
11
+ groupId: import("../../capabilities/tool-types.js").ToolCatalogGroup;
12
+ memberCount: number;
13
+ effects: readonly import("../orchestration/worker-capabilities/contracts.js").WorkerCapabilityEffect[];
14
+ }>[];
15
+ availableSkillWriteOperationIds: readonly string[];
16
+ }>;
@@ -0,0 +1,20 @@
1
+ import { projectWorkerCapabilityCatalogGroups } from "../orchestration/worker-capabilities/index.js";
2
+ import { isSupervisorSkillWriteCapabilityId, projectSupervisorWorkerCapabilityDescriptors, } from "../orchestration/worker-capabilities/supervisor-skill-authority.js";
3
+ import { hasSuperContextContract } from "../context/super-context-policy.js";
4
+ /** Capture both role projections from the same request-session descriptor read. */
5
+ export function captureRootCapabilityCatalog(params) {
6
+ const descriptors = canCaptureRootCapabilityCatalog(params.authority, params.roleIds)
7
+ ? params.getDescriptors() : [];
8
+ const availableWorkerCapabilityCatalog = projectWorkerCapabilityCatalogGroups(projectSupervisorWorkerCapabilityDescriptors({ authority: params.authority, descriptors }));
9
+ const availableSkillWriteOperationIds = hasSuperContextContract(params.authority, "supervisor")
10
+ ? descriptors.map(({ capabilityId }) => capabilityId).filter(isSupervisorSkillWriteCapabilityId) : [];
11
+ return Object.freeze({ availableWorkerCapabilityCatalog,
12
+ availableSkillWriteOperationIds: Object.freeze(availableSkillWriteOperationIds) });
13
+ }
14
+ function canCaptureRootCapabilityCatalog(authority, roleIds) {
15
+ if (authority.capabilityAuthorities.includes("root"))
16
+ return true;
17
+ if (!roleIds.includes("worker"))
18
+ return false;
19
+ return authority.capabilityAuthorities.includes("worker");
20
+ }
@@ -1,3 +1,5 @@
1
+ import type { SupervisorSkillWriteSelection } from "../steps/supervisor-skill-authoring/contract.js";
2
+ import type { SkillReadDecision } from "../steps/skill-read-decision.js";
1
3
  import type { ModelStep } from "../../shared/model-steps.js";
2
4
  import type { ModelWorkPlanUpdate } from "../orchestration/role-calls/work-plan-contracts.js";
3
5
  import type { ChatMessage } from "../../model-gateway/types.js";
@@ -16,9 +18,16 @@ export type RootContractCallIdentity = Readonly<{
16
18
  depth: number;
17
19
  invocationAttempt: number;
18
20
  }>;
19
- type RootContractAction = MemoryRecallDecision | Readonly<{
21
+ type RootContractAction = SkillReadDecision | MemoryRecallDecision | Readonly<{
22
+ action: "prepare_skill_write";
23
+ selection: SupervisorSkillWriteSelection;
24
+ acknowledgement?: string;
25
+ title?: string;
26
+ }> | Readonly<{
20
27
  action: "respond";
21
28
  responseRecommendation?: string;
29
+ responseRecommendationOrigin?: "skill_authoring_no_save";
30
+ directResponse?: RootAuthoredResponse;
22
31
  acknowledgement?: string;
23
32
  title?: string;
24
33
  }> | Readonly<{
@@ -91,6 +100,7 @@ export type RootContractAdapter<TRequest> = Readonly<{
91
100
  includeTitle: boolean;
92
101
  allowedRoleIds: readonly RuntimeDelegateRoleId[];
93
102
  availableWorkerCapabilityCatalog: readonly WorkerCapabilityCatalogGroup[];
103
+ availableSkillWriteOperationIds?: readonly string[];
94
104
  memoryRecallMessage?: ChatMessage;
95
105
  resume?: RoleChildReturnContext;
96
106
  }>): Promise<RootContractDecisionOutcome>;
@@ -99,6 +109,8 @@ export type RootContractAdapter<TRequest> = Readonly<{
99
109
  callFrame: RoleCallFrame;
100
110
  steeringVersion: number;
101
111
  responseRecommendation?: string;
112
+ responseRecommendationOrigin?: "skill_authoring_no_save";
113
+ directResponse?: RootAuthoredResponse;
102
114
  call: RootContractCallIdentity;
103
115
  toolResults: RequestToolResultsView;
104
116
  resume?: RoleChildReturnContext;
@@ -1,4 +1,6 @@
1
- import { createRootExecutionFreshness } from "./capability-execution-freshness.js";
1
+ import { prepareRootCapabilityBinding, requireRootCallFrame } from "./root-capability-binding.js";
2
+ import { captureRootCapabilityCatalog } from "./root-capability-catalog.js";
3
+ import { prepareSupervisorSkillWrite } from "./supervisor-skill-write-preparation.js";
2
4
  import { bindRoleApprovalWait, isRoleApprovalWait, } from "../orchestration/role-executors/approval-continuation.js";
3
5
  import { isWorkerCapabilityApprovalWait } from "../orchestration/worker-capabilities/approval-contracts.js";
4
6
  import { createEnteredChildInvocation } from "../orchestration/role-executors/child-invocation/entered-child.js";
@@ -9,13 +11,12 @@ import { projectRequestToolResults } from "../context/request-tool-results.js";
9
11
  import { emitRuntimeStatus } from "../events/runtime-status.js";
10
12
  import { isModelStepSteeringSuperseded } from "../model/model-step-steering.js";
11
13
  import { resolveRoleCallTransactions, } from "../orchestration/role-calls/index.js";
12
- import { RUNTIME_ROOT_ROLE_ID } from "../orchestration/roles.js";
13
- import { createRoleCapabilityBinding, isWorkerCapabilityOperationSupervisionLimitError, projectWorkerCapabilityCatalogGroups, } from "../orchestration/worker-capabilities/index.js";
14
+ import { isWorkerCapabilityOperationSupervisionLimitError, } from "../orchestration/worker-capabilities/index.js";
14
15
  import { runPolicyDegradedFinalization, projectPolicyDegradedResult, } from "./policy-degraded-finalization.js";
15
16
  import { resolveRequestSteeringInbox, } from "./request-steering.js";
16
17
  import { traceSupervisorRootAcknowledgementPublished, traceSupervisorRootActivationFailed, traceSupervisorRootActivationStarted, traceSupervisorRootInvocationSuperseded, traceSupervisorRootResponseSuperseded, } from "./supervisor-root-execution-diagnostics.js";
17
18
  import { projectSupervisorFinalObservation, } from "./root-observation-handoff.js";
18
- import { performRootMemoryRecall } from "./root-memory-recall.js";
19
+ import { isRootReferenceDecision, performRootReferenceAction } from "./root-reference-action.js";
19
20
  import { applyRootModelWorkPlan } from "./root-plan-update.js";
20
21
  import { projectRootMemoryRecallMessage } from "../long-term-memory/recall-context.js";
21
22
  import { createPlainRootAuthoredResponse } from "../orchestration/final-response/authoring-contract.js";
@@ -38,7 +39,7 @@ class RootExecutionSession {
38
39
  requestSteering;
39
40
  resume;
40
41
  observationHandoff;
41
- availableWorkerCapabilityCatalog;
42
+ capabilityCatalog;
42
43
  acknowledgementPublished = false;
43
44
  titlePublished = false;
44
45
  constructor(params) {
@@ -162,12 +163,10 @@ class RootExecutionSession {
162
163
  }
163
164
  async decide(activation, attempt) {
164
165
  attempt.failureStage = "project_worker_catalog";
165
- this.availableWorkerCapabilityCatalog ??=
166
- this.policy.authority.capabilityAuthorities.includes("root") ||
167
- (this.policy.roleExecutors.roleIds.includes("worker") &&
168
- this.policy.authority.capabilityAuthorities.includes("worker"))
169
- ? projectWorkerCapabilityCatalogGroups(this.request.workerCapabilities.provider.getDescriptors())
170
- : Object.freeze([]);
166
+ this.capabilityCatalog ??= captureRootCapabilityCatalog({
167
+ authority: this.policy.authority, roleIds: this.policy.roleExecutors.roleIds,
168
+ getDescriptors: () => this.request.workerCapabilities.provider.getDescriptors(),
169
+ });
171
170
  attempt.failureStage = "decide";
172
171
  const decisionToolResults = projectRequestToolResults({
173
172
  ledger: this.ledger,
@@ -190,7 +189,7 @@ class RootExecutionSession {
190
189
  !this.titlePublished &&
191
190
  this.request.shouldGenerateSessionTitle,
192
191
  allowedRoleIds: this.policy.roleExecutors.roleIds,
193
- availableWorkerCapabilityCatalog: this.availableWorkerCapabilityCatalog,
192
+ ...this.capabilityCatalog,
194
193
  ...(this.resume ? { resume: this.resume } : {}),
195
194
  });
196
195
  const requiresFreshPresentation = this.policy.rootContract.deferRespondPresentation === true;
@@ -239,6 +238,22 @@ class RootExecutionSession {
239
238
  }
240
239
  async executeDecision(activation, attempt) {
241
240
  const { decision } = activation;
241
+ if (decision.action === "prepare_skill_write") {
242
+ attempt.failureStage = "apply_root_transition";
243
+ const prepared = await prepareSupervisorSkillWrite({
244
+ request: this.request, ledger: this.ledger,
245
+ activation: { ...activation, decision }, resume: this.resume,
246
+ });
247
+ if (!prepared)
248
+ return CONTINUE_ROOT_EXECUTION;
249
+ activation = prepared.activation;
250
+ this.resume = prepared.resume;
251
+ attempt.head = activation.head;
252
+ attempt.call = activation.call;
253
+ return prepared.activation.decision.action === "respond"
254
+ ? this.completeResponse(activation, prepared.activation.decision, attempt)
255
+ : this.invokeCapabilities(activation, prepared.activation.decision, attempt);
256
+ }
242
257
  if (decision.workPlan) {
243
258
  attempt.failureStage = "apply_root_transition";
244
259
  const updated = await applyRootModelWorkPlan({
@@ -255,16 +270,9 @@ class RootExecutionSession {
255
270
  attempt.head = updated.head;
256
271
  attempt.call = updated.call;
257
272
  }
258
- if (decision.action === "recall_memory") {
259
- attempt.failureStage = "recall_memory";
260
- await performRootMemoryRecall({
261
- request: this.request,
262
- ledger: this.ledger,
263
- head: activation.head,
264
- call: activation.call,
265
- steeringVersion: activation.decisionSteeringVersion,
266
- query: decision.query,
267
- });
273
+ if (isRootReferenceDecision(decision)) {
274
+ attempt.failureStage = decision.action === "recall_memory" ? "recall_memory" : "apply_root_transition";
275
+ this.resume = await performRootReferenceAction(this.request, this.ledger, { ...activation, decision }, this.resume);
268
276
  return CONTINUE_ROOT_EXECUTION;
269
277
  }
270
278
  if (decision.action === "invoke_role") {
@@ -374,41 +382,11 @@ class RootExecutionSession {
374
382
  return CONTINUE_ROOT_EXECUTION;
375
383
  }
376
384
  attempt.failureStage = "invoke_child";
377
- let head = activation.head;
378
- let call = activation.call;
379
- if (decision.workingDirectory !== undefined) {
380
- const established = await this.transactions.establishWorkingDirectory({
381
- expectedHead: head,
382
- callId: call.callId,
383
- invocationAttempt: call.activationCount,
384
- workingDirectory: decision.workingDirectory,
385
- });
386
- if (!established.ok) {
387
- throw new Error(`role_call_ledger_rejected:${established.issueCode}`);
388
- }
389
- head = established.commit.head;
390
- attempt.head = head;
391
- call = requireRootCallFrame({ head, callId: call.callId });
392
- attempt.call = call;
393
- }
394
- const binding = createRoleCapabilityBinding({
395
- requestId: this.request.requestId,
396
- context: this.request.workerCapabilities.executionContext,
397
- call,
398
- ledger: this.ledger,
399
- adapters: this.request.workerCapabilities.provider.getAdapters(),
400
- ...(this.request.approvalGate
401
- ? { approvalGate: this.request.approvalGate }
402
- : {}),
403
- ...(this.policy.authority.capabilityAuthorities.includes("root")
404
- ? {
405
- executionFreshness: createRootExecutionFreshness({
406
- requestSteering: this.requestSteering,
407
- steeringVersion: activation.decisionSteeringVersion,
408
- }),
409
- }
410
- : {}),
385
+ const { head, call, binding } = await prepareRootCapabilityBinding({
386
+ request: this.request, ledger: this.ledger, activation, decision,
411
387
  });
388
+ attempt.head = head;
389
+ attempt.call = call;
412
390
  try {
413
391
  const execution = decision.action === "invoke_capability"
414
392
  ? await binding.execute({
@@ -492,6 +470,8 @@ class RootExecutionSession {
492
470
  ? createPlainRootAuthoredResponse(decision.response)
493
471
  : await this.policy.rootContract.authorResponse(this.request, {
494
472
  responseRecommendation: decision.responseRecommendation,
473
+ responseRecommendationOrigin: decision.responseRecommendationOrigin,
474
+ directResponse: decision.directResponse,
495
475
  memoryRecallMessage: projectRootMemoryRecallMessage({
496
476
  head: activation.head,
497
477
  callId: activation.call.callId,
@@ -585,15 +565,3 @@ function emitSupervisorResumeStatus(request) {
585
565
  message: "Processing the delegated result...",
586
566
  });
587
567
  }
588
- function requireRootCallFrame(params) {
589
- const call = params.head.state.calls.find((candidate) => candidate.callId === params.callId);
590
- if (!call ||
591
- call.callId !== params.head.state.rootCallId ||
592
- call.parentCallId !== null ||
593
- call.roleId !== RUNTIME_ROOT_ROLE_ID ||
594
- call.depth !== 0 ||
595
- call.status !== "active") {
596
- throw new Error("supervisor_call_frame_missing");
597
- }
598
- return call;
599
- }
@@ -0,0 +1,15 @@
1
+ import type { RoleCallFrame, RoleCallLedger, RoleCallLedgerHead, RoleChildReturnContext } from "../orchestration/role-calls/index.js";
2
+ import type { RootContractDecision } from "./root-contract.js";
3
+ import type { RequestExecutionScope } from "./execution-scope.js";
4
+ type RootReferenceDecision = Extract<RootContractDecision, {
5
+ action: "recall_memory" | "list_skills" | "read_skills";
6
+ }>;
7
+ export declare function isRootReferenceDecision(decision: RootContractDecision): decision is RootReferenceDecision;
8
+ /** Core reference actions use the same root loop without opening a child. */
9
+ export declare function performRootReferenceAction(request: RequestExecutionScope, ledger: RoleCallLedger, activation: {
10
+ head: RoleCallLedgerHead;
11
+ call: RoleCallFrame;
12
+ decisionSteeringVersion: number;
13
+ decision: RootReferenceDecision;
14
+ }, resume: RoleChildReturnContext | undefined): Promise<RoleChildReturnContext | undefined>;
15
+ export {};