@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
@@ -9,6 +9,76 @@ configuration. Ask and Full retain exact-action approvals; Full+ retains its nor
9
9
  approval policy. OS accessibility, screen-recording and portal permissions still
10
10
  apply. An available shell or connected companion does not prove desktop readiness.
11
11
 
12
+ ## Command working directory
13
+
14
+ On native Windows, `system_command.cwd` accepts the same logical paths as
15
+ `filesystem`: `.` and ordinary relative paths use the request's agent-work root;
16
+ `workspace/...` uses the configured workspace. The request-bound resolver checks
17
+ these roots and resolves the full directory before exact-action approval. Approval,
18
+ activity and execution use that same captured absolute path. Absolute paths retain
19
+ their existing target-OS meaning and may be outside those roots.
20
+
21
+ The request root is also retained across approval resume, even if the configured
22
+ agent-work root changes. The adapter does not rewrite the command or choose a tool
23
+ or execution strategy. Linux/macOS, WSL interop and Companion targeting retain the
24
+ existing absolute-cwd contract; no guest-to-host directory mapping is performed.
25
+
26
+ ## Local command output
27
+
28
+ Local `system_command` execution, including Windows through WSL interop, captures
29
+ stdout and stderr to private files under the plugin state directory. Temporary raw
30
+ disk storage is allowed inside this boundary. Once both streams reach natural EOF,
31
+ SYSTEM's independent secret detector checks their full text before any output read
32
+ or delivery. Suspected streams are replaced with `[REDACTED]`. An incomplete check,
33
+ invalid UTF-8 or scanner failure withholds output, attempts to remove raw stream
34
+ files and retains a safe process receipt.
35
+
36
+ There is no new total-output quota or truncation. Checking and final delivery still
37
+ materialize text in memory. The existing SDK context-text contract lets the Runtime
38
+ admit or compact the checked text using its normal model-context budget; even the
39
+ compaction model receives only checked text. Small clean results are unchanged.
40
+
41
+ `extensions["ai.abot.runtime"].settings.defaults.outputRetentionMs` in the plugin's
42
+ `plugin.json` controls retention; the default is seven days after capture completes. Cleanup protects active captures and removes expired
43
+ captures during plugin initialization and periodic maintenance, including raw
44
+ leftovers after a crash or interrupted cleanup. Removal is ordinary file cleanup,
45
+ not guaranteed forensic erasure. Reads do not renew
46
+ retention. Completed captures keep the retention recorded at creation across
47
+ Companion reconnects and later configuration changes. Each capture has an opaque
48
+ ID, byte counts and a saved process receipt;
49
+ files are private implementation storage, not user-authored artifacts or model
50
+ instructions. No wait/cancel operation or automatic command replay is added.
51
+
52
+ A storage failure before dispatch prevents the command from starting. A capture
53
+ write failure stops observation of that command and reports incomplete output;
54
+ external descendants are not assumed terminated. Delivery failures retain the
55
+ capture receipt, recorded helper PID, process status and exit code when available.
56
+ This does not grant a new model-facing operation for reading retained captures.
57
+
58
+ Application/target descriptions and launch results are checked before excerpts.
59
+ Sensitive actionable catalog identities are withheld instead of replaced by a
60
+ fabricated executable identifier. Input receipts retain their mechanical meaning.
61
+
62
+ ## Companion command output
63
+
64
+ Updated companions advertise `host_secret_protection_v1` and
65
+ `system_command_output_v1`. SYSTEM then uses private
66
+ capture/read/close operations over the existing connection: the Companion stores
67
+ checked streams in its private state directory using its own detector with the
68
+ capture implementation,
69
+ returns the process receipt, and serves 64 KiB byte chunks. SYSTEM verifies the
70
+ capture ID, stream, offset, byte count and SHA-256 before delivering text through
71
+ the existing context-text contract. UTF-8 characters may cross chunk boundaries.
72
+ The model receives one tool result; transport chunks do not invoke a model.
73
+
74
+ Output references belong to the authenticated Companion connection. Transfers
75
+ protect their captures from expiry until closed or disconnected; the configured
76
+ SYSTEM retention then continues on disk. A failed transfer preserves the command
77
+ receipt and never repeats execution. Companions missing protection or complete
78
+ command capture fail before dispatch with an upgrade-required result; there is no
79
+ unprotected legacy fallback. This transfer adds no model-facing tool, and final
80
+ text delivery still materializes the streams in memory.
81
+
12
82
  ## Shared connection
13
83
 
14
84
  Use **Home → Computer access** for one installation shared
@@ -94,9 +164,18 @@ request. Metadata remains within the ordinary tool-result budgets. A companion s
94
164
  64 KiB private chunks through the existing bounded local protocol; bytes never enter
95
165
  model-visible JSON output.
96
166
 
167
+ Before frame/media retention, each owner checks desktop/window/accessibility text
168
+ and diagnostic fields. Suspected text is masked and its associated image is
169
+ withheld; input that already occurred retains its dispatch receipt. Ordinary
170
+ images remain available. Pixel-only content is not inspected: OCR and additional
171
+ installation dependencies are deferred. Version 1 is best-effort known-indicator
172
+ protection, not a guarantee that an admitted image or text is free of secrets.
173
+
97
174
  The Runtime stores images in request-owned memory, projects them only to consumers
98
- of the original tool evidence, excludes them from history/provider traces, and
99
- disposes buffers and registered resources at request end or abort. A non-vision
175
+ of the original tool evidence, and excludes them from history/provider traces.
176
+ Approval-wait continuation snapshots may persist request-owned image bytes; the
177
+ owner's checks therefore precede media admission, not merely model projection.
178
+ Buffers and registered resources are disposed at request end or abort. A non-vision
100
179
  model receives an explicit image-input limitation and can still use available text
101
180
  observations. Companion frames are erased after transfer, replacement or close;
102
181
  abandoned native sessions have a bounded idle expiry and close on disconnection.
@@ -108,6 +187,3 @@ source compilation where available. They prove transport, identity, cancellation
108
187
  image lifetime and projection invariants. Interactive acceptance on each actual OS,
109
188
  permission configuration, compositor and provider remains a distinct live check;
110
189
  unit checks alone do not establish all native integrations work on a user's machine.
111
- The Windows helper has been compiled on Windows; its interactive behavior has not
112
- been exercised. macOS native compilation and interactive Linux/macOS checks remain
113
- unverified in this Windows/WSL development environment.
@@ -4,9 +4,18 @@
4
4
  "version": "1.0.0",
5
5
  "description": "System commands, applications and structured observation/control of existing user desktops across native and locally connected OS targets.",
6
6
  "extensions": {
7
+ "ai.abot.compatibility": {
8
+ "version": 1,
9
+ "runtimePlatforms": ["linux", "darwin", "win32"]
10
+ },
7
11
  "ai.abot.runtime": {
8
12
  "version": 1,
9
13
  "entrypoint": "./src/index.cjs",
14
+ "settings": {
15
+ "defaults": {
16
+ "outputRetentionMs": 604800000
17
+ }
18
+ },
10
19
  "catalogGroups": [
11
20
  "system"
12
21
  ],
@@ -76,7 +85,7 @@
76
85
  ],
77
86
  "operations": {
78
87
  "run_system_command": {
79
- "summary": "Run a shell command on an available OS target with absolute cwd in its namespace. The complete command, including inline file content, is limited to 4096 characters. File payload tools support larger bodies in the runtime-host namespace. Can read exposed application/browser text via native accessibility APIs, including signed-in pages. Verify the document and text. Capability references are not commands; exit zero is not effect evidence.",
88
+ "summary": "Run a shell command in the selected OS. cwd must be absolute; native Windows also accepts agent-work-relative paths and workspace/. The entire command is limited to 4096 characters; use file payload tools for larger bodies. Native accessibility APIs can read exposed app/browser text, including signed-in pages; verify the document and text. Capability references are not commands; exit zero is not effect evidence.",
80
89
  "input": {
81
90
  "type": "object",
82
91
  "additionalProperties": false,
@@ -16,7 +16,7 @@ When this catalog is insufficient, continue bounded, task-relevant inspection wi
16
16
 
17
17
  ## Execute the user's task
18
18
 
19
- system_command executes general system commands using Bash for Linux/macOS or PowerShell for Windows. Supply an absolute cwd in the target OS namespace; it may be outside the project. Commands can inspect or manage applications, processes, services, installations, settings, network and files for the user's task. They run with actual host identity; elevated=true requests the supported native privilege path. Linux needs existing noninteractive sudo authorization, macOS uses its native administrator dialog, and Windows needs an authorized elevated host. Never fabricate credentials or bypass an OS authorization prompt.
19
+ system_command executes general system commands using Bash for Linux/macOS or PowerShell for Windows. Supply an absolute cwd in the target OS namespace; it may be outside the project. On native Windows only, cwd also accepts the runtime filesystem namespace: `.` and relative paths start at the request agent-work root, and `workspace/...` selects the configured workspace. The adapter resolves that directory before approval. WSL interop and Companion still require an absolute target-OS path; no cross-OS path mapping is implied. Commands can inspect or manage applications, processes, services, installations, settings, network and files for the user's task. They run with actual host identity; elevated=true requests the supported native privilege path. Linux needs existing noninteractive sudo authorization, macOS uses its native administrator dialog, and Windows needs an authorized elevated host. Never fabricate credentials or bypass an OS authorization prompt.
20
20
 
21
21
  Use system_launch with the exact application identity returned by the target catalog; it revalidates that identity before dispatch. A catalog identity is not a raw executable path. There is no brand-specific application allowlist. Documented native invocations and further application control use system_command. Linux and Windows catalog identities do not define generic raw arguments; use the application's actual command interface when arguments are needed.
22
22
 
@@ -0,0 +1,47 @@
1
+ import { win32 } from "node:path";
2
+ import type {
3
+ RuntimeToolPathResolver,
4
+ ToolCall,
5
+ ToolCallAdapter,
6
+ } from "../../../src/plugin-sdk/index.js";
7
+ import type { SystemTargetSnapshot } from "./request-target-snapshot.js";
8
+
9
+ /** Resolve before exact-action approval; execution consumes the captured absolute cwd. */
10
+ export function createSystemCommandPathAdapter(
11
+ adapter: ToolCallAdapter | undefined,
12
+ snapshot: SystemTargetSnapshot,
13
+ resolver: RuntimeToolPathResolver | undefined,
14
+ ): ToolCallAdapter | undefined {
15
+ if (!resolver) return adapter;
16
+ return {
17
+ ...adapter,
18
+ normalizeCall(input) {
19
+ const call = adapter?.normalizeCall?.(input) ?? input;
20
+ if (!hasNativeWindowsRelativeDirectory(call, snapshot)) return call;
21
+ const directory = resolver.resolve(call.params.cwd, {
22
+ requirePath: true,
23
+ allowedLocations: ["agent_work", "workspace"],
24
+ });
25
+ return {
26
+ ...call,
27
+ params: { ...call.params, cwd: directory.absolutePath },
28
+ };
29
+ },
30
+ };
31
+ }
32
+
33
+ function hasNativeWindowsRelativeDirectory(
34
+ call: ToolCall,
35
+ snapshot: SystemTargetSnapshot,
36
+ ): boolean {
37
+ if (call.tool !== "system_command") return false;
38
+ if (call.params.target !== "windows") return false;
39
+ if (typeof call.params.cwd !== "string") return false;
40
+ if (win32.isAbsolute(call.params.cwd.trim())) return false;
41
+ const route = snapshot.find((entry) => {
42
+ if (entry.kind !== "native") return false;
43
+ if (entry.target.id !== "windows") return false;
44
+ return entry.target.transport === "native";
45
+ });
46
+ return route !== undefined;
47
+ }
@@ -0,0 +1,82 @@
1
+ import { createHash } from "node:crypto";
2
+ import { StringDecoder } from "node:string_decoder";
3
+ import { deliverPluginTextResult, failureResult, type ToolExecutionContext,
4
+ type ToolImplementationOutput } from "../../../src/plugin-sdk/index.js";
5
+ import { SYSTEM_OUTPUT_CAPABILITY, SYSTEM_OUTPUT_CHUNK_BYTES, readSystemOutputTransfer,
6
+ type ComputerAccessConnection, type HostOperation } from "../../../src/plugin-sdk/computer-access.js";
7
+ import type { SystemRequestRoute } from "./request-target-snapshot.js";
8
+
9
+ type CompanionRoute = Extract<SystemRequestRoute, { kind: "companion" }>;
10
+ type Transfer = ReturnType<typeof readSystemOutputTransfer>;
11
+ type HostCall = (operation: HostOperation, params: Record<string, unknown>, signal?: AbortSignal) => Promise<ToolImplementationOutput>;
12
+
13
+ export function supportsCompanionCommandOutput(route: CompanionRoute): boolean {
14
+ return route.capabilities?.includes(SYSTEM_OUTPUT_CAPABILITY) === true;
15
+ }
16
+
17
+ /** Transfer is private adapter IO; the model receives one settled tool result. */
18
+ export async function executeCompanionCommand(input: {
19
+ rootDir: string;
20
+ route: CompanionRoute;
21
+ connection: ComputerAccessConnection;
22
+ params: Record<string, unknown>;
23
+ outputRetentionMs?: number;
24
+ context?: ToolExecutionContext;
25
+ }): Promise<ToolImplementationOutput> {
26
+ const { route, context } = input;
27
+ const call: HostCall = (operation, params, signal) => input.connection.executeHostOperation(input.rootDir, {
28
+ hostId: route.hostId, connectionId: route.connectionId, operation,
29
+ params: { ...params, target: route.target }, ...(signal ? { abortSignal: signal } : {}),
30
+ });
31
+ const receipt = await call("system_command_capture", {
32
+ ...input.params, ...(input.outputRetentionMs !== undefined ? { outputRetentionMs: input.outputRetentionMs } : {}),
33
+ }, context?.abortSignal);
34
+ if (!receipt.data?.outputTransfer && !receipt.ok) return receipt;
35
+ let transfer: Transfer | undefined;
36
+ try {
37
+ transfer = readSystemOutputTransfer(receipt.data?.outputTransfer);
38
+ const stdout = await readStream(call, transfer, "stdout", context?.abortSignal);
39
+ const stderr = await readStream(call, transfer, "stderr", context?.abortSignal);
40
+ const { outputTransfer: _transfer, ...data } = receipt.data ?? {};
41
+ const delivered = deliverPluginTextResult({ ...receipt, stdout, stderr: stderr || receipt.stderr,
42
+ data: { ...data, outputDelivery: "complete", summaryOmittedChars: { stdout: stdout.length, stderr: stderr.length } },
43
+ }, ["stdout", "stderr"], context?.resultBudget);
44
+ if (delivered.errorCode === "plugin_result_too_large") return transferFailure(receipt, context);
45
+ return delivered;
46
+ } catch {
47
+ return transferFailure(receipt, context);
48
+ } finally {
49
+ if (transfer) await call("system_command_output_close", { captureId: transfer.id }, AbortSignal.timeout(3_000)).catch(() => undefined);
50
+ }
51
+ }
52
+
53
+ async function readStream(call: HostCall, transfer: Transfer, stream: "stdout" | "stderr", signal?: AbortSignal): Promise<string> {
54
+ const size = stream === "stdout" ? transfer.stdoutBytes : transfer.stderrBytes;
55
+ const digest = stream === "stdout" ? transfer.stdoutSha256 : transfer.stderrSha256;
56
+ const hash = createHash("sha256");
57
+ const decoder = new StringDecoder("utf8");
58
+ let text = "";
59
+ for (let offset = 0; offset < size; offset += SYSTEM_OUTPUT_CHUNK_BYTES) {
60
+ signal?.throwIfAborted();
61
+ const part = await call("system_command_output", { captureId: transfer.id, stream, offset }, signal);
62
+ if (!part.ok) throw new Error("system_output_transfer_failed");
63
+ const data = part.data;
64
+ if (data?.captureId !== transfer.id || data.stream !== stream || data.offset !== offset) throw new Error("system_output_chunk_binding_invalid");
65
+ if (typeof data.bytes !== "string" || data.bytes.length > SYSTEM_OUTPUT_CHUNK_BYTES * 2) throw new Error("system_output_chunk_invalid");
66
+ const bytes = Buffer.from(data.bytes, "base64");
67
+ if (bytes.toString("base64") !== data.bytes) throw new Error("system_output_chunk_invalid");
68
+ if (bytes.length !== Math.min(SYSTEM_OUTPUT_CHUNK_BYTES, size - offset)) throw new Error("system_output_chunk_size_invalid");
69
+ hash.update(bytes);
70
+ text += decoder.write(bytes);
71
+ }
72
+ if (hash.digest("hex") !== digest) throw new Error("system_output_digest_invalid");
73
+ return text + decoder.end();
74
+ }
75
+
76
+ function transferFailure(receipt: ToolImplementationOutput, context?: ToolExecutionContext): ToolImplementationOutput {
77
+ return failureResult({ errorCode: "system_output_delivery_pending",
78
+ message: "The command settled, but its retained output could not be delivered completely. Process receipt is preserved; the command was not replayed.",
79
+ ...(receipt.exitCode !== undefined ? { exitCode: receipt.exitCode } : {}),
80
+ data: { ...receipt.data, outputDelivery: "pending", commandOk: receipt.ok, commandErrorCode: receipt.errorCode ?? null },
81
+ }, context?.resultBudget);
82
+ }
@@ -5,10 +5,14 @@ import {
5
5
  type ToolImplementation,
6
6
  } from "../../../../src/plugin-sdk/index.js";
7
7
  import { SystemOperationError } from "../../../../src/plugin-sdk/computer-access.js";
8
- import { computerFields, readPhysicalRectangle } from "../../../../src/plugin-sdk/computer-access.js";
8
+ import {
9
+ computerFields,
10
+ readPhysicalRectangle,
11
+ } from "../../../../src/plugin-sdk/computer-access.js";
9
12
  import { readPublicComputerAction } from "./public-action.js";
10
13
  import { withDesktopQueue } from "../../../../src/plugin-sdk/computer-access.js";
11
14
  import { serializeComputerDesktops } from "./observation-output.js";
15
+ import { protectObservedError } from "../security/observed-error.js";
12
16
  import {
13
17
  describeDesktop,
14
18
  projectComputerResult,
@@ -53,10 +57,10 @@ export function createComputerHandlers(
53
57
  error instanceof SystemOperationError
54
58
  ? error.code
55
59
  : "computer_operation_interrupted",
56
- message:
57
- error instanceof Error
58
- ? error.message
59
- : "Computer operation interrupted; effects may be partial. Observe before another action.",
60
+ message: protectObservedError(
61
+ error,
62
+ "Computer operation interrupted; effects may be partial. Observe before another action.",
63
+ ),
60
64
  });
61
65
  }
62
66
  };
@@ -79,10 +83,10 @@ export function createComputerHandlers(
79
83
  return {
80
84
  ...computerRouteLabel(entry),
81
85
  available: false,
82
- reason:
83
- error instanceof Error
84
- ? error.message
85
- : "Desktop inspection failed.",
86
+ reason: protectObservedError(
87
+ error,
88
+ "Desktop inspection failed.",
89
+ ),
86
90
  };
87
91
  }
88
92
  },
@@ -10,6 +10,7 @@ import {
10
10
  type RequestComputer,
11
11
  } from "./request-computers.js";
12
12
  import { serializeComputerObservation } from "./observation-output.js";
13
+ import { protectObservedError } from "../security/observed-error.js";
13
14
 
14
15
  export function describeDesktop(
15
16
  entry: RequestComputer,
@@ -45,8 +46,7 @@ export async function projectComputerResult(
45
46
  );
46
47
  media.push(image);
47
48
  } catch (error) {
48
- imageFailure =
49
- error instanceof Error ? error.message : "Image admission failed.";
49
+ imageFailure = protectObservedError(error, "Image admission failed.");
50
50
  } finally {
51
51
  result.image.bytes.fill(0);
52
52
  }
@@ -57,9 +57,14 @@ export async function projectComputerResult(
57
57
  description.observation_ref = undefined;
58
58
  }
59
59
  const hasPartialInputDispatch = result.dispatch?.status === "partial";
60
- const operationError = result.error ?? (hasPartialInputDispatch
61
- ? { code: "computer_input_partial", message: "Only part of the input was accepted." }
62
- : undefined);
60
+ const operationError =
61
+ result.error ??
62
+ (hasPartialInputDispatch
63
+ ? {
64
+ code: "computer_input_partial",
65
+ message: "Only part of the input was accepted.",
66
+ }
67
+ : undefined);
63
68
  const data = {
64
69
  desktop_ref: entry.ref,
65
70
  ...(description.observation_ref
@@ -13,8 +13,12 @@ import { SystemOperationError } from "../../../../src/plugin-sdk/computer-access
13
13
  import type { NativeComputerBackend } from "../../../../src/plugin-sdk/computer-access.js";
14
14
  import { createNativeComputerBackend } from "../../../../src/plugin-sdk/computer-access.js";
15
15
  import { createCompanionComputerBackend } from "../../../../src/plugin-sdk/computer-access.js";
16
- import { COMPUTER_CAPABILITY } from "../../../../src/plugin-sdk/computer-access.js";
16
+ import {
17
+ COMPUTER_CAPABILITY,
18
+ HOST_SECRET_PROTECTION_CAPABILITY,
19
+ } from "../../../../src/plugin-sdk/computer-access.js";
17
20
  import { DesktopBindings } from "./desktop-bindings.js";
21
+ import { protectNativeDesktopBackend } from "../security/desktop-result.js";
18
22
 
19
23
  export type RequestComputer = {
20
24
  ref: string;
@@ -80,7 +84,7 @@ export class RequestComputers {
80
84
  if (entry.backend) return entry.backend;
81
85
  entry.backend =
82
86
  entry.route.kind === "native"
83
- ? this.nativeFactory(entry.route.target)
87
+ ? protectNativeDesktopBackend(this.nativeFactory(entry.route.target))
84
88
  : createCompanionComputerBackend(
85
89
  this.rootDir,
86
90
  entry.route,
@@ -110,7 +114,10 @@ export function computerQueueIdentity(entry: RequestComputer): string {
110
114
  }
111
115
  function supportsComputerRoute(route: SystemRequestRoute): boolean {
112
116
  if (route.kind === "native") return true;
113
- return route.capabilities?.includes(COMPUTER_CAPABILITY) === true;
117
+ return (
118
+ route.capabilities?.includes(COMPUTER_CAPABILITY) === true &&
119
+ route.capabilities.includes(HOST_SECRET_PROTECTION_CAPABILITY)
120
+ );
114
121
  }
115
122
 
116
123
  function restoreComputers(
@@ -1,5 +1,4 @@
1
1
  import {
2
- failureResult,
3
2
  type ToolImplementation,
4
3
  type ToolRequestPreparationContext,
5
4
  type ToolModuleDeclaration,
@@ -12,17 +11,14 @@ import {
12
11
  import type { SystemHostConnection } from "../host-dispatch.js";
13
12
  import { createComputerHandlers, COMPUTER_TOOLS } from "./handlers.js";
14
13
  import { RequestComputers } from "./request-computers.js";
14
+ import { supportsRuntimeDesktopTools, unboundComputerFailure } from "./runtime-platform.js";
15
15
 
16
16
  /** Load-time placeholders cannot allocate a desktop outside request ownership. */
17
17
  export function unboundComputerHandlers(): Record<string, ToolImplementation> {
18
18
  return Object.fromEntries(
19
19
  COMPUTER_TOOLS.map((name) => [
20
20
  name,
21
- async () =>
22
- failureResult({
23
- errorCode: "computer_request_binding_required",
24
- message: "Computer control requires a prepared request.",
25
- }),
21
+ async () => unboundComputerFailure(),
26
22
  ]),
27
23
  );
28
24
  }
@@ -35,6 +31,7 @@ export function prepareComputerModules(
35
31
  preparation?: ToolRequestPreparationContext,
36
32
  ): readonly ToolModuleDeclaration[] {
37
33
  if (modules.length === 0) return [];
34
+ if (!supportsRuntimeDesktopTools()) return [];
38
35
  const computers = new RequestComputers(
39
36
  rootDir,
40
37
  routes,
@@ -0,0 +1,18 @@
1
+ import { failureResult } from "../../../../src/plugin-sdk/index.js";
2
+
3
+ /** Windows desktop images and input await the separate OCR rollout. */
4
+ export function supportsRuntimeDesktopTools(platform: NodeJS.Platform = process.platform): boolean {
5
+ return platform !== "win32";
6
+ }
7
+
8
+ export function unboundComputerFailure() {
9
+ if (!supportsRuntimeDesktopTools())
10
+ return failureResult({
11
+ errorCode: "computer_runtime_platform_unsupported",
12
+ message: "Desktop observation and control are unavailable on Windows Runtime. System commands and applications remain available.",
13
+ });
14
+ return failureResult({
15
+ errorCode: "computer_request_binding_required",
16
+ message: "Computer control requires a prepared request.",
17
+ });
18
+ }
@@ -1,3 +1,5 @@
1
+ import { executeCompanionCommand, supportsCompanionCommandOutput } from "./companion-command-output.js";
2
+ import { redactSecretText } from "./security/secret-text.js";
1
3
  import type { ComputerAccessConnection } from "../../../src/plugin-sdk/computer-access.js";
2
4
  import {
3
5
  failureResult,
@@ -10,6 +12,7 @@ import {
10
12
  } from "../../../src/plugin-sdk/computer-access.js";
11
13
  import {
12
14
  HOST_OPERATIONS,
15
+ HOST_SECRET_PROTECTION_CAPABILITY,
13
16
  type HostOperation,
14
17
  } from "../../../src/plugin-sdk/computer-access.js";
15
18
  import { SystemOperationError } from "../../../src/plugin-sdk/computer-access.js";
@@ -32,6 +35,7 @@ export function createBoundSystemHandlers(
32
35
  snapshot: SystemTargetSnapshot;
33
36
  nativeHandlers: Readonly<Record<string, ToolImplementation>>;
34
37
  connection: SystemHostConnection;
38
+ outputRetentionMs?: number;
35
39
  }>,
36
40
  ): Record<string, ToolImplementation> {
37
41
  return Object.fromEntries(
@@ -67,6 +71,18 @@ function boundOperation(
67
71
  const route = requireSystemRequestRoute(input.snapshot, params.target);
68
72
  if (route.kind === "native")
69
73
  return await input.nativeHandlers[operation]!(params, context);
74
+ if (!supportsProtectedCompanionResults(route.capabilities))
75
+ return failureResult({
76
+ errorCode: "system_companion_protection_upgrade_required",
77
+ message: "Update Companion to enable protected system results. The operation was not dispatched.",
78
+ });
79
+ if (operation === "system_command" && !supportsCompanionCommandOutput(route))
80
+ return failureResult({
81
+ errorCode: "system_companion_protection_upgrade_required",
82
+ message: "Update Companion to enable protected complete command output. The command was not dispatched.",
83
+ });
84
+ if (operation === "system_command")
85
+ return await executeCompanionCommand({ ...input, route, params, context });
70
86
  return await input.connection.executeHostOperation(input.rootDir, {
71
87
  hostId: route.hostId,
72
88
  connectionId: route.connectionId,
@@ -76,7 +92,7 @@ function boundOperation(
76
92
  });
77
93
  } catch (error) {
78
94
  if (error instanceof SystemOperationError)
79
- return failureResult({ errorCode: error.code, message: error.message });
95
+ return failureResult({ errorCode: error.code, message: redactSecretText(error.message) });
80
96
  return failureResult({
81
97
  errorCode: "system_execution_route_failed",
82
98
  message:
@@ -86,6 +102,10 @@ function boundOperation(
86
102
  };
87
103
  }
88
104
 
105
+ function supportsProtectedCompanionResults(capabilities?: readonly string[]): boolean {
106
+ return capabilities?.includes(HOST_SECRET_PROTECTION_CAPABILITY) === true;
107
+ }
108
+
89
109
  function hasConnectionControl(params: Record<string, unknown>): boolean {
90
110
  if (Object.hasOwn(params, "host_id")) return true;
91
111
  if (Object.hasOwn(params, "hostId")) return true;
@@ -1,10 +1,18 @@
1
1
  import { defineRuntimePlugin } from "../../../src/plugin-sdk/index.js";
2
- import { createSystemHandlers } from "../../../src/plugin-sdk/computer-access.js";
2
+ import { createSystemHandlers, observeSystemTargets } from "../../../src/plugin-sdk/computer-access.js";
3
3
  import { prepareSystemRequestModules } from "./request-system-modules.js";
4
+ import { createLocalSystemCommandOutput, systemCommandOutputRetentionMs } from "./local-command-output.js";
4
5
  import { unboundComputerHandlers } from "./computer/request-modules.js";
6
+ import { systemResultProtection } from "./security/system-results.js";
5
7
 
6
- export default defineRuntimePlugin(({ rootDir }) => ({
7
- handlers: { ...createSystemHandlers(), ...unboundComputerHandlers() },
8
- prepareRequest: (modules, preparation) =>
9
- prepareSystemRequestModules(rootDir, modules, {}, preparation),
10
- }));
8
+ export default defineRuntimePlugin((context) => {
9
+ const output = createLocalSystemCommandOutput(context);
10
+ return {
11
+ handlers: { ...createSystemHandlers(undefined, undefined, output, systemResultProtection), ...unboundComputerHandlers() },
12
+ prepareRequest: (modules, preparation) => prepareSystemRequestModules(context.rootDir, modules, {
13
+ outputRetentionMs: systemCommandOutputRetentionMs(context),
14
+ observeTargets: async () => systemResultProtection.protectTargets(await observeSystemTargets()),
15
+ createNativeHandlers: (resolve) => createSystemHandlers(undefined, resolve, output, systemResultProtection),
16
+ }, preparation),
17
+ };
18
+ });
@@ -0,0 +1,16 @@
1
+ import { scheduleSystemOutputCleanup } from "../../../src/plugin-sdk/computer-access.js";
2
+ import { ensureWindowsOutputDirectory } from "./security/windows-output-directory.js";
3
+
4
+ /** Retention may traverse only a verified Windows output root, including at plugin load. */
5
+ export function scheduleLocalSystemOutputCleanup(root: string, retentionMs: number): Promise<void> {
6
+ if (process.platform !== "win32") {
7
+ scheduleSystemOutputCleanup(root, retentionMs);
8
+ return Promise.resolve();
9
+ }
10
+ return ensureWindowsOutputDirectory(root).then(
11
+ () => scheduleSystemOutputCleanup(root, retentionMs),
12
+ () => process.emitWarning("SYSTEM output cleanup skipped because private storage could not be verified.", {
13
+ code: "SYSTEM_OUTPUT_PRIVATE_STORAGE_UNAVAILABLE",
14
+ }),
15
+ );
16
+ }
@@ -0,0 +1,69 @@
1
+ import { join } from "node:path";
2
+ import { deliverPluginTextResult, failureResult, readBoundedInteger, type RuntimePluginLoadContext,
3
+ type ToolExecutionContext, type ToolImplementationOutput } from "../../../src/plugin-sdk/index.js";
4
+ import { buildSystemProcessResult, runSystemProcess, type SystemCommandOutputFactory,
5
+ type SystemProcessResult, type SystemTarget } from "../../../src/plugin-sdk/computer-access.js";
6
+ import { createSystemOutputCapture, type SystemOutputReceipt } from "../../../src/plugin-sdk/computer-access.js";
7
+ import { DEFAULT_SYSTEM_OUTPUT_RETENTION_MS } from "../../../src/plugin-sdk/computer-access.js";
8
+ import { redactSecretText } from "./security/secret-text.js";
9
+ import { ensureWindowsOutputDirectory } from "./security/windows-output-directory.js";
10
+ import { scheduleLocalSystemOutputCleanup } from "./local-command-output-retention.js";
11
+
12
+ type Capture = Awaited<ReturnType<typeof createSystemOutputCapture>>;
13
+ const CONTEXT_STREAMS = Object.freeze(["stdout", "stderr"] as const);
14
+
15
+ export function createLocalSystemCommandOutput(plugin: RuntimePluginLoadContext): SystemCommandOutputFactory {
16
+ const root = join(plugin.stateDir, "command-output");
17
+ const retentionMs = systemCommandOutputRetentionMs(plugin);
18
+ const initialization = scheduleLocalSystemOutputCleanup(root, retentionMs);
19
+ return (context) => {
20
+ let captured: Capture | undefined;
21
+ return {
22
+ async run(input) {
23
+ if (input.abortSignal?.aborted) return runSystemProcess(input);
24
+ await initialization;
25
+ await ensureWindowsOutputDirectory(root);
26
+ captured = await createSystemOutputCapture(root, retentionMs, redactSecretText);
27
+ let result: SystemProcessResult;
28
+ try { result = await runSystemProcess(input, captured.capture); }
29
+ catch (error) { await captured.finish(); throw error; }
30
+ const streams = await captured.finish(result);
31
+ return { ...captured.processResult!, stdout: streams.stdout, stderr: streams.stderr,
32
+ outputTruncated: Boolean(captured.failure) };
33
+ },
34
+ async present(target, result) {
35
+ if (captured?.failure) return outputFailure(target, result, context, captured.receipt, captured.failure, captured.failureKind);
36
+ const receipt = buildSystemProcessResult(target, result, "command_process_completion");
37
+ const delivered = deliverPluginTextResult({ ...receipt,
38
+ data: { ...receipt.data, ...(captured?.receipt ? { outputCapture: captured.receipt } : {}) } }, CONTEXT_STREAMS, context?.resultBudget);
39
+ if (delivered.errorCode === "plugin_result_too_large")
40
+ return outputFailure(target, result, context, captured?.receipt);
41
+ return delivered;
42
+ },
43
+ };
44
+ };
45
+ }
46
+
47
+ function outputFailure(target: SystemTarget, result: SystemProcessResult, context?: ToolExecutionContext,
48
+ capture?: SystemOutputReceipt, captureFailure?: string, failureKind?: "security" | "storage"): ToolImplementationOutput {
49
+ const failureCode = failureKind === "security" ? "system_output_protection_failed" : "system_output_storage_failed";
50
+ return failureResult({
51
+ errorCode: captureFailure ? failureCode : "system_output_delivery_pending",
52
+ message: "The command was dispatched. Its output could not be delivered completely; do not repeat the command just to retrieve output. Inspect the process receipt and retained capture.",
53
+ ...(result.exitCode !== null ? { exitCode: result.exitCode } : {}),
54
+ data: { target: target.id, transport: target.transport, processStatus: result.status,
55
+ spawnedProcess: result.spawnedProcess ?? null, exitCode: result.exitCode,
56
+ outputCapture: capture ?? null,
57
+ ...(captureFailure && failureKind === "security" ? { securityFailure: captureFailure } : {}),
58
+ ...(captureFailure && failureKind !== "security" ? { storageFailure: captureFailure } : {}),
59
+ outputDelivery: "pending", evidenceScope: "command_process_completion", independentOutcomeCheck: "not_performed",
60
+ observationMeta: { kind: "volatile_external", carryPolicy: "never" } },
61
+ }, context?.resultBudget);
62
+ }
63
+
64
+ export function systemCommandOutputRetentionMs(plugin: RuntimePluginLoadContext): number {
65
+ return readBoundedInteger(plugin.config?.outputRetentionMs, {
66
+ name: "outputRetentionMs", defaultValue: DEFAULT_SYSTEM_OUTPUT_RETENTION_MS,
67
+ minimum: 1, maximum: Number.MAX_SAFE_INTEGER,
68
+ });
69
+ }