@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
@@ -1,19 +1,23 @@
1
1
  import { resolveMemoryRecallSteeringVersion } from "../../long-term-memory/recall-binding.js";
2
2
  import { canOfferMemoryRecall } from "../../long-term-memory/recall-policy.js";
3
- import { invokeStructuredModelStep, StructuredModelInvalidOutputError, } from "../../model/invoke-structured-step.js";
4
3
  import { createModelStepCompactionController } from "../../context/model-step-compaction.js";
5
4
  import { superCompactionFailureOwner } from "../../context/super-compaction-failure-owner.js";
6
5
  import { createSessionMemoryAwareCompactionController } from "../../context/session-memory/index.js";
7
6
  import { resolveRequestSteeringInbox, } from "../../request/request-steering.js";
8
7
  import { SUPERVISOR_DECISION_MODEL_STEP, } from "./contracts.js";
9
- import { traceSupervisorDecisionPhaseSuperseded, traceSupervisorModelCompleted, traceSupervisorModelFailed, traceSupervisorModelStarted, traceSupervisorWorkingDirectoryModelStarted, } from "./diagnostics.js";
10
8
  import { buildSupervisorDecisionInput } from "./input.js";
11
9
  import { buildSupervisorCapabilityBriefOptions } from "./capability-brief.js";
12
10
  import { createSupervisorCapabilityBriefReadmissionController } from "./capability-brief-readmission.js";
13
- import { parseSupervisorDecisionOutput } from "./parser.js";
14
- import { buildSupervisorWorkingDirectoryInput, mergeSupervisorWorkingDirectory, parseSupervisorWorkingDirectoryOutput, } from "./working-directory.js";
11
+ import { createSupervisorArtifactPathsReadmissionController } from "./artifact-paths.js";
12
+ import { buildSupervisorWorkingDirectoryInput, mergeSupervisorWorkingDirectory, } from "./working-directory.js";
15
13
  import { SUPERVISOR_RESPONSE_MODEL_STEP } from "../supervisor-response/contracts.js";
16
14
  import { resolveCanonicalReviewerCompletionTargetText } from "../reviewer-decision/contracts.js";
15
+ import { createDecisionOutcome, runRoutingPhase, runWorkingDirectoryPhase, requiresWorkingDirectory, tracePhaseSuperseded } from "./decision-phases.js";
16
+ import { prepareSupervisorDecision } from "./preparation.js";
17
+ import { isSupervisorSkillLookup } from "./skill-selection.js";
18
+ import { assertBoundModelStepSteeringCurrent } from "../../model/model-step-steering.js";
19
+ import { canOfferSupervisorSkillAuthoring } from "../supervisor-skill-authoring/input.js";
20
+ import { runSupervisorSkillAuthoring } from "../supervisor-skill-authoring/run.js";
17
21
  export async function runSupervisorDecision(request, options) {
18
22
  const boundSteeringVersion = resolveMemoryRecallSteeringVersion(options.memoryRecallMessage, request.requestId, options.call.callId);
19
23
  const baseDiagnostic = {
@@ -35,38 +39,6 @@ export async function runSupervisorDecision(request, options) {
35
39
  const initialMemoryMessage = request.longTermMemory?.enabled
36
40
  ? options.initialMemoryMessage
37
41
  : undefined;
38
- const input = buildSupervisorDecisionInput(request, {
39
- allowMemoryRecall: canOfferMemoryRecall({
40
- enabled: request.longTermMemory?.enabled === true,
41
- recallCount: options.memoryRecallCount ?? 0,
42
- maxRecallCallsPerRequest: request.memoryRecallLimit,
43
- }),
44
- ...(memoryRecallMessage ? { memoryRecallMessage } : {}),
45
- ...(initialMemoryMessage ? { initialMemoryMessage } : {}),
46
- ...buildSupervisorCapabilityBriefOptions(request, options),
47
- toolResults: options.toolResults,
48
- ...(options.includeAcknowledgement === undefined
49
- ? {}
50
- : { includeAcknowledgement: options.includeAcknowledgement }),
51
- ...(options.includeTitle === undefined
52
- ? {}
53
- : { includeTitle: options.includeTitle }),
54
- ...(options.allowedRoleIds === undefined
55
- ? {}
56
- : { allowedRoleIds: options.allowedRoleIds }),
57
- ...(options.resume === undefined ? {} : { resume: options.resume }),
58
- ...(options.workerCapabilityAffordances === undefined
59
- ? {}
60
- : {
61
- workerCapabilityAffordances: options.workerCapabilityAffordances,
62
- }),
63
- ...(options.availableWorkerCapabilityCatalog === undefined
64
- ? {}
65
- : {
66
- availableWorkerCapabilityCatalog: options.availableWorkerCapabilityCatalog,
67
- }),
68
- diagnostic: routingDiagnostic,
69
- });
70
42
  const requestSteering = resolveRequestSteeringInbox(request.requestSteering);
71
43
  const contextCompaction = createSessionMemoryAwareCompactionController(request, createModelStepCompactionController(request, {
72
44
  consumer: SUPERVISOR_DECISION_MODEL_STEP,
@@ -93,23 +65,78 @@ export async function runSupervisorDecision(request, options) {
93
65
  ]),
94
66
  }));
95
67
  for (;;) {
68
+ const preparation = await prepareSupervisorDecision(request, {
69
+ diagnostic: baseDiagnostic,
70
+ includeAcknowledgement: options.resume === undefined && options.includeAcknowledgement === true,
71
+ includeTitle: options.resume === undefined && (options.includeTitle ?? request.shouldGenerateSessionTitle ?? false),
72
+ allowSkillReads: request.knowledgeSkillStore !== undefined && options.allowSkillReads !== false,
73
+ skillReadHead: options.skillReadHead,
74
+ boundSteeringVersion,
75
+ });
76
+ assertBoundModelStepSteeringCurrent(requestSteering, preparation.steeringVersion);
77
+ if (isSupervisorSkillLookup(preparation.selection)) {
78
+ return createDecisionOutcome({ ...preparation.selection, ...preparation.presentation }, preparation.steeringVersion);
79
+ }
80
+ const input = buildSupervisorDecisionInput(request, {
81
+ allowSkillAuthoring: canOfferSupervisorSkillAuthoring(request, options),
82
+ allowMemoryRecall: canOfferMemoryRecall({
83
+ enabled: request.longTermMemory?.enabled === true,
84
+ recallCount: options.memoryRecallCount ?? 0,
85
+ maxRecallCallsPerRequest: request.memoryRecallLimit,
86
+ }),
87
+ ...(memoryRecallMessage ? { memoryRecallMessage } : {}),
88
+ ...(initialMemoryMessage ? { initialMemoryMessage } : {}),
89
+ ...buildSupervisorCapabilityBriefOptions(request, options),
90
+ toolResults: options.toolResults,
91
+ ...(options.skillReadHead ? { skillReadHead: options.skillReadHead } : {}),
92
+ includeAcknowledgement: false,
93
+ includeTitle: false,
94
+ ...(options.allowedRoleIds === undefined
95
+ ? {}
96
+ : { allowedRoleIds: options.allowedRoleIds }),
97
+ ...(options.resume === undefined ? {} : { resume: options.resume }),
98
+ ...(options.workerCapabilityAffordances === undefined
99
+ ? {}
100
+ : {
101
+ workerCapabilityAffordances: options.workerCapabilityAffordances,
102
+ }),
103
+ ...(options.availableWorkerCapabilityCatalog === undefined
104
+ ? {}
105
+ : {
106
+ availableWorkerCapabilityCatalog: options.availableWorkerCapabilityCatalog,
107
+ }),
108
+ diagnostic: routingDiagnostic,
109
+ });
96
110
  const routing = await runRoutingPhase({
97
111
  request,
98
112
  requestSteering,
99
- boundSteeringVersion,
113
+ boundSteeringVersion: preparation.steeringVersion,
100
114
  input,
101
115
  diagnostic: routingDiagnostic,
102
- contextCompaction: createSupervisorCapabilityBriefReadmissionController(request, { input, controller: contextCompaction }),
116
+ contextCompaction: createSupervisorArtifactPathsReadmissionController(request, {
117
+ projection: input.artifactPathsProjection,
118
+ format: input.format,
119
+ includeInstructions: true,
120
+ controller: createSupervisorCapabilityBriefReadmissionController(request, { input, controller: contextCompaction }),
121
+ }),
103
122
  });
123
+ if (routing.decision.action === "author_skill") {
124
+ const authored = await runSupervisorSkillAuthoring(request, {
125
+ ...options, diagnostic: baseDiagnostic,
126
+ boundSteeringVersion: routing.steeringVersion, contextCompaction,
127
+ });
128
+ return createDecisionOutcome({ ...authored.decision, ...preparation.presentation }, authored.steeringVersion);
129
+ }
104
130
  if (routing.decision.action === "invoke_role" &&
105
131
  routing.decision.roleId === "reviewer") {
106
132
  return createDecisionOutcome(Object.freeze({
107
133
  ...routing.decision,
134
+ ...preparation.presentation,
108
135
  objective: resolveCanonicalReviewerCompletionTargetText(request.prompt),
109
136
  }), routing.steeringVersion);
110
137
  }
111
138
  if (!requiresWorkingDirectory(routing.decision)) {
112
- return createDecisionOutcome(routing.decision, routing.steeringVersion);
139
+ return createDecisionOutcome({ ...routing.decision, ...preparation.presentation }, routing.steeringVersion);
113
140
  }
114
141
  if (!requestSteering.isCurrent(routing.steeringVersion)) {
115
142
  tracePhaseSuperseded({
@@ -132,7 +159,12 @@ export async function runSupervisorDecision(request, options) {
132
159
  boundSteeringVersion,
133
160
  frozenDecision: routing.decision,
134
161
  diagnostic: workingDirectoryDiagnostic,
135
- contextCompaction,
162
+ contextCompaction: createSupervisorArtifactPathsReadmissionController(request, {
163
+ projection: input.artifactPathsProjection,
164
+ format: workingDirectoryInput.format,
165
+ includeInstructions: false,
166
+ controller: contextCompaction,
167
+ }),
136
168
  });
137
169
  const merged = mergeSupervisorWorkingDirectory(routing.decision, workingDirectory.decision);
138
170
  if (workingDirectory.steeringVersion !== routing.steeringVersion ||
@@ -146,124 +178,6 @@ export async function runSupervisorDecision(request, options) {
146
178
  });
147
179
  continue;
148
180
  }
149
- return createDecisionOutcome(merged, workingDirectory.steeringVersion);
150
- }
151
- }
152
- function createDecisionOutcome(decision, steeringVersion) {
153
- return Object.freeze({ decision, steeringVersion });
154
- }
155
- async function runRoutingPhase(params) {
156
- const startedAt = Date.now();
157
- traceSupervisorModelStarted({
158
- diagnostic: params.diagnostic,
159
- allowMemoryRecall: params.input.allowMemoryRecall,
160
- messageCount: params.input.context.messages.length,
161
- messageCharacterCount: params.input.context.messages.reduce((total, message) => total + message.content.length, 0),
162
- includeAcknowledgement: params.input.includeAcknowledgement,
163
- includeTitle: params.input.includeTitle,
164
- allowedRoleIds: params.input.allowedRoleIds,
165
- availableWorkerCapabilityCatalog: params.input.availableWorkerCapabilityCatalog,
166
- });
167
- try {
168
- const accepted = await invokeStructuredModelStep({
169
- request: params.request,
170
- boundSteeringVersion: params.boundSteeringVersion,
171
- modelStep: params.input.modelStep,
172
- format: params.input.format,
173
- messages: params.input.context.messages,
174
- contextCompaction: params.contextCompaction,
175
- timeoutReason: "supervisor_decision_timeout",
176
- invalidOutputReason: "invalid_supervisor_decision",
177
- parse: (text) => captureAcceptedPhase(parseSupervisorDecisionOutput(text, {
178
- includeAcknowledgement: params.input.includeAcknowledgement,
179
- includeTitle: params.input.includeTitle,
180
- includeResponseRecommendation: params.input.includeResponseRecommendation,
181
- allowMemoryRecall: params.input.allowMemoryRecall,
182
- allowedRoleIds: params.input.allowedRoleIds,
183
- availableWorkerCapabilityCatalog: params.input.availableWorkerCapabilityCatalog,
184
- diagnostic: params.diagnostic,
185
- }), params.requestSteering),
186
- });
187
- traceSupervisorModelCompleted({
188
- diagnostic: params.diagnostic,
189
- decision: accepted.decision,
190
- durationMs: Date.now() - startedAt,
191
- });
192
- return accepted;
193
- }
194
- catch (error) {
195
- tracePhaseFailure(params.diagnostic, startedAt, error);
196
- throw error;
197
- }
198
- }
199
- async function runWorkingDirectoryPhase(params) {
200
- const startedAt = Date.now();
201
- traceSupervisorWorkingDirectoryModelStarted({
202
- diagnostic: params.diagnostic,
203
- messageCount: params.input.messages.length,
204
- messageCharacterCount: params.input.messages.reduce((total, message) => total + message.content.length, 0),
205
- frozenDecision: params.frozenDecision,
206
- });
207
- try {
208
- const accepted = await invokeStructuredModelStep({
209
- request: params.request,
210
- boundSteeringVersion: params.boundSteeringVersion,
211
- modelStep: params.input.modelStep,
212
- format: params.input.format,
213
- messages: params.input.messages,
214
- contextCompaction: params.contextCompaction,
215
- timeoutReason: "supervisor_decision_timeout",
216
- invalidOutputReason: "invalid_supervisor_decision",
217
- parse: (text) => captureAcceptedPhase(parseSupervisorWorkingDirectoryOutput(text, {
218
- diagnostic: params.diagnostic,
219
- }), params.requestSteering),
220
- });
221
- traceSupervisorModelCompleted({
222
- diagnostic: params.diagnostic,
223
- decision: mergeSupervisorWorkingDirectory(params.frozenDecision, accepted.decision),
224
- durationMs: Date.now() - startedAt,
225
- });
226
- return accepted;
181
+ return createDecisionOutcome({ ...merged, ...preparation.presentation }, workingDirectory.steeringVersion);
227
182
  }
228
- catch (error) {
229
- tracePhaseFailure(params.diagnostic, startedAt, error);
230
- throw error;
231
- }
232
- }
233
- function captureAcceptedPhase(parsed, requestSteering) {
234
- if (!parsed.ok) {
235
- return parsed;
236
- }
237
- return Object.freeze({
238
- ok: true,
239
- decision: Object.freeze({
240
- decision: parsed.decision,
241
- steeringVersion: requestSteering.snapshot().version,
242
- }),
243
- });
244
- }
245
- function requiresWorkingDirectory(decision) {
246
- return (decision.action === "invoke_role" &&
247
- (decision.roleId === "planner" || decision.roleId === "worker"));
248
- }
249
- function tracePhaseFailure(diagnostic, startedAt, error) {
250
- traceSupervisorModelFailed({
251
- diagnostic,
252
- durationMs: Date.now() - startedAt,
253
- errorType: error instanceof Error && error.name ? error.name : typeof error,
254
- invalidStructuredOutput: error instanceof StructuredModelInvalidOutputError,
255
- });
256
- }
257
- function tracePhaseSuperseded(params) {
258
- traceSupervisorDecisionPhaseSuperseded({
259
- diagnostic: params.diagnostic,
260
- routingSteeringVersion: params.routingSteeringVersion,
261
- currentSteeringVersion: params.requestSteering.snapshot().version,
262
- ...(params.workingDirectorySteeringVersion === undefined
263
- ? {}
264
- : {
265
- workingDirectorySteeringVersion: params.workingDirectorySteeringVersion,
266
- }),
267
- checkpoint: params.checkpoint,
268
- });
269
183
  }
@@ -0,0 +1,21 @@
1
+ import type { RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
2
+ import type { RequestExecutionScope } from "../../request/execution-scope.js";
3
+ import { type SupervisorDecisionDiagnosticContext } from "./contracts.js";
4
+ export declare function buildSupervisorSkillSelectionInput(request: RequestExecutionScope, options?: {
5
+ skillReadHead?: RoleCallLedgerHead;
6
+ diagnostic?: SupervisorDecisionDiagnosticContext;
7
+ }): {
8
+ format: import("../../../model-gateway/types.js").ModelGatewayJsonSchemaFormat;
9
+ context: Readonly<{
10
+ messages: import("../../../model-gateway/types.js").ChatMessage[];
11
+ selectedHistoryMessageIds: string[];
12
+ omittedHistoryMessageIds: string[];
13
+ budget: import("../../context/request-context-contracts.js").RequestContextBudgetEstimate & {
14
+ parts: import("../../context/request-context-contracts.js").RequestContextBudgetParts;
15
+ };
16
+ compaction: Readonly<{
17
+ applied: boolean;
18
+ compactedSourceRefs: readonly string[];
19
+ }>;
20
+ }>;
21
+ };
@@ -0,0 +1,29 @@
1
+ import { isKnowledgeSkillStorageFailure } from "../../knowledge-skills/personal-contracts.js";
2
+ import { SUPERVISOR_DECISION_MODEL_STEP } from "./contracts.js";
3
+ import { buildSupervisorPreparationInput } from "./preparation-input.js";
4
+ import { createSupervisorSkillSelectionFormat, SUPERVISOR_SKILL_SELECTION_INSTRUCTIONS } from "./skill-selection.js";
5
+ export function buildSupervisorSkillSelectionInput(request, options = {}) {
6
+ const reads = options.skillReadHead?.state.skillReads ?? [];
7
+ const loadedIds = new Set(reads.flatMap((read) => read.operation === "read_skills" && read.result.outcome === "completed"
8
+ ? read.result.skills.map((skill) => skill.skillId) : []));
9
+ const lastList = [...reads].reverse().find((read) => read.operation === "list_skills" && read.result.outcome === "completed");
10
+ const metadata = lastList?.result.outcome === "completed"
11
+ ? lastList.result.skills : readCandidateMetadata(request);
12
+ return buildSupervisorPreparationInput(request, {
13
+ instructions: SUPERVISOR_SKILL_SELECTION_INSTRUCTIONS,
14
+ format: createSupervisorSkillSelectionFormat(),
15
+ diagnostic: options.diagnostic ?? { requestId: request.requestId, modelStep: SUPERVISOR_DECISION_MODEL_STEP, decisionPhase: "skill_selection" },
16
+ availableSkills: metadata.filter((skill) => !loadedIds.has(skill.skillId)),
17
+ expandedCatalog: lastList !== undefined,
18
+ });
19
+ }
20
+ function readCandidateMetadata(request) {
21
+ try {
22
+ return request.knowledgeSkillStore?.list() ?? [];
23
+ }
24
+ catch (error) {
25
+ if (isKnowledgeSkillStorageFailure(error))
26
+ return [];
27
+ throw error;
28
+ }
29
+ }
@@ -0,0 +1,16 @@
1
+ import type { ModelGatewayJsonSchemaFormat } from "../../../model-gateway/types.js";
2
+ import type { StructuredModelParseResult } from "../../model/invoke-structured-step.js";
3
+ import { type SkillReadDecision } from "../skill-read-decision.js";
4
+ type SupervisorSkillRead = Extract<SkillReadDecision, {
5
+ action: "read_skills";
6
+ }>;
7
+ export type SupervisorSkillSelection = SupervisorSkillRead | Readonly<{
8
+ action: "continue";
9
+ }>;
10
+ export declare function isSupervisorSkillLookup(selection: SkillReadDecision | Readonly<{
11
+ action: "continue";
12
+ }>): selection is SupervisorSkillRead;
13
+ export declare function createSupervisorSkillSelectionFormat(): ModelGatewayJsonSchemaFormat;
14
+ export declare const SUPERVISOR_SKILL_SELECTION_INSTRUCTIONS: string;
15
+ export declare function parseSupervisorSkillSelectionOutput(text: string): StructuredModelParseResult<SupervisorSkillSelection>;
16
+ export {};
@@ -0,0 +1,44 @@
1
+ import { createStructuredDecisionEnvelopeSchema, readStructuredDecisionEnvelope } from "../../model/structured-decision-envelope.js";
2
+ import { createSkillReadDecisionSchemas, parseSkillReadDecision } from "../skill-read-decision.js";
3
+ const READ_OPTIONS = Object.freeze({ acknowledgementMaxLength: 0, titleMaxLength: 0, allowSkillReads: true });
4
+ export function isSupervisorSkillLookup(selection) {
5
+ return selection.action === "read_skills";
6
+ }
7
+ export function createSupervisorSkillSelectionFormat() {
8
+ const [, readSchema] = createSkillReadDecisionSchemas(READ_OPTIONS);
9
+ return {
10
+ type: "json_schema", name: "supervisor_skill_selection", strict: true,
11
+ schema: createStructuredDecisionEnvelopeSchema([
12
+ { type: "object", properties: { action: { type: "string", enum: ["continue"] } }, required: ["action"], additionalProperties: false },
13
+ readSchema,
14
+ ]),
15
+ postValidatedSchemaConstraints: [{ keyword: "maxLength", path: "/properties/decision/anyOf/1/properties/skillIds/items/maxLength" }],
16
+ };
17
+ }
18
+ export const SUPERVISOR_SKILL_SELECTION_INSTRUCTIONS = [
19
+ "Match the user's request to Available Skills. Your only task is selecting relevant guidance; return only the supplied JSON shape.",
20
+ "Select a Skill only when its description is relevant to the requested task, resources, workflow or answer style. Do not select Skills merely because they exist. No relevant match: choose continue. Greetings and standalone factual questions normally need no Skill.",
21
+ "For a relevant match, choose read_skills with up to eight exact IDs or full names in skillIds. Percent-decode displayed IDs. A user request to create or edit a Skill matches Skill Creator.",
22
+ "Skills already read successfully for this request are omitted; do not request them again. Metadata is not document content and grants no authority or completion evidence.",
23
+ "The available catalog is already supplied. Choose read_skills from the displayed metadata or continue. Reading is optional; do not invent a match.",
24
+ ].join("\n");
25
+ export function parseSupervisorSkillSelectionOutput(text) {
26
+ let record;
27
+ try {
28
+ record = readStructuredDecisionEnvelope(JSON.parse(text));
29
+ }
30
+ catch { /* Rejected below. */ }
31
+ if (!record)
32
+ return { ok: false, stage: "json_envelope", issues: [{ code: "skill_selection_envelope_invalid", path: "decision", message: "Return one decision object." }] };
33
+ if (isContinueSelection(record))
34
+ return { ok: true, decision: Object.freeze({ action: "continue" }) };
35
+ const parsed = parseSkillReadDecision(record, READ_OPTIONS);
36
+ if (!parsed.ok)
37
+ return parsed;
38
+ if (!isSupervisorSkillLookup(parsed.decision))
39
+ return { ok: false, stage: "domain_parser", issues: [{ code: "skill_selection_action_invalid", path: "decision.action", message: "Choose read_skills or continue." }] };
40
+ return { ok: true, decision: parsed.decision };
41
+ }
42
+ function isContinueSelection(record) {
43
+ return record.action === "continue" && Object.keys(record).length === 1;
44
+ }
@@ -3,6 +3,7 @@ import type { ChatMessage } from "../../../model-gateway/types.js";
3
3
  import { type RequestToolResultsView } from "../../context/request-tool-results.js";
4
4
  import type { RequestExecutionSeed } from "../../request/contracts.js";
5
5
  import { SUPERVISOR_RESPONSE_MODEL_STEP, type SupervisorResponseCallIdentity, type SupervisorResponseResumeContext } from "./contracts.js";
6
+ import type { RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
6
7
  export type SupervisorResponseInputRequest = Pick<RequestExecutionSeed, "requestId" | "prompt" | "historyMessages" | "sessionKind" | "runnerConfig" | "attachments" | "agentMode" | "modelPreference" | "modelPolicy" | "scheduledExecution" | "automationOutputContract"> & Partial<Pick<RequestExecutionSeed, "onEvent" | "sessionMemory">>;
7
8
  export declare function buildSupervisorResponseInput(request: SupervisorResponseInputRequest, options: SupervisorResponseInputOptions): {
8
9
  context: RequestContextProjection;
@@ -14,8 +15,10 @@ export declare function buildSupervisorMemoryAuthoringInput(request: SupervisorR
14
15
  };
15
16
  type SupervisorResponseInputOptions = Readonly<{
16
17
  responseRecommendation?: string;
18
+ responseRecommendationOrigin?: "skill_authoring_no_save";
17
19
  call: SupervisorResponseCallIdentity;
18
20
  toolResults: RequestToolResultsView;
21
+ skillReadHead?: RoleCallLedgerHead;
19
22
  resume?: SupervisorResponseResumeContext;
20
23
  longTermMemoryMessage?: ChatMessage;
21
24
  memoryAuthoringMessage?: ChatMessage;
@@ -11,6 +11,7 @@ import { createSupervisorMemoryCandidatesFormat } from "./memory-authoring.js";
11
11
  import { buildSupervisorResponseRecommendationMessage } from "./response-recommendation.js";
12
12
  import { buildSupervisorMemoryAuthoringInstructions, buildSupervisorResponseInstructions, } from "./prompt.js";
13
13
  import { automationResponseFormat } from "../../request/automation-output-contract.js";
14
+ import { buildCoreSkillReadContextMessages } from "../../context/core-skill-read-context.js";
14
15
  export function buildSupervisorResponseInput(request, options) {
15
16
  const responseRecommendationMessage = buildSupervisorResponseRecommendationMessage(options);
16
17
  const scheduledExecution = projectScheduledExecutionContext(request, [buildSupervisorResponseInstructions({
@@ -24,6 +25,10 @@ export function buildSupervisorResponseInput(request, options) {
24
25
  : [])].join("\n"), "response");
25
26
  return buildSupervisorInput(request, options, {
26
27
  ...scheduledExecution,
28
+ referenceMessages: [
29
+ ...(scheduledExecution.referenceMessages ?? []),
30
+ ...buildCoreSkillReadContextMessages(options.skillReadHead),
31
+ ],
27
32
  ...(request.automationOutputContract
28
33
  ? { format: automationResponseFormat(request.automationOutputContract) }
29
34
  : {}),
@@ -1,3 +1,4 @@
1
+ import { SUPER_SKILL_GUIDANCE_INSTRUCTION } from "../supervisor-skill-instructions.js";
1
2
  import { CONVERSATION_MEMORY_AUTHORING_INSTRUCTIONS } from "../../long-term-memory/conversation-authoring/prompt.js";
2
3
  export function buildSupervisorResponseInstructions(params) {
3
4
  return [
@@ -31,6 +32,7 @@ export function buildSupervisorResponseInstructions(params) {
31
32
  "Use each capsule result only for its exact reported outcome, observed effect, and summary. It does not by itself prove completion of the delegated work or of the user request.",
32
33
  ]
33
34
  : []),
35
+ SUPER_SKILL_GUIDANCE_INSTRUCTION,
34
36
  "Do not mention internal role names, call identifiers, runtime contracts, or orchestration unless the user explicitly asks about them.",
35
37
  ].join("\n");
36
38
  }
@@ -1,3 +1,4 @@
1
+ import type { RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
1
2
  import type { ChatMessage } from "../../../model-gateway/types.js";
2
3
  import type { RequestToolResultsView } from "../../context/request-tool-results.js";
3
4
  import type { SupervisorResponseCallIdentity, SupervisorResponseResumeContext } from "./contracts.js";
@@ -5,6 +6,8 @@ export declare const SUPERVISOR_RESPONSE_RECOMMENDATION_KIND = "runtime_supervis
5
6
  export declare function buildSupervisorResponseRecommendationMessage(options: Readonly<{
6
7
  call: SupervisorResponseCallIdentity;
7
8
  responseRecommendation?: string;
9
+ responseRecommendationOrigin?: "skill_authoring_no_save";
8
10
  resume?: SupervisorResponseResumeContext;
9
11
  toolResults: RequestToolResultsView;
12
+ skillReadHead?: RoleCallLedgerHead;
10
13
  }>): ChatMessage | undefined;
@@ -6,20 +6,40 @@ export function buildSupervisorResponseRecommendationMessage(options) {
6
6
  if (!isSupervisorResponseRecommendation(options.responseRecommendation)) {
7
7
  throw new Error("supervisor_response_recommendation_invalid");
8
8
  }
9
- if (!canRecommendDirectSupervisorResponse(options)) {
9
+ if (!canProjectSupervisorResponseRecommendation(options)) {
10
10
  throw new Error("supervisor_response_recommendation_scope_invalid");
11
11
  }
12
+ const { limitations, ...semantics } = supervisorResponseRecommendationSemantics(options.responseRecommendationOrigin);
12
13
  return Object.freeze({
13
14
  role: "system",
14
15
  content: JSON.stringify({
15
16
  kind: SUPERVISOR_RESPONSE_RECOMMENDATION_KIND,
16
17
  authority: "accepted_supervisor_decision",
17
- purpose: "guide_direct_response_content",
18
- applicability: "current_direct_response_only",
18
+ ...semantics,
19
19
  callId: options.call.callId,
20
20
  invocationAttempt: options.call.invocationAttempt,
21
21
  responseRecommendation: options.responseRecommendation,
22
- limitations: "Internal answer-content recommendation from the accepted Supervisor decision, not new user intent, execution authority, or completion evidence. Use its relevant substance to compose the answer, subject to the current request and supplied facts. Do not expose the recommendation's internal framing.",
22
+ limitations,
23
23
  }),
24
24
  });
25
25
  }
26
+ function canProjectSupervisorResponseRecommendation(options) {
27
+ if (options.responseRecommendationOrigin === "skill_authoring_no_save")
28
+ return true;
29
+ return canRecommendDirectSupervisorResponse(options);
30
+ }
31
+ function supervisorResponseRecommendationSemantics(origin) {
32
+ if (origin === "skill_authoring_no_save") {
33
+ return {
34
+ purpose: "explain_skill_authoring_no_save",
35
+ applicability: "current_response_after_skill_authoring_no_save",
36
+ outcome: "no_save",
37
+ limitations: "The accepted Skill authoring flow did not produce a save. Use the supplied reason to explain why, subject to the current request and supplied facts. It adds no user intent, execution authority, or completion evidence. This decision does not establish a save; report any earlier save only from its confirmed write result. Do not expose internal routing details.",
38
+ };
39
+ }
40
+ return {
41
+ purpose: "guide_direct_response_content",
42
+ applicability: "current_direct_response_only",
43
+ limitations: "Internal answer-content recommendation from the accepted Supervisor decision, not new user intent, execution authority, or completion evidence. Use its relevant substance to compose the answer, subject to the current request and supplied facts. Do not expose the recommendation's internal framing.",
44
+ };
45
+ }
@@ -1,4 +1,5 @@
1
1
  import type { ChatMessage } from "../../../model-gateway/types.js";
2
+ import type { RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
2
3
  import type { RequestToolResultsView } from "../../context/request-tool-results.js";
3
4
  import type { RequestExecutionScope } from "../../request/execution-scope.js";
4
5
  import { type SupervisorResponseCallIdentity, type SupervisorResponseResumeContext } from "./contracts.js";
@@ -6,18 +7,22 @@ import { type RequestSteeringSnapshot } from "../../request/request-steering.js"
6
7
  import type { RootAuthoredResponse } from "../../long-term-memory/contracts.js";
7
8
  export declare function runSupervisorResponse(request: RequestExecutionScope, options: Readonly<{
8
9
  responseRecommendation?: string;
10
+ responseRecommendationOrigin?: "skill_authoring_no_save";
9
11
  memoryRecallMessage?: ChatMessage;
10
12
  initialMemoryMessage?: ChatMessage;
11
13
  call: SupervisorResponseCallIdentity;
12
14
  toolResults: RequestToolResultsView;
15
+ skillReadHead?: RoleCallLedgerHead;
13
16
  resume?: SupervisorResponseResumeContext;
14
17
  }>): Promise<string>;
15
18
  export declare function runSupervisorAuthoredResponse(request: RequestExecutionScope, options: Readonly<{
16
19
  responseRecommendation?: string;
20
+ responseRecommendationOrigin?: "skill_authoring_no_save";
17
21
  memoryRecallMessage?: ChatMessage;
18
22
  initialMemoryMessage?: ChatMessage;
19
23
  call: SupervisorResponseCallIdentity;
20
24
  toolResults: RequestToolResultsView;
25
+ skillReadHead?: RoleCallLedgerHead;
21
26
  resume?: SupervisorResponseResumeContext;
22
27
  steeringSnapshot?: RequestSteeringSnapshot;
23
28
  }>): Promise<RootAuthoredResponse>;
@@ -0,0 +1,43 @@
1
+ import type { ModelGatewayJsonSchemaFormat } from "../../../model-gateway/types.js";
2
+ import type { KnowledgeSkillMetadata } from "../../knowledge-skills/store.js";
3
+ import type { StructuredModelParseResult } from "../../model/invoke-structured-step.js";
4
+ export type SupervisorSkillAuthoringSelection = Readonly<{
5
+ action: "create_skill";
6
+ name: string;
7
+ description: string;
8
+ }> | Readonly<{
9
+ action: "update_skill";
10
+ skillId: string;
11
+ name?: string;
12
+ description?: string;
13
+ }> | Readonly<{
14
+ action: "no_save";
15
+ reason: string;
16
+ }>;
17
+ export type SupervisorSkillWriteSelection = Exclude<SupervisorSkillAuthoringSelection, {
18
+ action: "no_save";
19
+ }>;
20
+ export type SupervisorSkillAuthoringOptions = Readonly<{
21
+ writeOperationIds: readonly string[];
22
+ personalSkills: readonly KnowledgeSkillMetadata[];
23
+ }>;
24
+ export declare const SUPERVISOR_SKILL_NO_SAVE_REASON_MAX_LENGTH = 300;
25
+ export declare const SUPERVISOR_SKILL_AUTHORING_ROUTE_SCHEMA: {
26
+ type: string;
27
+ properties: {
28
+ action: {
29
+ type: string;
30
+ enum: string[];
31
+ };
32
+ };
33
+ required: string[];
34
+ additionalProperties: boolean;
35
+ };
36
+ export declare function isSupervisorSkillWriteSelection(decision: Readonly<{
37
+ action: string;
38
+ }>): decision is SupervisorSkillWriteSelection;
39
+ export declare function parseSupervisorSkillAuthoringRoute(record: Readonly<Record<string, unknown>>, allowed: boolean): StructuredModelParseResult<Readonly<{
40
+ action: "author_skill";
41
+ }>>;
42
+ export declare function createSupervisorSkillAuthoringFormat(options: SupervisorSkillAuthoringOptions): ModelGatewayJsonSchemaFormat;
43
+ export declare function parseSupervisorSkillAuthoringOutput(text: string, options: SupervisorSkillAuthoringOptions): StructuredModelParseResult<SupervisorSkillAuthoringSelection>;