@abot-ai/runtime 1.6.0 → 1.8.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 (750) hide show
  1. package/README.md +2 -0
  2. package/dist/src/bridge/request-steering.js +60 -15
  3. package/dist/src/capabilities/normal-invocation/contracts.d.ts +3 -0
  4. package/dist/src/capabilities/normal-invocation/output-channels.d.ts +10 -0
  5. package/dist/src/capabilities/normal-invocation/output-channels.js +29 -0
  6. package/dist/src/capabilities/normal-invocation/validator.js +4 -2
  7. package/dist/src/capabilities/tool-request-resources.d.ts +3 -0
  8. package/dist/src/capabilities/tool-types.d.ts +1 -1
  9. package/dist/src/cli/abot.js +2 -0
  10. package/dist/src/cli/host-companion-bundle.mjs +8003 -6796
  11. package/dist/src/cli/host-companion-entry.js +5 -22
  12. package/dist/src/cli/host-companion-input.d.ts +3 -0
  13. package/dist/src/cli/host-companion-input.js +21 -0
  14. package/dist/src/cli/host-companion-lifecycle.d.ts +11 -0
  15. package/dist/src/cli/host-companion-lifecycle.js +32 -0
  16. package/dist/src/cli/host-companion-setup-target.d.ts +4 -0
  17. package/dist/src/cli/host-companion-setup-target.js +17 -0
  18. package/dist/src/cli/host-companion-startup.d.ts +2 -0
  19. package/dist/src/cli/host-companion-startup.js +7 -2
  20. package/dist/src/cli/host-companion.d.ts +6 -0
  21. package/dist/src/cli/host-companion.js +30 -27
  22. package/dist/src/cli/windows-companion-store-entry.d.ts +9 -0
  23. package/dist/src/cli/windows-companion-store-entry.js +67 -0
  24. package/dist/src/computer-access/collection-consent.d.ts +9 -0
  25. package/dist/src/computer-access/collection-consent.js +47 -0
  26. package/dist/src/computer-access/command-output-capture.d.ts +48 -0
  27. package/dist/src/computer-access/command-output-capture.js +202 -0
  28. package/dist/src/computer-access/command-output-protection.d.ts +17 -0
  29. package/dist/src/computer-access/command-output-protection.js +59 -0
  30. package/dist/src/computer-access/command-output-retention.d.ts +5 -0
  31. package/dist/src/computer-access/command-output-retention.js +90 -0
  32. package/dist/src/computer-access/command-output.d.ts +7 -0
  33. package/dist/src/computer-access/command-output.js +1 -0
  34. package/dist/src/computer-access/commands.d.ts +1 -0
  35. package/dist/src/computer-access/commands.js +1 -1
  36. package/dist/src/computer-access/companion/command-output-protocol.d.ts +12 -0
  37. package/dist/src/computer-access/companion/command-output-protocol.js +28 -0
  38. package/dist/src/computer-access/companion/command-output.d.ts +14 -0
  39. package/dist/src/computer-access/companion/command-output.js +127 -0
  40. package/dist/src/computer-access/companion/install-link-macos.d.ts +7 -0
  41. package/dist/src/computer-access/companion/install-link-macos.js +49 -0
  42. package/dist/src/computer-access/companion/install-link-registration.d.ts +4 -0
  43. package/dist/src/computer-access/companion/install-link-registration.js +184 -0
  44. package/dist/src/computer-access/companion/install-link-windows.d.ts +4 -0
  45. package/dist/src/computer-access/companion/install-link-windows.js +65 -0
  46. package/dist/src/computer-access/companion/install-link.d.ts +9 -0
  47. package/dist/src/computer-access/companion/install-link.js +54 -0
  48. package/dist/src/computer-access/companion/native-messages.js +3 -0
  49. package/dist/src/computer-access/companion/native-notifications.js +3 -2
  50. package/dist/src/computer-access/companion/native-session.d.ts +1 -0
  51. package/dist/src/computer-access/companion/native-session.js +20 -4
  52. package/dist/src/computer-access/companion/native-supervisor.js +1 -0
  53. package/dist/src/computer-access/companion/notification-windows.d.ts +1 -1
  54. package/dist/src/computer-access/companion/notification-windows.js +8 -3
  55. package/dist/src/computer-access/companion/observation-filter.js +2 -26
  56. package/dist/src/computer-access/companion/observation-process.d.ts +2 -0
  57. package/dist/src/computer-access/companion/observation-process.js +51 -25
  58. package/dist/src/computer-access/companion/observation-redaction.d.ts +2 -7
  59. package/dist/src/computer-access/companion/observation-redaction.js +2 -111
  60. package/dist/src/computer-access/companion/protocol.d.ts +1 -1
  61. package/dist/src/computer-access/companion/protocol.js +6 -0
  62. package/dist/src/computer-access/companion/release-version.d.ts +1 -1
  63. package/dist/src/computer-access/companion/release-version.js +1 -1
  64. package/dist/src/computer-access/companion/secret-protection-protocol.d.ts +6 -0
  65. package/dist/src/computer-access/companion/secret-protection-protocol.js +6 -0
  66. package/dist/src/computer-access/companion/windows-store/connection-error.d.ts +7 -0
  67. package/dist/src/computer-access/companion/windows-store/connection-error.js +19 -0
  68. package/dist/src/computer-access/companion/windows-store/connection-link.d.ts +13 -0
  69. package/dist/src/computer-access/companion/windows-store/connection-link.js +109 -0
  70. package/dist/src/computer-access/companion/windows-store/identity.d.ts +13 -0
  71. package/dist/src/computer-access/companion/windows-store/identity.js +13 -0
  72. package/dist/src/computer-access/companion/windows-store/lifecycle.d.ts +5 -0
  73. package/dist/src/computer-access/companion/windows-store/lifecycle.js +90 -0
  74. package/dist/src/computer-access/computer/companion-sessions.js +7 -6
  75. package/dist/src/computer-access/computer/unix-native-process.js +23 -11
  76. package/dist/src/computer-access/contracts.d.ts +1 -1
  77. package/dist/src/computer-access/handlers.d.ts +3 -1
  78. package/dist/src/computer-access/handlers.js +83 -11
  79. package/dist/src/computer-access/host-observation.d.ts +3 -3
  80. package/dist/src/computer-access/native-observation-connection.d.ts +12 -0
  81. package/dist/src/computer-access/native-observation-connection.js +78 -0
  82. package/dist/src/computer-access/native-observation-ownership.d.ts +6 -0
  83. package/dist/src/computer-access/native-observation-ownership.js +55 -0
  84. package/dist/src/computer-access/native-observation-shutdown.d.ts +7 -0
  85. package/dist/src/computer-access/native-observation-shutdown.js +58 -0
  86. package/dist/src/computer-access/observation-source.d.ts +6 -0
  87. package/dist/src/computer-access/observation-source.js +10 -0
  88. package/dist/src/computer-access/process-capture.d.ts +6 -0
  89. package/dist/src/computer-access/process-capture.js +1 -0
  90. package/dist/src/computer-access/process-result.d.ts +2 -0
  91. package/dist/src/computer-access/process-result.js +14 -6
  92. package/dist/src/computer-access/process-runner.d.ts +2 -1
  93. package/dist/src/computer-access/process-runner.js +21 -13
  94. package/dist/src/computer-access/security/desktop-result.d.ts +8 -0
  95. package/dist/src/computer-access/security/desktop-result.js +146 -0
  96. package/dist/src/computer-access/security/observed-error.d.ts +2 -0
  97. package/dist/src/computer-access/security/observed-error.js +10 -0
  98. package/dist/src/computer-access/security/secret-text.d.ts +7 -0
  99. package/dist/src/computer-access/security/secret-text.js +111 -0
  100. package/dist/src/computer-access/security/system-results.d.ts +2 -0
  101. package/dist/src/computer-access/security/system-results.js +53 -0
  102. package/dist/src/computer-access/system-result-protection.d.ts +11 -0
  103. package/dist/src/computer-access/system-result-protection.js +1 -0
  104. package/dist/src/model-gateway/observability/provider-response-capture.d.ts +60 -0
  105. package/dist/src/model-gateway/observability/provider-response-capture.js +68 -0
  106. package/dist/src/model-gateway/observability/provider-response-prefix.d.ts +7 -0
  107. package/dist/src/model-gateway/observability/provider-response-prefix.js +14 -0
  108. package/dist/src/model-gateway/observability/provider-response-tail.d.ts +8 -0
  109. package/dist/src/model-gateway/observability/provider-response-tail.js +28 -0
  110. package/dist/src/model-gateway/observability/provider-sse-diagnostics.d.ts +30 -0
  111. package/dist/src/model-gateway/observability/provider-sse-diagnostics.js +119 -0
  112. package/dist/src/model-gateway/observability/provider-trace.js +30 -8
  113. package/dist/src/model-gateway/providers/ollama/adapter.js +8 -2
  114. package/dist/src/model-gateway/providers/ollama/stream-normalizer.js +70 -50
  115. package/dist/src/model-gateway/providers/ollama/stream-termination.d.ts +6 -0
  116. package/dist/src/model-gateway/providers/ollama/stream-termination.js +20 -0
  117. package/dist/src/model-gateway/providers/openai/adapter.js +9 -7
  118. package/dist/src/model-gateway/providers/openai/diagnostics.d.ts +0 -1
  119. package/dist/src/model-gateway/providers/openai/diagnostics.js +0 -9
  120. package/dist/src/model-gateway/providers/openai/function-output.d.ts +11 -0
  121. package/dist/src/model-gateway/providers/openai/function-output.js +37 -0
  122. package/dist/src/model-gateway/providers/openai/function-result.d.ts +7 -0
  123. package/dist/src/model-gateway/providers/openai/function-result.js +35 -0
  124. package/dist/src/model-gateway/providers/openai/message-output-policy.d.ts +3 -0
  125. package/dist/src/model-gateway/providers/openai/message-output-policy.js +16 -0
  126. package/dist/src/model-gateway/providers/openai/payload.d.ts +0 -2
  127. package/dist/src/model-gateway/providers/openai/payload.js +6 -23
  128. package/dist/src/model-gateway/providers/openai/response-lifetime.d.ts +2 -0
  129. package/dist/src/model-gateway/providers/openai/response-lifetime.js +64 -0
  130. package/dist/src/model-gateway/providers/openai/sse-data.d.ts +9 -0
  131. package/dist/src/model-gateway/providers/openai/sse-data.js +67 -0
  132. package/dist/src/model-gateway/providers/openai/stream-normalizer.d.ts +10 -22
  133. package/dist/src/model-gateway/providers/openai/stream-normalizer.js +78 -79
  134. package/dist/src/model-gateway/providers/openai/stream.js +13 -41
  135. package/dist/src/model-gateway/providers/openai/structured-message-output.d.ts +42 -0
  136. package/dist/src/model-gateway/providers/openai/structured-message-output.js +175 -0
  137. package/dist/src/model-gateway/server/configuration.d.ts +2 -0
  138. package/dist/src/model-gateway/server/configuration.js +73 -21
  139. package/dist/src/model-gateway/server.js +5 -1
  140. package/dist/src/plugin-contract/index.d.ts +1 -0
  141. package/dist/src/plugin-contract/index.js +1 -0
  142. package/dist/src/plugin-contract/install-source.d.ts +13 -0
  143. package/dist/src/plugin-contract/install-source.js +99 -0
  144. package/dist/src/plugin-contract/manifest.d.ts +4 -1
  145. package/dist/src/plugin-contract/manifest.js +1 -0
  146. package/dist/src/plugin-contract/platform-compatibility.d.ts +16 -0
  147. package/dist/src/plugin-contract/platform-compatibility.js +3 -0
  148. package/dist/src/plugin-sdk/computer-access.d.ts +12 -0
  149. package/dist/src/plugin-sdk/computer-access.js +6 -0
  150. package/dist/src/plugin-sdk/files-windows/process.d.ts +3 -0
  151. package/dist/src/plugin-sdk/files-windows/process.js +93 -0
  152. package/dist/src/plugin-sdk/files-windows/read-script.d.ts +1 -0
  153. package/dist/src/plugin-sdk/files-windows/read-script.js +43 -0
  154. package/dist/src/plugin-sdk/files-windows/read.d.ts +6 -0
  155. package/dist/src/plugin-sdk/files-windows/read.js +56 -0
  156. package/dist/src/plugin-sdk/files-windows/result.d.ts +4 -0
  157. package/dist/src/plugin-sdk/files-windows/result.js +67 -0
  158. package/dist/src/plugin-sdk/files.js +4 -0
  159. package/dist/src/plugin-sdk/index.d.ts +1 -0
  160. package/dist/src/plugin-sdk/index.js +1 -0
  161. package/dist/src/plugin-sdk/mutation-result.d.ts +7 -0
  162. package/dist/src/plugin-sdk/mutation-result.js +11 -0
  163. package/dist/src/runtime/adapters/in-memory-session-store.js +6 -16
  164. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +20 -3
  165. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +3 -1
  166. package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.d.ts +3 -0
  167. package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.js +20 -0
  168. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +7 -3
  169. package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +1 -1
  170. package/dist/src/runtime/adapters/passive-learning-runtime.js +3 -3
  171. package/dist/src/runtime/adapters/runtime-observation-connection.d.ts +5 -0
  172. package/dist/src/runtime/adapters/runtime-observation-connection.js +13 -0
  173. package/dist/src/runtime/admin/config-control.js +2 -1
  174. package/dist/src/runtime/automations/catalog.d.ts +3 -0
  175. package/dist/src/runtime/automations/catalog.js +1 -0
  176. package/dist/src/runtime/automations/model-dependency-projection.d.ts +2 -0
  177. package/dist/src/runtime/automations/service.d.ts +2 -0
  178. package/dist/src/runtime/capabilities/automation-builder/authoring-reference.d.ts +10 -5
  179. package/dist/src/runtime/capabilities/automation-builder/authoring-reference.js +8 -7
  180. package/dist/src/runtime/capabilities/automation-builder/payload-instructions.d.ts +2 -2
  181. package/dist/src/runtime/capabilities/automation-builder/payload-instructions.js +2 -2
  182. package/dist/src/runtime/capabilities/automation-builder/tool-contract.d.ts +2 -2
  183. package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -1
  184. package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +11 -5
  185. package/dist/src/runtime/capabilities/automations/tool-module.js +1 -1
  186. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +3 -1
  187. package/dist/src/runtime/capabilities/request-permission-catalog.js +21 -2
  188. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +2 -1
  189. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +18 -10
  190. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +2 -0
  191. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +1 -1
  192. package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +6 -0
  193. package/dist/src/runtime/config/builders.js +6 -5
  194. package/dist/src/runtime/config/effective-model-config-validation.js +4 -35
  195. package/dist/src/runtime/config/fields.js +15 -0
  196. package/dist/src/runtime/config/model-context-capacity.d.ts +20 -0
  197. package/dist/src/runtime/config/model-context-capacity.js +55 -0
  198. package/dist/src/runtime/config/model-execution-policy.d.ts +5 -1
  199. package/dist/src/runtime/config/model-execution-policy.js +16 -0
  200. package/dist/src/runtime/config/model-plugin-config.d.ts +8 -0
  201. package/dist/src/runtime/config/model-plugin-config.js +40 -0
  202. package/dist/src/runtime/config/schema.js +5 -1
  203. package/dist/src/runtime/config/validation/model-profile-validation.js +2 -0
  204. package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +3 -1
  205. package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +3 -1
  206. package/dist/src/runtime/config/validation/runtime-root-section-validation.js +11 -4
  207. package/dist/src/runtime/config/validation/web-ui-config-validation.js +3 -2
  208. package/dist/src/runtime/config/web-ui.d.ts +5 -0
  209. package/dist/src/runtime/config/web-ui.js +5 -0
  210. package/dist/src/runtime/config.js +2 -0
  211. package/dist/src/runtime/local-application.d.ts +2 -0
  212. package/dist/src/runtime/local-host/app-owner.js +50 -6
  213. package/dist/src/runtime/local-host/app-request-control.d.ts +3 -1
  214. package/dist/src/runtime/local-host/app-request-control.js +91 -11
  215. package/dist/src/runtime/local-host/client-requests.js +32 -5
  216. package/dist/src/runtime/local-host/client-services.d.ts +2 -0
  217. package/dist/src/runtime/local-host/local-request-diagnostics.d.ts +9 -0
  218. package/dist/src/runtime/local-host/local-request-diagnostics.js +47 -0
  219. package/dist/src/runtime/local-host/saved-approvals.js +23 -2
  220. package/dist/src/runtime/local-host/windows-private-access.js +2 -0
  221. package/dist/src/runtime/model/model-selection.js +4 -1
  222. package/dist/src/runtime/observability/request-control-diagnostics.d.ts +6 -0
  223. package/dist/src/runtime/observability/request-control-diagnostics.js +52 -0
  224. package/dist/src/runtime/passive-learning/application-catalog.js +3 -1
  225. package/dist/src/runtime/passive-learning/collection-source.js +7 -0
  226. package/dist/src/runtime/passive-learning/service.js +2 -3
  227. package/dist/src/runtime/passive-learning/status-projection.d.ts +2 -0
  228. package/dist/src/runtime/passive-learning/status-projection.js +9 -0
  229. package/dist/src/runtime/plugins/configuration-context.d.ts +9 -0
  230. package/dist/src/runtime/plugins/configuration-context.js +42 -0
  231. package/dist/src/runtime/plugins/configuration-settings.d.ts +2 -0
  232. package/dist/src/runtime/plugins/configuration-settings.js +26 -0
  233. package/dist/src/runtime/plugins/configuration-store.d.ts +23 -0
  234. package/dist/src/runtime/plugins/configuration-store.js +100 -0
  235. package/dist/src/runtime/plugins/configuration-write.d.ts +5 -0
  236. package/dist/src/runtime/plugins/configuration-write.js +58 -0
  237. package/dist/src/runtime/plugins/installation/archive.d.ts +2 -0
  238. package/dist/src/runtime/plugins/installation/archive.js +107 -0
  239. package/dist/src/runtime/plugins/installation/github-download.d.ts +9 -0
  240. package/dist/src/runtime/plugins/installation/github-download.js +72 -0
  241. package/dist/src/runtime/plugins/installation/installed-package.d.ts +9 -0
  242. package/dist/src/runtime/plugins/installation/installed-package.js +66 -0
  243. package/dist/src/runtime/plugins/installation/package.d.ts +53 -0
  244. package/dist/src/runtime/plugins/installation/package.js +81 -0
  245. package/dist/src/runtime/plugins/installation/portable-path.d.ts +2 -0
  246. package/dist/src/runtime/plugins/installation/portable-path.js +10 -0
  247. package/dist/src/runtime/plugins/installation/publication.d.ts +10 -0
  248. package/dist/src/runtime/plugins/installation/publication.js +17 -0
  249. package/dist/src/runtime/plugins/installation/service.d.ts +48 -0
  250. package/dist/src/runtime/plugins/installation/service.js +80 -0
  251. package/dist/src/runtime/plugins/loader.js +34 -38
  252. package/dist/src/runtime/plugins/manifest-platform-compatibility.d.ts +2 -0
  253. package/dist/src/runtime/plugins/manifest-platform-compatibility.js +39 -0
  254. package/dist/src/runtime/plugins/manifest-projection.js +1 -0
  255. package/dist/src/runtime/plugins/manifest-validator.js +12 -1
  256. package/dist/src/runtime/plugins/module-cache.d.ts +2 -0
  257. package/dist/src/runtime/plugins/module-cache.js +19 -0
  258. package/dist/src/runtime/plugins/platform-compatibility.d.ts +4 -0
  259. package/dist/src/runtime/plugins/platform-compatibility.js +44 -0
  260. package/dist/src/runtime/plugins/selection.d.ts +2 -0
  261. package/dist/src/runtime/plugins/selection.js +16 -11
  262. package/dist/src/runtime/ports.d.ts +6 -4
  263. package/dist/src/runtime/request/approval-wait/activation-events.js +19 -7
  264. package/dist/src/runtime/request/approval-wait/execution-compaction-restore.d.ts +20 -0
  265. package/dist/src/runtime/request/approval-wait/execution-compaction-restore.js +118 -0
  266. package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +2 -1
  267. package/dist/src/runtime/request/dependencies.d.ts +2 -1
  268. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +1 -1
  269. package/dist/src/runtime/request/handler.js +8 -0
  270. package/dist/src/runtime/request/prepared-execution.js +9 -1
  271. package/dist/src/runtime/request/request-steering.d.ts +4 -0
  272. package/dist/src/runtime/request/request-steering.js +37 -12
  273. package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -0
  274. package/dist/src/runtime/request/worker-capability-composition.js +4 -1
  275. package/dist/src/runtime/scheduler/journal-index-state.d.ts +1 -1
  276. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +6 -0
  277. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +29 -0
  278. package/dist/src/runtime/steps/execution-agent/format.js +2 -3
  279. package/dist/src/runtime/steps/execution-agent/input.js +1 -1
  280. package/dist/src/runtime/steps/execution-agent/prompt.js +5 -5
  281. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  282. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -3
  283. package/dist/src/runtime/steps/execution-agent/state-context.js +26 -35
  284. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +1 -3
  285. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +0 -55
  286. package/dist/src/runtime/steps/execution-agent/work-plan-schema.d.ts +3 -0
  287. package/dist/src/runtime/steps/execution-agent/work-plan-schema.js +61 -0
  288. package/dist/src/sessions/assistant-initiative-message.d.ts +3 -0
  289. package/dist/src/sessions/assistant-initiative-message.js +12 -0
  290. package/dist/src/sessions/assistant-initiative.d.ts +2 -2
  291. package/dist/src/sessions/assistant-initiative.js +1 -7
  292. package/dist/src/sessions/durable-session-commit.d.ts +2 -1
  293. package/dist/src/sessions/durable-session-commit.js +9 -4
  294. package/dist/src/sessions/metadata/projection.d.ts +15 -0
  295. package/dist/src/sessions/metadata/projection.js +55 -0
  296. package/dist/src/sessions/metadata/publication.d.ts +12 -0
  297. package/dist/src/sessions/metadata/publication.js +78 -0
  298. package/dist/src/sessions/metadata/source-receipt.d.ts +5 -0
  299. package/dist/src/sessions/metadata/source-receipt.js +42 -0
  300. package/dist/src/sessions/metadata/store.d.ts +7 -0
  301. package/dist/src/sessions/metadata/store.js +119 -0
  302. package/dist/src/sessions/prepared-session-replacement.d.ts +6 -0
  303. package/dist/src/sessions/prepared-session-replacement.js +46 -0
  304. package/dist/src/sessions/record/projection.d.ts +3 -1
  305. package/dist/src/sessions/record/projection.js +26 -18
  306. package/dist/src/sessions/request-lifecycle/service.js +3 -3
  307. package/dist/src/sessions/session-service.d.ts +2 -4
  308. package/dist/src/sessions/session-service.js +4 -16
  309. package/dist/src/sessions/session-store.d.ts +2 -1
  310. package/dist/src/sessions/session-store.js +11 -5
  311. package/dist/src/sessions/snapshot.d.ts +17 -0
  312. package/dist/src/sessions/snapshot.js +105 -0
  313. package/dist/src/sessions/types.d.ts +2 -0
  314. package/dist/src/shared/passive-observation-self-exclusion.d.ts +5 -0
  315. package/dist/src/shared/passive-observation-self-exclusion.js +37 -0
  316. package/dist/src/shared/tool-selection.d.ts +2 -0
  317. package/dist/src/shared/tool-selection.js +7 -0
  318. package/dist/src/shared/windows-file-io/authority-script.d.ts +1 -0
  319. package/dist/src/shared/windows-file-io/authority-script.js +94 -0
  320. package/dist/src/shared/windows-file-io/native-script.d.ts +2 -0
  321. package/dist/src/shared/windows-file-io/native-script.js +120 -0
  322. package/dist/src/shared/windows-file-io/read-bytes-script.d.ts +1 -0
  323. package/dist/src/shared/windows-file-io/read-bytes-script.js +18 -0
  324. package/dist/src/shared/windows-job-object.d.ts +2 -0
  325. package/dist/src/shared/windows-job-object.js +66 -0
  326. package/dist/src/web-ui/app/ARCHITECTURE.md +14 -0
  327. package/dist/src/web-ui/app/app-bootstrap.js +14 -1
  328. package/dist/src/web-ui/app/app-state.js +0 -7
  329. package/dist/src/web-ui/app/app.js +59 -159
  330. package/dist/src/web-ui/app/components/automations/node-inspector.js +3 -2
  331. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +3 -0
  332. package/dist/src/web-ui/app/components/composer-submission-notice.js +50 -0
  333. package/dist/src/web-ui/app/components/config-workspace/config-model.js +2 -0
  334. package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +136 -0
  335. package/dist/src/web-ui/app/components/config-workspace/model-plugin-selection.js +180 -0
  336. package/dist/src/web-ui/app/components/config-workspace/model-plugin-view-state.js +114 -0
  337. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +3 -0
  338. package/dist/src/web-ui/app/components/config-workspace/model-summary.js +39 -0
  339. package/dist/src/web-ui/app/components/config-workspace/summary-rendering.js +30 -0
  340. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +37 -0
  341. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +24 -2
  342. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +9 -1
  343. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +23 -67
  344. package/dist/src/web-ui/app/components/config-workspace.js +11 -2
  345. package/dist/src/web-ui/app/components/conversation-view.js +36 -5
  346. package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +2 -1
  347. package/dist/src/web-ui/app/components/dashboard/workspace.js +2 -1
  348. package/dist/src/web-ui/app/components/home-guidance/daily-review.js +2 -2
  349. package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +20 -6
  350. package/dist/src/web-ui/app/components/model-setup/context-window-feedback.js +53 -0
  351. package/dist/src/web-ui/app/components/model-setup/save-flow.js +3 -1
  352. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +1 -0
  353. package/dist/src/web-ui/app/components/model-setup/wizard.js +12 -0
  354. package/dist/src/web-ui/app/components/operations-summary.js +105 -0
  355. package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +4 -0
  356. package/dist/src/web-ui/app/components/passive-learning/collection-access.js +35 -0
  357. package/dist/src/web-ui/app/components/passive-learning/collection-consent-dialog.js +59 -0
  358. package/dist/src/web-ui/app/components/passive-learning/collection-consent-gate.js +94 -0
  359. package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +6 -0
  360. package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +1 -0
  361. package/dist/src/web-ui/app/components/passive-learning/home.js +8 -11
  362. package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +1 -0
  363. package/dist/src/web-ui/app/components/passive-learning/memory.js +2 -4
  364. package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +2 -2
  365. package/dist/src/web-ui/app/components/plugins/compatibility.js +13 -0
  366. package/dist/src/web-ui/app/components/plugins/configuration-draft.js +34 -0
  367. package/dist/src/web-ui/app/components/plugins/configuration-editor.js +147 -0
  368. package/dist/src/web-ui/app/components/plugins/configuration-fields.js +103 -0
  369. package/dist/src/web-ui/app/components/plugins/configuration-retained-secrets.js +20 -0
  370. package/dist/src/web-ui/app/components/plugins/configuration-settings.js +108 -0
  371. package/dist/src/web-ui/app/components/plugins/discovery-rendering.js +45 -0
  372. package/dist/src/web-ui/app/components/plugins/installation-compatibility.js +7 -0
  373. package/dist/src/web-ui/app/components/plugins/installation.js +213 -0
  374. package/dist/src/web-ui/app/components/plugins/manager.js +160 -6
  375. package/dist/src/web-ui/app/components/plugins/removal.js +130 -0
  376. package/dist/src/web-ui/app/components/plugins/rendering.js +17 -2
  377. package/dist/src/web-ui/app/components/plugins/summary.js +54 -0
  378. package/dist/src/web-ui/app/components/plugins/tabs.js +31 -0
  379. package/dist/src/web-ui/app/components/plugins/view-state.js +3 -1
  380. package/dist/src/web-ui/app/components/reasoning-override-prompt.js +82 -0
  381. package/dist/src/web-ui/app/components/runtime-config-activation.js +22 -8
  382. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +5 -2
  383. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +9 -1
  384. package/dist/src/web-ui/app/components/runtime-setup/context-window-feedback.js +71 -0
  385. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +9 -4
  386. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +3 -1
  387. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +6 -4
  388. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +1 -0
  389. package/dist/src/web-ui/app/components/runtime-setup-guide.js +15 -3
  390. package/dist/src/web-ui/app/components/schedules/form.js +10 -8
  391. package/dist/src/web-ui/app/components/schedules/workspace.js +23 -4
  392. package/dist/src/web-ui/app/components/session-sidebar-sections.js +2 -2
  393. package/dist/src/web-ui/app/components/spark-chat/empty-state.js +1 -0
  394. package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +9 -3
  395. package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -0
  396. package/dist/src/web-ui/app/components/spark-chat/placement.js +4 -7
  397. package/dist/src/web-ui/app/components/spark-chat/settings.js +7 -3
  398. package/dist/src/web-ui/app/components/system-host/connection-card.js +35 -0
  399. package/dist/src/web-ui/app/components/system-host/macos-permissions.js +2 -0
  400. package/dist/src/web-ui/app/components/system-host/macos-setup.js +1 -1
  401. package/dist/src/web-ui/app/components/system-host/manager.js +45 -12
  402. package/dist/src/web-ui/app/components/system-host/native-windows-access.js +50 -0
  403. package/dist/src/web-ui/app/components/system-host/rendering.js +114 -106
  404. package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +293 -0
  405. package/dist/src/web-ui/app/components/workspace-shell.js +6 -0
  406. package/dist/src/web-ui/app/components/workspace-storage-notice.js +37 -0
  407. package/dist/src/web-ui/app/computer-access-feature.js +22 -5
  408. package/dist/src/web-ui/app/configuration-environment-refresh.js +27 -34
  409. package/dist/src/web-ui/app/configuration-feature.js +44 -3
  410. package/dist/src/web-ui/app/controllers/app-event-bindings.js +41 -105
  411. package/dist/src/web-ui/app/controllers/chat-request-controller.d.ts +28 -0
  412. package/dist/src/web-ui/app/controllers/chat-request-controller.js +34 -66
  413. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +15 -40
  414. package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +26 -69
  415. package/dist/src/web-ui/app/controllers/composer-draft-view.d.ts +27 -0
  416. package/dist/src/web-ui/app/controllers/composer-draft-view.js +48 -0
  417. package/dist/src/web-ui/app/controllers/composer-drafts.d.ts +55 -0
  418. package/dist/src/web-ui/app/controllers/composer-drafts.js +120 -0
  419. package/dist/src/web-ui/app/controllers/composer-feature.d.ts +65 -0
  420. package/dist/src/web-ui/app/controllers/composer-feature.js +124 -0
  421. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +33 -94
  422. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +185 -251
  423. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +48 -0
  424. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.js +97 -0
  425. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +30 -61
  426. package/dist/src/web-ui/app/controllers/composer-submit-controller.js +56 -138
  427. package/dist/src/web-ui/app/controllers/composer-surface-controller.js +6 -0
  428. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +22 -40
  429. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +49 -165
  430. package/dist/src/web-ui/app/controllers/conversation-navigation-intent.js +15 -0
  431. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +1 -0
  432. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +7 -3
  433. package/dist/src/web-ui/app/controllers/conversation-request-hydration.js +91 -0
  434. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +10 -5
  435. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +97 -162
  436. package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +27 -0
  437. package/dist/src/web-ui/app/controllers/daily-memory-review.js +15 -16
  438. package/dist/src/web-ui/app/controllers/environment-transition.js +126 -0
  439. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +18 -0
  440. package/dist/src/web-ui/app/controllers/history-pagination.js +111 -0
  441. package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +14 -36
  442. package/dist/src/web-ui/app/controllers/home-composer-feature.js +17 -114
  443. package/dist/src/web-ui/app/controllers/home-conversation-activation.js +6 -8
  444. package/dist/src/web-ui/app/controllers/operations-controller.d.ts +12 -0
  445. package/dist/src/web-ui/app/controllers/operations-controller.js +28 -21
  446. package/dist/src/web-ui/app/controllers/passive-learning-controller.js +56 -0
  447. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +1 -1
  448. package/dist/src/web-ui/app/controllers/projects-controller.js +6 -1
  449. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +174 -0
  450. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +1 -0
  451. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +11 -0
  452. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -0
  453. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +20 -155
  454. package/dist/src/web-ui/app/controllers/session-controller.js +43 -19
  455. package/dist/src/web-ui/app/controllers/session-list-pagination.js +71 -0
  456. package/dist/src/web-ui/app/controllers/session-pin-updates.js +14 -0
  457. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +17 -17
  458. package/dist/src/web-ui/app/controllers/spark-chat-reading.js +1 -0
  459. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +26 -7
  460. package/dist/src/web-ui/app/controllers/steer-controller.js +9 -7
  461. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +1 -1
  462. package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +34 -0
  463. package/dist/src/web-ui/app/controllers/workspace-route-controller.js +21 -19
  464. package/dist/src/web-ui/app/dashboard-feature.js +4 -3
  465. package/dist/src/web-ui/app/index.html +6 -2
  466. package/dist/src/web-ui/app/lib/history-page-messages.js +49 -0
  467. package/dist/src/web-ui/app/lib/reasoning-controls.js +35 -0
  468. package/dist/src/web-ui/app/lib/request-lifecycle-view.js +8 -0
  469. package/dist/src/web-ui/app/lib/session-composer-queue-ownership.js +58 -0
  470. package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +12 -0
  471. package/dist/src/web-ui/app/lib/session-composer-queue.js +25 -6
  472. package/dist/src/web-ui/app/lib/workspace-route.d.ts +3 -0
  473. package/dist/src/web-ui/app/lib/workspace-route.js +4 -0
  474. package/dist/src/web-ui/app/passive-learning-feature.js +16 -4
  475. package/dist/src/web-ui/app/runtime-onboarding-feature.js +3 -0
  476. package/dist/src/web-ui/app/schedules-feature.js +5 -3
  477. package/dist/src/web-ui/app/services/client-preferences.d.ts +18 -10
  478. package/dist/src/web-ui/app/services/client-preferences.js +25 -16
  479. package/dist/src/web-ui/app/services/home-guidance-preferences.js +13 -13
  480. package/dist/src/web-ui/app/services/reasoning-override.js +12 -0
  481. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
  482. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +20 -0
  483. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +7 -2
  484. package/dist/src/web-ui/app/services/runtime-web-client/plugin-configuration.js +19 -0
  485. package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.js +4 -4
  486. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +4 -0
  487. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +8 -1
  488. package/dist/src/web-ui/app/services/runtime-web-client.js +14 -3
  489. package/dist/src/web-ui/app/services/server-composer-queue.js +32 -0
  490. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +5 -5
  491. package/dist/src/web-ui/app/services/workspace-state-storage.js +116 -0
  492. package/dist/src/web-ui/app/services/workspace-state.js +27 -0
  493. package/dist/src/web-ui/app/spark-chat-conversation.js +34 -45
  494. package/dist/src/web-ui/app/spark-chat-feature.js +84 -21
  495. package/dist/src/web-ui/app/styles/11-product-links.css +30 -0
  496. package/dist/src/web-ui/app/styles/21-composer-controls.css +16 -0
  497. package/dist/src/web-ui/app/styles/41-plugin-configuration.css +79 -0
  498. package/dist/src/web-ui/app/styles/41-plugin-discovery.css +132 -0
  499. package/dist/src/web-ui/app/styles/41-plugin-management.css +14 -0
  500. package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +174 -0
  501. package/dist/src/web-ui/app/styles/46-system-host.css +61 -107
  502. package/dist/src/web-ui/app/styles/47-config-controls.css +13 -1
  503. package/dist/src/web-ui/app/styles/49-collection-consent.css +30 -0
  504. package/dist/src/web-ui/app/styles/54-spark-chat.css +33 -1
  505. package/dist/src/web-ui/app/styles/64-workspace-storage.css +23 -0
  506. package/dist/src/web-ui/app/styles.css +6 -0
  507. package/dist/src/web-ui/client-state/contracts.d.ts +15 -0
  508. package/dist/src/web-ui/client-state/contracts.js +13 -0
  509. package/dist/src/web-ui/client-state/preference-shapes.d.ts +2 -0
  510. package/dist/src/web-ui/client-state/preference-shapes.js +80 -0
  511. package/dist/src/web-ui/client-state/preferences.d.ts +3 -0
  512. package/dist/src/web-ui/client-state/preferences.js +84 -0
  513. package/dist/src/web-ui/client-state/queue.d.ts +3 -0
  514. package/dist/src/web-ui/client-state/queue.js +43 -0
  515. package/dist/src/web-ui/client-state/routes.d.ts +7 -0
  516. package/dist/src/web-ui/client-state/routes.js +58 -0
  517. package/dist/src/web-ui/client-state/store.d.ts +14 -0
  518. package/dist/src/web-ui/client-state/store.js +88 -0
  519. package/dist/src/web-ui/local-runtime/api-router.js +11 -6
  520. package/dist/src/web-ui/local-runtime/approval-request-attachment.js +14 -5
  521. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +1 -1
  522. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +11 -3
  523. package/dist/src/web-ui/local-runtime/contracts.d.ts +4 -3
  524. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +5 -1
  525. package/dist/src/web-ui/local-runtime/environment-registry.js +53 -11
  526. package/dist/src/web-ui/local-runtime/history-pagination.d.ts +16 -0
  527. package/dist/src/web-ui/local-runtime/history-pagination.js +20 -0
  528. package/dist/src/web-ui/local-runtime/http.js +11 -2
  529. package/dist/src/web-ui/local-runtime/model-context-capacity-error.d.ts +14 -0
  530. package/dist/src/web-ui/local-runtime/model-context-capacity-error.js +28 -0
  531. package/dist/src/web-ui/local-runtime/model-setup-context-window.d.ts +15 -0
  532. package/dist/src/web-ui/local-runtime/model-setup-context-window.js +25 -0
  533. package/dist/src/web-ui/local-runtime/model-setup-routes.js +2 -0
  534. package/dist/src/web-ui/local-runtime/model-setup-service.js +5 -2
  535. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +1 -0
  536. package/dist/src/web-ui/local-runtime/model-setup-validation.js +14 -7
  537. package/dist/src/web-ui/local-runtime/plugin-configuration-routes.d.ts +16 -0
  538. package/dist/src/web-ui/local-runtime/plugin-configuration-routes.js +68 -0
  539. package/dist/src/web-ui/local-runtime/plugin-installation-routes.d.ts +16 -0
  540. package/dist/src/web-ui/local-runtime/plugin-installation-routes.js +96 -0
  541. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +8 -1
  542. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +17 -0
  543. package/dist/src/web-ui/local-runtime/plugin-mutation-admission.d.ts +7 -0
  544. package/dist/src/web-ui/local-runtime/plugin-mutation-admission.js +17 -0
  545. package/dist/src/web-ui/local-runtime/plugin-removal-routes.d.ts +18 -0
  546. package/dist/src/web-ui/local-runtime/plugin-removal-routes.js +60 -0
  547. package/dist/src/web-ui/local-runtime/realtime-controller.js +41 -2
  548. package/dist/src/web-ui/local-runtime/request-body-error.d.ts +11 -0
  549. package/dist/src/web-ui/local-runtime/request-body-error.js +14 -0
  550. package/dist/src/web-ui/local-runtime/request-cancellation-route.js +28 -1
  551. package/dist/src/web-ui/local-runtime/request-control-observation.d.ts +19 -0
  552. package/dist/src/web-ui/local-runtime/request-control-observation.js +80 -0
  553. package/dist/src/web-ui/local-runtime/request-execution.js +66 -34
  554. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +2 -0
  555. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +35 -22
  556. package/dist/src/web-ui/local-runtime/runtime-setup-context-window.d.ts +13 -0
  557. package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +21 -0
  558. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +15 -1
  559. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +30 -11
  560. package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.d.ts +20 -0
  561. package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.js +104 -0
  562. package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.d.ts +29 -0
  563. package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.js +151 -0
  564. package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.d.ts +7 -0
  565. package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.js +87 -0
  566. package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.d.ts +3 -0
  567. package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.js +37 -0
  568. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +2 -0
  569. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +4 -0
  570. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +9 -2
  571. package/dist/src/web-ui/local-runtime/session-routes.d.ts +1 -0
  572. package/dist/src/web-ui/local-runtime/session-routes.js +16 -4
  573. package/dist/src/web-ui/local-runtime/spark-chat-routes.js +4 -3
  574. package/dist/src/web-ui/local-runtime-backend.js +14 -0
  575. package/dist/src/web-ui/plugin-capability-selection.js +4 -1
  576. package/dist/src/web-ui/plugin-configuration-input.d.ts +12 -0
  577. package/dist/src/web-ui/plugin-configuration-input.js +68 -0
  578. package/dist/src/web-ui/plugin-configuration-retained-secrets.d.ts +9 -0
  579. package/dist/src/web-ui/plugin-configuration-retained-secrets.js +48 -0
  580. package/dist/src/web-ui/plugin-configuration-service.d.ts +52 -0
  581. package/dist/src/web-ui/plugin-configuration-service.js +66 -0
  582. package/dist/src/web-ui/plugin-configuration-view.d.ts +25 -0
  583. package/dist/src/web-ui/plugin-configuration-view.js +45 -0
  584. package/dist/src/web-ui/plugin-disabled-selection.d.ts +7 -0
  585. package/dist/src/web-ui/plugin-disabled-selection.js +17 -0
  586. package/dist/src/web-ui/plugin-management-catalog.d.ts +5 -1
  587. package/dist/src/web-ui/plugin-management-catalog.js +13 -1
  588. package/dist/src/web-ui/plugin-management-selection.js +22 -9
  589. package/dist/src/web-ui/plugin-management-service.d.ts +6 -1
  590. package/dist/src/web-ui/plugin-management-service.js +11 -7
  591. package/dist/src/web-ui/plugin-removal-error.d.ts +7 -0
  592. package/dist/src/web-ui/plugin-removal-error.js +16 -0
  593. package/dist/src/web-ui/plugin-removal-service.d.ts +31 -0
  594. package/dist/src/web-ui/plugin-removal-service.js +109 -0
  595. package/dist/src/web-ui/runtime-setup-gateway.d.ts +6 -2
  596. package/dist/src/web-ui/runtime-setup-gateway.js +30 -10
  597. package/dist/src/web-ui/server-readiness.d.ts +3 -0
  598. package/dist/src/web-ui/server-readiness.js +36 -0
  599. package/dist/src/web-ui/server.d.ts +2 -0
  600. package/dist/src/web-ui/server.js +29 -3
  601. package/dist/src/web-ui/session-read-state/overview.d.ts +42 -0
  602. package/dist/src/web-ui/session-read-state/overview.js +16 -0
  603. package/dist/src/web-ui/session-read-state/pagination.d.ts +15 -0
  604. package/dist/src/web-ui/session-read-state/pagination.js +42 -0
  605. package/dist/src/web-ui/session-read-state/projection.d.ts +4 -3
  606. package/dist/src/web-ui/session-read-state/service.d.ts +213 -20
  607. package/dist/src/web-ui/session-read-state/service.js +25 -23
  608. package/dist/src/web-ui/session-read-state/visible-messages.d.ts +3 -3
  609. package/dist/src/web-ui/system-host-service.js +13 -2
  610. package/dist/src/web-ui/system-host-setup/collection-consent-route.d.ts +3 -0
  611. package/dist/src/web-ui/system-host-setup/collection-consent-route.js +30 -0
  612. package/dist/src/web-ui/system-host-setup/companion-linux.js +1 -1
  613. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +1 -1
  614. package/dist/src/web-ui/system-host-setup/installer-contract.js +2 -2
  615. package/dist/src/web-ui/system-host-setup/installers.js +0 -7
  616. package/dist/src/web-ui/system-host-setup/local-connection.d.ts +4 -1
  617. package/dist/src/web-ui/system-host-setup/local-connection.js +10 -17
  618. package/dist/src/web-ui/system-host-setup/routes.d.ts +2 -0
  619. package/dist/src/web-ui/system-host-setup/routes.js +32 -9
  620. package/dist/src/web-ui/system-host-setup/setup-mutation.d.ts +9 -0
  621. package/dist/src/web-ui/system-host-setup/setup-mutation.js +27 -0
  622. package/dist/src/web-ui/system-host-setup/windows-store-route.d.ts +13 -0
  623. package/dist/src/web-ui/system-host-setup/windows-store-route.js +68 -0
  624. package/docs/configuration.md +46 -0
  625. package/docs/installation.md +88 -28
  626. package/docs/plugins.md +310 -6
  627. package/docs/projects-and-full-plus.md +2 -6
  628. package/docs/runtime-library.md +0 -1
  629. package/docs/tool-execution-result-evidence-contract.md +57 -0
  630. package/docs/windows-companion-store.md +132 -0
  631. package/package.json +6 -4
  632. package/plugins/capability-brief/plugin.json +4 -0
  633. package/plugins/code-outline/README.md +20 -0
  634. package/plugins/code-outline/plugin.json +1 -0
  635. package/plugins/code-outline/source/index.ts +16 -20
  636. package/plugins/code-outline/source/read-failure.ts +40 -0
  637. package/plugins/code-outline/src/index.cjs +614 -29
  638. package/plugins/document-reader/README.md +33 -0
  639. package/plugins/document-reader/plugin.json +2 -0
  640. package/plugins/document-reader/source/pdf-contract.ts +57 -0
  641. package/plugins/document-reader/source/pdf-parser.ts +139 -0
  642. package/plugins/document-reader/source/pdf-process-main.ts +56 -0
  643. package/plugins/document-reader/source/pdf-process.ts +207 -0
  644. package/plugins/document-reader/source/pdf-result.ts +79 -0
  645. package/plugins/document-reader/source/pdf-worker.ts +39 -303
  646. package/plugins/document-reader/source/pdf.ts +4 -1
  647. package/plugins/document-reader/source/read-failure.ts +37 -0
  648. package/plugins/document-reader/source/reader.ts +3 -19
  649. package/plugins/document-reader/src/index.cjs +995 -211
  650. package/plugins/exec/README.md +19 -0
  651. package/plugins/exec/plugin.json +7 -3
  652. package/plugins/exec/skills/exec_skill/SKILL.md +3 -2
  653. package/plugins/exec/source/filesystem-file-observer.ts +98 -0
  654. package/plugins/exec/source/filesystem-observer.ts +8 -79
  655. package/plugins/exec/source/output-files.ts +12 -6
  656. package/plugins/exec/source/paths.ts +3 -1
  657. package/plugins/exec/source/process-manager.ts +8 -24
  658. package/plugins/exec/source/shell-platform.ts +19 -3
  659. package/plugins/exec/source/shell-process.ts +55 -0
  660. package/plugins/exec/source/windows-job-source.ts +1 -0
  661. package/plugins/exec/source/windows-shell-bootstrap.ts +20 -0
  662. package/plugins/exec/src/index.cjs +252 -96
  663. package/plugins/filesystem/README.md +65 -0
  664. package/plugins/filesystem/plugin.json +8 -2
  665. package/plugins/filesystem/source/atomic-write.ts +2 -0
  666. package/plugins/filesystem/source/bounded-io.ts +80 -306
  667. package/plugins/filesystem/source/directory-sample.ts +2 -0
  668. package/plugins/filesystem/source/errors.ts +14 -0
  669. package/plugins/filesystem/source/file-observation.ts +151 -0
  670. package/plugins/filesystem/source/file-version.ts +41 -0
  671. package/plugins/filesystem/source/index.ts +6 -0
  672. package/plugins/filesystem/source/mutation-coordinator.ts +1 -0
  673. package/plugins/filesystem/source/windows/authority-script.ts +1 -0
  674. package/plugins/filesystem/source/windows/native-script.ts +1 -0
  675. package/plugins/filesystem/source/windows/operations.ts +197 -0
  676. package/plugins/filesystem/source/windows/process.ts +214 -0
  677. package/plugins/filesystem/source/windows/publication-script.ts +29 -0
  678. package/plugins/filesystem/source/windows/read-script.ts +63 -0
  679. package/plugins/filesystem/source/windows/request-availability.ts +67 -0
  680. package/plugins/filesystem/source/windows/source.ts +42 -0
  681. package/plugins/filesystem/source/windows/storage-script.ts +11 -0
  682. package/plugins/filesystem/source/windows/streams-script.ts +24 -0
  683. package/plugins/filesystem/source/windows/write-script.ts +86 -0
  684. package/plugins/filesystem/src/index.cjs +1208 -322
  685. package/plugins/json-inspector/README.md +18 -0
  686. package/plugins/json-inspector/plugin.json +1 -0
  687. package/plugins/json-inspector/source/index.ts +16 -19
  688. package/plugins/json-inspector/source/read-failure.ts +42 -0
  689. package/plugins/json-inspector/src/index.cjs +612 -27
  690. package/plugins/local-search/README.md +29 -0
  691. package/plugins/local-search/plugin.json +2 -0
  692. package/plugins/local-search/source/errors.ts +2 -0
  693. package/plugins/local-search/source/paths.ts +3 -0
  694. package/plugins/local-search/source/ripgrep-process.ts +31 -5
  695. package/plugins/local-search/source/ripgrep.ts +3 -3
  696. package/plugins/local-search/source/windows-authority.ts +99 -0
  697. package/plugins/local-search/source/windows-search-lease.ts +49 -0
  698. package/plugins/local-search/source/windows-search-process.ts +91 -0
  699. package/plugins/local-search/source/windows-search-script.ts +52 -0
  700. package/plugins/local-search/src/index.cjs +595 -26
  701. package/plugins/memory/plugin.json +4 -0
  702. package/plugins/memory/source/lock-directory-claim.ts +56 -0
  703. package/plugins/memory/source/lock-owner-file.ts +71 -0
  704. package/plugins/memory/source/lock-path-observation.ts +26 -0
  705. package/plugins/memory/source/prepared-memory-replacement.ts +40 -0
  706. package/plugins/memory/source/store-lock.ts +12 -7
  707. package/plugins/memory/source/store.ts +3 -2
  708. package/plugins/memory/src/index.cjs +174 -25
  709. package/plugins/project-orientation/README.md +23 -0
  710. package/plugins/project-orientation/plugin.json +1 -0
  711. package/plugins/project-orientation/source/index.ts +12 -9
  712. package/plugins/project-orientation/source/inspection-failure.ts +70 -0
  713. package/plugins/project-orientation/source/manifest-summary.ts +9 -2
  714. package/plugins/project-orientation/source/tree.ts +6 -0
  715. package/plugins/project-orientation/src/index.cjs +647 -31
  716. package/plugins/system/README.md +81 -5
  717. package/plugins/system/plugin.json +10 -1
  718. package/plugins/system/skills/system_actions/SKILL.md +1 -1
  719. package/plugins/system/source/command-working-directory.ts +47 -0
  720. package/plugins/system/source/companion-command-output.ts +82 -0
  721. package/plugins/system/source/computer/handlers.ts +13 -9
  722. package/plugins/system/source/computer/observation-result.ts +10 -5
  723. package/plugins/system/source/computer/request-computers.ts +10 -3
  724. package/plugins/system/source/computer/request-modules.ts +3 -6
  725. package/plugins/system/source/computer/runtime-platform.ts +18 -0
  726. package/plugins/system/source/host-dispatch.ts +21 -1
  727. package/plugins/system/source/index.ts +14 -6
  728. package/plugins/system/source/local-command-output-retention.ts +16 -0
  729. package/plugins/system/source/local-command-output.ts +69 -0
  730. package/plugins/system/source/request-system-modules.ts +14 -2
  731. package/plugins/system/source/request-target-snapshot.ts +2 -1
  732. package/plugins/system/source/security/desktop-result.ts +177 -0
  733. package/plugins/system/source/security/observed-error.ts +10 -0
  734. package/plugins/system/source/security/secret-text.ts +118 -0
  735. package/plugins/system/source/security/system-results.ts +62 -0
  736. package/plugins/system/source/security/windows-output-directory.ts +82 -0
  737. package/plugins/system/src/index.cjs +1207 -86
  738. package/plugins/system-probe/plugin.json +8 -2
  739. package/plugins/system-probe/source/disk-path.ts +8 -0
  740. package/plugins/system-probe/source/index.ts +10 -5
  741. package/plugins/system-probe/source/machine-load.ts +33 -0
  742. package/plugins/system-probe/source/metrics.ts +6 -8
  743. package/plugins/system-probe/src/index.cjs +49 -16
  744. package/plugins/web/README.md +2 -2
  745. package/plugins/web/plugin.json +8 -0
  746. package/runtime.config.schema.json +25 -1
  747. package/src/runtime/README.md +12 -2
  748. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +0 -2
  749. package/dist/src/web-ui/system-host-setup/companion-windows.js +0 -108
  750. package/docs/publishing.md +0 -167
@@ -1,6 +1,6 @@
1
1
  /** Complete grammar is supplied as bounded passive evidence by prepare_draft. */
2
- export declare const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose each tool's documented output channel: text may be counts/status only; data without pointer passes the whole structured result when provided. Use data pointers only for known fields; agents need declared JSON output for data bindings. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
2
+ export declare const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
3
3
  export declare const AUTOMATION_BUILDER_CREATE_SUMMARY = "Create the entire connected automation from settings and ordered steps in one write; Runtime generates IDs and positions. Discover with browse_catalog, then prepare_draft for exact schemas and the authoring reference for planJson. Returns revision 1, generated IDs and the exact saved draft for inspection; no empty draft or separate step edits are needed. Saves only a draft; the user grants permissions, publishes and runs it.";
4
4
  export declare const AUTOMATION_BUILDER_APPLY_SUMMARY = "Save related edits atomically. Use the saved draft from read_draft or a builder receipt, with its revision as expectedRevision. operationRefs is the full inventory: select refs needed within preparation.operationRefLimit; use separate prepare_draft reads if needed. Returns the saved draft without another read. Invalid/stale plans save nothing. Single-field edits use this operation too. Users retain permission, publication and run control.";
5
5
  /** Creation describes workflow content; the capability compiles mechanical mutation structure. */
6
- export declare const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose each operation's output channel: text may be a count/status summary; data without pointer passes its whole structured result when provided. Field pointers require known fields. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
6
+ export declare const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
@@ -1,6 +1,6 @@
1
1
  /** Complete grammar is supplied as bounded passive evidence by prepare_draft. */
2
- export const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose each tool's documented output channel: text may be counts/status only; data without pointer passes the whole structured result when provided. Use data pointers only for known fields; agents need declared JSON output for data bindings. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
2
+ export const AUTOMATION_BUILDER_PAYLOAD_INSTRUCTIONS = "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
3
3
  export const AUTOMATION_BUILDER_CREATE_SUMMARY = "Create the entire connected automation from settings and ordered steps in one write; Runtime generates IDs and positions. Discover with browse_catalog, then prepare_draft for exact schemas and the authoring reference for planJson. Returns revision 1, generated IDs and the exact saved draft for inspection; no empty draft or separate step edits are needed. Saves only a draft; the user grants permissions, publishes and runs it.";
4
4
  export const AUTOMATION_BUILDER_APPLY_SUMMARY = "Save related edits atomically. Use the saved draft from read_draft or a builder receipt, with its revision as expectedRevision. operationRefs is the full inventory: select refs needed within preparation.operationRefLimit; use separate prepare_draft reads if needed. Returns the saved draft without another read. Invalid/stale plans save nothing. Single-field edits use this operation too. Users retain permission, publication and run control.";
5
5
  /** Creation describes workflow content; the capability compiles mechanical mutation structure. */
6
- export const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose each operation's output channel: text may be a count/status summary; data without pointer passes its whole structured result when provided. Field pointers require known fields. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
6
+ export const AUTOMATION_BUILDER_CREATION_INSTRUCTIONS = "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
@@ -22,7 +22,7 @@ export declare const automationBuilderToolContract: {
22
22
  };
23
23
  readonly selectionControlIds: readonly ["title"];
24
24
  readonly payload: {
25
- readonly instructions: "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose each operation's output channel: text may be a count/status summary; data without pointer passes its whole structured result when provided. Field pointers require known fields. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
25
+ readonly instructions: "Return only JSON using {\"version\":1,\"settings\":{...},\"steps\":[{\"key\":\"first\",\"kind\":\"tool\"|\"agent\",...}]}. Follow authoringReference.createPlanExample and creationRules. settings is optional; steps are ordered with unique keys. Runtime generates IDs, parents, indices and mutation wrappers. Bind prior $key results explicitly. Tool steps need title and exact operation; agent steps need title, exact modelProfileId and prompt. Use documented defaults and tool schemas. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Result and acceptance are sibling agent fields. A parallel step is {key,kind:parallel,branches:[stepArrays]}. Leave unspecified timing to the user. Save only an inactive draft; never execute future steps.";
26
26
  readonly kind: "raw_text";
27
27
  readonly param: "planJson";
28
28
  readonly minBytes: 2;
@@ -59,7 +59,7 @@ export declare const automationBuilderToolContract: {
59
59
  readonly param: "planJson";
60
60
  readonly minBytes: 2;
61
61
  readonly maxBytes: number;
62
- readonly instructions: "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose each tool's documented output channel: text may be counts/status only; data without pointer passes the whole structured result when provided. Use data pointers only for known fields; agents need declared JSON output for data bindings. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
62
+ readonly instructions: "Return only JSON following authoringReference from prepare_draft. Use version:1 with commands:[{as,mutation}] for existing drafts. Save all related changes together; new nodes omit id and use earlier aliases in bindings. Outputs never pass implicitly. Agent inputs and tool controls are binding maps; payload is a separate binding. Match exact operation schemas and model IDs. Choose output channels using the selected operation.outputChannels and authoringReference.bindings. Agents need declared JSON results for data. Inputs, limits, controls and selected tools replace their entire field. Never invent schedules or execute future steps.";
63
63
  };
64
64
  }];
65
65
  };
@@ -147,7 +147,7 @@ export async function readAutomationAuthoringCatalogOperation(service, automatio
147
147
  const selected = catalog.grantableOperations.find(matchesReference);
148
148
  if (!selected)
149
149
  throw new Error("automation_catalog_operation_not_found");
150
- const { fixedParams: _fixedParams, ...operation } = selected;
150
+ const { fixedParams: _fixedParams, outputChannels: _outputChannels, ...operation } = selected;
151
151
  return {
152
152
  kind: "automation_authoring_catalog_operation_v1",
153
153
  catalogScope: automationAuthoringCatalogScope(automationId),
@@ -21,6 +21,7 @@ export declare function readAutomationAuthoringPreparation(service: CatalogServi
21
21
  operationId: string;
22
22
  contractVersion: number;
23
23
  label: string;
24
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOperation["outputChannels"];
24
25
  pluginName?: string;
25
26
  catalogGroups: readonly import("../../../capabilities/tool-types.js").ToolCatalogGroup[];
26
27
  toolDescription?: string;
@@ -106,7 +107,7 @@ export declare function readAutomationAuthoringPreparation(service: CatalogServi
106
107
  readonly steps: readonly [{
107
108
  readonly key: "evidence";
108
109
  readonly kind: "tool";
109
- readonly title: "Read structured evidence";
110
+ readonly title: "Read text evidence";
110
111
  readonly operation: {
111
112
  readonly toolName: "catalog_tool";
112
113
  readonly operationId: "catalog_operation";
@@ -122,7 +123,7 @@ export declare function readAutomationAuthoringPreparation(service: CatalogServi
122
123
  readonly evidence: {
123
124
  readonly kind: "node_result";
124
125
  readonly nodeId: "$evidence";
125
- readonly select: "data";
126
+ readonly select: "text";
126
127
  };
127
128
  };
128
129
  }];
@@ -385,10 +386,15 @@ export declare function readAutomationAuthoringPreparation(service: CatalogServi
385
386
  };
386
387
  };
387
388
  readonly channels: {
388
- readonly text: "Tool display output; may be counts/status only, not serialized data.";
389
- readonly data: "Structured tool output, when provided. Omit pointer to pass it whole, without knowing field names.";
389
+ readonly text: "Saved text.";
390
+ readonly data: "Separate optional JSON; no implicit Text channel.";
390
391
  };
391
- readonly policy: "Use literal for constants, run_input for definition.inputs. node_result needs a succeeded earlier node; no implicit output. Select the operation's documented channel: data for records/ids, text when sufficient. Optional data-only RFC6901 pointer: /field, /items/0; escape ~ as ~0 and / as ~1. Never invent fields or execute future steps to inspect output.";
392
+ readonly outputChannels: {
393
+ content: string;
394
+ metadata: string;
395
+ conditional: string;
396
+ };
397
+ readonly policy: "literal=constants; run_input=definition.inputs; node_result needs prior success. Follow operation.outputChannels; absent=unknown. Whole data needs no pointer. RFC6901 pointers need documented fields (/items/0; ~ as ~0, / as ~1). Never execute steps for output discovery.";
392
398
  readonly files: "run_file resolves a new file for each run under its working directory; fileName is one portable filename, no path. source_files requires a configured source and an agent consumer. source_file index selects the frozen batch entry; field=snapshot_path|original_path|version.";
393
399
  readonly parallel: "branch_results is agent-only after the referenced parallel join; it supplies each branch's settled tail output/status. A failed/skipped source has no successful node_result for downstream bindings.";
394
400
  };
@@ -110,7 +110,7 @@ async function execute(service, params) {
110
110
  return { kind: "automation_authoring_catalog_v1", grantsPermissions: false,
111
111
  catalogScope: automationAuthoringCatalogScope(automationId),
112
112
  permissions: AUTOMATION_AUTHORING_REFERENCE.permissions,
113
- operations: catalog.grantableOperations.map(({ fixedParams: _fixedParams, ...operation }) => operation),
113
+ operations: catalog.grantableOperations.map(({ fixedParams: _fixedParams, outputChannels: _outputChannels, ...operation }) => operation),
114
114
  grantedOperations: catalog.operations.map(({ toolName, operationId, contractVersion }) => ({ toolName, operationId, contractVersion })),
115
115
  models: catalog.models,
116
116
  savedAgents: catalog.savedAgents.map((agent) => ({
@@ -1,8 +1,10 @@
1
1
  import { type ToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
2
2
  import type { RegisteredToolNormalInvocation, ToolDefinition } from "../../capabilities/tool-types.js";
3
3
  import type { ToolRegistry } from "../ports.js";
4
+ import { type RuntimeModelPluginConfig } from "../config/model-plugin-config.js";
4
5
  /** One lazy registration snapshot; any declared restriction wins across projections. */
5
- export declare function captureRequestPermissionCatalog(registry: ToolRegistry, mode: ToolPermissionMode): Readonly<{
6
+ export declare function captureRequestPermissionCatalog(registry: ToolRegistry, mode: ToolPermissionMode, modelPlugins?: RuntimeModelPluginConfig): Readonly<{
7
+ isRequestToolBlockedForModel: (name: string) => boolean;
6
8
  listDefinitions: () => ToolDefinition[];
7
9
  listNormalInvocations: () => readonly RegisteredToolNormalInvocation[] | undefined;
8
10
  getDefinition: (name: string) => ToolDefinition | undefined;
@@ -1,13 +1,22 @@
1
1
  import { permitsRequiredToolMode, } from "../../capabilities/tool-permission-mode.js";
2
+ import { captureModelPluginConfig, } from "../config/model-plugin-config.js";
3
+ import { matchesToolSelectionId } from "../../shared/tool-selection.js";
2
4
  /** One lazy registration snapshot; any declared restriction wins across projections. */
3
- export function captureRequestPermissionCatalog(registry, mode) {
5
+ export function captureRequestPermissionCatalog(registry, mode, modelPlugins) {
6
+ const modelDeniedSelectors = captureModelPluginConfig(modelPlugins)?.deny ?? [];
4
7
  const definitions = Object.freeze([...registry.listDefinitions()]);
5
8
  const definitionByName = new Map(definitions.map((definition) => [definition.name, definition]));
6
9
  let registrations;
7
10
  let resolvedRegistrations = false;
8
11
  const registeredAllowedNames = new Set();
9
12
  const registeredDeniedNames = new Set();
10
- const permitsDefinition = (definition) => permitsRequiredToolMode(mode, definition.requiredPermissionMode);
13
+ const registeredModelDeniedNames = new Set();
14
+ const isDefinitionBlockedForModel = (definition) => modelDeniedSelectors.some((selector) => matchesToolSelectionId(definition.pluginName ?? "", definition.name, selector));
15
+ const permitsDefinition = (definition) => {
16
+ if (isDefinitionBlockedForModel(definition))
17
+ return false;
18
+ return permitsRequiredToolMode(mode, definition.requiredPermissionMode);
19
+ };
11
20
  const permitsRegistration = (registration) => {
12
21
  const definition = definitionByName.get(registration.toolName);
13
22
  if (definition && !permitsDefinition(definition))
@@ -23,6 +32,8 @@ export function captureRequestPermissionCatalog(registry, mode) {
23
32
  return undefined;
24
33
  }
25
34
  for (const registration of source) {
35
+ if (isDefinitionBlockedForModel(registration.definition))
36
+ registeredModelDeniedNames.add(registration.toolName);
26
37
  const names = permitsRegistration(registration)
27
38
  ? registeredAllowedNames
28
39
  : registeredDeniedNames;
@@ -41,7 +52,15 @@ export function captureRequestPermissionCatalog(registry, mode) {
41
52
  return permitsDefinition(definition);
42
53
  return registeredAllowedNames.has(name);
43
54
  }
55
+ function isRequestToolBlockedForModel(name) {
56
+ resolveRegistrations();
57
+ if (registeredModelDeniedNames.has(name))
58
+ return true;
59
+ const definition = definitionByName.get(name);
60
+ return definition !== undefined && isDefinitionBlockedForModel(definition);
61
+ }
44
62
  return Object.freeze({
63
+ isRequestToolBlockedForModel,
45
64
  listDefinitions: () => definitions.filter(({ name }) => isRequestToolAvailable(name)),
46
65
  listNormalInvocations: resolveRegistrations,
47
66
  getDefinition: (name) => isRequestToolAvailable(name) ? definitionByName.get(name) : undefined,
@@ -1,4 +1,5 @@
1
1
  import { type ToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
2
2
  import type { ToolRegistry } from "../ports.js";
3
+ import type { RuntimeModelPluginConfig } from "../config/model-plugin-config.js";
3
4
  /** Captures user authority once; all discovery and execution use the same gate. */
4
- export declare function restrictToolRegistryToRequestMode(registry: ToolRegistry, mode: ToolPermissionMode): ToolRegistry;
5
+ export declare function restrictToolRegistryToRequestMode(registry: ToolRegistry, mode: ToolPermissionMode, modelPlugins?: RuntimeModelPluginConfig): ToolRegistry;
@@ -1,16 +1,24 @@
1
1
  import { captureRequestPermissionCatalog } from "./request-permission-catalog.js";
2
2
  /** Captures user authority once; all discovery and execution use the same gate. */
3
- export function restrictToolRegistryToRequestMode(registry, mode) {
4
- const catalog = captureRequestPermissionCatalog(registry, mode);
3
+ export function restrictToolRegistryToRequestMode(registry, mode, modelPlugins) {
4
+ const catalog = captureRequestPermissionCatalog(registry, mode, modelPlugins);
5
5
  const isRequestToolAvailable = catalog.isRequestToolAvailable;
6
- const rejectUnavailableTool = (tool) => ({
7
- ok: false,
8
- tool,
9
- output: "This tool is unavailable for the captured request permission mode.",
10
- producedNewInformation: false,
11
- error: "This tool is unavailable for the captured request permission mode.",
12
- errorCode: "tool_permission_mode_required",
13
- });
6
+ const rejectUnavailableTool = (tool) => {
7
+ const blockedForModel = catalog.isRequestToolBlockedForModel(tool);
8
+ const message = blockedForModel
9
+ ? "This tool is blocked for the selected request model profile."
10
+ : "This tool is unavailable for the captured request permission mode.";
11
+ return {
12
+ ok: false,
13
+ tool,
14
+ output: message,
15
+ producedNewInformation: false,
16
+ error: message,
17
+ errorCode: blockedForModel
18
+ ? "tool_model_policy_denied"
19
+ : "tool_permission_mode_required",
20
+ };
21
+ };
14
22
  const bindAuthority = (state) => ({
15
23
  ...state,
16
24
  requestContext: Object.freeze({
@@ -1,5 +1,6 @@
1
1
  import type { ToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
2
2
  import type { RuntimeConfig, ToolRegistry } from "../ports.js";
3
+ import type { RuntimeModelPluginConfig } from "../config/model-plugin-config.js";
3
4
  import type { BoundRequestModelInvocationContext } from "../request/contracts.js";
4
5
  import type { ToolRequestAttachment } from "../../capabilities/tool-types.js";
5
6
  /**
@@ -10,6 +11,7 @@ import type { ToolRequestAttachment } from "../../capabilities/tool-types.js";
10
11
  export declare function createRequestRuntimeToolRegistry(params: Readonly<{
11
12
  request: BoundRequestModelInvocationContext;
12
13
  toolPermissionMode?: ToolPermissionMode;
14
+ modelPlugins?: RuntimeModelPluginConfig;
13
15
  requestAttachments?: readonly ToolRequestAttachment[];
14
16
  runtimeConfig?: RuntimeConfig;
15
17
  requestWorkingDirectory?: string;
@@ -9,7 +9,7 @@ import { bindRequestToolRegistry } from "./request-bound-tool-registry.js";
9
9
  */
10
10
  export function createRequestRuntimeToolRegistry(params) {
11
11
  const registry = restrictToolRegistryToRequestMode(params.toolRegistryOverride ??
12
- createConfiguredToolRegistry(params.runtimeConfig, []), params.toolPermissionMode ?? "ask");
12
+ createConfiguredToolRegistry(params.runtimeConfig, []), params.toolPermissionMode ?? "ask", params.modelPlugins);
13
13
  return bindRequestToolRegistry({
14
14
  registry,
15
15
  modelInvoker: createRequestToolModelInvoker(params.request),
@@ -1,6 +1,7 @@
1
1
  export declare const scheduleCreateOperations: readonly [Readonly<{
2
2
  operationId: string;
3
3
  summary: string;
4
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOutputChannels;
4
5
  input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
5
6
  selectionControlIds?: readonly string[];
6
7
  fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
@@ -11,6 +12,7 @@ export declare const scheduleCreateOperations: readonly [Readonly<{
11
12
  }>, Readonly<{
12
13
  operationId: string;
13
14
  summary: string;
15
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOutputChannels;
14
16
  input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
15
17
  selectionControlIds?: readonly string[];
16
18
  fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
@@ -21,6 +23,7 @@ export declare const scheduleCreateOperations: readonly [Readonly<{
21
23
  }>, Readonly<{
22
24
  operationId: string;
23
25
  summary: string;
26
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOutputChannels;
24
27
  input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
25
28
  selectionControlIds?: readonly string[];
26
29
  fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
@@ -31,6 +34,7 @@ export declare const scheduleCreateOperations: readonly [Readonly<{
31
34
  }>, Readonly<{
32
35
  operationId: string;
33
36
  summary: string;
37
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOutputChannels;
34
38
  input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
35
39
  selectionControlIds?: readonly string[];
36
40
  fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
@@ -41,6 +45,7 @@ export declare const scheduleCreateOperations: readonly [Readonly<{
41
45
  }>, Readonly<{
42
46
  operationId: string;
43
47
  summary: string;
48
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOutputChannels;
44
49
  input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
45
50
  selectionControlIds?: readonly string[];
46
51
  fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
@@ -51,6 +56,7 @@ export declare const scheduleCreateOperations: readonly [Readonly<{
51
56
  }>, Readonly<{
52
57
  operationId: string;
53
58
  summary: string;
59
+ outputChannels?: import("../../../capabilities/tool-types.js").ToolNormalInvocationOutputChannels;
54
60
  input: import("../../../capabilities/tool-types.js").ToolNormalInvocationInput;
55
61
  selectionControlIds?: readonly string[];
56
62
  fixedParams?: Readonly<Record<string, import("../../../capabilities/tool-types.js").ToolNormalInvocationFixedValue>>;
@@ -1,7 +1,7 @@
1
1
  import { readFileSync } from "node:fs";
2
2
  import { dirname, isAbsolute, resolve } from "node:path";
3
3
  import { DEFAULT_RUNTIME_LOGGING_ENABLED, DEFAULT_RUNTIME_LOG_ROTATION_CONFIG, } from "./constants.js";
4
- import { isRequestExecutionPolicyId } from "./model-execution-policy.js";
4
+ import { buildRuntimeModelExecutionPolicy } from "./model-execution-policy.js";
5
5
  import { RuntimeConfigValidationError, validateModelProfileConfig, } from "./validation.js";
6
6
  import { readConfigPositiveInt, isRecord, readNestedConfigString, readNestedConfigStringArray, readOptionalBoolean, readOptionalStringMap, } from "./utils.js";
7
7
  export function compactTimeouts(timeouts) {
@@ -56,7 +56,9 @@ export function buildPluginConfig(config) {
56
56
  const enabled = readOptionalBoolean(config.plugins, "enabled");
57
57
  const allow = readNestedConfigStringArray(config.plugins, "allow");
58
58
  const deny = readNestedConfigStringArray(config.plugins, "deny");
59
+ const disabledPluginIds = readNestedConfigStringArray(config.plugins, "disabledPluginIds");
59
60
  const pluginConfig = {
61
+ ...(disabledPluginIds ? { disabledPluginIds } : {}),
60
62
  ...(enabled !== undefined ? { enabled } : {}),
61
63
  ...(allow ? { allow } : {}),
62
64
  ...(deny ? { deny } : {}),
@@ -432,10 +434,9 @@ function buildModelProfiles(profiles, options) {
432
434
  if (modelProfile) {
433
435
  gatewayEntries.push([profileId, modelProfile]);
434
436
  }
435
- const execution = isRecord(source.execution) ? source.execution : undefined;
436
- if (execution && isRequestExecutionPolicyId(execution.policy)) {
437
- executionEntries.push([profileId, { policy: execution.policy }]);
438
- }
437
+ const execution = buildRuntimeModelExecutionPolicy(source);
438
+ if (execution)
439
+ executionEntries.push([profileId, execution]);
439
440
  }
440
441
  return {
441
442
  ...(gatewayEntries.length > 0
@@ -1,3 +1,4 @@
1
+ import { validateProfileContextCapacity, } from "./model-context-capacity.js";
1
2
  import { RuntimeConfigValidationError } from "./validation.js";
2
3
  function hasConfiguredProfile(profiles, profileId) {
3
4
  return !!profileId && Object.hasOwn(profiles, profileId);
@@ -8,40 +9,6 @@ function hasConfiguredInvocationProfile(invocationProfiles, profileId) {
8
9
  function hasConfiguredCalibrationSlot(profiles, slotId) {
9
10
  return Object.values(profiles).some((profile) => Object.hasOwn(profile.calibration ?? {}, slotId));
10
11
  }
11
- function readPositiveSafeInteger(value) {
12
- return typeof value === "number" &&
13
- Number.isSafeInteger(value) &&
14
- value > 0
15
- ? value
16
- : undefined;
17
- }
18
- function validateProfileContextCapacity(params) {
19
- const field = `models.profiles.${params.profileId}.contextWindowTokens`;
20
- const declared = readPositiveSafeInteger(params.profile.contextWindowTokens);
21
- if (declared === undefined) {
22
- params.issues.push(`${field} must declare the physical context-window capacity as a positive safe integer`);
23
- return;
24
- }
25
- let effective = declared;
26
- if (params.providerType === "ollama" &&
27
- Object.hasOwn(params.profile.options ?? {}, "num_ctx")) {
28
- const allocated = readPositiveSafeInteger(params.profile.options?.num_ctx);
29
- if (allocated === undefined) {
30
- params.issues.push(`models.profiles.${params.profileId}.options.num_ctx must be a positive safe integer when configured`);
31
- return;
32
- }
33
- effective = Math.min(effective, allocated);
34
- }
35
- const profileFormatReserve = params.profile.context?.formatTokenAccounting?.fixedOverheadTokens ?? 0;
36
- const defaultFormatReserve = params.defaultContext?.formatTokenAccounting?.fixedOverheadTokens ?? 0;
37
- const configuredReserve = params.runnerConfig.context.outputReserveTokens +
38
- params.runnerConfig.context.safetyReserveTokens +
39
- params.runnerConfig.context.attachmentReserveTokens +
40
- Math.max(profileFormatReserve, defaultFormatReserve);
41
- if (configuredReserve >= effective) {
42
- params.issues.push(`models.profiles.${params.profileId} effective context window ${effective} must exceed configured output, safety, attachment, and format reserves ${configuredReserve}`);
43
- }
44
- }
45
12
  function validateProfileReference(params) {
46
13
  if (!hasConfiguredProfile(params.profiles, params.profileId)) {
47
14
  params.issues.push(`${params.field} references unknown model profile ${params.profileId}`);
@@ -73,6 +40,7 @@ function validateStepTarget(params) {
73
40
  */
74
41
  export function validateEffectiveRuntimeModelConfig(params) {
75
42
  const issues = [];
43
+ const capacityIssues = [];
76
44
  const providers = params.modelPolicy?.providers ?? {};
77
45
  const profiles = params.modelPolicy?.profiles ?? {};
78
46
  const invocationProfiles = params.modelPolicy?.invocationProfiles ?? {};
@@ -92,6 +60,7 @@ export function validateEffectiveRuntimeModelConfig(params) {
92
60
  }
93
61
  validateProfileContextCapacity({
94
62
  issues,
63
+ capacityIssues,
95
64
  profileId,
96
65
  profile,
97
66
  ...(providerId && providers[providerId]
@@ -169,6 +138,6 @@ export function validateEffectiveRuntimeModelConfig(params) {
169
138
  });
170
139
  }
171
140
  if (issues.length > 0) {
172
- throw new RuntimeConfigValidationError(params.configPath, issues);
141
+ throw new RuntimeConfigValidationError(params.configPath, issues, capacityIssues);
173
142
  }
174
143
  }
@@ -137,6 +137,10 @@ export const RUNTIME_CONFIG_SCHEMA_FIELDS = [
137
137
  env: [field.env],
138
138
  description: field.description,
139
139
  })),
140
+ {
141
+ path: "webUi.pageSize", type: "positive-number", defaultValue: "20",
142
+ description: "Sessions and messages per Web UI history page, including SPARK.",
143
+ },
140
144
  {
141
145
  path: "webUi.openOnRuntimeServiceStart",
142
146
  type: "boolean",
@@ -185,6 +189,12 @@ export const RUNTIME_CONFIG_SCHEMA_FIELDS = [
185
189
  defaultValue: "[]",
186
190
  description: "Installed plugin or capability ids denied after applying the allow-list.",
187
191
  },
192
+ {
193
+ path: "plugins.disabledPluginIds",
194
+ type: "string-array",
195
+ defaultValue: "[]",
196
+ description: "Exact plugin ids disabled independently of tool selectors. Entries are literal ids, not wildcards.",
197
+ },
188
198
  {
189
199
  path: "models.providers",
190
200
  type: "object-map",
@@ -210,6 +220,11 @@ export const RUNTIME_CONFIG_SCHEMA_FIELDS = [
210
220
  type: "object-map",
211
221
  description: "Per-model calibration slots keyed by semantic slot id. Runtime step config maps modelStep names to these slot ids. Slots may tune timeout, generation, context, format, and short model-specific instructions.",
212
222
  },
223
+ {
224
+ path: "models.profiles.<profileId>.plugins.deny",
225
+ type: "string-array",
226
+ description: "Additional denied plugin or capability selectors for requests selected by this model profile, including configRef profiles. Global plugin restrictions still apply.",
227
+ },
213
228
  {
214
229
  path: "models.profiles.<profileId>.execution.policy",
215
230
  type: "non-empty-string",
@@ -0,0 +1,20 @@
1
+ import type { ModelContextConfig, ModelGatewayPolicyConfig } from "../../model-gateway/types.js";
2
+ import type { RequestRunnerConfig } from "./runner/contracts.js";
3
+ export type ModelContextCapacityIssue = Readonly<{
4
+ profileId: string;
5
+ declaredTokens: number;
6
+ effectiveTokens: number;
7
+ reservedTokens: number;
8
+ minimumTokens: number;
9
+ allocationTokens?: number;
10
+ }>;
11
+ /** Keeps the admission invariant and its diagnostic evidence in one owner. */
12
+ export declare function validateProfileContextCapacity(params: {
13
+ issues: string[];
14
+ capacityIssues: ModelContextCapacityIssue[];
15
+ profileId: string;
16
+ profile: NonNullable<ModelGatewayPolicyConfig["profiles"]>[string];
17
+ providerType?: string;
18
+ runnerConfig: RequestRunnerConfig;
19
+ defaultContext?: ModelContextConfig;
20
+ }): void;
@@ -0,0 +1,55 @@
1
+ function readPositiveContextCapacity(value) {
2
+ if (typeof value !== "number")
3
+ return undefined;
4
+ if (!Number.isSafeInteger(value))
5
+ return undefined;
6
+ if (value <= 0)
7
+ return undefined;
8
+ return value;
9
+ }
10
+ function hasConfiguredOllamaContextAllocation(providerType, profile) {
11
+ if (providerType !== "ollama")
12
+ return false;
13
+ return Object.hasOwn(profile.options ?? {}, "num_ctx");
14
+ }
15
+ function hasInsufficientModelContextCapacity(effectiveTokens, reservedTokens) {
16
+ return reservedTokens >= effectiveTokens;
17
+ }
18
+ /** Keeps the admission invariant and its diagnostic evidence in one owner. */
19
+ export function validateProfileContextCapacity(params) {
20
+ const field = `models.profiles.${params.profileId}.contextWindowTokens`;
21
+ const declaredTokens = readPositiveContextCapacity(params.profile.contextWindowTokens);
22
+ if (declaredTokens === undefined) {
23
+ params.issues.push(`${field} must declare the physical context-window capacity as a positive safe integer`);
24
+ return;
25
+ }
26
+ const hasAllocation = hasConfiguredOllamaContextAllocation(params.providerType, params.profile);
27
+ const allocationTokens = hasAllocation
28
+ ? readPositiveContextCapacity(params.profile.options?.num_ctx)
29
+ : undefined;
30
+ const hasInvalidOllamaAllocation = hasAllocation && allocationTokens === undefined;
31
+ if (hasInvalidOllamaAllocation) {
32
+ params.issues.push(`models.profiles.${params.profileId}.options.num_ctx must be a positive safe integer when configured`);
33
+ return;
34
+ }
35
+ const effectiveTokens = allocationTokens === undefined
36
+ ? declaredTokens
37
+ : Math.min(declaredTokens, allocationTokens);
38
+ const profileFormatReserve = params.profile.context?.formatTokenAccounting?.fixedOverheadTokens ?? 0;
39
+ const defaultFormatReserve = params.defaultContext?.formatTokenAccounting?.fixedOverheadTokens ?? 0;
40
+ const reservedTokens = params.runnerConfig.context.outputReserveTokens +
41
+ params.runnerConfig.context.safetyReserveTokens +
42
+ params.runnerConfig.context.attachmentReserveTokens +
43
+ Math.max(profileFormatReserve, defaultFormatReserve);
44
+ if (!hasInsufficientModelContextCapacity(effectiveTokens, reservedTokens))
45
+ return;
46
+ params.issues.push(`models.profiles.${params.profileId} effective context window ${effectiveTokens} must exceed configured output, safety, attachment, and format reserves ${reservedTokens}`);
47
+ params.capacityIssues.push({
48
+ profileId: params.profileId,
49
+ declaredTokens,
50
+ effectiveTokens,
51
+ reservedTokens,
52
+ minimumTokens: reservedTokens + 1,
53
+ ...(allocationTokens === undefined ? {} : { allocationTokens }),
54
+ });
55
+ }
@@ -1,13 +1,17 @@
1
+ import { type RuntimeModelPluginConfig } from "./model-plugin-config.js";
1
2
  export declare const REQUEST_EXECUTION_POLICY_IDS: readonly ["supervisor-worker-v1", "execution-agent-v1"];
2
3
  export type RequestExecutionPolicyId = (typeof REQUEST_EXECUTION_POLICY_IDS)[number];
3
4
  export declare const DEFAULT_REQUEST_EXECUTION_POLICY_ID: RequestExecutionPolicyId;
4
5
  export type RuntimeModelExecutionPolicy = Readonly<{
5
- policy: RequestExecutionPolicyId;
6
+ policy?: RequestExecutionPolicyId;
7
+ plugins?: RuntimeModelPluginConfig;
6
8
  }>;
7
9
  export type RuntimeModelExecutionPolicies = Readonly<Record<string, RuntimeModelExecutionPolicy>>;
8
10
  export type RequestExecutionPolicySelection = Readonly<{
9
11
  policy: RequestExecutionPolicyId;
10
12
  primaryProfileId?: string;
13
+ plugins?: RuntimeModelPluginConfig;
11
14
  source: "model_profile" | "default";
12
15
  }>;
13
16
  export declare function isRequestExecutionPolicyId(value: unknown): value is RequestExecutionPolicyId;
17
+ export declare function buildRuntimeModelExecutionPolicy(source: Record<string, unknown>): RuntimeModelExecutionPolicy | undefined;
@@ -1,3 +1,5 @@
1
+ import { buildModelPluginConfig, } from "./model-plugin-config.js";
2
+ import { isRecord } from "./utils.js";
1
3
  export const REQUEST_EXECUTION_POLICY_IDS = [
2
4
  "supervisor-worker-v1",
3
5
  "execution-agent-v1",
@@ -6,3 +8,17 @@ export const DEFAULT_REQUEST_EXECUTION_POLICY_ID = "supervisor-worker-v1";
6
8
  export function isRequestExecutionPolicyId(value) {
7
9
  return REQUEST_EXECUTION_POLICY_IDS.some((policyId) => policyId === value);
8
10
  }
11
+ export function buildRuntimeModelExecutionPolicy(source) {
12
+ const execution = isRecord(source.execution) ? source.execution : undefined;
13
+ const configuredPolicy = execution?.policy;
14
+ const policy = isRequestExecutionPolicyId(configuredPolicy)
15
+ ? configuredPolicy
16
+ : undefined;
17
+ const plugins = buildModelPluginConfig(source.plugins);
18
+ if (!policy && !plugins)
19
+ return undefined;
20
+ return {
21
+ ...(policy ? { policy } : {}),
22
+ ...(plugins ? { plugins } : {}),
23
+ };
24
+ }
@@ -0,0 +1,8 @@
1
+ /** Runtime-only restrictions for the canonical request model profile. */
2
+ export type RuntimeModelPluginConfig = Readonly<{
3
+ deny?: readonly string[];
4
+ }>;
5
+ export declare function captureModelPluginConfig(config: RuntimeModelPluginConfig | undefined): RuntimeModelPluginConfig | undefined;
6
+ export declare function buildModelPluginConfig(value: unknown): RuntimeModelPluginConfig | undefined;
7
+ export declare function validateModelPluginConfig(issues: string[], profile: Record<string, unknown>, displayKey: string): void;
8
+ export declare function modelPluginConfigSchema(): Record<string, unknown>;
@@ -0,0 +1,40 @@
1
+ import { readNestedConfigStringArray } from "./utils.js";
2
+ import { validateOptionalObject, validateOptionalStringArray, } from "./validation/runtime-config-field-validation.js";
3
+ export function captureModelPluginConfig(config) {
4
+ const deny = readNestedConfigStringArray(config, "deny");
5
+ if (!deny)
6
+ return undefined;
7
+ return Object.freeze({ deny: Object.freeze(deny.sort()) });
8
+ }
9
+ export function buildModelPluginConfig(value) {
10
+ const deny = readNestedConfigStringArray(value, "deny");
11
+ return captureModelPluginConfig(deny ? { deny } : undefined);
12
+ }
13
+ function isSupportedModelPluginField(key) {
14
+ return key === "deny";
15
+ }
16
+ export function validateModelPluginConfig(issues, profile, displayKey) {
17
+ const plugins = validateOptionalObject(issues, profile, "plugins", `${displayKey}.plugins`);
18
+ if (!plugins)
19
+ return;
20
+ for (const key of Object.keys(plugins)) {
21
+ if (isSupportedModelPluginField(key))
22
+ continue;
23
+ issues.push(`${displayKey}.plugins.${key} is not a supported configuration field`);
24
+ }
25
+ validateOptionalStringArray(issues, plugins, "deny", `${displayKey}.plugins.deny`);
26
+ }
27
+ export function modelPluginConfigSchema() {
28
+ return {
29
+ type: "object",
30
+ description: "Runtime-only restrictions applied to the entire request selected by this model profile. Global plugin restrictions still apply.",
31
+ properties: {
32
+ deny: {
33
+ type: "array",
34
+ items: { type: "string" },
35
+ description: "Denied plugin IDs, capability names, plugin.capability selectors, or *. These restrictions do not depend on per-step model overrides.",
36
+ },
37
+ },
38
+ additionalProperties: false,
39
+ };
40
+ }