@abot-ai/runtime 1.8.1 → 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 (336) hide show
  1. package/dist/scripts/runtime-setup-files.js +46 -2
  2. package/dist/src/model-gateway/client/chat.js +9 -5
  3. package/dist/src/model-gateway/client/invocation-error.d.ts +9 -0
  4. package/dist/src/model-gateway/client/invocation-error.js +30 -0
  5. package/dist/src/model-gateway/client/stream-consumer.js +9 -2
  6. package/dist/src/model-gateway/client/stream-parser.js +2 -1
  7. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +5 -1
  8. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +15 -1
  9. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +7 -5
  10. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +9 -2
  11. package/dist/src/runtime/automations/service.d.ts +1 -1
  12. package/dist/src/runtime/capabilities/automation-builder/tool-module.js +4 -4
  13. package/dist/src/runtime/capabilities/automations/draft-index.d.ts +1 -1
  14. package/dist/src/runtime/capabilities/automations/tool-module.js +4 -4
  15. package/dist/src/runtime/capabilities/core-tool-contracts.d.ts +29 -0
  16. package/dist/src/runtime/capabilities/core-tool-contracts.js +38 -0
  17. package/dist/src/runtime/capabilities/knowledge-skills/read-many.d.ts +4 -0
  18. package/dist/src/runtime/capabilities/knowledge-skills/read-many.js +21 -0
  19. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.d.ts +13 -0
  20. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.js +44 -0
  21. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.d.ts +141 -0
  22. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.js +58 -0
  23. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.d.ts +4 -0
  24. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.js +78 -0
  25. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.d.ts +12 -0
  26. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.js +21 -0
  27. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.d.ts +77 -0
  28. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.js +28 -0
  29. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.d.ts +3 -0
  30. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.js +34 -0
  31. package/dist/src/runtime/capabilities/scheduling/tool-module.js +3 -3
  32. package/dist/src/runtime/composition.d.ts +5 -0
  33. package/dist/src/runtime/context/capability-result-compaction-source.d.ts +3 -1
  34. package/dist/src/runtime/context/capability-result-compaction-source.js +13 -1
  35. package/dist/src/runtime/context/core-skill-read-context.d.ts +16 -0
  36. package/dist/src/runtime/context/core-skill-read-context.js +76 -0
  37. package/dist/src/runtime/context/exact-evidence-match.d.ts +3 -0
  38. package/dist/src/runtime/context/exact-evidence-match.js +34 -0
  39. package/dist/src/runtime/context/model-step-compaction.js +20 -6
  40. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.d.ts +9 -0
  41. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.js +38 -0
  42. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +2 -0
  43. package/dist/src/runtime/context/semantic-compaction/prompt.js +7 -7
  44. package/dist/src/runtime/context/semantic-compaction/run.js +10 -3
  45. package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +33 -3
  46. package/dist/src/runtime/context/session-artifact-paths.d.ts +2 -1
  47. package/dist/src/runtime/context/session-artifact-paths.js +2 -1
  48. package/dist/src/runtime/context/session-memory/model-step-controller.d.ts +2 -2
  49. package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +1 -1
  50. package/dist/src/runtime/context/super-worker-compaction-failure.js +2 -1
  51. package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +2 -1
  52. package/dist/src/runtime/context/super-worker-compaction-sidecar.js +9 -3
  53. package/dist/src/runtime/default-environment-adapters.d.ts +2 -1
  54. package/dist/src/runtime/default-environment-adapters.js +5 -1
  55. package/dist/src/runtime/knowledge-skills/available-skills-projection.d.ts +17 -0
  56. package/dist/src/runtime/knowledge-skills/available-skills-projection.js +66 -0
  57. package/dist/src/runtime/knowledge-skills/available-skills.d.ts +7 -0
  58. package/dist/src/runtime/knowledge-skills/available-skills.js +17 -0
  59. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.d.ts +2 -0
  60. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.js +27 -0
  61. package/dist/src/runtime/knowledge-skills/builtins/computer-use.d.ts +2 -0
  62. package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +34 -0
  63. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.d.ts +2 -0
  64. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.js +29 -0
  65. package/dist/src/runtime/knowledge-skills/builtins/technical-work.d.ts +2 -0
  66. package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +27 -0
  67. package/dist/src/runtime/knowledge-skills/catalog.d.ts +2 -0
  68. package/dist/src/runtime/knowledge-skills/catalog.js +12 -0
  69. package/dist/src/runtime/knowledge-skills/personal-contracts.d.ts +48 -0
  70. package/dist/src/runtime/knowledge-skills/personal-contracts.js +29 -0
  71. package/dist/src/runtime/knowledge-skills/personal-documents.d.ts +6 -0
  72. package/dist/src/runtime/knowledge-skills/personal-documents.js +56 -0
  73. package/dist/src/runtime/knowledge-skills/personal-management.d.ts +9 -0
  74. package/dist/src/runtime/knowledge-skills/personal-management.js +64 -0
  75. package/dist/src/runtime/knowledge-skills/personal-repository.d.ts +6 -0
  76. package/dist/src/runtime/knowledge-skills/personal-repository.js +76 -0
  77. package/dist/src/runtime/knowledge-skills/personal-store.d.ts +4 -0
  78. package/dist/src/runtime/knowledge-skills/personal-store.js +33 -0
  79. package/dist/src/runtime/knowledge-skills/read-evidence.d.ts +3 -0
  80. package/dist/src/runtime/knowledge-skills/read-evidence.js +13 -0
  81. package/dist/src/runtime/knowledge-skills/store.d.ts +19 -0
  82. package/dist/src/runtime/knowledge-skills/store.js +41 -0
  83. package/dist/src/runtime/local-application.d.ts +2 -1
  84. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  85. package/dist/src/runtime/local-host/app-service-dispatch.js +5 -0
  86. package/dist/src/runtime/local-host/client-services.d.ts +3 -1
  87. package/dist/src/runtime/local-host/client-services.js +3 -2
  88. package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +1 -0
  89. package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +1 -1
  90. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.d.ts +5 -0
  91. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.js +28 -0
  92. package/dist/src/runtime/long-term-memory/initial-context.d.ts +1 -0
  93. package/dist/src/runtime/model/context-compaction-admission.d.ts +1 -0
  94. package/dist/src/runtime/model/context-compaction-admission.js +35 -1
  95. package/dist/src/runtime/model/context-compaction-contracts.d.ts +9 -1
  96. package/dist/src/runtime/model/invoke-step.js +6 -2
  97. package/dist/src/runtime/model/provider-failure.d.ts +13 -0
  98. package/dist/src/runtime/model/provider-failure.js +37 -0
  99. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
  100. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -0
  101. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +2 -1
  102. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  103. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.d.ts +4 -0
  104. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.js +48 -0
  105. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  106. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +6 -3
  107. package/dist/src/runtime/orchestration/role-calls/contracts.js +3 -3
  108. package/dist/src/runtime/orchestration/role-calls/skill-read.d.ts +47 -0
  109. package/dist/src/runtime/orchestration/role-calls/skill-read.js +196 -0
  110. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +1 -1
  111. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +4 -2
  112. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +4 -1
  113. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  114. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  115. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +5 -3
  116. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.d.ts +2 -0
  117. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +7 -2
  118. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.d.ts +19 -0
  119. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.js +43 -0
  120. package/dist/src/runtime/plugins/loader.js +7 -6
  121. package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
  122. package/dist/src/runtime/request/bound-runtime-handler.js +1 -0
  123. package/dist/src/runtime/request/contracts.d.ts +2 -0
  124. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +2 -2
  125. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
  126. package/dist/src/runtime/request/execution-scope-surfaces.js +7 -0
  127. package/dist/src/runtime/request/execution-scope.d.ts +6 -2
  128. package/dist/src/runtime/request/execution-scope.js +11 -0
  129. package/dist/src/runtime/request/payload-settled-evidence.d.ts +11 -0
  130. package/dist/src/runtime/request/payload-settled-evidence.js +29 -0
  131. package/dist/src/runtime/request/prepared-execution.js +2 -0
  132. package/dist/src/runtime/request/role-call-delegation-events.d.ts +19 -0
  133. package/dist/src/runtime/request/role-call-delegation-events.js +52 -0
  134. package/dist/src/runtime/request/role-call-return-events.d.ts +19 -0
  135. package/dist/src/runtime/request/role-call-return-events.js +63 -0
  136. package/dist/src/runtime/request/role-executor-composition.js +2 -2
  137. package/dist/src/runtime/request/root-capability-binding.d.ts +24 -0
  138. package/dist/src/runtime/request/root-capability-binding.js +57 -0
  139. package/dist/src/runtime/request/root-capability-catalog.d.ts +16 -0
  140. package/dist/src/runtime/request/root-capability-catalog.js +20 -0
  141. package/dist/src/runtime/request/root-contract.d.ts +11 -1
  142. package/dist/src/runtime/request/root-execution-kernel.js +35 -68
  143. package/dist/src/runtime/request/root-reference-action.d.ts +15 -0
  144. package/dist/src/runtime/request/root-reference-action.js +48 -0
  145. package/dist/src/runtime/request/root-skill-read.d.ts +13 -0
  146. package/dist/src/runtime/request/root-skill-read.js +102 -0
  147. package/dist/src/runtime/request/runner.js +10 -0
  148. package/dist/src/runtime/request/super-payload-context-failure.js +13 -4
  149. package/dist/src/runtime/request/supervisor-root-execution.js +48 -1
  150. package/dist/src/runtime/request/supervisor-skill-edit-target.d.ts +9 -0
  151. package/dist/src/runtime/request/supervisor-skill-edit-target.js +25 -0
  152. package/dist/src/runtime/request/supervisor-skill-payload-context.d.ts +21 -0
  153. package/dist/src/runtime/request/supervisor-skill-payload-context.js +91 -0
  154. package/dist/src/runtime/request/supervisor-skill-write-preparation.d.ts +25 -0
  155. package/dist/src/runtime/request/supervisor-skill-write-preparation.js +71 -0
  156. package/dist/src/runtime/request/worker-capability-composition.d.ts +4 -1
  157. package/dist/src/runtime/request/worker-capability-composition.js +4 -1
  158. package/dist/src/runtime/request/worker-capability-payload.d.ts +1 -1
  159. package/dist/src/runtime/request/worker-capability-payload.js +44 -37
  160. package/dist/src/runtime/runtime-environment.d.ts +2 -0
  161. package/dist/src/runtime/runtime-environment.js +12 -1
  162. package/dist/src/runtime/scheduler/contracts.d.ts +4 -0
  163. package/dist/src/runtime/scheduler/run-list-filter.d.ts +11 -0
  164. package/dist/src/runtime/scheduler/run-list-filter.js +56 -0
  165. package/dist/src/runtime/scheduler/run-list-query.d.ts +2 -2
  166. package/dist/src/runtime/scheduler/run-list-query.js +4 -1
  167. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +2 -0
  168. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +2 -2
  169. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +2 -34
  170. package/dist/src/runtime/steps/auditor-decision/input.js +21 -3
  171. package/dist/src/runtime/steps/auditor-decision/projection.js +5 -0
  172. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  173. package/dist/src/runtime/steps/auditor-decision/prompt.js +14 -3
  174. package/dist/src/runtime/steps/capability-execution-guidance.d.ts +7 -0
  175. package/dist/src/runtime/steps/capability-execution-guidance.js +28 -0
  176. package/dist/src/runtime/steps/capability-execution-instructions.d.ts +0 -2
  177. package/dist/src/runtime/steps/capability-execution-instructions.js +0 -2
  178. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +5 -2
  179. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +22 -3
  180. package/dist/src/runtime/steps/execution-agent/compaction.d.ts +3 -2
  181. package/dist/src/runtime/steps/execution-agent/compaction.js +9 -1
  182. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +14 -14
  183. package/dist/src/runtime/steps/execution-agent/input.js +14 -2
  184. package/dist/src/runtime/steps/execution-agent/prompt.js +40 -38
  185. package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +1 -0
  186. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -1
  187. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  188. package/dist/src/runtime/steps/execution-agent/response-run.js +1 -1
  189. package/dist/src/runtime/steps/execution-agent/run.js +1 -1
  190. package/dist/src/runtime/steps/execution-agent/state-context.js +1 -1
  191. package/dist/src/runtime/steps/knowledge-skill-instructions.d.ts +3 -0
  192. package/dist/src/runtime/steps/knowledge-skill-instructions.js +3 -0
  193. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +2 -2
  194. package/dist/src/runtime/steps/planner-decision/capability-brief.js +5 -1
  195. package/dist/src/runtime/steps/planner-decision/input.d.ts +2 -2
  196. package/dist/src/runtime/steps/planner-decision/input.js +7 -1
  197. package/dist/src/runtime/steps/planner-decision/prompt.js +3 -0
  198. package/dist/src/runtime/steps/planner-graph/input.d.ts +2 -2
  199. package/dist/src/runtime/steps/planner-graph/input.js +9 -8
  200. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -2
  201. package/dist/src/runtime/steps/planner-graph/run.d.ts +2 -2
  202. package/dist/src/runtime/steps/planner-graph/run.js +5 -5
  203. package/dist/src/runtime/steps/planner-graph/skill-guidance.d.ts +5 -0
  204. package/dist/src/runtime/steps/planner-graph/skill-guidance.js +62 -0
  205. package/dist/src/runtime/steps/reviewer-decision/final-evidence.d.ts +1 -0
  206. package/dist/src/runtime/steps/reviewer-decision/final-evidence.js +3 -1
  207. package/dist/src/runtime/steps/reviewer-decision/input.d.ts +3 -1
  208. package/dist/src/runtime/steps/reviewer-decision/input.js +2 -22
  209. package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +21 -0
  210. package/dist/src/runtime/steps/reviewer-decision/model-context.js +32 -1
  211. package/dist/src/runtime/steps/reviewer-decision/projection.js +4 -0
  212. package/dist/src/runtime/steps/reviewer-decision/prompt.d.ts +1 -1
  213. package/dist/src/runtime/steps/reviewer-decision/prompt.js +15 -4
  214. package/dist/src/runtime/steps/reviewer-decision/run.d.ts +2 -0
  215. package/dist/src/runtime/steps/reviewer-decision/run.js +6 -0
  216. package/dist/src/runtime/steps/skill-read-decision.d.ts +34 -0
  217. package/dist/src/runtime/steps/skill-read-decision.js +91 -0
  218. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +22 -0
  219. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +132 -0
  220. package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +2 -0
  221. package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +9 -2
  222. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +12 -3
  223. package/dist/src/runtime/steps/supervisor-decision/contracts.js +3 -0
  224. package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +37 -0
  225. package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +124 -0
  226. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +5 -1
  227. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +4 -0
  228. package/dist/src/runtime/steps/supervisor-decision/format.d.ts +1 -0
  229. package/dist/src/runtime/steps/supervisor-decision/format.js +2 -0
  230. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +7 -1
  231. package/dist/src/runtime/steps/supervisor-decision/input.js +30 -11
  232. package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +1 -0
  233. package/dist/src/runtime/steps/supervisor-decision/parser.js +11 -0
  234. package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +26 -0
  235. package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +39 -0
  236. package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +17 -0
  237. package/dist/src/runtime/steps/supervisor-decision/preparation.js +65 -0
  238. package/dist/src/runtime/steps/supervisor-decision/presentation.d.ts +13 -0
  239. package/dist/src/runtime/steps/supervisor-decision/presentation.js +47 -0
  240. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +4 -0
  241. package/dist/src/runtime/steps/supervisor-decision/prompt.js +96 -109
  242. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +2 -0
  243. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -0
  244. package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +3 -0
  245. package/dist/src/runtime/steps/supervisor-decision/resume.js +20 -0
  246. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +6 -0
  247. package/dist/src/runtime/steps/supervisor-decision/run.js +73 -159
  248. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +21 -0
  249. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +29 -0
  250. package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +16 -0
  251. package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +44 -0
  252. package/dist/src/runtime/steps/supervisor-response/input.d.ts +3 -0
  253. package/dist/src/runtime/steps/supervisor-response/input.js +5 -0
  254. package/dist/src/runtime/steps/supervisor-response/prompt.js +2 -0
  255. package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +3 -0
  256. package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +24 -4
  257. package/dist/src/runtime/steps/supervisor-response/run.d.ts +5 -0
  258. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.d.ts +43 -0
  259. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.js +85 -0
  260. package/dist/src/runtime/steps/supervisor-skill-authoring/input.d.ts +35 -0
  261. package/dist/src/runtime/steps/supervisor-skill-authoring/input.js +87 -0
  262. package/dist/src/runtime/steps/supervisor-skill-authoring/run.d.ts +10 -0
  263. package/dist/src/runtime/steps/supervisor-skill-authoring/run.js +35 -0
  264. package/dist/src/runtime/steps/supervisor-skill-instructions.d.ts +4 -0
  265. package/dist/src/runtime/steps/supervisor-skill-instructions.js +4 -0
  266. package/dist/src/runtime/steps/worker-capability-scope-decision.js +14 -1
  267. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +1 -0
  268. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.d.ts +5 -0
  269. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.js +31 -0
  270. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +2 -25
  271. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +4 -0
  272. package/dist/src/runtime/steps/worker-decision/prompt.js +6 -2
  273. package/dist/src/runtime/steps/worker-decision/result-author.js +6 -0
  274. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  275. package/dist/src/web-ui/app/app.js +6 -1
  276. package/dist/src/web-ui/app/components/automations/run-history-controls.js +77 -0
  277. package/dist/src/web-ui/app/components/automations/run-history.js +55 -0
  278. package/dist/src/web-ui/app/components/automations/run.js +3 -8
  279. package/dist/src/web-ui/app/components/automations/workspace.js +11 -2
  280. package/dist/src/web-ui/app/components/conversation-role-cards.js +27 -0
  281. package/dist/src/web-ui/app/components/conversation-role-delegations.d.ts +12 -0
  282. package/dist/src/web-ui/app/components/conversation-role-delegations.js +24 -0
  283. package/dist/src/web-ui/app/components/conversation-role-history.d.ts +13 -0
  284. package/dist/src/web-ui/app/components/conversation-role-history.js +81 -0
  285. package/dist/src/web-ui/app/components/conversation-role-returns.d.ts +12 -0
  286. package/dist/src/web-ui/app/components/conversation-role-returns.js +23 -0
  287. package/dist/src/web-ui/app/components/onboarding-workspace-access.js +1 -1
  288. package/dist/src/web-ui/app/components/skills/workspace.js +119 -0
  289. package/dist/src/web-ui/app/components/workspace-shell.js +11 -1
  290. package/dist/src/web-ui/app/controllers/automation-read-projection.js +8 -4
  291. package/dist/src/web-ui/app/controllers/automation-run-actions.js +3 -1
  292. package/dist/src/web-ui/app/controllers/automation-run-history.js +159 -0
  293. package/dist/src/web-ui/app/controllers/automations-controller.js +27 -11
  294. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +6 -2
  295. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +22 -1
  296. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +7 -1
  297. package/dist/src/web-ui/app/controllers/skills-controller.js +237 -0
  298. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +5 -0
  299. package/dist/src/web-ui/app/lib/conversation-role-model.js +63 -5
  300. package/dist/src/web-ui/app/lib/event-presentation.js +34 -0
  301. package/dist/src/web-ui/app/lib/role-delegation-event.d.ts +18 -0
  302. package/dist/src/web-ui/app/lib/role-delegation-event.js +47 -0
  303. package/dist/src/web-ui/app/lib/role-return-event.d.ts +19 -0
  304. package/dist/src/web-ui/app/lib/role-return-event.js +36 -0
  305. package/dist/src/web-ui/app/lib/tool-activity-event.js +8 -6
  306. package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +50 -0
  307. package/dist/src/web-ui/app/lib/workspace-route.js +1 -0
  308. package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +9 -1
  309. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
  310. package/dist/src/web-ui/app/services/runtime-web-client/skills.js +23 -0
  311. package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
  312. package/dist/src/web-ui/app/skills-feature.js +36 -0
  313. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +58 -0
  314. package/dist/src/web-ui/app/styles/40-skills.css +34 -0
  315. package/dist/src/web-ui/app/styles/50-automations.css +24 -3
  316. package/dist/src/web-ui/app/styles/95-home-widgets.css +2 -1
  317. package/dist/src/web-ui/app/styles.css +1 -0
  318. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  319. package/dist/src/web-ui/app/ui-behavior.js +1 -0
  320. package/dist/src/web-ui/client-state/store.js +3 -2
  321. package/dist/src/web-ui/client-state/transaction-order.d.ts +2 -0
  322. package/dist/src/web-ui/client-state/transaction-order.js +18 -0
  323. package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
  324. package/dist/src/web-ui/local-runtime/api-router.js +7 -0
  325. package/dist/src/web-ui/local-runtime/automation-routes.js +2 -1
  326. package/dist/src/web-ui/local-runtime/automation-run-page.d.ts +5 -0
  327. package/dist/src/web-ui/local-runtime/automation-run-page.js +26 -0
  328. package/dist/src/web-ui/local-runtime/skill-management-routes.d.ts +18 -0
  329. package/dist/src/web-ui/local-runtime/skill-management-routes.js +118 -0
  330. package/docs/configuration.md +8 -0
  331. package/docs/runtime-public-contracts.md +37 -0
  332. package/examples/request-runner.config.example.json +3 -0
  333. package/package.json +1 -1
  334. package/plugins/web/skills/web_fetch_skill/SKILL.md +1 -2
  335. package/plugins/web/skills/web_search_skill/SKILL.md +3 -7
  336. package/src/runtime/README.md +96 -1
@@ -0,0 +1,47 @@
1
+ import { type KnowledgeSkillDocument, type KnowledgeSkillMetadata } from "../../knowledge-skills/store.js";
2
+ import type { RoleCallPolicy, RoleCallState, RoleCallValidationIssue } from "./contracts.js";
3
+ export type RoleSkillReadResult<T> = Readonly<{
4
+ outcome: "completed";
5
+ skills: readonly T[];
6
+ }> | Readonly<{
7
+ outcome: "failed";
8
+ errorCode: string;
9
+ skills: readonly [];
10
+ }>;
11
+ export type RoleSkillReadPayload = Readonly<{
12
+ operation: "list_skills";
13
+ selectors: readonly [];
14
+ result: RoleSkillReadResult<KnowledgeSkillMetadata>;
15
+ }> | Readonly<{
16
+ operation: "read_skills";
17
+ selectors: readonly string[];
18
+ result: RoleSkillReadResult<KnowledgeSkillDocument>;
19
+ }>;
20
+ type RoleSkillReadBinding = Readonly<{
21
+ callId: string;
22
+ invocationAttempt: number;
23
+ steeringVersion: number;
24
+ }>;
25
+ export type RoleSkillRead = RoleSkillReadBinding & RoleSkillReadPayload & Readonly<{
26
+ readId: string;
27
+ }>;
28
+ export type RecordRoleSkillReadCommand = RoleSkillReadBinding & RoleSkillReadPayload & Readonly<{
29
+ authority: "runtime";
30
+ type: "record_skill_read";
31
+ }>;
32
+ export type RoleSkillReadCommitEffect = RoleSkillReadBinding & Readonly<{
33
+ type: "skill_read_recorded";
34
+ readId: string;
35
+ operation: RoleSkillReadPayload["operation"];
36
+ }>;
37
+ /** Decode the exact Store snapshots supplied by the runtime read boundary. */
38
+ export declare function decodeSkillReadCommand(input: Record<string, unknown>): Readonly<{
39
+ ok: true;
40
+ value: RecordRoleSkillReadCommand;
41
+ }> | Readonly<{
42
+ ok: false;
43
+ code: "invalid_command";
44
+ }>;
45
+ /** Omission preserves heads and parked requests created before core Skill reads. */
46
+ export declare function validateRoleSkillReads(state: RoleCallState, policy: RoleCallPolicy): readonly RoleCallValidationIssue[];
47
+ export {};
@@ -0,0 +1,196 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { PERSONAL_SKILL_LIMITS } from "../../knowledge-skills/personal-contracts.js";
3
+ import { isKnowledgeSkillId, KNOWLEDGE_SKILL_ID_MAX_LENGTH, KNOWLEDGE_SKILL_READ_MAX_ITEMS, } from "../../knowledge-skills/store.js";
4
+ import { exactKeys, isRecord } from "../../validation/strict-record.js";
5
+ /** Decode the exact Store snapshots supplied by the runtime read boundary. */
6
+ export function decodeSkillReadCommand(input) {
7
+ const isRuntimeReadCommand = input.authority === "runtime" && input.type === "record_skill_read";
8
+ if (!isRuntimeReadCommand)
9
+ return { ok: false, code: "invalid_command" };
10
+ const hasCommandFields = exactKeys(input, [
11
+ "authority", "type", "callId", "invocationAttempt", "steeringVersion",
12
+ "operation", "selectors", "result",
13
+ ]);
14
+ if (!hasCommandFields)
15
+ return { ok: false, code: "invalid_command" };
16
+ if (!hasSkillReadBinding(input))
17
+ return { ok: false, code: "invalid_command" };
18
+ if (!hasSkillReadPayload(input))
19
+ return { ok: false, code: "invalid_command" };
20
+ return { ok: true, value: input };
21
+ }
22
+ /** Omission preserves heads and parked requests created before core Skill reads. */
23
+ export function validateRoleSkillReads(state, policy) {
24
+ const reads = state.skillReads;
25
+ if (reads === undefined)
26
+ return [];
27
+ const invalid = [{ code: "invalid_role_skill_reads", path: "state.skillReads" }];
28
+ if (!Array.isArray(reads))
29
+ return invalid;
30
+ if (reads.length === 0)
31
+ return [];
32
+ const usesSupervisorContract = policy.authority.rootContractId === "supervisor";
33
+ if (!usesSupervisorContract)
34
+ return invalid;
35
+ const root = state.calls.find((call) => call.callId === state.rootCallId);
36
+ if (!root)
37
+ return invalid;
38
+ const isSupervisorRoot = root.parentCallId === null && root.roleId === "supervisor";
39
+ if (!isSupervisorRoot)
40
+ return invalid;
41
+ let previousAttempt = 0;
42
+ let previousSteeringVersion = 0;
43
+ for (const [index, read] of reads.entries()) {
44
+ if (!isRecord(read))
45
+ return invalid;
46
+ const hasReceiptFields = exactKeys(read, [
47
+ "readId", "callId", "invocationAttempt", "steeringVersion",
48
+ "operation", "selectors", "result",
49
+ ]);
50
+ if (!hasReceiptFields)
51
+ return invalid;
52
+ if (!hasSkillReadBinding(read))
53
+ return invalid;
54
+ if (!hasSkillReadPayload(read))
55
+ return invalid;
56
+ const hasSequentialIdentity = read.readId === `skill-read-${index + 1}`;
57
+ if (!hasSequentialIdentity)
58
+ return invalid;
59
+ const belongsToRoot = read.callId === root.callId;
60
+ if (!belongsToRoot)
61
+ return invalid;
62
+ const followsPreviousRead = read.invocationAttempt > previousAttempt;
63
+ if (!followsPreviousRead)
64
+ return invalid;
65
+ const precedesCurrentActivation = read.invocationAttempt < root.activationCount;
66
+ if (!precedesCurrentActivation)
67
+ return invalid;
68
+ const preservesSteeringOrder = read.steeringVersion >= previousSteeringVersion;
69
+ if (!preservesSteeringOrder)
70
+ return invalid;
71
+ previousAttempt = read.invocationAttempt;
72
+ previousSteeringVersion = read.steeringVersion;
73
+ }
74
+ return [];
75
+ }
76
+ function hasSkillReadBinding(value) {
77
+ if (!hasText(value.callId))
78
+ return false;
79
+ const hasInvocationAttempt = Number.isSafeInteger(value.invocationAttempt) &&
80
+ value.invocationAttempt >= 1;
81
+ if (!hasInvocationAttempt)
82
+ return false;
83
+ const hasSteeringVersion = Number.isSafeInteger(value.steeringVersion) &&
84
+ value.steeringVersion >= 0;
85
+ return hasSteeringVersion;
86
+ }
87
+ function hasSkillReadPayload(value) {
88
+ if (!Array.isArray(value.selectors))
89
+ return false;
90
+ if (!isRecord(value.result))
91
+ return false;
92
+ const selectors = value.selectors;
93
+ const isRead = value.operation === "read_skills";
94
+ const isList = value.operation === "list_skills";
95
+ if (!isRead && !isList)
96
+ return false;
97
+ if (isRead && !hasValidSelectors(selectors))
98
+ return false;
99
+ if (isList && selectors.length !== 0)
100
+ return false;
101
+ const result = value.result;
102
+ if (!Array.isArray(result.skills))
103
+ return false;
104
+ if (result.outcome === "failed") {
105
+ const hasFailureFields = exactKeys(result, ["outcome", "errorCode", "skills"]);
106
+ if (!hasFailureFields)
107
+ return false;
108
+ if (typeof result.errorCode !== "string")
109
+ return false;
110
+ const hasErrorCode = /^[a-z][a-z0-9_]*$/.test(result.errorCode);
111
+ if (!hasErrorCode)
112
+ return false;
113
+ return result.skills.length === 0;
114
+ }
115
+ if (result.outcome !== "completed")
116
+ return false;
117
+ if (!exactKeys(result, ["outcome", "skills"]))
118
+ return false;
119
+ const hasReadSize = result.skills.length > 0 &&
120
+ result.skills.length <= KNOWLEDGE_SKILL_READ_MAX_ITEMS;
121
+ if (isRead && !hasReadSize)
122
+ return false;
123
+ if (!result.skills.every((skill) => hasSkillSnapshot(skill, isRead)))
124
+ return false;
125
+ const skills = result.skills;
126
+ const hasUniqueSkills = new Set(skills.map(({ skillId }) => skillId)).size === skills.length;
127
+ if (!hasUniqueSkills)
128
+ return false;
129
+ if (!isRead)
130
+ return true;
131
+ const resolvesEverySelector = selectors.every((selector) => skills.some((skill) => matchesSelector(skill, selector)));
132
+ if (!resolvesEverySelector)
133
+ return false;
134
+ const containsOnlySelectedSkills = skills.every((skill) => selectors.some((selector) => matchesSelector(skill, selector)));
135
+ return containsOnlySelectedSkills;
136
+ }
137
+ function hasValidSelectors(values) {
138
+ const hasReadSize = values.length > 0 && values.length <= KNOWLEDGE_SKILL_READ_MAX_ITEMS;
139
+ if (!hasReadSize)
140
+ return false;
141
+ const maximumLength = Math.max(KNOWLEDGE_SKILL_ID_MAX_LENGTH, PERSONAL_SKILL_LIMITS.name);
142
+ const hasExactSelectors = values.every((value) => {
143
+ if (typeof value !== "string")
144
+ return false;
145
+ const hasBoundedLength = value.length > 0 && value.length <= maximumLength;
146
+ if (!hasBoundedLength)
147
+ return false;
148
+ return value.trim() === value;
149
+ });
150
+ if (!hasExactSelectors)
151
+ return false;
152
+ return new Set(values).size === values.length;
153
+ }
154
+ function matchesSelector(skill, selector) {
155
+ return skill.skillId === selector || skill.name === selector;
156
+ }
157
+ function hasSkillSnapshot(value, document) {
158
+ if (!isRecord(value))
159
+ return false;
160
+ const hasSnapshotFields = exactKeys(value, ["skillId", "name", "description", ...(document ? ["content"] : [])], ["source", ...(document ? ["revision"] : [])]);
161
+ if (!hasSnapshotFields)
162
+ return false;
163
+ if (!isKnowledgeSkillId(value.skillId))
164
+ return false;
165
+ if (!hasText(value.name))
166
+ return false;
167
+ if (!hasText(value.description))
168
+ return false;
169
+ const hasKnownSource = value.source === undefined || value.source === "system" || value.source === "personal";
170
+ if (!hasKnownSource)
171
+ return false;
172
+ if (value.revision !== undefined) {
173
+ const hasValidRevision = Number.isSafeInteger(value.revision) &&
174
+ value.revision >= 1 &&
175
+ value.revision <= PERSONAL_SKILL_LIMITS.revision;
176
+ if (!hasValidRevision)
177
+ return false;
178
+ }
179
+ if (document && !hasText(value.content))
180
+ return false;
181
+ if (value.source !== "personal")
182
+ return true;
183
+ if (value.name.length > PERSONAL_SKILL_LIMITS.name)
184
+ return false;
185
+ if (value.description.length > PERSONAL_SKILL_LIMITS.description)
186
+ return false;
187
+ if (!document)
188
+ return true;
189
+ if (value.revision === undefined)
190
+ return false;
191
+ const contentBytes = Buffer.byteLength(value.content, "utf8");
192
+ return contentBytes <= PERSONAL_SKILL_LIMITS.contentBytes;
193
+ }
194
+ function hasText(value) {
195
+ return typeof value === "string" && value.trim().length > 0;
196
+ }
@@ -1,3 +1,3 @@
1
1
  import type { RoleExecutor, RoleExecutorActivationResult, RoleExecutorInput } from "../contracts.js";
2
- /** Contains recognized model-output failure or step timeout in the current call. */
2
+ /** Contains recognized model failures and step timeouts in the current call. */
3
3
  export declare function executeRoleWithModelOutputFailure<TContext, TValue>(executor: RoleExecutor<TContext, TValue>, input: RoleExecutorInput<TContext>, maxSummaryLength: number, requestId: string): Promise<RoleExecutorActivationResult<TValue>>;
@@ -1,8 +1,9 @@
1
1
  import { resolveModelOutputFailure, } from "../../../model/invalid-output-failure.js";
2
2
  import { ModelOutputIncompleteError } from "../../../model/provider-completion.js";
3
+ import { ModelProviderFailure } from "../../../model/provider-failure.js";
3
4
  import { ModelStepTimeoutError } from "../../../steps/model-step-timeout.js";
4
5
  import { traceDebug } from "../../../observability/debug-logger.js";
5
- /** Contains recognized model-output failure or step timeout in the current call. */
6
+ /** Contains recognized model failures and step timeouts in the current call. */
6
7
  export async function executeRoleWithModelOutputFailure(executor, input, maxSummaryLength, requestId) {
7
8
  try {
8
9
  return await executor.execute(input);
@@ -30,7 +31,8 @@ export async function executeRoleWithModelOutputFailure(executor, input, maxSumm
30
31
  }
31
32
  }
32
33
  function resolveChildModelOutputFailure(error) {
33
- if (error instanceof ModelStepTimeoutError) {
34
+ if (error instanceof ModelProviderFailure ||
35
+ error instanceof ModelStepTimeoutError) {
34
36
  return Object.freeze({
35
37
  code: error.code,
36
38
  modelStep: error.modelStep,
@@ -5,6 +5,7 @@ import { workerCapabilityBindingRejection } from "./binding-rejection.js";
5
5
  import { BoundCapabilitySession } from "./bound-capability-session.js";
6
6
  import { copyBoundCapabilityCall, inspectInitialBindingAuthority, normalizeExecutionFreshness, } from "./call-authority.js";
7
7
  import { bindCapabilityDependencyResults } from "./dependency-results.js";
8
+ import { projectSupervisorSkillCapabilityAdapters } from "../supervisor-skill-authority.js";
8
9
  export function createRoleCapabilityBinding(params) {
9
10
  const boundCall = copyBoundCapabilityCall(params.call);
10
11
  const emptyDiagnostic = createEmptyBindingDiagnostic(params.requestId, boundCall);
@@ -30,7 +31,9 @@ export function createRoleCapabilityBinding(params) {
30
31
  emptyDiagnostic,
31
32
  });
32
33
  const catalog = createBoundCapabilityCatalog({
33
- adapters: params.adapters,
34
+ adapters: projectSupervisorSkillCapabilityAdapters({
35
+ head: initialHead, call: authority.authoritativeCall, adapters: params.adapters,
36
+ }),
34
37
  boundCall,
35
38
  emptyDiagnostic,
36
39
  });
@@ -9,7 +9,7 @@ export declare const WORKER_CAPABILITY_INTENT_MAX_LENGTH = 500;
9
9
  /** Immutable Worker-only assignment for authoring one capability payload. */
10
10
  export declare const WORKER_CAPABILITY_AUTHORING_OBJECTIVE_MAX_LENGTH = 8192;
11
11
  export declare const WORKER_CAPABILITY_SUMMARY_MAX_LENGTH = 512;
12
- export declare const WORKER_CAPABILITY_COUNT_MAX = 128;
12
+ export declare const WORKER_CAPABILITY_COUNT_MAX = 130;
13
13
  export declare const WORKER_CAPABILITY_CONTROL_COUNT_MAX = 16;
14
14
  export declare const WORKER_CAPABILITY_CONTROL_ID_MAX_LENGTH = 64;
15
15
  export { TOOL_NORMAL_INVOCATION_STRING_MAX_LENGTH as WORKER_CAPABILITY_CONTROL_STRING_MAX_LENGTH } from "../../../capabilities/normal-invocation/contracts.js";
@@ -5,7 +5,7 @@ export const WORKER_CAPABILITY_INTENT_MAX_LENGTH = 500;
5
5
  /** Immutable Worker-only assignment for authoring one capability payload. */
6
6
  export const WORKER_CAPABILITY_AUTHORING_OBJECTIVE_MAX_LENGTH = ROLE_CALL_OBJECTIVE_MAX_LENGTH;
7
7
  export const WORKER_CAPABILITY_SUMMARY_MAX_LENGTH = 512;
8
- export const WORKER_CAPABILITY_COUNT_MAX = 128;
8
+ export const WORKER_CAPABILITY_COUNT_MAX = 130;
9
9
  export const WORKER_CAPABILITY_CONTROL_COUNT_MAX = 16;
10
10
  export const WORKER_CAPABILITY_CONTROL_ID_MAX_LENGTH = 64;
11
11
  export { TOOL_NORMAL_INVOCATION_STRING_MAX_LENGTH as WORKER_CAPABILITY_CONTROL_STRING_MAX_LENGTH } from "../../../capabilities/normal-invocation/contracts.js";
@@ -1,3 +1,4 @@
1
+ import { projectSupervisorSkillCapabilityAdapters } from "../supervisor-skill-authority.js";
1
2
  import { fenceRestoredApprovalExecution } from "./execution-freshness.js";
2
3
  import { restorePreparationRejection } from "./preparation-rejection.js";
3
4
  import { isDeepStrictEqual } from "node:util";
@@ -73,12 +74,13 @@ export async function restoreCapabilityApprovalGroup(params) {
73
74
  if (group.executionFreshnessToken !== undefined &&
74
75
  !isDeepStrictEqual(group.executionFreshnessToken, params.executionFreshness?.token))
75
76
  throw new Error("prepared_approval_freshness_mismatch");
77
+ const adapters = projectSupervisorSkillCapabilityAdapters({ head, call, adapters: params.adapters });
76
78
  const running = head.state.capabilityExecutions.filter((entry) => entry.status === "running");
77
79
  if (running.length !== group.entries.length)
78
80
  throw new Error("prepared_approval_group_mismatch");
79
81
  const invocations = await Promise.all(group.entries.map(async (entry) => {
80
82
  const admitted = running.find((value) => value.executionId === entry.executionId);
81
- const adapter = params.adapters.find((value) => value.descriptor.capabilityId === entry.capabilityId);
83
+ const adapter = adapters.find((value) => value.descriptor.capabilityId === entry.capabilityId);
82
84
  if (!admitted ||
83
85
  admitted.callId !== group.callId ||
84
86
  admitted.invocationAttempt !== group.invocationAttempt ||
@@ -123,8 +125,8 @@ export async function restoreCapabilityApprovalGroup(params) {
123
125
  scopeMode: call.workerCapabilityScope ? "catalog_groups" : "full",
124
126
  scopeCatalogGroupIds: call.workerCapabilityScope?.catalogGroupIds ?? [],
125
127
  knownCatalogGroupCount: 0,
126
- fullCapabilityCount: params.adapters.length,
127
- filteredCapabilityCount: params.adapters.length,
128
+ fullCapabilityCount: adapters.length,
129
+ filteredCapabilityCount: adapters.length,
128
130
  };
129
131
  return Object.freeze({
130
132
  async execute(decisions) {
@@ -1,3 +1,5 @@
1
1
  import type { WorkerCapabilityPayloadAuthor, WorkerCapabilityPayloadModelRequest } from "./payload-contracts.js";
2
2
  /** Runtime-only sidecar bypasses the cloned/model-visible payload context. */
3
3
  export declare function projectWorkerPayloadCompactionInput(input: Parameters<WorkerCapabilityPayloadAuthor["author"]>[0], requestId: string): Pick<WorkerCapabilityPayloadModelRequest, "superWorkerCompaction">;
4
+ /** Root payload checkpoints are isolated to the exact preparation and stage. */
5
+ export declare function rootPayloadCompactionScopeId(input: WorkerCapabilityPayloadModelRequest): string;
@@ -1,8 +1,6 @@
1
1
  import { assertSuperWorkerCompactionSidecarBinding, readSuperWorkerCompactionSidecar, } from "../../context/super-worker-compaction-sidecar.js";
2
2
  /** Runtime-only sidecar bypasses the cloned/model-visible payload context. */
3
3
  export function projectWorkerPayloadCompactionInput(input, requestId) {
4
- if (input.call.roleId !== "worker")
5
- return {};
6
4
  const sidecar = readSuperWorkerCompactionSidecar(input.settledCapabilityResults);
7
5
  if (!sidecar)
8
6
  return {};
@@ -12,3 +10,10 @@ export function projectWorkerPayloadCompactionInput(input, requestId) {
12
10
  });
13
11
  return { superWorkerCompaction: sidecar };
14
12
  }
13
+ /** Root payload checkpoints are isolated to the exact preparation and stage. */
14
+ export function rootPayloadCompactionScopeId(input) {
15
+ if (!("root" in input.context))
16
+ throw new Error("payload_root_context_required");
17
+ return ["payload", input.context.root.callId, input.executionId,
18
+ input.context.payloadStage?.index ?? 0].join(":");
19
+ }
@@ -0,0 +1,19 @@
1
+ import type { ToolAvailabilityEntry } from "../../../capabilities/tool-types.js";
2
+ import type { ExecutionPolicyAuthoritySnapshot, RoleCallFrame, RoleCallLedgerHead } from "../role-calls/index.js";
3
+ import type { WorkerCapabilityAdapter, WorkerCapabilityDescriptor } from "./contracts.js";
4
+ export declare function isSupervisorSkillWriteCapabilityId(capabilityId: string): boolean;
5
+ export declare function projectSupervisorWorkerCapabilityDescriptors(params: {
6
+ authority: ExecutionPolicyAuthoritySnapshot;
7
+ descriptors: readonly WorkerCapabilityDescriptor[];
8
+ }): readonly WorkerCapabilityDescriptor[];
9
+ /** Descriptions and selectable descriptors obey the same write ownership. */
10
+ export declare function projectSupervisorWorkerCapabilityBriefEntries(params: {
11
+ authority: ExecutionPolicyAuthoritySnapshot;
12
+ entries: readonly ToolAvailabilityEntry[] | undefined;
13
+ }): readonly ToolAvailabilityEntry[] | undefined;
14
+ /** The same boundary applies before execution and before approval restoration. */
15
+ export declare function projectSupervisorSkillCapabilityAdapters<TContext>(params: {
16
+ head: RoleCallLedgerHead;
17
+ call: RoleCallFrame;
18
+ adapters: readonly WorkerCapabilityAdapter<TContext>[];
19
+ }): readonly WorkerCapabilityAdapter<TContext>[];
@@ -0,0 +1,43 @@
1
+ import { knowledgeSkillWriteOperations } from "../../capabilities/knowledge-skills/write-contract.js";
2
+ import { hasSuperContextContract } from "../../context/super-context-policy.js";
3
+ const skillAuthoringCapabilityIds = new Set(knowledgeSkillWriteOperations.map(({ operationId }) => operationId));
4
+ export function isSupervisorSkillWriteCapabilityId(capabilityId) {
5
+ return skillAuthoringCapabilityIds.has(capabilityId);
6
+ }
7
+ export function projectSupervisorWorkerCapabilityDescriptors(params) {
8
+ if (!hasSuperContextContract(params.authority, "supervisor"))
9
+ return params.descriptors;
10
+ return Object.freeze(params.descriptors.filter((descriptor) => !isSupervisorSkillWriteCapabilityId(descriptor.capabilityId)));
11
+ }
12
+ /** Descriptions and selectable descriptors obey the same write ownership. */
13
+ export function projectSupervisorWorkerCapabilityBriefEntries(params) {
14
+ if (!hasSuperContextContract(params.authority, "supervisor"))
15
+ return params.entries;
16
+ if (params.entries === undefined)
17
+ return undefined;
18
+ return Object.freeze(params.entries.filter(({ operationId }) => !isSupervisorSkillWriteCapabilityId(operationId)));
19
+ }
20
+ /** The same boundary applies before execution and before approval restoration. */
21
+ export function projectSupervisorSkillCapabilityAdapters(params) {
22
+ if (!hasSuperContextContract(params.head.policy.authority, "supervisor"))
23
+ return params.adapters;
24
+ // Preserve malformed entries for the existing adapter validation boundary.
25
+ if (!Array.isArray(params.adapters))
26
+ return params.adapters;
27
+ if (isSupervisorRootCapabilityCall(params.head, params.call)) {
28
+ return Object.freeze(params.adapters.filter((adapter) => hasMalformedCapabilityIdentity(adapter) ||
29
+ isSupervisorSkillWriteCapabilityId(adapter.descriptor.capabilityId)));
30
+ }
31
+ if (params.call.roleId !== "worker")
32
+ return params.adapters;
33
+ return Object.freeze(params.adapters.filter((adapter) => hasMalformedCapabilityIdentity(adapter) ||
34
+ !isSupervisorSkillWriteCapabilityId(adapter.descriptor.capabilityId)));
35
+ }
36
+ function isSupervisorRootCapabilityCall(head, call) {
37
+ if (call.callId !== head.state.rootCallId)
38
+ return false;
39
+ return call.parentCallId === null;
40
+ }
41
+ function hasMalformedCapabilityIdentity(adapter) {
42
+ return typeof adapter?.descriptor?.capabilityId !== "string";
43
+ }
@@ -1,3 +1,4 @@
1
+ import { hasCoreToolContractCollision } from "../capabilities/core-tool-contracts.js";
1
2
  import { pluginLoadConfiguration } from "./configuration-context.js";
2
3
  import { readPluginConfigurationStore, } from "./configuration-store.js";
3
4
  import { validateManifestEntrypoint } from "./entrypoint-validation.js";
@@ -117,8 +118,8 @@ export function loadConfiguredRuntimePlugins(config) {
117
118
  ...selection.disabledPluginIds,
118
119
  ]),
119
120
  });
120
- const compatiblePlugins = discoveredPlugins.filter((plugin) => resolvePluginPlatformCompatibility(plugin.manifest).supported);
121
- const allPluginsIncompatible = discoveredPlugins.length > 0 && compatiblePlugins.length === 0;
121
+ const compatiblePlugins = discoveredPlugins.filter((plugin) => resolvePluginPlatformCompatibility(plugin.manifest).supported).filter(({ manifest }) => !hasCoreToolContractCollision(manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities));
122
+ const allPluginsUnavailable = discoveredPlugins.length > 0 && compatiblePlugins.length === 0;
122
123
  const selectedPlugins = compatiblePlugins
123
124
  .map((plugin) => ({
124
125
  plugin,
@@ -131,7 +132,7 @@ export function loadConfiguredRuntimePlugins(config) {
131
132
  .filter(({ selectedCapabilityIds }) => selectedCapabilityIds.length > 0);
132
133
  const host = {
133
134
  rootDir: config.paths.rootDir,
134
- pluginConfiguration: allPluginsIncompatible
135
+ pluginConfiguration: allPluginsUnavailable
135
136
  ? {}
136
137
  : readPluginConfigurationStore(config.paths.rootDir).plugins,
137
138
  runtimeId: config.runtimeId,
@@ -181,11 +182,11 @@ export function loadBundledRuntimePlugins() {
181
182
  return cached;
182
183
  }
183
184
  const discoveredPlugins = discoverAgentPluginManifests(packageRoot);
184
- const selectedPlugins = discoveredPlugins.filter((plugin) => resolvePluginPlatformCompatibility(plugin.manifest).supported);
185
- const allPluginsIncompatible = discoveredPlugins.length > 0 && selectedPlugins.length === 0;
185
+ const selectedPlugins = discoveredPlugins.filter((plugin) => resolvePluginPlatformCompatibility(plugin.manifest).supported).filter(({ manifest }) => !hasCoreToolContractCollision(manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities));
186
+ const allPluginsUnavailable = discoveredPlugins.length > 0 && selectedPlugins.length === 0;
186
187
  const host = {
187
188
  rootDir,
188
- pluginConfiguration: allPluginsIncompatible
189
+ pluginConfiguration: allPluginsUnavailable
189
190
  ? {}
190
191
  : readPluginConfigurationStore(rootDir).plugins,
191
192
  runtimeId: "default",
@@ -49,6 +49,7 @@ export async function validateApprovalResume(services, snapshot, current) {
49
49
  sessionStore: services.sessions,
50
50
  attachmentStore: services.attachments,
51
51
  toolRegistry: services.tools,
52
+ knowledgeSkillStore: services.knowledgeSkillStore,
52
53
  modelGatewayClient: models,
53
54
  eventSinkFactory: { create: () => events },
54
55
  sessionMemoryCompactor: services.sessionMemoryCompactor,
@@ -7,6 +7,7 @@ export function createBoundRuntimeRequestHandler(services) {
7
7
  sessionStore: services.sessions,
8
8
  attachmentStore: services.attachments,
9
9
  toolRegistry: services.tools,
10
+ knowledgeSkillStore: services.knowledgeSkillStore,
10
11
  sessionMemoryCompactor: services.sessionMemoryCompactor,
11
12
  longTermMemory: services.longTermMemory,
12
13
  };
@@ -1,3 +1,4 @@
1
+ import type { KnowledgeSkillStore } from "../knowledge-skills/store.js";
1
2
  import type { RequestToolResources } from "../capabilities/request-tool-resources.js";
2
3
  import type { CapabilityApprovalGate } from "../orchestration/worker-capabilities/approval-contracts.js";
3
4
  import type { RequestApprovalExecution } from "./approval-wait/snapshot.js";
@@ -44,6 +45,7 @@ export type RequestHandlerOptions = {
44
45
  sessionStore?: RequestSessionStore;
45
46
  attachmentStore?: RuntimeAttachmentStore;
46
47
  toolRegistry?: ToolRegistry;
48
+ knowledgeSkillStore?: KnowledgeSkillStore;
47
49
  toolApprovalController?: ToolApprovalController;
48
50
  requestSteering?: RequestSteeringInbox;
49
51
  /** Trusted automation-only receipt boundary; never accepted from client JSON. */
@@ -25,9 +25,9 @@ export declare function projectExecutionPayloadCompactedEvidence(request: Payloa
25
25
  summary: string;
26
26
  capabilityId: string;
27
27
  callId: string;
28
- outcome: import("../orchestration/role-calls/contracts.js").RoleCapabilityExecutionOutcome;
29
- executionId: string;
30
28
  invocationAttempt: number;
29
+ executionId: string;
30
+ outcome: import("../orchestration/role-calls/contracts.js").RoleCapabilityExecutionOutcome;
31
31
  observedEffect: import("../orchestration/role-calls/contracts.js").RoleCapabilityObservedEffect;
32
32
  declaredEffect: import("../orchestration/role-calls/contracts.js").RoleCapabilityDeclaredEffect;
33
33
  references?: readonly import("../orchestration/role-calls/contracts.js").RoleCapabilityResultReference[];
@@ -1,3 +1,4 @@
1
+ import type { KnowledgeSkillStore } from "../knowledge-skills/store.js";
1
2
  import type { SuperFailureFinalization } from "./super-failure-explanation.js";
2
3
  import type { RequestModelStepPort } from "../model/model-step-port.js";
3
4
  import { type RequestExecutionSeed, type RequestModelInvocationView } from "./contracts.js";
@@ -12,5 +13,6 @@ export declare function createScopeSurface(input: Readonly<{
12
13
  modelInvocation: RequestModelInvocationView;
13
14
  modelSteps: RequestModelStepPort;
14
15
  capabilities: RequestWorkerCapabilities;
16
+ knowledgeSkillStore?: KnowledgeSkillStore;
15
17
  superFailureFinalization?: SuperFailureFinalization | undefined;
16
18
  }>): RequestExecutionScope;
@@ -34,7 +34,13 @@ export function createCapabilityCompositionView(facets, modelSteps) {
34
34
  modelSteps: enumerableGetter(() => modelSteps),
35
35
  sessionId: enumerableGetter(() => facets.identity.sessionId),
36
36
  prompt: enumerableGetter(() => facets.input.prompt),
37
+ ...(facets.input.attachments !== undefined
38
+ ? { attachments: enumerableGetter(() => facets.input.attachments) }
39
+ : {}),
37
40
  historyMessages: enumerableGetter(() => facets.session.historyMessages),
41
+ ...(facets.session.sessionMemory !== undefined
42
+ ? { sessionMemory: enumerableGetter(() => facets.session.sessionMemory) }
43
+ : {}),
38
44
  toolPermissionMode: enumerableGetter(() => facets.lifecycle.toolPermissionMode),
39
45
  ...(facets.lifecycle.toolApprovalController !== undefined
40
46
  ? {
@@ -107,6 +113,7 @@ export function createScopeSurface(input) {
107
113
  policy: hiddenValue(policy),
108
114
  modelInvocation: hiddenValue(modelInvocation),
109
115
  capabilities: hiddenValue(capabilities),
116
+ ...(input.knowledgeSkillStore ? { knowledgeSkillStore: hiddenValue(input.knowledgeSkillStore) } : {}),
110
117
  ...(input.superFailureFinalization
111
118
  ? {
112
119
  superFailureFinalization: hiddenValue(input.superFailureFinalization),
@@ -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 {};