@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
@@ -0,0 +1,44 @@
1
+ import { PERSONAL_SKILL_LIMITS } from "../../knowledge-skills/personal-contracts.js";
2
+ import { isKnowledgeSkillId, KNOWLEDGE_SKILL_ID_MAX_LENGTH, KNOWLEDGE_SKILL_READ_MAX_ITEMS, } from "../../knowledge-skills/store.js";
3
+ export const KNOWLEDGE_SKILL_READ_REFERENCE_MAX_LENGTH = Math.max(KNOWLEDGE_SKILL_ID_MAX_LENGTH, PERSONAL_SKILL_LIMITS.name);
4
+ export function isKnowledgeSkillReadReference(value) {
5
+ if (typeof value !== "string")
6
+ return false;
7
+ if (value.length === 0 || value.length > KNOWLEDGE_SKILL_READ_REFERENCE_MAX_LENGTH)
8
+ return false;
9
+ return value.trim() === value;
10
+ }
11
+ function matchesSkillReadReference(skill, reference) {
12
+ if (skill.skillId === reference)
13
+ return true;
14
+ return skill.name === reference;
15
+ }
16
+ function exceedsSkillReadLimit(count) {
17
+ return count > KNOWLEDGE_SKILL_READ_MAX_ITEMS;
18
+ }
19
+ /** Resolve exact IDs first, then full names, against the same Store used for discovery. */
20
+ export function resolveKnowledgeSkillReadTargets(store, references) {
21
+ let catalog;
22
+ const skills = new Map();
23
+ for (const reference of references) {
24
+ const exactId = isKnowledgeSkillId(reference) ? store.read(reference) : undefined;
25
+ const matches = exactId
26
+ ? [exactId]
27
+ : (catalog ??= store.list()).filter(({ name }) => name === reference);
28
+ if (matches.length === 0)
29
+ return { ok: false, errorCode: "knowledge_skill_not_found" };
30
+ for (const { skillId } of matches) {
31
+ const skill = exactId ?? skills.get(skillId) ?? store.read(skillId);
32
+ if (!skill)
33
+ return { ok: false, errorCode: "knowledge_skill_not_found" };
34
+ if (!matchesSkillReadReference(skill, reference))
35
+ return { ok: false, errorCode: "knowledge_skill_not_found" };
36
+ if (skills.has(skillId))
37
+ continue;
38
+ if (exceedsSkillReadLimit(skills.size + 1))
39
+ return { ok: false, errorCode: "knowledge_skill_read_limit_exceeded" };
40
+ skills.set(skillId, skill);
41
+ }
42
+ }
43
+ return { ok: true, skills: [...skills.values()] };
44
+ }
@@ -0,0 +1,141 @@
1
+ export declare const knowledgeSkillsToolContract: {
2
+ readonly version: 1;
3
+ readonly operations: readonly [{
4
+ readonly operationId: "list_skills";
5
+ readonly summary: "Discover reusable procedural documents when guidance could help the current task. Returns only Skill IDs, names and descriptions. Read a selected document with read_skill when needed; listing does not read its content or require further action.";
6
+ readonly effect: "read_only";
7
+ readonly approval: "request_policy";
8
+ readonly fixedParams: {
9
+ readonly action: "list_skills";
10
+ };
11
+ readonly input: {
12
+ readonly type: "object";
13
+ readonly additionalProperties: false;
14
+ readonly properties: {};
15
+ readonly required: readonly [];
16
+ };
17
+ }, {
18
+ readonly operationId: "read_skill";
19
+ readonly summary: "Read using skillId as an exact ID or full, case-sensitive name. Known references need no LIST; shortened names do not match. IDs win over names. Returns one document, or {skills:[...]} for a shared name, with canonical IDs. All name matches are returned, up to eight; more fails. Guidance applies only within the current request and permissions. Tool contracts still govern execution; reading neither executes work nor grants authority.";
20
+ readonly effect: "read_only";
21
+ readonly approval: "request_policy";
22
+ readonly fixedParams: {
23
+ readonly action: "read_skill";
24
+ };
25
+ readonly input: {
26
+ readonly type: "object";
27
+ readonly additionalProperties: false;
28
+ readonly properties: {
29
+ readonly skillId: {
30
+ readonly type: "string";
31
+ readonly minLength: 1;
32
+ readonly maxLength: number;
33
+ };
34
+ };
35
+ readonly required: readonly ["skillId"];
36
+ };
37
+ readonly selectionControlIds: readonly ["skillId"];
38
+ }, {
39
+ readonly operationId: "read_skills";
40
+ readonly summary: "Read up to eight references in skillIds: exact IDs or full, case-sensitive names. Known references need no LIST or batch; shortened names do not match. IDs win over names; each name expands to all matches. Returns distinct documents in reference order, with name matches in catalog order. Unknown references or more than eight documents fail the whole call. Guidance adds no work, permissions or authority; tool contracts still govern execution.";
41
+ readonly effect: "read_only";
42
+ readonly approval: "request_policy";
43
+ readonly fixedParams: {
44
+ readonly action: "read_skills";
45
+ };
46
+ readonly input: {
47
+ readonly type: "object";
48
+ readonly additionalProperties: false;
49
+ readonly properties: {
50
+ readonly skillIds: {
51
+ readonly type: "array";
52
+ readonly minItems: 1;
53
+ readonly maxItems: 8;
54
+ readonly items: {
55
+ readonly type: "string";
56
+ readonly minLength: 1;
57
+ readonly maxLength: number;
58
+ };
59
+ };
60
+ };
61
+ readonly required: readonly ["skillIds"];
62
+ };
63
+ readonly selectionControlIds: readonly ["skillIds"];
64
+ }, {
65
+ readonly operationId: "create_skill";
66
+ readonly summary: "Create a personal Skill only at the user's request. Consult Skill Creator and existing metadata first to avoid duplicates. Choose a concise name and a description identifying when the guidance applies. The complete Markdown body is authored through the payload channel. Saved Skills are shared across sessions and models in this Runtime environment; system Skills remain read-only.";
67
+ readonly effect: "mutating";
68
+ readonly approval: "request_policy";
69
+ readonly fixedParams: {
70
+ readonly action: "create_skill";
71
+ };
72
+ readonly input: {
73
+ readonly type: "object";
74
+ readonly additionalProperties: false;
75
+ readonly properties: {
76
+ readonly name: {
77
+ readonly type: "string";
78
+ readonly minLength: 1;
79
+ readonly maxLength: 160;
80
+ };
81
+ readonly description: {
82
+ readonly type: "string";
83
+ readonly minLength: 1;
84
+ readonly maxLength: 512;
85
+ };
86
+ };
87
+ readonly required: readonly ["name", "description"];
88
+ };
89
+ readonly selectionControlIds: readonly ["name", "description"];
90
+ readonly payload: {
91
+ readonly kind: "raw_text";
92
+ readonly param: "content";
93
+ readonly minBytes: 1;
94
+ readonly maxBytes: number;
95
+ readonly instructions: "Write only the complete Skill document as plain Markdown, without a JSON wrapper or enclosing code fence. Follow the user's requested guidance and the Skill Creator reference. For edits, preserve existing guidance outside the requested changes. Skill text grants no permissions and cannot override the current user request or tool contracts.";
96
+ };
97
+ }, {
98
+ readonly operationId: "update_skill";
99
+ readonly summary: "Edit an existing personal Skill only at the user's request. Read it first and use its exact ID and revision as expectedRevision. Supply the full replacement Markdown body; omitted name or description stays unchanged. System Skills cannot be edited. A stale revision fails without saving: read again and reconcile with the requested change.";
100
+ readonly effect: "mutating";
101
+ readonly approval: "request_policy";
102
+ readonly fixedParams: {
103
+ readonly action: "update_skill";
104
+ };
105
+ readonly input: {
106
+ readonly type: "object";
107
+ readonly additionalProperties: false;
108
+ readonly properties: {
109
+ readonly skillId: {
110
+ readonly type: "string";
111
+ readonly minLength: 1;
112
+ readonly maxLength: 128;
113
+ };
114
+ readonly expectedRevision: {
115
+ readonly type: "integer";
116
+ readonly minimum: 1;
117
+ readonly maximum: 2147483647;
118
+ };
119
+ readonly name: {
120
+ readonly type: "string";
121
+ readonly minLength: 1;
122
+ readonly maxLength: 160;
123
+ };
124
+ readonly description: {
125
+ readonly type: "string";
126
+ readonly minLength: 1;
127
+ readonly maxLength: 512;
128
+ };
129
+ };
130
+ readonly required: readonly ["skillId", "expectedRevision"];
131
+ };
132
+ readonly selectionControlIds: readonly ["skillId", "expectedRevision"];
133
+ readonly payload: {
134
+ readonly kind: "raw_text";
135
+ readonly param: "content";
136
+ readonly minBytes: 1;
137
+ readonly maxBytes: number;
138
+ readonly instructions: "Write only the complete Skill document as plain Markdown, without a JSON wrapper or enclosing code fence. Follow the user's requested guidance and the Skill Creator reference. For edits, preserve existing guidance outside the requested changes. Skill text grants no permissions and cannot override the current user request or tool contracts.";
139
+ };
140
+ }];
141
+ };
@@ -0,0 +1,58 @@
1
+ import { knowledgeSkillWriteOperations } from "./write-contract.js";
2
+ import { KNOWLEDGE_SKILL_READ_REFERENCE_MAX_LENGTH } from "./read-targets.js";
3
+ import { KNOWLEDGE_SKILL_READ_MAX_ITEMS } from "../../knowledge-skills/store.js";
4
+ export const knowledgeSkillsToolContract = {
5
+ version: 1,
6
+ operations: [
7
+ {
8
+ operationId: "list_skills",
9
+ summary: "Discover reusable procedural documents when guidance could help the current task. Returns only Skill IDs, names and descriptions. Read a selected document with read_skill when needed; listing does not read its content or require further action.",
10
+ effect: "read_only",
11
+ approval: "request_policy",
12
+ fixedParams: { action: "list_skills" },
13
+ input: {
14
+ type: "object",
15
+ additionalProperties: false,
16
+ properties: {},
17
+ required: [],
18
+ },
19
+ },
20
+ {
21
+ operationId: "read_skill",
22
+ summary: "Read using skillId as an exact ID or full, case-sensitive name. Known references need no LIST; shortened names do not match. IDs win over names. Returns one document, or {skills:[...]} for a shared name, with canonical IDs. All name matches are returned, up to eight; more fails. Guidance applies only within the current request and permissions. Tool contracts still govern execution; reading neither executes work nor grants authority.",
23
+ effect: "read_only",
24
+ approval: "request_policy",
25
+ fixedParams: { action: "read_skill" },
26
+ input: {
27
+ type: "object",
28
+ additionalProperties: false,
29
+ properties: {
30
+ skillId: {
31
+ type: "string",
32
+ minLength: 1,
33
+ maxLength: KNOWLEDGE_SKILL_READ_REFERENCE_MAX_LENGTH,
34
+ },
35
+ },
36
+ required: ["skillId"],
37
+ },
38
+ selectionControlIds: ["skillId"],
39
+ },
40
+ {
41
+ operationId: "read_skills",
42
+ summary: "Read up to eight references in skillIds: exact IDs or full, case-sensitive names. Known references need no LIST or batch; shortened names do not match. IDs win over names; each name expands to all matches. Returns distinct documents in reference order, with name matches in catalog order. Unknown references or more than eight documents fail the whole call. Guidance adds no work, permissions or authority; tool contracts still govern execution.",
43
+ effect: "read_only",
44
+ approval: "request_policy",
45
+ fixedParams: { action: "read_skills" },
46
+ input: {
47
+ type: "object", additionalProperties: false,
48
+ properties: {
49
+ skillIds: { type: "array", minItems: 1, maxItems: KNOWLEDGE_SKILL_READ_MAX_ITEMS,
50
+ items: { type: "string", minLength: 1, maxLength: KNOWLEDGE_SKILL_READ_REFERENCE_MAX_LENGTH } },
51
+ },
52
+ required: ["skillIds"],
53
+ },
54
+ selectionControlIds: ["skillIds"],
55
+ },
56
+ ...knowledgeSkillWriteOperations,
57
+ ],
58
+ };
@@ -0,0 +1,4 @@
1
+ import type { ToolModuleDeclaration } from "../../../capabilities/tool-types.js";
2
+ import { type KnowledgeSkillStore } from "../../knowledge-skills/store.js";
3
+ /** Core-owned tool; its results use the ordinary capability and context pipeline. */
4
+ export declare function createKnowledgeSkillsToolModule(store?: KnowledgeSkillStore): ToolModuleDeclaration;
@@ -0,0 +1,78 @@
1
+ import { canWriteKnowledgeSkills, KnowledgeSkillError } from "../../knowledge-skills/personal-contracts.js";
2
+ import { executeKnowledgeSkillWrite } from "./write-operations.js";
3
+ import { executeKnowledgeSkillsReadMany } from "./read-many.js";
4
+ import { isKnowledgeSkillReadReference, resolveKnowledgeSkillReadTargets } from "./read-targets.js";
5
+ import { knowledgeSkillDocumentOutput, knowledgeSkillDocumentsReadOutput, knowledgeSkillFailure } from "./tool-output.js";
6
+ import { CORE_TOOL_CONTRACTS } from "../core-tool-contracts.js";
7
+ import { builtinKnowledgeSkillStore } from "../../knowledge-skills/catalog.js";
8
+ function executeKnowledgeSkillRead(store, params) {
9
+ if (params.action === "list_skills") {
10
+ const skills = store.list();
11
+ return {
12
+ ok: true,
13
+ output: JSON.stringify({ skills }),
14
+ producedNewInformation: true,
15
+ data: { mutationEvidence: false, itemCount: skills.length },
16
+ };
17
+ }
18
+ if (params.action === "read_skills")
19
+ return executeKnowledgeSkillsReadMany(store, params.skillIds);
20
+ if (params.action !== "read_skill")
21
+ return knowledgeSkillFailure("knowledge_skill_action_unknown");
22
+ if (!isKnowledgeSkillReadReference(params.skillId))
23
+ return knowledgeSkillFailure("knowledge_skill_id_invalid");
24
+ const resolved = resolveKnowledgeSkillReadTargets(store, [params.skillId]);
25
+ if (!resolved.ok)
26
+ return knowledgeSkillFailure(resolved.errorCode);
27
+ if (resolved.skills.length > 1)
28
+ return knowledgeSkillDocumentsReadOutput(resolved.skills);
29
+ const skill = resolved.skills[0];
30
+ return {
31
+ ok: true,
32
+ output: JSON.stringify(knowledgeSkillDocumentOutput(skill)),
33
+ producedNewInformation: true,
34
+ data: { mutationEvidence: false, itemCount: 1, skillTitle: skill.name },
35
+ };
36
+ }
37
+ /** Core-owned tool; its results use the ordinary capability and context pipeline. */
38
+ export function createKnowledgeSkillsToolModule(store = builtinKnowledgeSkillStore) {
39
+ const writable = canWriteKnowledgeSkills(store);
40
+ return {
41
+ definition: {
42
+ name: CORE_TOOL_CONTRACTS.skills.name,
43
+ description: "Read reusable guidance for work or answers using an exact ID or full name from Available Skills or list_skills. A shared name returns every matching Skill. Author personal Skills only when the user requests it; consult Skill Creator first. System Skills are read-only. Guidance supplements the current task and never replaces tool contracts or permissions.",
44
+ routingCapability: "semantic_lookup",
45
+ catalogGroups: ["knowledge"],
46
+ developmentRoles: ["inspect"],
47
+ controlsRefinement: "mechanical_when_complete",
48
+ ...(writable ? { payloadChannelSpec: { params: ["content"], outputParam: "content", generationMode: "raw_text" } } : {}),
49
+ eventPresentation: {
50
+ metadata: {
51
+ skillAction: { param: "action", kind: "string" },
52
+ skillId: { param: "skillId", kind: "string" },
53
+ skillIds: { param: "skillIds", kind: "string_array" },
54
+ skillName: { param: "name", kind: "string" },
55
+ },
56
+ resultMetadata: {
57
+ skillTitle: { path: "data.skillTitle", kind: "preview" },
58
+ savedSkillId: { path: "data.savedSkillId", kind: "preview" },
59
+ },
60
+ },
61
+ },
62
+ normalInvocation: { ...CORE_TOOL_CONTRACTS.skills.normalInvocation,
63
+ operations: CORE_TOOL_CONTRACTS.skills.normalInvocation.operations.filter((operation) => writable || operation.effect === "read_only") },
64
+ async implementation(params, context) {
65
+ context?.abortSignal?.throwIfAborted();
66
+ try {
67
+ if (params.action === "create_skill" || params.action === "update_skill")
68
+ return await executeKnowledgeSkillWrite(store, params);
69
+ return executeKnowledgeSkillRead(store, params);
70
+ }
71
+ catch (error) {
72
+ if (error instanceof KnowledgeSkillError)
73
+ return knowledgeSkillFailure(error.code);
74
+ throw error;
75
+ }
76
+ },
77
+ };
78
+ }
@@ -0,0 +1,12 @@
1
+ import type { ToolImplementationOutput } from "../../../capabilities/tool-types.js";
2
+ import type { KnowledgeSkillDocument } from "../../knowledge-skills/store.js";
3
+ export declare function knowledgeSkillFailure(errorCode: string): ToolImplementationOutput;
4
+ export declare function knowledgeSkillDocumentOutput(skill: KnowledgeSkillDocument): {
5
+ revision?: number | undefined;
6
+ source?: "system" | "personal" | undefined;
7
+ description?: string | undefined;
8
+ skillId: string;
9
+ name: string;
10
+ content: string;
11
+ };
12
+ export declare function knowledgeSkillDocumentsReadOutput(skills: readonly KnowledgeSkillDocument[]): ToolImplementationOutput;
@@ -0,0 +1,21 @@
1
+ export function knowledgeSkillFailure(errorCode) {
2
+ return {
3
+ ok: false, output: errorCode, error: errorCode, errorCode,
4
+ producedNewInformation: false, data: { mutationEvidence: false },
5
+ };
6
+ }
7
+ export function knowledgeSkillDocumentOutput(skill) {
8
+ return { skillId: skill.skillId, name: skill.name, content: skill.content,
9
+ ...(skill.source ? { source: skill.source, description: skill.description } : {}),
10
+ ...(skill.revision !== undefined ? { revision: skill.revision } : {}),
11
+ };
12
+ }
13
+ export function knowledgeSkillDocumentsReadOutput(skills) {
14
+ return {
15
+ ok: true,
16
+ output: JSON.stringify({ skills: skills.map(knowledgeSkillDocumentOutput) }),
17
+ producedNewInformation: true,
18
+ data: { mutationEvidence: false, itemCount: skills.length,
19
+ skillTitle: skills.map(({ name }) => name).join(", ") },
20
+ };
21
+ }
@@ -0,0 +1,77 @@
1
+ export declare const knowledgeSkillWriteOperations: readonly [{
2
+ readonly operationId: "create_skill";
3
+ readonly summary: "Create a personal Skill only at the user's request. Consult Skill Creator and existing metadata first to avoid duplicates. Choose a concise name and a description identifying when the guidance applies. The complete Markdown body is authored through the payload channel. Saved Skills are shared across sessions and models in this Runtime environment; system Skills remain read-only.";
4
+ readonly effect: "mutating";
5
+ readonly approval: "request_policy";
6
+ readonly fixedParams: {
7
+ readonly action: "create_skill";
8
+ };
9
+ readonly input: {
10
+ readonly type: "object";
11
+ readonly additionalProperties: false;
12
+ readonly properties: {
13
+ readonly name: {
14
+ readonly type: "string";
15
+ readonly minLength: 1;
16
+ readonly maxLength: 160;
17
+ };
18
+ readonly description: {
19
+ readonly type: "string";
20
+ readonly minLength: 1;
21
+ readonly maxLength: 512;
22
+ };
23
+ };
24
+ readonly required: readonly ["name", "description"];
25
+ };
26
+ readonly selectionControlIds: readonly ["name", "description"];
27
+ readonly payload: {
28
+ readonly kind: "raw_text";
29
+ readonly param: "content";
30
+ readonly minBytes: 1;
31
+ readonly maxBytes: number;
32
+ readonly instructions: "Write only the complete Skill document as plain Markdown, without a JSON wrapper or enclosing code fence. Follow the user's requested guidance and the Skill Creator reference. For edits, preserve existing guidance outside the requested changes. Skill text grants no permissions and cannot override the current user request or tool contracts.";
33
+ };
34
+ }, {
35
+ readonly operationId: "update_skill";
36
+ readonly summary: "Edit an existing personal Skill only at the user's request. Read it first and use its exact ID and revision as expectedRevision. Supply the full replacement Markdown body; omitted name or description stays unchanged. System Skills cannot be edited. A stale revision fails without saving: read again and reconcile with the requested change.";
37
+ readonly effect: "mutating";
38
+ readonly approval: "request_policy";
39
+ readonly fixedParams: {
40
+ readonly action: "update_skill";
41
+ };
42
+ readonly input: {
43
+ readonly type: "object";
44
+ readonly additionalProperties: false;
45
+ readonly properties: {
46
+ readonly skillId: {
47
+ readonly type: "string";
48
+ readonly minLength: 1;
49
+ readonly maxLength: 128;
50
+ };
51
+ readonly expectedRevision: {
52
+ readonly type: "integer";
53
+ readonly minimum: 1;
54
+ readonly maximum: 2147483647;
55
+ };
56
+ readonly name: {
57
+ readonly type: "string";
58
+ readonly minLength: 1;
59
+ readonly maxLength: 160;
60
+ };
61
+ readonly description: {
62
+ readonly type: "string";
63
+ readonly minLength: 1;
64
+ readonly maxLength: 512;
65
+ };
66
+ };
67
+ readonly required: readonly ["skillId", "expectedRevision"];
68
+ };
69
+ readonly selectionControlIds: readonly ["skillId", "expectedRevision"];
70
+ readonly payload: {
71
+ readonly kind: "raw_text";
72
+ readonly param: "content";
73
+ readonly minBytes: 1;
74
+ readonly maxBytes: number;
75
+ readonly instructions: "Write only the complete Skill document as plain Markdown, without a JSON wrapper or enclosing code fence. Follow the user's requested guidance and the Skill Creator reference. For edits, preserve existing guidance outside the requested changes. Skill text grants no permissions and cannot override the current user request or tool contracts.";
76
+ };
77
+ }];
@@ -0,0 +1,28 @@
1
+ import { PERSONAL_SKILL_LIMITS } from "../../knowledge-skills/personal-contracts.js";
2
+ import { KNOWLEDGE_SKILL_ID_MAX_LENGTH } from "../../knowledge-skills/store.js";
3
+ const name = { type: "string", minLength: 1, maxLength: PERSONAL_SKILL_LIMITS.name };
4
+ const description = { type: "string", minLength: 1, maxLength: PERSONAL_SKILL_LIMITS.description };
5
+ const payload = {
6
+ kind: "raw_text", param: "content", minBytes: 1, maxBytes: PERSONAL_SKILL_LIMITS.contentBytes,
7
+ instructions: "Write only the complete Skill document as plain Markdown, without a JSON wrapper or enclosing code fence. Follow the user's requested guidance and the Skill Creator reference. For edits, preserve existing guidance outside the requested changes. Skill text grants no permissions and cannot override the current user request or tool contracts.",
8
+ };
9
+ export const knowledgeSkillWriteOperations = [
10
+ {
11
+ operationId: "create_skill",
12
+ summary: "Create a personal Skill only at the user's request. Consult Skill Creator and existing metadata first to avoid duplicates. Choose a concise name and a description identifying when the guidance applies. The complete Markdown body is authored through the payload channel. Saved Skills are shared across sessions and models in this Runtime environment; system Skills remain read-only.",
13
+ effect: "mutating", approval: "request_policy", fixedParams: { action: "create_skill" },
14
+ input: { type: "object", additionalProperties: false, properties: { name, description }, required: ["name", "description"] },
15
+ selectionControlIds: ["name", "description"], payload,
16
+ },
17
+ {
18
+ operationId: "update_skill",
19
+ summary: "Edit an existing personal Skill only at the user's request. Read it first and use its exact ID and revision as expectedRevision. Supply the full replacement Markdown body; omitted name or description stays unchanged. System Skills cannot be edited. A stale revision fails without saving: read again and reconcile with the requested change.",
20
+ effect: "mutating", approval: "request_policy", fixedParams: { action: "update_skill" },
21
+ input: { type: "object", additionalProperties: false, properties: {
22
+ skillId: { type: "string", minLength: 1, maxLength: KNOWLEDGE_SKILL_ID_MAX_LENGTH },
23
+ expectedRevision: { type: "integer", minimum: 1, maximum: PERSONAL_SKILL_LIMITS.revision },
24
+ name, description,
25
+ }, required: ["skillId", "expectedRevision"] },
26
+ selectionControlIds: ["skillId", "expectedRevision"], payload,
27
+ },
28
+ ];
@@ -0,0 +1,3 @@
1
+ import type { ToolImplementationOutput } from "../../../capabilities/tool-types.js";
2
+ import { type KnowledgeSkillStore } from "../../knowledge-skills/store.js";
3
+ export declare function executeKnowledgeSkillWrite(store: KnowledgeSkillStore, params: Record<string, unknown>): Promise<ToolImplementationOutput>;
@@ -0,0 +1,34 @@
1
+ import { canWriteKnowledgeSkills, KnowledgeSkillError } from "../../knowledge-skills/personal-contracts.js";
2
+ import { isPersonalSkillRevision } from "../../knowledge-skills/personal-documents.js";
3
+ import { isKnowledgeSkillId } from "../../knowledge-skills/store.js";
4
+ function requiredText(params, key) {
5
+ if (typeof params[key] !== "string")
6
+ throw new KnowledgeSkillError("knowledge_skill_" + key + "_invalid");
7
+ return params[key];
8
+ }
9
+ export async function executeKnowledgeSkillWrite(store, params) {
10
+ if (!canWriteKnowledgeSkills(store))
11
+ throw new KnowledgeSkillError("knowledge_skill_read_only");
12
+ const writable = store;
13
+ const content = requiredText(params, "content");
14
+ const skill = params.action === "create_skill"
15
+ ? await store.create({ name: requiredText(params, "name"), description: requiredText(params, "description"), content })
16
+ : await update();
17
+ const { skillId, name, description, source, revision } = skill;
18
+ return {
19
+ ok: true, output: JSON.stringify({ skillId, name, description, source, revision }),
20
+ producedNewInformation: true,
21
+ data: { mutationEvidence: true, skillTitle: name, savedSkillId: skillId },
22
+ };
23
+ async function update() {
24
+ if (!isKnowledgeSkillId(params.skillId))
25
+ throw new KnowledgeSkillError("knowledge_skill_id_invalid");
26
+ if (!isPersonalSkillRevision(params.expectedRevision))
27
+ throw new KnowledgeSkillError("knowledge_skill_revision_conflict");
28
+ return writable.update(params.skillId, params.expectedRevision, {
29
+ content,
30
+ ...(params.name !== undefined ? { name: requiredText(params, "name") } : {}),
31
+ ...(params.description !== undefined ? { description: requiredText(params, "description") } : {}),
32
+ });
33
+ }
34
+ }
@@ -1,7 +1,7 @@
1
+ import { CORE_TOOL_CONTRACTS } from "../core-tool-contracts.js";
1
2
  import { resolveModelSelection } from "../../model/model-selection.js";
2
3
  import { requireCreateCalendarTimeZone } from "./create-time-zone.js";
3
4
  import { requireAvailableScheduleModel } from "./model-validation.js";
4
- import { schedulingToolContract } from "./tool-contract.js";
5
5
  import { createSchedulerJobPage } from "./job-list-page.js";
6
6
  function requireText(value, field) {
7
7
  if (typeof value !== "string")
@@ -122,14 +122,14 @@ export function createSchedulingToolModule(service, config, ready) {
122
122
  }
123
123
  return {
124
124
  definition: {
125
- name: "schedules",
125
+ name: CORE_TOOL_CONTRACTS.scheduling.name,
126
126
  description: "Core local schedules for the current conversation: create, inspect, edit, pause, resume, cancel and run now. Scheduled requests run with FULL permissions using their saved model.",
127
127
  routingCapability: "semantic_mutation",
128
128
  catalogGroups: ["scheduling"],
129
129
  developmentRoles: ["auxiliary"],
130
130
  controlsRefinement: "mechanical_when_complete",
131
131
  },
132
- normalInvocation: schedulingToolContract,
132
+ normalInvocation: CORE_TOOL_CONTRACTS.scheduling.normalInvocation,
133
133
  async implementation(params, context) {
134
134
  try {
135
135
  const result = await execute(params, context);
@@ -3,6 +3,12 @@ export function projectAvailableTools(registrations) {
3
3
  return undefined;
4
4
  const entries = registrations.flatMap((registration) => registration.contract.operations.map((operation) => Object.freeze({
5
5
  toolName: registration.toolName,
6
+ ...(registration.definition.pluginName !== undefined
7
+ ? { pluginName: registration.definition.pluginName }
8
+ : {}),
9
+ ...(registration.definition.pluginDescription !== undefined
10
+ ? { pluginDescription: registration.definition.pluginDescription }
11
+ : {}),
6
12
  operationId: operation.operationId,
7
13
  summary: operation.summary,
8
14
  catalogGroups: Object.freeze([
@@ -1,3 +1,5 @@
1
+ import type { PersonalSkillManagementService } from "./knowledge-skills/personal-contracts.js";
2
+ import type { KnowledgeSkillStore } from "./knowledge-skills/store.js";
1
3
  import type WebSocket from "ws";
2
4
  import type { RuntimeProjectService } from "./projects/contracts.js";
3
5
  import type { EventSinkFactory, ModelGatewayClient, RuntimeConfig, RuntimeHost, SessionStore, ToolRegistry } from "./ports.js";
@@ -16,6 +18,8 @@ export type RuntimeEnvironmentServices = Readonly<{
16
18
  projects?: RuntimeProjectService;
17
19
  attachments: RuntimeAttachmentStore;
18
20
  tools: ToolRegistry;
21
+ knowledgeSkillStore?: KnowledgeSkillStore;
22
+ personalSkills?: PersonalSkillManagementService;
19
23
  models: ModelGatewayClient;
20
24
  events: EventSinkFactory;
21
25
  sessionMemoryCompactor: SessionMemoryCompactor;
@@ -50,6 +54,7 @@ export type RuntimeDependencies = {
50
54
  sessions: SessionStore;
51
55
  attachments: RuntimeAttachmentStore;
52
56
  tools: ToolRegistry;
57
+ knowledgeSkillStore?: KnowledgeSkillStore;
53
58
  models: ModelGatewayClient;
54
59
  events: EventSinkFactory;
55
60
  sessionMemoryCompactor: SessionMemoryCompactor;
@@ -1,10 +1,10 @@
1
1
  import type { ChatMessage, ModelTokenEstimationConfig } from "../../model-gateway/types.js";
2
2
  import type { ToolAvailabilityEntry } from "../../capabilities/tool-types.js";
3
- import { type ToolAvailabilityOverviewGroup, type ToolAvailabilityOverviewLevel } from "../../plugin-sdk/tool-availability-overview.js";
3
+ import { type ToolAvailabilityOverviewGroup } from "../../plugin-sdk/tool-availability-overview.js";
4
4
  import type { projectRequestContext } from "./request-context.js";
5
5
  export declare const CAPABILITY_BRIEF_KIND = "runtime_capability_brief_v1";
6
6
  export declare const CAPABILITY_BRIEF_MAX_TOKENS = 512;
7
- export type CapabilityBriefLevel = ToolAvailabilityOverviewLevel | "descriptions" | "none";
7
+ export type CapabilityBriefLevel = "groups" | "descriptions" | "none";
8
8
  export type CapabilityBriefProjection = Readonly<{
9
9
  level: CapabilityBriefLevel;
10
10
  message?: ChatMessage;
@@ -1,6 +1,6 @@
1
1
  import { buildToolAvailabilityOverview, } from "../../plugin-sdk/tool-availability-overview.js";
2
2
  import { resolveCapabilityBriefHeadroom } from "./capability-brief-budget.js";
3
- import { buildCapabilityDescriptions } from "./capability-descriptions.js";
3
+ import { buildPluginDiscoveryCatalogText } from "./capability-descriptions.js";
4
4
  import { estimateMessageTokens } from "./token-estimator.js";
5
5
  export const CAPABILITY_BRIEF_KIND = "runtime_capability_brief_v1";
6
6
  export const CAPABILITY_BRIEF_MAX_TOKENS = 512;
@@ -22,12 +22,12 @@ export function projectCapabilityBriefAtHeadroom(params) {
22
22
  return omittedBrief(compactBudgetTokens, "empty_catalog");
23
23
  }
24
24
  const levels = hasCompleteCapabilityBriefEntries(params.entries, params.groups)
25
- ? ["descriptions", "detailed", "titles", "groups"]
25
+ ? ["descriptions", "groups"]
26
26
  : ["groups"];
27
27
  for (const level of levels) {
28
28
  const budgetTokens = level === "descriptions" ? headroom : compactBudgetTokens;
29
29
  const body = level === "descriptions"
30
- ? buildCapabilityDescriptions(params.entries ?? [])
30
+ ? buildPluginDiscoveryCatalogText(params.groups.map(({ groupId }) => groupId), params.entries)
31
31
  : buildToolAvailabilityOverview(params.entries ?? [], params.groups, level);
32
32
  const message = Object.freeze({
33
33
  role: "system",
@@ -1,3 +1,4 @@
1
1
  import type { ToolAvailabilityEntry } from "../../capabilities/tool-types.js";
2
- /** Complete request-registry facts; neither a selected subset nor tool schemas. */
3
- export declare function buildCapabilityDescriptions(entries: readonly ToolAvailabilityEntry[]): string;
2
+ export declare const PLUGIN_DISCOVERY_CATALOG_HEADER = "Tool groups:";
3
+ /** Passive discovery: selectable groups first, with plugin descriptions once. */
4
+ export declare function buildPluginDiscoveryCatalogText(catalogGroupIds: readonly string[], entries?: readonly ToolAvailabilityEntry[]): string;