@abot-ai/runtime 1.8.0 → 1.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (423) hide show
  1. package/README.md +216 -222
  2. package/dist/scripts/runtime-setup-files.js +46 -2
  3. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +8 -0
  4. package/dist/src/capabilities/tool-types.d.ts +4 -0
  5. package/dist/src/model-gateway/client/chat.js +9 -5
  6. package/dist/src/model-gateway/client/invocation-error.d.ts +9 -0
  7. package/dist/src/model-gateway/client/invocation-error.js +30 -0
  8. package/dist/src/model-gateway/client/stream-consumer.js +9 -2
  9. package/dist/src/model-gateway/client/stream-parser.js +2 -1
  10. package/dist/src/model-gateway/protocol/message-contract.d.ts +1 -0
  11. package/dist/src/model-gateway/protocol/message-contract.js +1 -1
  12. package/dist/src/model-gateway/server/chat-handler.js +5 -7
  13. package/dist/src/model-gateway/server/chat-stream-response.d.ts +7 -0
  14. package/dist/src/model-gateway/server/chat-stream-response.js +25 -0
  15. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +5 -1
  16. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +15 -1
  17. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +7 -5
  18. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +9 -2
  19. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +2 -2
  20. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +2 -2
  21. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +17 -11
  22. package/dist/src/runtime/automations/service.d.ts +1 -1
  23. package/dist/src/runtime/capabilities/automation-builder/tool-module.js +4 -4
  24. package/dist/src/runtime/capabilities/automations/draft-index.d.ts +1 -1
  25. package/dist/src/runtime/capabilities/automations/tool-module.js +4 -4
  26. package/dist/src/runtime/capabilities/core-tool-contracts.d.ts +29 -0
  27. package/dist/src/runtime/capabilities/core-tool-contracts.js +38 -0
  28. package/dist/src/runtime/capabilities/knowledge-skills/read-many.d.ts +4 -0
  29. package/dist/src/runtime/capabilities/knowledge-skills/read-many.js +21 -0
  30. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.d.ts +13 -0
  31. package/dist/src/runtime/capabilities/knowledge-skills/read-targets.js +44 -0
  32. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.d.ts +141 -0
  33. package/dist/src/runtime/capabilities/knowledge-skills/tool-contract.js +58 -0
  34. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.d.ts +4 -0
  35. package/dist/src/runtime/capabilities/knowledge-skills/tool-module.js +78 -0
  36. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.d.ts +12 -0
  37. package/dist/src/runtime/capabilities/knowledge-skills/tool-output.js +21 -0
  38. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.d.ts +77 -0
  39. package/dist/src/runtime/capabilities/knowledge-skills/write-contract.js +28 -0
  40. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.d.ts +3 -0
  41. package/dist/src/runtime/capabilities/knowledge-skills/write-operations.js +34 -0
  42. package/dist/src/runtime/capabilities/scheduling/tool-module.js +3 -3
  43. package/dist/src/runtime/capabilities/tool-availability.js +6 -0
  44. package/dist/src/runtime/composition.d.ts +5 -0
  45. package/dist/src/runtime/context/capability-brief.d.ts +2 -2
  46. package/dist/src/runtime/context/capability-brief.js +3 -3
  47. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -2
  48. package/dist/src/runtime/context/capability-descriptions.js +57 -20
  49. package/dist/src/runtime/context/capability-result-compaction-source.d.ts +3 -1
  50. package/dist/src/runtime/context/capability-result-compaction-source.js +13 -1
  51. package/dist/src/runtime/context/core-skill-read-context.d.ts +16 -0
  52. package/dist/src/runtime/context/core-skill-read-context.js +76 -0
  53. package/dist/src/runtime/context/exact-evidence-match.d.ts +3 -0
  54. package/dist/src/runtime/context/exact-evidence-match.js +34 -0
  55. package/dist/src/runtime/context/model-step-compaction.js +20 -6
  56. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.d.ts +9 -0
  57. package/dist/src/runtime/context/semantic-compaction/core-skill-read-source.js +38 -0
  58. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +2 -0
  59. package/dist/src/runtime/context/semantic-compaction/prompt.js +7 -7
  60. package/dist/src/runtime/context/semantic-compaction/run.js +10 -3
  61. package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +33 -3
  62. package/dist/src/runtime/context/session-artifact-paths.d.ts +2 -1
  63. package/dist/src/runtime/context/session-artifact-paths.js +2 -1
  64. package/dist/src/runtime/context/session-memory/model-step-controller.d.ts +2 -2
  65. package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +1 -1
  66. package/dist/src/runtime/context/super-worker-compaction-failure.js +2 -1
  67. package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +2 -1
  68. package/dist/src/runtime/context/super-worker-compaction-sidecar.js +9 -3
  69. package/dist/src/runtime/default-environment-adapters.d.ts +2 -1
  70. package/dist/src/runtime/default-environment-adapters.js +5 -1
  71. package/dist/src/runtime/knowledge-skills/available-skills-projection.d.ts +17 -0
  72. package/dist/src/runtime/knowledge-skills/available-skills-projection.js +66 -0
  73. package/dist/src/runtime/knowledge-skills/available-skills.d.ts +7 -0
  74. package/dist/src/runtime/knowledge-skills/available-skills.js +17 -0
  75. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.d.ts +2 -0
  76. package/dist/src/runtime/knowledge-skills/builtins/abot-studio.js +27 -0
  77. package/dist/src/runtime/knowledge-skills/builtins/computer-use.d.ts +2 -0
  78. package/dist/src/runtime/knowledge-skills/builtins/computer-use.js +34 -0
  79. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.d.ts +2 -0
  80. package/dist/src/runtime/knowledge-skills/builtins/skill-creator.js +29 -0
  81. package/dist/src/runtime/knowledge-skills/builtins/technical-work.d.ts +2 -0
  82. package/dist/src/runtime/knowledge-skills/builtins/technical-work.js +27 -0
  83. package/dist/src/runtime/knowledge-skills/catalog.d.ts +2 -0
  84. package/dist/src/runtime/knowledge-skills/catalog.js +12 -0
  85. package/dist/src/runtime/knowledge-skills/personal-contracts.d.ts +48 -0
  86. package/dist/src/runtime/knowledge-skills/personal-contracts.js +29 -0
  87. package/dist/src/runtime/knowledge-skills/personal-documents.d.ts +6 -0
  88. package/dist/src/runtime/knowledge-skills/personal-documents.js +56 -0
  89. package/dist/src/runtime/knowledge-skills/personal-management.d.ts +9 -0
  90. package/dist/src/runtime/knowledge-skills/personal-management.js +64 -0
  91. package/dist/src/runtime/knowledge-skills/personal-repository.d.ts +6 -0
  92. package/dist/src/runtime/knowledge-skills/personal-repository.js +76 -0
  93. package/dist/src/runtime/knowledge-skills/personal-store.d.ts +4 -0
  94. package/dist/src/runtime/knowledge-skills/personal-store.js +33 -0
  95. package/dist/src/runtime/knowledge-skills/read-evidence.d.ts +3 -0
  96. package/dist/src/runtime/knowledge-skills/read-evidence.js +13 -0
  97. package/dist/src/runtime/knowledge-skills/store.d.ts +19 -0
  98. package/dist/src/runtime/knowledge-skills/store.js +41 -0
  99. package/dist/src/runtime/local-application.d.ts +2 -1
  100. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  101. package/dist/src/runtime/local-host/app-service-dispatch.js +5 -0
  102. package/dist/src/runtime/local-host/client-services.d.ts +3 -1
  103. package/dist/src/runtime/local-host/client-services.js +3 -2
  104. package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +7 -1
  105. package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +51 -25
  106. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.d.ts +5 -0
  107. package/dist/src/runtime/long-term-memory/conversation-authoring/plain-text-context.js +28 -0
  108. package/dist/src/runtime/long-term-memory/initial-context.d.ts +18 -0
  109. package/dist/src/runtime/long-term-memory/initial-context.js +57 -0
  110. package/dist/src/runtime/long-term-memory/projection.js +1 -1
  111. package/dist/src/runtime/model/context-compaction-admission.d.ts +1 -0
  112. package/dist/src/runtime/model/context-compaction-admission.js +35 -1
  113. package/dist/src/runtime/model/context-compaction-contracts.d.ts +9 -1
  114. package/dist/src/runtime/model/invoke-step.js +6 -2
  115. package/dist/src/runtime/model/provider-failure.d.ts +13 -0
  116. package/dist/src/runtime/model/provider-failure.js +37 -0
  117. package/dist/src/runtime/orchestration/role-calls/activation-budget.js +1 -0
  118. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +4 -1
  119. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +1 -1
  120. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +7 -3
  121. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  122. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.d.ts +4 -0
  123. package/dist/src/runtime/orchestration/role-calls/command-dispatch/skill-read-transition.js +48 -0
  124. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  125. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  126. package/dist/src/runtime/orchestration/role-calls/contracts.js +3 -3
  127. package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -1
  128. package/dist/src/runtime/orchestration/role-calls/ledger.js +2 -2
  129. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +7 -0
  130. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +2 -0
  131. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +88 -0
  132. package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
  133. package/dist/src/runtime/orchestration/role-calls/reducer.js +2 -1
  134. package/dist/src/runtime/orchestration/role-calls/skill-read.d.ts +47 -0
  135. package/dist/src/runtime/orchestration/role-calls/skill-read.js +196 -0
  136. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +1 -1
  137. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +4 -2
  138. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +4 -1
  139. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +4 -2
  140. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +2 -2
  141. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +10 -4
  142. package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.d.ts +5 -0
  143. package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.js +31 -0
  144. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.d.ts +2 -0
  145. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +7 -2
  146. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.d.ts +19 -0
  147. package/dist/src/runtime/orchestration/worker-capabilities/supervisor-skill-authority.js +43 -0
  148. package/dist/src/runtime/plugins/loader.js +7 -6
  149. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  150. package/dist/src/runtime/request/approval-wait/preflight.js +1 -0
  151. package/dist/src/runtime/request/bound-runtime-handler.js +1 -0
  152. package/dist/src/runtime/request/capability-execution-freshness.js +6 -1
  153. package/dist/src/runtime/request/contracts.d.ts +2 -0
  154. package/dist/src/runtime/request/execution-agent-root-execution.js +11 -1
  155. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +2 -2
  156. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
  157. package/dist/src/runtime/request/execution-scope-surfaces.js +7 -0
  158. package/dist/src/runtime/request/execution-scope.d.ts +6 -2
  159. package/dist/src/runtime/request/execution-scope.js +11 -0
  160. package/dist/src/runtime/request/payload-settled-evidence.d.ts +11 -0
  161. package/dist/src/runtime/request/payload-settled-evidence.js +29 -0
  162. package/dist/src/runtime/request/prepared-execution.js +2 -0
  163. package/dist/src/runtime/request/role-call-delegation-events.d.ts +19 -0
  164. package/dist/src/runtime/request/role-call-delegation-events.js +52 -0
  165. package/dist/src/runtime/request/role-call-return-events.d.ts +19 -0
  166. package/dist/src/runtime/request/role-call-return-events.js +63 -0
  167. package/dist/src/runtime/request/role-executor-composition.js +2 -2
  168. package/dist/src/runtime/request/root-capability-binding.d.ts +24 -0
  169. package/dist/src/runtime/request/root-capability-binding.js +57 -0
  170. package/dist/src/runtime/request/root-capability-catalog.d.ts +16 -0
  171. package/dist/src/runtime/request/root-capability-catalog.js +20 -0
  172. package/dist/src/runtime/request/root-contract.d.ts +13 -1
  173. package/dist/src/runtime/request/root-execution-kernel.js +36 -68
  174. package/dist/src/runtime/request/root-reference-action.d.ts +15 -0
  175. package/dist/src/runtime/request/root-reference-action.js +48 -0
  176. package/dist/src/runtime/request/root-skill-read.d.ts +13 -0
  177. package/dist/src/runtime/request/root-skill-read.js +102 -0
  178. package/dist/src/runtime/request/runner.js +19 -3
  179. package/dist/src/runtime/request/super-payload-context-failure.js +13 -4
  180. package/dist/src/runtime/request/supervisor-root-execution.js +54 -1
  181. package/dist/src/runtime/request/supervisor-skill-edit-target.d.ts +9 -0
  182. package/dist/src/runtime/request/supervisor-skill-edit-target.js +25 -0
  183. package/dist/src/runtime/request/supervisor-skill-payload-context.d.ts +21 -0
  184. package/dist/src/runtime/request/supervisor-skill-payload-context.js +91 -0
  185. package/dist/src/runtime/request/supervisor-skill-write-preparation.d.ts +25 -0
  186. package/dist/src/runtime/request/supervisor-skill-write-preparation.js +71 -0
  187. package/dist/src/runtime/request/worker-capability-composition.d.ts +4 -1
  188. package/dist/src/runtime/request/worker-capability-composition.js +4 -1
  189. package/dist/src/runtime/request/worker-capability-payload.d.ts +1 -1
  190. package/dist/src/runtime/request/worker-capability-payload.js +44 -37
  191. package/dist/src/runtime/runtime-environment.d.ts +2 -0
  192. package/dist/src/runtime/runtime-environment.js +12 -1
  193. package/dist/src/runtime/scheduler/contracts.d.ts +4 -0
  194. package/dist/src/runtime/scheduler/run-list-filter.d.ts +11 -0
  195. package/dist/src/runtime/scheduler/run-list-filter.js +56 -0
  196. package/dist/src/runtime/scheduler/run-list-query.d.ts +2 -2
  197. package/dist/src/runtime/scheduler/run-list-query.js +4 -1
  198. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +2 -0
  199. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +2 -2
  200. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +2 -34
  201. package/dist/src/runtime/steps/auditor-decision/input.js +21 -3
  202. package/dist/src/runtime/steps/auditor-decision/projection.js +5 -0
  203. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  204. package/dist/src/runtime/steps/auditor-decision/prompt.js +14 -3
  205. package/dist/src/runtime/steps/capability-execution-guidance.d.ts +7 -0
  206. package/dist/src/runtime/steps/capability-execution-guidance.js +28 -0
  207. package/dist/src/runtime/steps/capability-execution-instructions.d.ts +0 -2
  208. package/dist/src/runtime/steps/capability-execution-instructions.js +0 -2
  209. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +5 -2
  210. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +22 -3
  211. package/dist/src/runtime/steps/execution-agent/compaction.d.ts +3 -2
  212. package/dist/src/runtime/steps/execution-agent/compaction.js +9 -1
  213. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +10 -0
  214. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +13 -1
  215. package/dist/src/runtime/steps/execution-agent/direct-response-configuration.d.ts +3 -0
  216. package/dist/src/runtime/steps/execution-agent/direct-response-configuration.js +64 -0
  217. package/dist/src/runtime/steps/execution-agent/direct-response-contract.d.ts +7 -0
  218. package/dist/src/runtime/steps/execution-agent/direct-response-contract.js +56 -0
  219. package/dist/src/runtime/steps/execution-agent/direct-response-policy.d.ts +9 -0
  220. package/dist/src/runtime/steps/execution-agent/direct-response-policy.js +30 -0
  221. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.d.ts +7 -0
  222. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +43 -0
  223. package/dist/src/runtime/steps/execution-agent/format.js +2 -0
  224. package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -0
  225. package/dist/src/runtime/steps/execution-agent/input.js +35 -2
  226. package/dist/src/runtime/steps/execution-agent/plugin-catalog.d.ts +4 -0
  227. package/dist/src/runtime/steps/execution-agent/plugin-catalog.js +8 -0
  228. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  229. package/dist/src/runtime/steps/execution-agent/prompt.js +42 -41
  230. package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +1 -0
  231. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +4 -1
  232. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  233. package/dist/src/runtime/steps/execution-agent/response-run.js +6 -12
  234. package/dist/src/runtime/steps/execution-agent/run.js +5 -2
  235. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -3
  236. package/dist/src/runtime/steps/execution-agent/state-context.js +3 -40
  237. package/dist/src/runtime/steps/knowledge-skill-instructions.d.ts +3 -0
  238. package/dist/src/runtime/steps/knowledge-skill-instructions.js +3 -0
  239. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +4 -2
  240. package/dist/src/runtime/steps/planner-decision/capability-brief.js +5 -1
  241. package/dist/src/runtime/steps/planner-decision/input.d.ts +2 -2
  242. package/dist/src/runtime/steps/planner-decision/input.js +7 -1
  243. package/dist/src/runtime/steps/planner-decision/prompt.js +29 -49
  244. package/dist/src/runtime/steps/planner-graph/input.d.ts +2 -2
  245. package/dist/src/runtime/steps/planner-graph/input.js +9 -8
  246. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -2
  247. package/dist/src/runtime/steps/planner-graph/run.d.ts +2 -2
  248. package/dist/src/runtime/steps/planner-graph/run.js +5 -5
  249. package/dist/src/runtime/steps/planner-graph/skill-guidance.d.ts +5 -0
  250. package/dist/src/runtime/steps/planner-graph/skill-guidance.js +62 -0
  251. package/dist/src/runtime/steps/reviewer-decision/final-evidence.d.ts +1 -0
  252. package/dist/src/runtime/steps/reviewer-decision/final-evidence.js +3 -1
  253. package/dist/src/runtime/steps/reviewer-decision/input.d.ts +3 -1
  254. package/dist/src/runtime/steps/reviewer-decision/input.js +2 -22
  255. package/dist/src/runtime/steps/reviewer-decision/model-context.d.ts +21 -0
  256. package/dist/src/runtime/steps/reviewer-decision/model-context.js +32 -1
  257. package/dist/src/runtime/steps/reviewer-decision/projection.js +4 -0
  258. package/dist/src/runtime/steps/reviewer-decision/prompt.d.ts +1 -1
  259. package/dist/src/runtime/steps/reviewer-decision/prompt.js +15 -4
  260. package/dist/src/runtime/steps/reviewer-decision/run.d.ts +2 -0
  261. package/dist/src/runtime/steps/reviewer-decision/run.js +6 -0
  262. package/dist/src/runtime/steps/skill-read-decision.d.ts +34 -0
  263. package/dist/src/runtime/steps/skill-read-decision.js +91 -0
  264. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.d.ts +22 -0
  265. package/dist/src/runtime/steps/supervisor-decision/artifact-paths.js +132 -0
  266. package/dist/src/runtime/steps/supervisor-decision/capability-brief.d.ts +2 -0
  267. package/dist/src/runtime/steps/supervisor-decision/capability-brief.js +9 -2
  268. package/dist/src/runtime/steps/supervisor-decision/contracts.d.ts +12 -3
  269. package/dist/src/runtime/steps/supervisor-decision/contracts.js +3 -0
  270. package/dist/src/runtime/steps/supervisor-decision/decision-phases.d.ts +37 -0
  271. package/dist/src/runtime/steps/supervisor-decision/decision-phases.js +124 -0
  272. package/dist/src/runtime/steps/supervisor-decision/diagnostics.d.ts +5 -1
  273. package/dist/src/runtime/steps/supervisor-decision/diagnostics.js +4 -0
  274. package/dist/src/runtime/steps/supervisor-decision/format.d.ts +1 -0
  275. package/dist/src/runtime/steps/supervisor-decision/format.js +2 -0
  276. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +8 -1
  277. package/dist/src/runtime/steps/supervisor-decision/input.js +35 -11
  278. package/dist/src/runtime/steps/supervisor-decision/parser.d.ts +1 -0
  279. package/dist/src/runtime/steps/supervisor-decision/parser.js +11 -0
  280. package/dist/src/runtime/steps/supervisor-decision/preparation-input.d.ts +26 -0
  281. package/dist/src/runtime/steps/supervisor-decision/preparation-input.js +39 -0
  282. package/dist/src/runtime/steps/supervisor-decision/preparation.d.ts +17 -0
  283. package/dist/src/runtime/steps/supervisor-decision/preparation.js +65 -0
  284. package/dist/src/runtime/steps/supervisor-decision/presentation.d.ts +13 -0
  285. package/dist/src/runtime/steps/supervisor-decision/presentation.js +47 -0
  286. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +5 -0
  287. package/dist/src/runtime/steps/supervisor-decision/prompt.js +97 -106
  288. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.d.ts +2 -0
  289. package/dist/src/runtime/steps/supervisor-decision/response-recommendation.js +2 -0
  290. package/dist/src/runtime/steps/supervisor-decision/resume.d.ts +3 -0
  291. package/dist/src/runtime/steps/supervisor-decision/resume.js +20 -0
  292. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +7 -0
  293. package/dist/src/runtime/steps/supervisor-decision/run.js +76 -158
  294. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.d.ts +21 -0
  295. package/dist/src/runtime/steps/supervisor-decision/skill-selection-input.js +29 -0
  296. package/dist/src/runtime/steps/supervisor-decision/skill-selection.d.ts +16 -0
  297. package/dist/src/runtime/steps/supervisor-decision/skill-selection.js +44 -0
  298. package/dist/src/runtime/steps/supervisor-response/input.d.ts +3 -0
  299. package/dist/src/runtime/steps/supervisor-response/input.js +5 -0
  300. package/dist/src/runtime/steps/supervisor-response/prompt.js +2 -0
  301. package/dist/src/runtime/steps/supervisor-response/response-recommendation.d.ts +3 -0
  302. package/dist/src/runtime/steps/supervisor-response/response-recommendation.js +24 -4
  303. package/dist/src/runtime/steps/supervisor-response/run.d.ts +7 -0
  304. package/dist/src/runtime/steps/supervisor-response/run.js +3 -6
  305. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.d.ts +43 -0
  306. package/dist/src/runtime/steps/supervisor-skill-authoring/contract.js +85 -0
  307. package/dist/src/runtime/steps/supervisor-skill-authoring/input.d.ts +35 -0
  308. package/dist/src/runtime/steps/supervisor-skill-authoring/input.js +87 -0
  309. package/dist/src/runtime/steps/supervisor-skill-authoring/run.d.ts +10 -0
  310. package/dist/src/runtime/steps/supervisor-skill-authoring/run.js +35 -0
  311. package/dist/src/runtime/steps/supervisor-skill-instructions.d.ts +4 -0
  312. package/dist/src/runtime/steps/supervisor-skill-instructions.js +4 -0
  313. package/dist/src/runtime/steps/worker-capability-scope-decision.js +14 -1
  314. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +1 -0
  315. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.d.ts +5 -0
  316. package/dist/src/runtime/steps/worker-decision/input/execution-guidance.js +31 -0
  317. package/dist/src/runtime/steps/worker-decision/input/prompt-context.js +2 -25
  318. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +4 -0
  319. package/dist/src/runtime/steps/worker-decision/prompt.js +6 -2
  320. package/dist/src/runtime/steps/worker-decision/result-author.js +6 -0
  321. package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
  322. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  323. package/dist/src/web-ui/app/app.js +7 -1
  324. package/dist/src/web-ui/app/components/automations/run-history-controls.js +77 -0
  325. package/dist/src/web-ui/app/components/automations/run-history.js +55 -0
  326. package/dist/src/web-ui/app/components/automations/run.js +3 -8
  327. package/dist/src/web-ui/app/components/automations/timeline.js +3 -2
  328. package/dist/src/web-ui/app/components/automations/workspace.js +11 -2
  329. package/dist/src/web-ui/app/components/conversation-role-cards.js +27 -0
  330. package/dist/src/web-ui/app/components/conversation-role-delegations.d.ts +12 -0
  331. package/dist/src/web-ui/app/components/conversation-role-delegations.js +24 -0
  332. package/dist/src/web-ui/app/components/conversation-role-history.d.ts +13 -0
  333. package/dist/src/web-ui/app/components/conversation-role-history.js +81 -0
  334. package/dist/src/web-ui/app/components/conversation-role-returns.d.ts +12 -0
  335. package/dist/src/web-ui/app/components/conversation-role-returns.js +23 -0
  336. package/dist/src/web-ui/app/components/dashboard/compact-layout.js +137 -0
  337. package/dist/src/web-ui/app/components/dashboard/icons.js +5 -0
  338. package/dist/src/web-ui/app/components/dashboard/widget-card.js +85 -0
  339. package/dist/src/web-ui/app/components/dashboard/widget-dialog.js +83 -0
  340. package/dist/src/web-ui/app/components/dashboard/widget-summaries.js +155 -0
  341. package/dist/src/web-ui/app/components/dashboard/workspace.js +28 -4
  342. package/dist/src/web-ui/app/components/onboarding-workspace-access.js +1 -1
  343. package/dist/src/web-ui/app/components/operations-summary.js +2 -1
  344. package/dist/src/web-ui/app/components/passive-learning/home-widget-preview.js +32 -0
  345. package/dist/src/web-ui/app/components/passive-learning/home.js +4 -1
  346. package/dist/src/web-ui/app/components/schedules/details.js +3 -2
  347. package/dist/src/web-ui/app/components/skills/workspace.js +119 -0
  348. package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -1
  349. package/dist/src/web-ui/app/components/spark-chat/settings.js +1 -1
  350. package/dist/src/web-ui/app/components/system-host/home-widget-permission-preview.js +75 -0
  351. package/dist/src/web-ui/app/components/system-host/home-widget-summary.js +93 -0
  352. package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +2 -2
  353. package/dist/src/web-ui/app/components/system-host/native-windows-access.js +1 -1
  354. package/dist/src/web-ui/app/components/system-host/rendering.js +3 -3
  355. package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +2 -2
  356. package/dist/src/web-ui/app/components/workspace-shell.js +11 -1
  357. package/dist/src/web-ui/app/computer-access-feature.js +13 -1
  358. package/dist/src/web-ui/app/configuration-feature.js +2 -0
  359. package/dist/src/web-ui/app/controllers/automation-read-projection.js +8 -4
  360. package/dist/src/web-ui/app/controllers/automation-run-actions.js +3 -1
  361. package/dist/src/web-ui/app/controllers/automation-run-history.js +159 -0
  362. package/dist/src/web-ui/app/controllers/automations-controller.js +27 -11
  363. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +6 -2
  364. package/dist/src/web-ui/app/controllers/operations-controller.js +2 -1
  365. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +22 -1
  366. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +1 -1
  367. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +7 -1
  368. package/dist/src/web-ui/app/controllers/skills-controller.js +237 -0
  369. package/dist/src/web-ui/app/dashboard-feature.js +9 -0
  370. package/dist/src/web-ui/app/lib/conversation-role-model.d.ts +5 -0
  371. package/dist/src/web-ui/app/lib/conversation-role-model.js +63 -5
  372. package/dist/src/web-ui/app/lib/event-presentation.js +34 -0
  373. package/dist/src/web-ui/app/lib/reasoning-controls.js +6 -1
  374. package/dist/src/web-ui/app/lib/role-delegation-event.d.ts +18 -0
  375. package/dist/src/web-ui/app/lib/role-delegation-event.js +47 -0
  376. package/dist/src/web-ui/app/lib/role-return-event.d.ts +19 -0
  377. package/dist/src/web-ui/app/lib/role-return-event.js +36 -0
  378. package/dist/src/web-ui/app/lib/tool-activity-event.js +8 -6
  379. package/dist/src/web-ui/app/lib/tool-skill-activity-fields.js +50 -0
  380. package/dist/src/web-ui/app/lib/workspace-route.js +1 -0
  381. package/dist/src/web-ui/app/passive-learning-feature.js +2 -2
  382. package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +9 -1
  383. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
  384. package/dist/src/web-ui/app/services/runtime-web-client/skills.js +23 -0
  385. package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
  386. package/dist/src/web-ui/app/skills-feature.js +36 -0
  387. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +58 -0
  388. package/dist/src/web-ui/app/styles/40-skills.css +34 -0
  389. package/dist/src/web-ui/app/styles/50-automations.css +24 -3
  390. package/dist/src/web-ui/app/styles/95-home-widgets.css +110 -0
  391. package/dist/src/web-ui/app/styles.css +2 -0
  392. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  393. package/dist/src/web-ui/app/ui-behavior.js +1 -0
  394. package/dist/src/web-ui/client-state/store.js +3 -2
  395. package/dist/src/web-ui/client-state/transaction-order.d.ts +2 -0
  396. package/dist/src/web-ui/client-state/transaction-order.js +18 -0
  397. package/dist/src/web-ui/local-runtime/api-router.d.ts +1 -0
  398. package/dist/src/web-ui/local-runtime/api-router.js +7 -0
  399. package/dist/src/web-ui/local-runtime/automation-routes.js +2 -1
  400. package/dist/src/web-ui/local-runtime/automation-run-page.d.ts +5 -0
  401. package/dist/src/web-ui/local-runtime/automation-run-page.js +26 -0
  402. package/dist/src/web-ui/local-runtime/skill-management-routes.d.ts +18 -0
  403. package/dist/src/web-ui/local-runtime/skill-management-routes.js +118 -0
  404. package/docs/configuration.md +8 -0
  405. package/docs/plugins.md +37 -32
  406. package/docs/runtime-public-contracts.md +37 -0
  407. package/examples/request-runner.config.example.json +3 -0
  408. package/package.json +1 -1
  409. package/plugins/capability-brief/plugin.json +1 -1
  410. package/plugins/code-outline/plugin.json +1 -1
  411. package/plugins/document-reader/plugin.json +1 -1
  412. package/plugins/exec/plugin.json +1 -1
  413. package/plugins/filesystem/plugin.json +1 -1
  414. package/plugins/json-inspector/plugin.json +1 -1
  415. package/plugins/local-search/plugin.json +1 -1
  416. package/plugins/memory/plugin.json +1 -1
  417. package/plugins/project-orientation/plugin.json +1 -1
  418. package/plugins/system/plugin.json +1 -1
  419. package/plugins/system-probe/plugin.json +1 -1
  420. package/plugins/web/plugin.json +1 -1
  421. package/plugins/web/skills/web_fetch_skill/SKILL.md +1 -2
  422. package/plugins/web/skills/web_search_skill/SKILL.md +3 -7
  423. package/src/runtime/README.md +96 -1
@@ -1,8 +1,9 @@
1
1
  import { projectCanonicalRequestToolResult } from "../../context/canonical-capability-result.js";
2
+ import { createSemanticCompactionSha256Fingerprint, } from "../../context/semantic-compaction/contracts.js";
2
3
  export const EXECUTION_CAPABILITY_RESULT_MESSAGE_KIND = "runtime_execution_capability_result_v1";
3
4
  export const EXECUTION_CAPABILITY_TOOL_NAME = "runtime_capability";
4
- /** One exact native result representation for active input and saved-source compatibility. */
5
- export function buildExecutionCapabilityResultMessage(head, execution) {
5
+ /** Canonical bytes stay stable; only the model view may omit an exact duplicate. */
6
+ export function buildExecutionCapabilityResultMessage(head, execution, projection = "canonical") {
6
7
  if (execution.status !== "settled" || execution.exactResult === undefined) {
7
8
  throw new Error("execution_agent_continuation_result_invalid");
8
9
  }
@@ -19,7 +20,9 @@ export function buildExecutionCapabilityResultMessage(head, execution) {
19
20
  capabilityId: execution.capabilityId,
20
21
  outcome: canonical.outcome,
21
22
  observedEffect: canonical.observedEffect,
22
- summary: canonical.summary,
23
+ ...(canOmitDuplicateSummary(projection, canonical)
24
+ ? {}
25
+ : { summary: canonical.summary }),
23
26
  adapterResult: execution.exactResult,
24
27
  },
25
28
  }),
@@ -27,3 +30,19 @@ export function buildExecutionCapabilityResultMessage(head, execution) {
27
30
  toolName: EXECUTION_CAPABILITY_TOOL_NAME,
28
31
  });
29
32
  }
33
+ /** Reuse the original native-message identity for compaction and approval resume. */
34
+ export function buildExecutionCapabilityResultSource(head, execution) {
35
+ const content = JSON.stringify(buildExecutionCapabilityResultMessage(head, execution));
36
+ return Object.freeze({
37
+ sourceRef: `tool-result:${execution.executionId}`,
38
+ sourceFingerprint: createSemanticCompactionSha256Fingerprint(content),
39
+ content,
40
+ });
41
+ }
42
+ function canOmitDuplicateSummary(projection, result) {
43
+ if (projection !== "model")
44
+ return false;
45
+ if (result.adapterResult?.kind !== "registered_tool_execution_result_v1")
46
+ return false;
47
+ return result.summary === result.adapterResult.result.output;
48
+ }
@@ -1,17 +1,18 @@
1
1
  import type { RequestSteeringSnapshot } from "../../request/request-steering.js";
2
2
  import type { ModelStep } from "../../../shared/model-steps.js";
3
- import type { RoleCallFrame } from "../../orchestration/role-calls/index.js";
3
+ import type { RoleCallFrame, RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
4
4
  import type { RequestExecutionScope } from "../../request/execution-scope.js";
5
5
  type ExecutionAgentCompactionOptions = Readonly<{
6
6
  call: RoleCallFrame;
7
7
  steeringSnapshot: RequestSteeringSnapshot;
8
- sourceRevision: number;
8
+ head: RoleCallLedgerHead;
9
9
  consumer?: ModelStep;
10
10
  allowedConsumers: readonly ModelStep[];
11
11
  scopeSuffix?: string;
12
12
  }>;
13
13
  export declare function createExecutionAgentCompactionController(request: RequestExecutionScope, options: ExecutionAgentCompactionOptions): Readonly<{
14
14
  project(messages: readonly import("../../../model-gateway/types.js").ChatMessage[]): import("../../../model-gateway/types.js").ChatMessage[];
15
+ projectForCompaction?(messages: readonly import("../../../model-gateway/types.js").ChatMessage[]): readonly import("../../../model-gateway/types.js").ChatMessage[];
15
16
  hasExhaustedVerifiedCompactionSources?(messages: readonly import("../../../model-gateway/types.js").ChatMessage[]): boolean;
16
17
  getStages(): readonly import("../../model/context-compaction-contracts.js").ModelStepCompactionStage[];
17
18
  }>;
@@ -1,11 +1,19 @@
1
1
  import { executionCompactionScopeId, projectExecutionCompactionObjective, } from "../../context/execution-compaction-objective.js";
2
2
  import { createModelStepCompactionController } from "../../context/model-step-compaction.js";
3
+ import { buildExecutionCapabilityResultSource } from "./capability-result-context.js";
3
4
  export function createExecutionAgentCompactionController(request, options) {
4
5
  const objective = projectExecutionCompactionObjective(request.prompt, options.steeringSnapshot.updates);
5
6
  const call = Object.freeze({ ...options.call, objective });
6
7
  return createModelStepCompactionController(request, {
7
8
  call,
8
- sourceRevision: options.sourceRevision,
9
+ sourceRevision: options.head.revision,
10
+ resultSourceOverrides: options.head.state.capabilityExecutions
11
+ .filter(function isSettledExecutionOfCall(execution) {
12
+ if (execution.callId !== call.callId)
13
+ return false;
14
+ return execution.status === "settled";
15
+ })
16
+ .map((execution) => buildExecutionCapabilityResultSource(options.head, execution)),
9
17
  allowedConsumers: options.allowedConsumers,
10
18
  consumer: options.consumer,
11
19
  scopeId: executionCompactionScopeId({
@@ -1,4 +1,6 @@
1
1
  import type { MemoryRecallDecision } from "../memory-recall-decision.js";
2
+ import type { MemoryCandidate } from "../../long-term-memory/contracts.js";
3
+ import type { ConversationMemoryAuthoringContext } from "../../long-term-memory/conversation-authoring/context.js";
2
4
  import type { ExecutionWorkPlanOptions, ExecutionWorkPlanReport } from "./work-plan-contract.js";
3
5
  import type { RoleCapabilitySelectionProjection, RoleCapabilitySelectionReconsiderationCause } from "../../orchestration/role-calls/index.js";
4
6
  import { type CapabilityControls, type CapabilityDescriptor } from "../../orchestration/capability-adapters/index.js";
@@ -21,6 +23,10 @@ export type ExecutionAgentDecisionPresentation = Readonly<{
21
23
  }>;
22
24
  export type ExecutionAgentRespondDecision = Readonly<ExecutionAgentDecisionPresentation & {
23
25
  action: "respond";
26
+ /** Exact prevalidated short answer; absent keeps separate presentation. */
27
+ response?: string;
28
+ /** Assessed proposals bound to the same accepted direct response. */
29
+ memoryCandidates?: readonly MemoryCandidate[];
24
30
  }>;
25
31
  export type ExecutionAgentOpenCapabilityScopeDecision = Readonly<ExecutionAgentDecisionPresentation & {
26
32
  action: "open_capability_scope";
@@ -113,6 +119,10 @@ export type ExecutionAgentDecisionContractOptions = Readonly<{
113
119
  includeAcknowledgement?: boolean;
114
120
  includeTitle?: boolean;
115
121
  allowRespond?: boolean;
122
+ directResponseMaxLength?: number;
123
+ directResponseMemoryAuthoring?: Readonly<{
124
+ context?: ConversationMemoryAuthoringContext;
125
+ }>;
116
126
  allowMemoryRecall?: boolean;
117
127
  allowPlanner?: boolean;
118
128
  allowAuditor?: boolean;
@@ -1,3 +1,4 @@
1
+ import { parseDirectResponse, parseDirectResponseMemoryCandidates, } from "./direct-response-contract.js";
1
2
  import { readStructuredDecisionEnvelope } from "../../model/structured-decision-envelope.js";
2
3
  import { parseDecisionWithWorkPlan } from "./work-plan-decision-parsing.js";
3
4
  import { isMemoryRecallDecisionRecord, parseMemoryRecallDecision, } from "../memory-recall-decision.js";
@@ -62,12 +63,23 @@ function parseExecutionAgentActionOutput(text, options) {
62
63
  }
63
64
  }
64
65
  else if (selectedAction === "respond") {
65
- exactKeys(record, ["action", ...presentationKeys(contract)], issues, "decision");
66
+ const response = parseDirectResponse(record, options.directResponseMaxLength, issues);
67
+ const memoryCandidates = response !== undefined
68
+ ? parseDirectResponseMemoryCandidates(record, options.directResponseMemoryAuthoring)
69
+ : undefined;
70
+ exactKeys(record, [
71
+ "action",
72
+ ...(response !== undefined ? ["response"] : []),
73
+ ...(memoryCandidates !== undefined ? ["memoryCandidates"] : []),
74
+ ...presentationKeys(contract),
75
+ ], issues, "decision");
66
76
  if (!contract.allowRespond) {
67
77
  issues.push(issue("execution_agent_response_not_allowed", "decision.action", "respond is not available until the canonical completion gate is open."));
68
78
  }
69
79
  decision = {
70
80
  action: "respond",
81
+ ...(response !== undefined ? { response } : {}),
82
+ ...(memoryCandidates !== undefined ? { memoryCandidates } : {}),
71
83
  ...presentation,
72
84
  };
73
85
  }
@@ -0,0 +1,3 @@
1
+ import type { RequestExecutionScope } from "../../request/execution-scope.js";
2
+ /** Preserve a separately configured response model/calibration instead of silently bypassing it. */
3
+ export declare function hasCompatibleDirectResponseConfiguration(request: RequestExecutionScope): boolean;
@@ -0,0 +1,64 @@
1
+ import { isDeepStrictEqual } from "node:util";
2
+ import { resolveModelInvocation } from "../../../model-gateway/invocation-policy.js";
3
+ import { resolveModelStepTimeout } from "../../model/model-step-timeout-policy.js";
4
+ import { EXECUTION_AGENT_DECISION_MODEL_STEP, EXECUTION_AGENT_RESPONSE_MODEL_STEP, } from "./contracts.js";
5
+ /** Preserve a separately configured response model/calibration instead of silently bypassing it. */
6
+ export function hasCompatibleDirectResponseConfiguration(request) {
7
+ try {
8
+ const decision = effectiveConfiguration(request, EXECUTION_AGENT_DECISION_MODEL_STEP);
9
+ const response = effectiveConfiguration(request, EXECUTION_AGENT_RESPONSE_MODEL_STEP);
10
+ if (!decision || !response)
11
+ return false;
12
+ return isDeepStrictEqual(decision, response);
13
+ }
14
+ catch {
15
+ // Resolution failures keep the existing deferred path and its diagnostics.
16
+ return false;
17
+ }
18
+ }
19
+ function effectiveConfiguration(request, modelStep) {
20
+ const step = request.runnerConfig.steps[modelStep];
21
+ if (!step)
22
+ return undefined;
23
+ const invocation = resolveModelInvocation({
24
+ modelStep,
25
+ agentMode: request.agentMode,
26
+ ...(request.modelPreference
27
+ ? { modelPreference: request.modelPreference }
28
+ : {}),
29
+ ...(request.modelPolicy ? { modelPolicy: request.modelPolicy } : {}),
30
+ });
31
+ if (hasSpecialResponseFormat(modelStep, invocation.format))
32
+ return undefined;
33
+ const { profile } = invocation;
34
+ return {
35
+ profileId: profile.id,
36
+ providerId: profile.providerId,
37
+ provider: profile.provider,
38
+ model: profile.model,
39
+ contextWindowTokens: profile.contextWindowTokens,
40
+ capabilities: profile.capabilities,
41
+ options: profile.options,
42
+ generation: profile.generation,
43
+ context: profile.context,
44
+ think: invocation.think,
45
+ instructions: invocation.instructions ?? [],
46
+ timeoutMs: resolveModelStepTimeout({
47
+ modelStep,
48
+ fallbackTimeoutMs: step.timeoutMs,
49
+ ...(request.modelPreference
50
+ ? { modelPreference: request.modelPreference }
51
+ : {}),
52
+ ...(request.modelPolicy ? { modelPolicy: request.modelPolicy } : {}),
53
+ }).timeoutMs,
54
+ };
55
+ }
56
+ function hasSpecialResponseFormat(modelStep, format) {
57
+ if (modelStep !== EXECUTION_AGENT_RESPONSE_MODEL_STEP)
58
+ return false;
59
+ if (format === undefined)
60
+ return false;
61
+ if (format && typeof format === "object" && "type" in format)
62
+ return format.type !== "text";
63
+ return true;
64
+ }
@@ -0,0 +1,7 @@
1
+ import type { ExecutionAgentDecisionContractOptions, ExecutionAgentDecisionValidationIssue } from "./contracts.js";
2
+ import type { MemoryCandidate } from "../../long-term-memory/contracts.js";
3
+ /** A short-answer option, not a conversion from characters to model tokens. */
4
+ export declare const EXECUTION_AGENT_DIRECT_RESPONSE_MAX_LENGTH = 1024;
5
+ export declare function directResponseVariants(maxLength: number | undefined, presentation: Record<string, unknown>, memoryAuthoring?: boolean): Record<string, unknown>[];
6
+ export declare function parseDirectResponse(record: Record<string, unknown>, maxLength: number | undefined, issues: ExecutionAgentDecisionValidationIssue[]): string | undefined;
7
+ export declare function parseDirectResponseMemoryCandidates(record: Record<string, unknown>, authoring: ExecutionAgentDecisionContractOptions["directResponseMemoryAuthoring"]): readonly MemoryCandidate[] | undefined;
@@ -0,0 +1,56 @@
1
+ import { conversationMemoryCandidatesSchema, parseConversationMemoryCandidates, } from "../../long-term-memory/conversation-authoring/contract.js";
2
+ import { issue } from "./decision-validation.js";
3
+ /** A short-answer option, not a conversion from characters to model tokens. */
4
+ export const EXECUTION_AGENT_DIRECT_RESPONSE_MAX_LENGTH = 1_024;
5
+ export function directResponseVariants(maxLength, presentation, memoryAuthoring = false) {
6
+ if (!isDirectResponseLimit(maxLength))
7
+ return [];
8
+ return [
9
+ {
10
+ type: "object",
11
+ additionalProperties: false,
12
+ properties: {
13
+ action: { type: "string", enum: ["respond"] },
14
+ response: { type: "string", minLength: 1, maxLength },
15
+ ...(memoryAuthoring
16
+ ? { memoryCandidates: conversationMemoryCandidatesSchema }
17
+ : {}),
18
+ ...presentation,
19
+ },
20
+ required: [
21
+ "action", "response",
22
+ ...(memoryAuthoring ? ["memoryCandidates"] : []),
23
+ ...Object.keys(presentation),
24
+ ],
25
+ },
26
+ ];
27
+ }
28
+ export function parseDirectResponse(record, maxLength, issues) {
29
+ if (!Object.hasOwn(record, "response"))
30
+ return undefined;
31
+ if (!isDirectResponseLimit(maxLength)) {
32
+ issues.push(issue("execution_agent_direct_response_unavailable", "decision.response", "This request requires the separate response authoring step."));
33
+ return undefined;
34
+ }
35
+ const response = record.response;
36
+ if (typeof response !== "string" || response.trim().length === 0) {
37
+ issues.push(issue("execution_agent_direct_response_invalid", "decision.response", "A direct response must contain the complete non-empty answer."));
38
+ return undefined;
39
+ }
40
+ if (response.length > maxLength) {
41
+ issues.push(issue("execution_agent_direct_response_too_long", "decision.response", `A direct response must fit ${maxLength} characters. Choose respond without response for a longer complete answer; do not shorten or truncate it.`));
42
+ return undefined;
43
+ }
44
+ return response;
45
+ }
46
+ export function parseDirectResponseMemoryCandidates(record, authoring) {
47
+ if (!authoring)
48
+ return undefined;
49
+ return parseConversationMemoryCandidates(record.memoryCandidates, authoring.context);
50
+ }
51
+ function isDirectResponseLimit(value) {
52
+ return (value !== undefined &&
53
+ Number.isInteger(value) &&
54
+ value > 0 &&
55
+ value <= EXECUTION_AGENT_DIRECT_RESPONSE_MAX_LENGTH);
56
+ }
@@ -0,0 +1,9 @@
1
+ import type { RoleCallFrame, RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
2
+ import type { RequestExecutionScope } from "../../request/execution-scope.js";
3
+ import type { ExecutionMemoryProjection } from "../../long-term-memory/initial-context.js";
4
+ /** Request-local offer only; neither prompt classification nor permission to omit required work. */
5
+ export declare function resolveDirectResponseOffer(request: RequestExecutionScope, head: RoleCallLedgerHead, call: RoleCallFrame): Readonly<{
6
+ reason: string;
7
+ maxLength?: number;
8
+ }>;
9
+ export declare function canAuthorDirectResponseMemory(maxLength: number | undefined, memory: ExecutionMemoryProjection | undefined): memory is ExecutionMemoryProjection;
@@ -0,0 +1,30 @@
1
+ import { EXECUTION_AGENT_DIRECT_RESPONSE_MAX_LENGTH } from "./direct-response-contract.js";
2
+ import { hasCompatibleDirectResponseConfiguration } from "./direct-response-configuration.js";
3
+ /** Request-local offer only; neither prompt classification nor permission to omit required work. */
4
+ export function resolveDirectResponseOffer(request, head, call) {
5
+ if (request.automationOutputContract)
6
+ return { reason: "automation_output_contract" };
7
+ if (request.scheduledExecution)
8
+ return { reason: "scheduled_execution" };
9
+ if (request.sessionKind === "spark")
10
+ return { reason: "spark_session" };
11
+ if (head.state.capabilityExecutions.length > 0)
12
+ return { reason: "capability_work" };
13
+ if (head.state.calls.length !== 1)
14
+ return { reason: "delegated_work" };
15
+ if (head.state.results.length > 0)
16
+ return { reason: "subordinate_results" };
17
+ if (call.adoptedWorkPlan)
18
+ return { reason: "work_plan" };
19
+ if (!hasCompatibleDirectResponseConfiguration(request))
20
+ return { reason: "response_configuration" };
21
+ return {
22
+ reason: "eligible",
23
+ maxLength: Math.min(EXECUTION_AGENT_DIRECT_RESPONSE_MAX_LENGTH, head.policy.limits.maxResponseChars),
24
+ };
25
+ }
26
+ export function canAuthorDirectResponseMemory(maxLength, memory) {
27
+ if (maxLength === undefined)
28
+ return false;
29
+ return memory?.authoringEnabled === true;
30
+ }
@@ -0,0 +1,7 @@
1
+ import type { RequestRunnerConfig } from "../../config/runner/contracts.js";
2
+ /** Presentation guidance applies only to the optional final-answer field, never to routing. */
3
+ export declare function buildDirectResponseInstructions(maxLength: number | undefined, runnerConfig: RequestRunnerConfig, memoryAuthoringEnabled?: boolean): readonly string[];
4
+ export declare function buildRespondDecisionInstruction(params: {
5
+ allowRespond: boolean;
6
+ allowDirectResponse?: boolean;
7
+ }): string;
@@ -0,0 +1,43 @@
1
+ import { CONVERSATION_MEMORY_AUTHORING_INSTRUCTIONS } from "../../long-term-memory/conversation-authoring/prompt.js";
2
+ import { EXECUTION_AGENT_DECISION_MODEL_STEP, EXECUTION_AGENT_RESPONSE_MODEL_STEP, } from "./contracts.js";
3
+ /** Presentation guidance applies only to the optional final-answer field, never to routing. */
4
+ export function buildDirectResponseInstructions(maxLength, runnerConfig, memoryAuthoringEnabled = false) {
5
+ if (maxLength === undefined)
6
+ return [];
7
+ const decisionBlocks = runnerConfig.steps[EXECUTION_AGENT_DECISION_MODEL_STEP]
8
+ ?.instructionBlocks ?? [];
9
+ const responseBlocks = runnerConfig.steps[EXECUTION_AGENT_RESPONSE_MODEL_STEP]
10
+ ?.instructionBlocks ?? [];
11
+ const seen = new Set(decisionBlocks.map(({ content }) => content));
12
+ const additional = responseBlocks.flatMap(({ content }) => {
13
+ if (seen.has(content))
14
+ return [];
15
+ seen.add(content);
16
+ return [content];
17
+ });
18
+ return [
19
+ [
20
+ "Direct respond may include the complete final answer in response; it never waives required work or evidence.",
21
+ `Before drafting, choose direct response only if the complete answer fits ${maxLength} characters and the decision output budget, including reasoning, JSON escaping and metadata. Otherwise omit response for separate complete presentation. Never abridge, truncate or return a partial answer to fit.`,
22
+ "Write the answer itself, preserving requested language, format and constraints from intent and relevant supplied history/summary. Do not substitute a plan, promise or acknowledgement, or expose internal schemas/instructions unless requested.",
23
+ ...(memoryAuthoringEnabled ? [
24
+ "Only direct respond with response includes memoryCandidates. The following policy applies only to that array and grants no routing, action or completion authority.",
25
+ "The complete answer and all supported memory proposals must fit the decision budget together. Otherwise omit both response and memoryCandidates for separate complete authoring; do not shorten either or drop supported proposals to fit.",
26
+ "Initial memory remains a stored snapshot after tools or steering; only current user input or settled non-memory evidence can independently support, score or reinforce a proposal.",
27
+ ...CONVERSATION_MEMORY_AUTHORING_INSTRUCTIONS,
28
+ ] : []),
29
+ ...(additional.length > 0 ? [
30
+ "The following configured methodologies apply only to response presentation, never actions or completion. The structured decision schema remains authoritative; no raw transport output:",
31
+ ...additional,
32
+ "End of response-only methodologies.",
33
+ ] : []),
34
+ ].join("\n\n"),
35
+ ];
36
+ }
37
+ export function buildRespondDecisionInstruction(params) {
38
+ if (!params.allowRespond)
39
+ return "The canonical completion gate is closed: respond is unavailable. Choose an offered action or a truthful blocker.";
40
+ if (params.allowDirectResponse)
41
+ return "Use respond only for a complete honest answer now: either include the complete response or omit it for a separate presentation-only activation of this agent. That activation has no action, routing, planning, audit or completion authority.";
42
+ return "Use respond only for a complete honest answer now. Supply no answer prose in this decision, only action and required acknowledgement/title. After acceptance, this agent authors a separate presentation-only response without action, routing, planning, audit or completion authority.";
43
+ }
@@ -1,3 +1,4 @@
1
+ import { directResponseVariants } from "./direct-response-contract.js";
1
2
  import { createMemoryRecallDecisionSchema } from "../memory-recall-decision.js";
2
3
  import { createExecutionWorkPlanDecisionSchema } from "./work-plan-schema.js";
3
4
  import { isToolCatalogGroupId } from "../../../capabilities/tool-types.js";
@@ -42,6 +43,7 @@ export function createExecutionAgentDecisionFormat(options = {}) {
42
43
  action: literal("respond"),
43
44
  ...presentation,
44
45
  }),
46
+ ...directResponseVariants(options.directResponseMaxLength, presentation, options.directResponseMemoryAuthoring !== undefined),
45
47
  ]
46
48
  : []),
47
49
  exactObject({
@@ -1,5 +1,6 @@
1
1
  import type { ChatMessage, ModelGatewayJsonSchemaFormat } from "../../../model-gateway/types.js";
2
2
  import type { RequestContextProjection } from "../../context/request-context-contracts.js";
3
+ import type { ExecutionMemoryProjection } from "../../long-term-memory/initial-context.js";
3
4
  import type { RoleCallFrame, RoleCallLedgerHead } from "../../orchestration/role-calls/index.js";
4
5
  import { type CapabilityCatalogGroup, type CapabilityDescriptor } from "../../orchestration/capability-adapters/index.js";
5
6
  import { type RequestExecutionScope } from "../../request/execution-scope.js";
@@ -25,6 +26,7 @@ type BuildExecutionAgentInputOptions = Readonly<{
25
26
  allowPlanner: boolean;
26
27
  allowAuditor: boolean;
27
28
  memoryRecallMessage?: ChatMessage;
29
+ memoryContext?: ExecutionMemoryProjection;
28
30
  }>;
29
31
  export declare function buildExecutionAgentInput(request: RequestExecutionScope, options: BuildExecutionAgentInputOptions): ExecutionAgentInput;
30
32
  export {};
@@ -1,8 +1,13 @@
1
+ import { projectAvailableSkillsInstructions } from "../../knowledge-skills/available-skills-projection.js";
1
2
  import { buildRuntimeFilesystemScopeMessage, canEstablishRuntimeWorkingDirectory, } from "../../context/runtime-filesystem-scope.js";
3
+ import { canAuthorDirectResponseMemory, resolveDirectResponseOffer } from "./direct-response-policy.js";
4
+ import { buildDirectResponseInstructions } from "./direct-response-prompt.js";
5
+ import { traceDebug } from "../../observability/debug-logger.js";
2
6
  import { buildSparkConversationInstructions } from "../../context/spark-conversation-policy.js";
3
7
  import { projectRequestContext } from "../../context/request-context.js";
4
8
  import { projectRootSessionMemory } from "../../context/session-memory/root-projection.js";
5
9
  import { buildConversationMemoryAvailabilityInstructions } from "../../long-term-memory/conversation-authoring/prompt.js";
10
+ import { buildConversationMemoryAuthoringPlainTextMessage } from "../../long-term-memory/conversation-authoring/plain-text-context.js";
6
11
  import { canOfferMemoryRecall } from "../../long-term-memory/recall-policy.js";
7
12
  import { projectMemoryRecallContinuations } from "../../long-term-memory/recall-continuation.js";
8
13
  import { buildRequestTemporalContextMessage } from "../../context/request-temporal-context.js";
@@ -11,6 +16,7 @@ import { buildImmediateOperationSupervisionEvidenceMessage } from "../../context
11
16
  import { resolveModelContextBudget } from "../../model/model-context-budget.js";
12
17
  import { projectCapabilityCatalogGroups, projectCapabilityScope, } from "../../orchestration/capability-adapters/index.js";
13
18
  import { resolveRequestWorkerCapabilities, } from "../../request/execution-scope.js";
19
+ import { resolveRequestCapabilityBriefEntries } from "../../request/capability-brief.js";
14
20
  import { appendRequestSteeringContext } from "../../request/request-steering-context.js";
15
21
  import { EXECUTION_AGENT_ROOT_AUDIT_CRITERION_ID, projectAuditorInputState, } from "../auditor-decision/index.js";
16
22
  import { EXECUTION_AGENT_CAPABILITY_BATCH_COUNT_MAX, EXECUTION_AGENT_DECISION_MODEL_STEP, } from "./contracts.js";
@@ -21,6 +27,7 @@ import { buildExecutionAgentInstructions } from "./prompt.js";
21
27
  import { buildExecutionCapabilityCatalogMessage, buildExecutionCapabilityGroupCatalogMessage, buildExecutionContinuationMessages, buildExecutionDecisionStateMessage, } from "./state-context.js";
22
28
  export function buildExecutionAgentInput(request, options) {
23
29
  assertCanonicalSource(request, options.head, options.call);
30
+ const directResponse = resolveDirectResponseOffer(request, options.head, options.call);
24
31
  const allCapabilities = resolveRequestWorkerCapabilities(request).provider.getDescriptors();
25
32
  const capabilityCatalogGroups = projectCapabilityCatalogGroups(allCapabilities);
26
33
  const activeCapabilityCatalogGroupIds = options.call.workerCapabilityScope?.catalogGroupIds ?? null;
@@ -52,8 +59,16 @@ export function buildExecutionAgentInput(request, options) {
52
59
  const memoryRecallMessage = request.longTermMemory?.enabled
53
60
  ? options.memoryRecallMessage
54
61
  : undefined;
62
+ const memoryContext = request.longTermMemory?.enabled ? options.memoryContext : undefined;
63
+ const automaticMemoryMessage = memoryRecallMessage ? undefined : memoryContext?.memoryMessage;
55
64
  const workPlan = projectExecutionWorkPlanOptions(options.head, options.call);
65
+ const directMemoryAuthoring = canAuthorDirectResponseMemory(directResponse.maxLength, memoryContext)
66
+ ? { ...(memoryContext.authoringContext ? { context: memoryContext.authoringContext } : {}) }
67
+ : undefined;
56
68
  const contract = Object.freeze({
69
+ ...(directResponse.maxLength !== undefined
70
+ ? { directResponseMaxLength: directResponse.maxLength } : {}),
71
+ ...(directMemoryAuthoring ? { directResponseMemoryAuthoring: directMemoryAuthoring } : {}),
57
72
  ...(workPlan ? { workPlan } : {}),
58
73
  allowMemoryRecall: canOfferMemoryRecall({
59
74
  enabled: request.longTermMemory?.enabled === true,
@@ -84,6 +99,7 @@ export function buildExecutionAgentInput(request, options) {
84
99
  });
85
100
  const instructions = [
86
101
  buildExecutionAgentInstructions({
102
+ allowDirectResponse: directResponse.maxLength !== undefined,
87
103
  allowWorkPlan: workPlan !== undefined,
88
104
  allowMemoryRecall: contract.allowMemoryRecall,
89
105
  hasMemoryRecallContext: memoryRecallMessage !== undefined,
@@ -98,6 +114,7 @@ export function buildExecutionAgentInput(request, options) {
98
114
  includeTitle: options.includeTitle,
99
115
  includeWorkingDirectory: options.call.workingDirectory === undefined,
100
116
  }),
117
+ ...buildDirectResponseInstructions(directResponse.maxLength, request.runnerConfig, directMemoryAuthoring !== undefined),
101
118
  ...buildConversationMemoryAvailabilityInstructions(request.longTermMemory?.enabled === true),
102
119
  ...buildSparkConversationInstructions(request.sessionKind),
103
120
  ].join("\n");
@@ -115,6 +132,9 @@ export function buildExecutionAgentInput(request, options) {
115
132
  const referenceMessages = [
116
133
  ...(filesystemMessage ? [filesystemMessage] : []),
117
134
  ...scheduledExecution.referenceMessages,
135
+ ...(automaticMemoryMessage ? [automaticMemoryMessage] : []),
136
+ ...(directMemoryAuthoring?.context
137
+ ? [buildConversationMemoryAuthoringPlainTextMessage(directMemoryAuthoring.context)] : []),
118
138
  ...(request.temporalContext
119
139
  ? [buildRequestTemporalContextMessage(request.temporalContext)]
120
140
  : []),
@@ -124,14 +144,18 @@ export function buildExecutionAgentInput(request, options) {
124
144
  ...(operationSupervisionEvidenceMessage
125
145
  ? [operationSupervisionEvidenceMessage]
126
146
  : []),
127
- buildExecutionCapabilityGroupCatalogMessage(capabilityCatalogGroups, allCapabilities),
147
+ buildExecutionCapabilityGroupCatalogMessage(knownGroupIds, resolveRequestCapabilityBriefEntries(resolveRequestWorkerCapabilities(request), capabilityCatalogGroups)),
128
148
  ...(capabilities.length > 0
129
149
  ? [buildExecutionCapabilityCatalogMessage(capabilities)]
130
150
  : []),
131
151
  ];
132
152
  const continuationMessages = buildExecutionContinuationMessages(options.head, options.call, projectMemoryRecallContinuations(memoryRecallMessage));
133
153
  const sessionMemory = projectRootSessionMemory(request);
134
- const context = projectRequestContext({
154
+ traceDebug("runtime.execution-agent", "direct_response.offer", {
155
+ requestId: request.requestId, reason: directResponse.reason,
156
+ maxLength: directResponse.maxLength ?? null,
157
+ });
158
+ const contextInput = {
135
159
  instructions: scheduledExecution.instructions,
136
160
  format,
137
161
  ...sessionMemory,
@@ -147,6 +171,15 @@ export function buildExecutionAgentInput(request, options) {
147
171
  callId: options.call.callId,
148
172
  },
149
173
  onEvent: request.onEvent,
174
+ };
175
+ const skills = remainingExecutions > 0
176
+ ? resolveRequestWorkerCapabilities(request).provider.getAvailableSkills?.() ?? []
177
+ : [];
178
+ const context = projectRequestContext({
179
+ ...contextInput,
180
+ instructions: projectAvailableSkillsInstructions({
181
+ skills, context: contextInput,
182
+ }),
150
183
  });
151
184
  return Object.freeze({
152
185
  context,
@@ -0,0 +1,4 @@
1
+ import type { ChatMessage } from "../../../model-gateway/types.js";
2
+ import type { ToolAvailabilityEntry } from "../../../capabilities/tool-types.js";
3
+ export declare const EXECUTION_CAPABILITY_GROUP_CATALOG_HEADER = "Tool groups:";
4
+ export declare function buildExecutionCapabilityGroupCatalogMessage(catalogGroupIds: readonly string[], entries?: readonly ToolAvailabilityEntry[]): ChatMessage;
@@ -0,0 +1,8 @@
1
+ import { buildPluginDiscoveryCatalogText, PLUGIN_DISCOVERY_CATALOG_HEADER, } from "../../context/capability-descriptions.js";
2
+ export const EXECUTION_CAPABILITY_GROUP_CATALOG_HEADER = PLUGIN_DISCOVERY_CATALOG_HEADER;
3
+ export function buildExecutionCapabilityGroupCatalogMessage(catalogGroupIds, entries = []) {
4
+ return Object.freeze({
5
+ role: "user",
6
+ content: buildPluginDiscoveryCatalogText(catalogGroupIds, entries),
7
+ });
8
+ }
@@ -7,6 +7,7 @@ export declare function buildExecutionAgentInstructions(params: {
7
7
  allowWorkPlan?: boolean;
8
8
  availableAuditCriterionCount: number;
9
9
  allowRespond: boolean;
10
+ allowDirectResponse?: boolean;
10
11
  allowMemoryRecall?: boolean;
11
12
  hasMemoryRecallContext?: boolean;
12
13
  includeAcknowledgement: boolean;