@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,9 +1,4 @@
1
1
  import type { PassiveObservationSource } from "../../shared/passive-observation.js";
2
- /**
3
- * Mask the entire field when a known secret indicator is present, including
4
- * surrounding useful text. No value boundaries or source-language grammar are
5
- * inferred. Unlabelled arbitrary secrets and unknown encodings remain outside
6
- * detection; this is not a guarantee that unchanged text contains no secrets.
7
- */
8
- export declare function redactObservationText(input: string): string;
2
+ import { redactSecretText as redactObservationText } from "../security/secret-text.js";
3
+ export { redactObservationText };
9
4
  export declare function redactObservationSource(source: PassiveObservationSource, sourceKey: string): PassiveObservationSource;
@@ -1,114 +1,5 @@
1
- const REDACTED = "[REDACTED]";
2
- const CREDENTIAL_KEY_SOURCE = String.raw `(?:[A-Za-z][A-Za-z0-9_-]*\.)*(?:[A-Za-z][A-Za-z0-9]*[-_])*(?:password|passwd|pwd|api[_ -]?key|access[_ -]?token|refresh[_ -]?token|client[_ -]?secret|secret[_ -]?access[_ -]?key|recovery[_ -]?code)`;
3
- const credentialIndicator = new RegExp(String.raw `(?<![\p{L}\p{N}_.-])(?:-{1,2})?(?:${CREDENTIAL_KEY_SOURCE}|(?:proxy-)?authorization)[\s"'\\]*[:=]`, "iu");
4
- /** Detection only: normalize ASCII encodings once, without interpreting a language. */
5
- function detectionText(input) {
6
- const percentDecoded = input.replace(/%([0-7][0-9a-f])/giu, (_, hex) => String.fromCharCode(Number.parseInt(hex, 16)));
7
- return percentDecoded.replace(/\\(?:u00|x|U000000)([0-7][0-9a-fA-F])/gu, (_, hex) => String.fromCharCode(Number.parseInt(hex, 16)));
8
- }
9
- function hasPrivateKeyIndicator(text) {
10
- return /-----BEGIN (?:[A-Z0-9]+ )*PRIVATE KEY(?: BLOCK)?-----/u.test(text);
11
- }
12
- function hasUrlCredentials(text) {
13
- return /\b[a-z][a-z0-9+.-]*(?::|%3a)(?:\/|%2f){2}[^\s/?#<>]*(?:@|%40)/iu.test(text);
14
- }
15
- function hasAuthorizationCredentials(text) {
16
- for (const match of text.matchAll(/\b(Bearer|Basic)[ \t]+([A-Za-z0-9._~+/-]+={0,2})/giu)) {
17
- if (match[1].toLowerCase() === "bearer")
18
- return true;
19
- const value = match[2];
20
- if (!/^[A-Za-z0-9+/]+={0,2}$/u.test(value))
21
- continue;
22
- if (value.length < 8)
23
- continue;
24
- if (Buffer.from(value, "base64").toString("utf8").includes(":"))
25
- return true;
26
- }
27
- return false;
28
- }
29
- function isAwsAccessKeyValue(value, atEnd) {
30
- if (/^[A-Z0-9]{16}$/u.test(value))
31
- return true;
32
- if (!atEnd)
33
- return false;
34
- return /^[A-Z0-9]{4,15}$/u.test(value);
35
- }
36
- function isRecognizedProviderToken(prefix, value, atEnd) {
37
- if (prefix === "AKIA" || prefix === "ASIA")
38
- return isAwsAccessKeyValue(value, atEnd);
39
- if (value.length >= 20)
40
- return true;
41
- const partialMinimum = prefix === "sk-" ? 8 : 1;
42
- return atEnd && value.length >= partialMinimum;
43
- }
44
- function hasProviderToken(text) {
45
- const provider = /\b(sk-(?:proj-|svcacct-)?|gh[pousr]_|github_pat_|xox[baprs]-|AKIA|ASIA)([A-Za-z0-9_-]+)/gu;
46
- for (const match of text.matchAll(provider)) {
47
- const atEnd = match.index + match[0].length === text.length;
48
- if (isRecognizedProviderToken(match[1], match[2], atEnd))
49
- return true;
50
- }
51
- return false;
52
- }
53
- function compactJoseSegmentCount(header) {
54
- try {
55
- const value = JSON.parse(Buffer.from(header, "base64url").toString("utf8"));
56
- if (typeof value !== "object" || value === null || Array.isArray(value))
57
- return undefined;
58
- const fields = value;
59
- if (typeof fields.alg !== "string")
60
- return undefined;
61
- return typeof fields.enc === "string" ? 5 : 3;
62
- }
63
- catch {
64
- return undefined;
65
- }
66
- }
67
- function hasCompactJoseToken(text) {
68
- const jose = /\b([A-Za-z0-9_-]+)(?:\.[A-Za-z0-9_-]*)+/gu;
69
- for (const match of text.matchAll(jose)) {
70
- const parts = match[0].split(".");
71
- const capturedAtEnd = match.index + match[0].length === text.length;
72
- for (let index = 0; index < parts.length - 1; index += 1) {
73
- const expected = compactJoseSegmentCount(parts[index]);
74
- if (expected === undefined)
75
- continue;
76
- if (expected === 3 && parts[index + 1] === "")
77
- continue;
78
- if (parts.length - index >= expected)
79
- return true;
80
- if (capturedAtEnd)
81
- return true;
82
- }
83
- }
84
- return false;
85
- }
86
- function hasSecretIndicator(text) {
87
- if (credentialIndicator.test(text))
88
- return true;
89
- if (hasPrivateKeyIndicator(text))
90
- return true;
91
- if (hasUrlCredentials(text))
92
- return true;
93
- if (hasAuthorizationCredentials(text))
94
- return true;
95
- if (hasProviderToken(text))
96
- return true;
97
- return hasCompactJoseToken(text);
98
- }
99
- /**
100
- * Mask the entire field when a known secret indicator is present, including
101
- * surrounding useful text. No value boundaries or source-language grammar are
102
- * inferred. Unlabelled arbitrary secrets and unknown encodings remain outside
103
- * detection; this is not a guarantee that unchanged text contains no secrets.
104
- */
105
- export function redactObservationText(input) {
106
- if (hasSecretIndicator(input))
107
- return REDACTED;
108
- if (hasSecretIndicator(detectionText(input)))
109
- return REDACTED;
110
- return input;
111
- }
1
+ import { redactSecretText as redactObservationText } from "../security/secret-text.js";
2
+ export { redactObservationText };
112
3
  export function redactObservationSource(source, sourceKey) {
113
4
  const redacted = {
114
5
  app: redactObservationText(source.app).slice(0, 128),
@@ -9,7 +9,7 @@ export declare const HOST_SOCKET_PATH = "/system-host/connect";
9
9
  export declare const HOST_WIRE_MAX_BYTES: number;
10
10
  export declare const HOST_OPERATIONS: readonly ["system_targets", "system_command", "system_applications", "system_launch"];
11
11
  export declare const COMPUTER_HOST_OPERATIONS: readonly ["computer_execute", "computer_frame", "computer_close"];
12
- export type HostOperation = (typeof HOST_OPERATIONS)[number] | (typeof COMPUTER_HOST_OPERATIONS)[number] | typeof MACOS_PERMISSION_OPERATION | typeof DESKTOP_NOTIFICATION_OPERATION;
12
+ export type HostOperation = (typeof HOST_OPERATIONS)[number] | (typeof COMPUTER_HOST_OPERATIONS)[number] | "system_command_capture" | "system_command_output" | "system_command_output_close" | typeof MACOS_PERMISSION_OPERATION | typeof DESKTOP_NOTIFICATION_OPERATION;
13
13
  export type HostIdentity = Readonly<{
14
14
  name: string;
15
15
  os: "windows" | "macos" | "linux";
@@ -20,6 +20,12 @@ export function isHostOperation(value) {
20
20
  export function isHostWireOperation(value) {
21
21
  if (isHostOperation(value))
22
22
  return true;
23
+ if (value === "system_command_capture")
24
+ return true;
25
+ if (value === "system_command_output")
26
+ return true;
27
+ if (value === "system_command_output_close")
28
+ return true;
23
29
  if (value === DESKTOP_NOTIFICATION_OPERATION)
24
30
  return true;
25
31
  if (value === MACOS_PERMISSION_OPERATION)
@@ -1,5 +1,5 @@
1
1
  /** Increment when installed companions should be offered an update. Independent of the wire protocol. */
2
- export declare const COMPANION_RELEASE_VERSION = 10;
2
+ export declare const COMPANION_RELEASE_VERSION = 12;
3
3
  export declare function companionReleaseStatus(version: unknown): {
4
4
  installedVersion: number | null;
5
5
  availableVersion: number;
@@ -1,5 +1,5 @@
1
1
  /** Increment when installed companions should be offered an update. Independent of the wire protocol. */
2
- export const COMPANION_RELEASE_VERSION = 10;
2
+ export const COMPANION_RELEASE_VERSION = 12;
3
3
  export function companionReleaseStatus(version) {
4
4
  const installedVersion = typeof version === "number" && Number.isSafeInteger(version) && version > 0
5
5
  ? version
@@ -0,0 +1,6 @@
1
+ /** Host-side observed-text protection before delivery, projection and transport.
2
+ * Command capture may temporarily retain unchecked bytes in private local files.
3
+ * Version 1 covers text and metadata; images are withheld when their associated
4
+ * text is suspect. It does not assert OCR or pixel-content inspection.
5
+ */
6
+ export declare const HOST_SECRET_PROTECTION_CAPABILITY = "host_secret_protection_v1";
@@ -0,0 +1,6 @@
1
+ /** Host-side observed-text protection before delivery, projection and transport.
2
+ * Command capture may temporarily retain unchecked bytes in private local files.
3
+ * Version 1 covers text and metadata; images are withheld when their associated
4
+ * text is suspect. It does not assert OCR or pixel-content inspection.
5
+ */
6
+ export const HOST_SECRET_PROTECTION_CAPABILITY = "host_secret_protection_v1";
@@ -0,0 +1,7 @@
1
+ import type { NativeHostConnection } from "../native-state.js";
2
+ export declare function hasMissingStoreUpgradeConnection(upgradeHostId: string | undefined, saved: NativeHostConnection | undefined): boolean;
3
+ /** Fixed Store helper failure codes. Never serialize underlying errors or invitations. */
4
+ export declare class MissingStoreConnectionError extends Error {
5
+ constructor();
6
+ }
7
+ export declare function serializeStoreConnectionError(error: unknown): string;
@@ -0,0 +1,19 @@
1
+ export function hasMissingStoreUpgradeConnection(upgradeHostId, saved) {
2
+ if (upgradeHostId === undefined)
3
+ return false;
4
+ return saved === undefined;
5
+ }
6
+ /** Fixed Store helper failure codes. Never serialize underlying errors or invitations. */
7
+ export class MissingStoreConnectionError extends Error {
8
+ constructor() {
9
+ super("companion_local_pairing_missing");
10
+ this.name = "MissingStoreConnectionError";
11
+ }
12
+ }
13
+ export function serializeStoreConnectionError(error) {
14
+ return JSON.stringify({
15
+ error: error instanceof MissingStoreConnectionError
16
+ ? "companion_local_pairing_missing"
17
+ : "companion_request_failed",
18
+ });
19
+ }
@@ -0,0 +1,13 @@
1
+ export declare const STORE_CONNECTION_LINK_MAX_BYTES = 8192;
2
+ export type StoreConnectionInvitation = Readonly<{
3
+ version: 1;
4
+ url: string;
5
+ code: string;
6
+ expiresAt: string;
7
+ companionRelease: number;
8
+ upgradeHostId?: string;
9
+ }>;
10
+ export declare function readStoreConnectionInvitation(value: unknown, now?: number): StoreConnectionInvitation;
11
+ export declare function normalizeStoreConnectionOrigin(value: unknown): string;
12
+ export declare function createStoreConnectionLink(invitation: StoreConnectionInvitation): string;
13
+ export declare function parseStoreConnectionLink(link: string, now?: number): StoreConnectionInvitation;
@@ -0,0 +1,109 @@
1
+ import { isNativeLoopbackAddress, normalizeNativeRuntimeUrl } from "../native-address.js";
2
+ import { isHostIdentifier, isHostRecord } from "../protocol.js";
3
+ import { COMPANION_RELEASE_VERSION } from "../release-version.js";
4
+ import { WINDOWS_COMPANION_STORE } from "./identity.js";
5
+ export const STORE_CONNECTION_LINK_MAX_BYTES = 8_192;
6
+ function invalidInvitation() {
7
+ // Incoming links contain a secret. Never include their text in an error.
8
+ return new Error("Invalid Companion connection invitation. Open Computer access in ABot and request a new connection.");
9
+ }
10
+ function isLoopbackInvitationOrigin(url) {
11
+ if (url.protocol !== "http:")
12
+ return false;
13
+ if (url.hostname === "localhost")
14
+ return true;
15
+ if (url.hostname.endsWith(".localhost"))
16
+ return true;
17
+ return isNativeLoopbackAddress(url.hostname);
18
+ }
19
+ export function readStoreConnectionInvitation(value, now = Date.now()) {
20
+ if (!isHostRecord(value))
21
+ throw invalidInvitation();
22
+ const fields = ["version", "url", "code", "expiresAt", "companionRelease", "upgradeHostId"];
23
+ if (Object.keys(value).some((key) => !fields.includes(key)))
24
+ throw invalidInvitation();
25
+ if (value.version !== 1)
26
+ throw invalidInvitation();
27
+ const origin = normalizeStoreConnectionOrigin(value.url);
28
+ if (typeof value.code !== "string" || !/^[A-Za-z0-9_-]{43}$/u.test(value.code))
29
+ throw invalidInvitation();
30
+ if (typeof value.expiresAt !== "string")
31
+ throw invalidInvitation();
32
+ const expiresAt = Date.parse(value.expiresAt);
33
+ if (!Number.isFinite(expiresAt))
34
+ throw invalidInvitation();
35
+ if (expiresAt <= now)
36
+ throw new Error("This connection invitation has expired. Click Connect in ABot again.");
37
+ if (!Number.isSafeInteger(value.companionRelease))
38
+ throw invalidInvitation();
39
+ if (Number(value.companionRelease) < 1)
40
+ throw invalidInvitation();
41
+ if (Number(value.companionRelease) > COMPANION_RELEASE_VERSION)
42
+ throw new Error("Update ABot AI Companion in Microsoft Store, then connect again.");
43
+ if (value.upgradeHostId !== undefined && !isHostIdentifier(value.upgradeHostId))
44
+ throw invalidInvitation();
45
+ return {
46
+ version: 1,
47
+ url: origin,
48
+ code: value.code,
49
+ expiresAt: new Date(expiresAt).toISOString(),
50
+ companionRelease: Number(value.companionRelease),
51
+ ...(value.upgradeHostId === undefined ? {} : { upgradeHostId: value.upgradeHostId }),
52
+ };
53
+ }
54
+ export function normalizeStoreConnectionOrigin(value) {
55
+ if (typeof value !== "string" || value.length > 4_096)
56
+ throw invalidInvitation();
57
+ let url;
58
+ try {
59
+ url = new URL(value);
60
+ normalizeNativeRuntimeUrl(value);
61
+ }
62
+ catch {
63
+ throw invalidInvitation();
64
+ }
65
+ if (!isLoopbackInvitationOrigin(url))
66
+ throw invalidInvitation();
67
+ if (/[\x00-\x20\x7f]/u.test(value))
68
+ throw invalidInvitation();
69
+ return url.origin;
70
+ }
71
+ export function createStoreConnectionLink(invitation) {
72
+ const data = readStoreConnectionInvitation(invitation);
73
+ const link = new URL(`${WINDOWS_COMPANION_STORE.protocol}//connect`);
74
+ link.searchParams.set("invitation", Buffer.from(JSON.stringify(data)).toString("base64url"));
75
+ if (Buffer.byteLength(link.href) > STORE_CONNECTION_LINK_MAX_BYTES)
76
+ throw invalidInvitation();
77
+ return link.href;
78
+ }
79
+ export function parseStoreConnectionLink(link, now = Date.now()) {
80
+ if (Buffer.byteLength(link) > STORE_CONNECTION_LINK_MAX_BYTES)
81
+ throw invalidInvitation();
82
+ let url;
83
+ try {
84
+ url = new URL(link);
85
+ }
86
+ catch {
87
+ throw invalidInvitation();
88
+ }
89
+ if (url.protocol !== WINDOWS_COMPANION_STORE.protocol)
90
+ throw invalidInvitation();
91
+ if (url.hostname !== "connect" || url.port || url.username || url.password || url.hash)
92
+ throw invalidInvitation();
93
+ if (url.pathname !== "" && url.pathname !== "/")
94
+ throw invalidInvitation();
95
+ const entries = [...url.searchParams];
96
+ if (entries.length !== 1 || entries[0][0] !== "invitation")
97
+ throw invalidInvitation();
98
+ const encoded = entries[0][1];
99
+ if (!/^[A-Za-z0-9_-]+$/u.test(encoded))
100
+ throw invalidInvitation();
101
+ let data;
102
+ try {
103
+ data = JSON.parse(Buffer.from(encoded, "base64url").toString("utf8"));
104
+ }
105
+ catch {
106
+ throw invalidInvitation();
107
+ }
108
+ return readStoreConnectionInvitation(data, now);
109
+ }
@@ -0,0 +1,13 @@
1
+ /** Store-assigned identity. Build tooling and the packaged Companion share it. */
2
+ export declare const WINDOWS_COMPANION_STORE: Readonly<{
3
+ name: "ABot-AI.ABotAICompanion";
4
+ publisher: "CN=5497306F-2434-4801-8B3F-4B721B2A2606";
5
+ publisherDisplayName: "ABot-AI";
6
+ displayName: "ABot AI Companion";
7
+ familyName: "ABot-AI.ABotAICompanion_9b4v4r6by2e32";
8
+ applicationId: "Companion";
9
+ productId: "9PK2FDQQLQS9";
10
+ protocol: "abot-companion:";
11
+ }>;
12
+ export declare const WINDOWS_COMPANION_AUMID: string;
13
+ export declare const WINDOWS_COMPANION_STORE_URL: string;
@@ -0,0 +1,13 @@
1
+ /** Store-assigned identity. Build tooling and the packaged Companion share it. */
2
+ export const WINDOWS_COMPANION_STORE = Object.freeze({
3
+ name: "ABot-AI.ABotAICompanion",
4
+ publisher: "CN=5497306F-2434-4801-8B3F-4B721B2A2606",
5
+ publisherDisplayName: "ABot-AI",
6
+ displayName: "ABot AI Companion",
7
+ familyName: "ABot-AI.ABotAICompanion_9b4v4r6by2e32",
8
+ applicationId: "Companion",
9
+ productId: "9PK2FDQQLQS9",
10
+ protocol: "abot-companion:",
11
+ });
12
+ export const WINDOWS_COMPANION_AUMID = `${WINDOWS_COMPANION_STORE.familyName}!${WINDOWS_COMPANION_STORE.applicationId}`;
13
+ export const WINDOWS_COMPANION_STORE_URL = `https://apps.microsoft.com/detail/${WINDOWS_COMPANION_STORE.productId}`;
@@ -0,0 +1,5 @@
1
+ import type { HostCompanionLifecycle } from "../../../cli/host-companion-lifecycle.js";
2
+ /** MSIX owns startup/protocol registration and updates; the shared CLI owns pairing. */
3
+ export declare function createWindowsStoreLifecycle(options: Readonly<{
4
+ appUserModelId: string;
5
+ }>): HostCompanionLifecycle;
@@ -0,0 +1,90 @@
1
+ import { startDetachedCompanion, waitForNativeConnection, } from "../../../cli/host-companion-startup.js";
2
+ import { existingOwnedRegistration, nativeAutostartFile, uninstallNativeAutostart, } from "../autostart.js";
3
+ import { uninstallCompanionInstallLinks } from "../install-link-registration.js";
4
+ import { readNativeCompanionBuildId } from "../native-build-identity.js";
5
+ import { createNotificationSession } from "../native-notifications.js";
6
+ import { stopOwnedNativeCompanion } from "../native-replacement.js";
7
+ import { uninstallDesktopNotificationIdentity } from "../notification-installation.js";
8
+ import { runNotificationProcess } from "../notification-process.js";
9
+ import { powershellNotificationArguments, sendWindowsNotification, } from "../notification-windows.js";
10
+ const STORE_NOTIFICATION_READINESS_SCRIPT = String.raw `
11
+ $ErrorActionPreference = 'Stop'
12
+ $ProgressPreference = 'SilentlyContinue'
13
+ [Console]::InputEncoding = New-Object System.Text.UTF8Encoding($false)
14
+ [Console]::OutputEncoding = New-Object System.Text.UTF8Encoding($false)
15
+ try {
16
+ $Payload = [Console]::In.ReadToEnd() | ConvertFrom-Json
17
+ [void][Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
18
+ $Notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier([string]$Payload.appUserModelId)
19
+ [Console]::Out.Write([string]$Notifier.Setting)
20
+ } catch {
21
+ [Console]::Error.WriteLine($_.Exception.GetBaseException().Message)
22
+ exit 1
23
+ }
24
+ `;
25
+ function assertWindowsStoreStartup(startup) {
26
+ if (startup.platform !== "win32")
27
+ throw new Error("The Store companion requires Windows.");
28
+ }
29
+ function requireStoreApplicationIdentity(appUserModelId) {
30
+ if (!/^[A-Za-z0-9.-]+_[A-Za-z0-9]+![A-Za-z0-9.-]+$/u.test(appUserModelId))
31
+ throw new Error("Invalid Store companion application identity.");
32
+ }
33
+ async function hasWindowsStoreNotificationSupport(appUserModelId, signal) {
34
+ signal?.throwIfAborted();
35
+ try {
36
+ const setting = await runNotificationProcess({
37
+ file: "powershell.exe",
38
+ args: powershellNotificationArguments(STORE_NOTIFICATION_READINESS_SCRIPT),
39
+ input: JSON.stringify({ appUserModelId }),
40
+ signal,
41
+ });
42
+ signal?.throwIfAborted();
43
+ return setting.trim() === "Enabled";
44
+ }
45
+ catch {
46
+ signal?.throwIfAborted();
47
+ return false;
48
+ }
49
+ }
50
+ /** Called only after the Store connection dialog has obtained the user's consent. */
51
+ async function retireOwnedLegacyRegistration(startup) {
52
+ await existingOwnedRegistration(nativeAutostartFile(startup));
53
+ await stopOwnedNativeCompanion(startup.stateDir);
54
+ await uninstallNativeAutostart(startup);
55
+ await uninstallCompanionInstallLinks(startup);
56
+ await uninstallDesktopNotificationIdentity(startup);
57
+ }
58
+ /** MSIX owns startup/protocol registration and updates; the shared CLI owns pairing. */
59
+ export function createWindowsStoreLifecycle(options) {
60
+ requireStoreApplicationIdentity(options.appUserModelId);
61
+ return {
62
+ assertStartupSupported: assertWindowsStoreStartup,
63
+ async completeStartup(state, startup, hostId) {
64
+ assertWindowsStoreStartup(startup);
65
+ const buildId = await readNativeCompanionBuildId(startup.cliPath);
66
+ await retireOwnedLegacyRegistration(startup);
67
+ const connectedAfter = Date.now();
68
+ await startDetachedCompanion(startup);
69
+ if (!(await waitForNativeConnection(state, hostId, buildId, connectedAfter)))
70
+ throw new Error("The Store companion did not connect. The saved pairing is preserved; use Connect computer again to retry.");
71
+ console.log("ABot AI Companion connected.");
72
+ },
73
+ async uninstall(state, startup) {
74
+ assertWindowsStoreStartup(startup);
75
+ await state.remove();
76
+ await stopOwnedNativeCompanion(state.directory);
77
+ console.log("Host companion disconnected and its saved credential was removed. Remove ABot AI Companion in Windows Settings to uninstall the app.");
78
+ },
79
+ async createNotifications(runtimeUrl, signal) {
80
+ signal?.throwIfAborted();
81
+ const { appUserModelId } = options;
82
+ // The supervisor already refreshes readiness and renegotiates capabilities.
83
+ // A slow Windows notification probe must not consume the pairing startup deadline.
84
+ return createNotificationSession("windows", runtimeUrl, false, {
85
+ send: (notification, sendSignal) => sendWindowsNotification(notification, sendSignal, runNotificationProcess, appUserModelId),
86
+ close() { },
87
+ }, (refreshSignal) => hasWindowsStoreNotificationSupport(appUserModelId, refreshSignal));
88
+ },
89
+ };
90
+ }
@@ -6,6 +6,8 @@ import { computerNumber, computerText } from "./action-input.js";
6
6
  import { createNativeComputerBackend } from "./native-backend.js";
7
7
  import { COMPUTER_FRAME_CHUNK_BYTES, COMPUTER_IMAGE_MAX_BYTES, readNativeComputerRequest, readNativeComputerResult, } from "./native-validation.js";
8
8
  import { withDesktopQueue } from "./desktop-action-queue.js";
9
+ import { protectDesktopResult } from "../security/desktop-result.js";
10
+ import { protectObservedError } from "../security/observed-error.js";
9
11
  /** Connection-owned, bounded private sessions. No image is written to disk. */
10
12
  export class CompanionComputerSessions {
11
13
  platform;
@@ -30,9 +32,7 @@ export class CompanionComputerSessions {
30
32
  catch (error) {
31
33
  return failureResult({
32
34
  errorCode: "computer_native_operation_failed",
33
- message: error instanceof Error
34
- ? error.message
35
- : "The computer operation failed; observe before retrying.",
35
+ message: protectObservedError(error, "The computer operation failed; observe before retrying."),
36
36
  });
37
37
  }
38
38
  };
@@ -96,14 +96,15 @@ export class CompanionComputerSessions {
96
96
  const session = await this.acquire(id);
97
97
  this.eraseFrame(session);
98
98
  const result = await session.backend.execute(request, signal);
99
- const { image, ...metadata } = result;
99
+ const { image: rawImage, ...rawMetadata } = result;
100
100
  try {
101
- readNativeComputerResult(metadata);
101
+ readNativeComputerResult(rawMetadata);
102
102
  }
103
103
  catch (error) {
104
- image?.bytes.fill(0);
104
+ rawImage?.bytes.fill(0);
105
105
  throw error;
106
106
  }
107
+ const { image, ...metadata } = protectDesktopResult(result);
107
108
  if (!image)
108
109
  return successResult({
109
110
  output: "Native desktop observation.",
@@ -9,7 +9,7 @@ export function createUnixNativeProcess(options) {
9
9
  let failedReason;
10
10
  let buffer = Buffer.alloc(0);
11
11
  let queue = Promise.resolve();
12
- let lastResult;
12
+ let lastDesktop;
13
13
  function interruptedResult(reason) {
14
14
  const dispatch = pending?.request.operation === "act"
15
15
  ? (pending.dispatch ?? {
@@ -19,13 +19,9 @@ export function createUnixNativeProcess(options) {
19
19
  })
20
20
  : undefined;
21
21
  const result = unavailableUnixDesktop(options.platform, reason, dispatch);
22
- if (!lastResult)
22
+ if (!lastDesktop)
23
23
  return result;
24
- return {
25
- ...result,
26
- desktop: { ...lastResult.desktop, available: false, reason },
27
- windows: lastResult.windows,
28
- };
24
+ return { ...result, desktop: { ...result.desktop, ...lastDesktop } };
29
25
  }
30
26
  function terminate(reason) {
31
27
  failedReason = reason;
@@ -38,6 +34,7 @@ export function createUnixNativeProcess(options) {
38
34
  retiring.once("exit", () => clearTimeout(hardStop));
39
35
  }
40
36
  child = undefined;
37
+ buffer.fill(0);
41
38
  buffer = Buffer.alloc(0);
42
39
  }
43
40
  function receiveLine(line) {
@@ -54,7 +51,18 @@ export function createUnixNativeProcess(options) {
54
51
  if (message.type !== "result")
55
52
  throw new Error("native_protocol_invalid");
56
53
  const result = readUnixNativeResult(message.result, options.platform);
57
- lastResult = result;
54
+ // Retain only mechanical interruption identity, never observation content.
55
+ lastDesktop = {
56
+ binding: result.desktop.binding,
57
+ bounds: {
58
+ x: result.desktop.bounds.x,
59
+ y: result.desktop.bounds.y,
60
+ width: result.desktop.bounds.width,
61
+ height: result.desktop.bounds.height,
62
+ },
63
+ coordinateSpace: result.desktop.coordinateSpace,
64
+ targetingGuarantee: result.desktop.targetingGuarantee,
65
+ };
58
66
  pending.finish(result);
59
67
  }
60
68
  function ensureHelper() {
@@ -69,15 +77,19 @@ export function createUnixNativeProcess(options) {
69
77
  child.stdout.on("data", (chunk) => {
70
78
  if (closed || failedReason)
71
79
  return;
72
- buffer = Buffer.concat([buffer, chunk]);
80
+ const previous = buffer;
81
+ buffer = Buffer.concat([previous, chunk]);
82
+ previous.fill(0);
73
83
  if (buffer.length > NATIVE_JSON_LIMIT) {
74
84
  terminate("computer_native_result_limit");
75
85
  return;
76
86
  }
77
87
  let boundary = buffer.indexOf(10);
78
88
  while (boundary >= 0) {
79
- const line = buffer.subarray(0, boundary).toString("utf8");
80
- buffer = buffer.subarray(boundary + 1);
89
+ const received = buffer;
90
+ const line = received.subarray(0, boundary).toString("utf8");
91
+ buffer = Buffer.from(received.subarray(boundary + 1));
92
+ received.fill(0);
81
93
  try {
82
94
  receiveLine(line);
83
95
  }
@@ -22,7 +22,7 @@ export type SystemProcessResult = Readonly<{
22
22
  exitCode: number | null;
23
23
  stdout: string;
24
24
  stderr: string;
25
- status: "completed" | "timeout" | "aborted" | "spawn_failed";
25
+ status: "completed" | "timeout" | "aborted" | "spawn_failed" | "output_failed";
26
26
  outputTruncated: boolean;
27
27
  spawnedProcess?: SystemSpawnObservation;
28
28
  }>;
@@ -1,3 +1,5 @@
1
1
  import { type ToolImplementation } from "../plugin-sdk/index.js";
2
2
  import { type SystemProcessRunner, type SystemTarget, type SystemTargetId } from "./contracts.js";
3
- export declare function createSystemHandlers(run?: SystemProcessRunner, resolveTarget?: (id: SystemTargetId) => Promise<SystemTarget>): Record<string, ToolImplementation>;
3
+ import type { SystemCommandOutputFactory } from "./command-output.js";
4
+ import type { SystemResultProtection } from "./system-result-protection.js";
5
+ export declare function createSystemHandlers(run?: SystemProcessRunner, resolveTarget?: (id: SystemTargetId) => Promise<SystemTarget>, commandOutput?: SystemCommandOutputFactory, protection?: SystemResultProtection): Record<string, ToolImplementation>;