@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,4 +1,5 @@
1
1
  import { createMacCollectionConsent } from "./components/passive-learning/macos-collection-consent.js";
2
+ import { createCollectionConsentGate } from "./components/passive-learning/collection-consent-gate.js";
2
3
  import { createPassiveLearningController } from "./controllers/passive-learning-controller.js";
3
4
  import { createPassiveLearningHome } from "./components/passive-learning/home.js";
4
5
  import { createPassiveLearningMemory } from "./components/passive-learning/memory.js";
@@ -17,8 +18,10 @@ export function createPassiveLearningFeature({
17
18
  let home;
18
19
  let memory;
19
20
  let collectionConsent;
21
+ let macConsent;
20
22
  function renderViews(snapshot) {
21
23
  collectionConsent?.update(snapshot);
24
+ macConsent?.update(snapshot);
22
25
  home?.render(snapshot);
23
26
  memory?.render(snapshot);
24
27
  }
@@ -31,15 +34,19 @@ export function createPassiveLearningFeature({
31
34
  onChange();
32
35
  },
33
36
  });
34
- collectionConsent = createMacCollectionConsent({
37
+ macConsent = createMacCollectionConsent({
35
38
  actions: controller,
36
39
  container: learningRoot,
37
40
  });
38
- const actions = { ...controller, configure: collectionConsent.configure };
41
+ collectionConsent = createCollectionConsentGate({
42
+ actions: { ...controller, configure: macConsent.configure },
43
+ container: learningRoot, openComputerAccess,
44
+ });
45
+ const actions = { ...controller, configure: collectionConsent.configure,
46
+ restartCollection: collectionConsent.restartCollection };
39
47
  home = createPassiveLearningHome({
40
48
  actions,
41
49
  openLearning,
42
- openComputerAccess,
43
50
  openSetup: () => {
44
51
  if (openLearning() === false) return;
45
52
  if (learningRoot) selectLearningView(learningRoot, "settings");
@@ -55,14 +62,19 @@ export function createPassiveLearningFeature({
55
62
  ...actions,
56
63
  setWorkspace(workspace) {
57
64
  collectionConsent.cancel();
65
+ macConsent.cancel();
58
66
  controller.setWorkspace(workspace);
59
67
  },
60
68
  handleRealtime(message) {
61
- if (message?.type === "system-host.changed") collectionConsent.cancel();
69
+ if (message?.type === "system-host.changed") {
70
+ collectionConsent.cancel();
71
+ macConsent.cancel();
72
+ }
62
73
  controller.handleRealtime(message);
63
74
  },
64
75
  environmentChanged() {
65
76
  collectionConsent.cancel();
77
+ macConsent.cancel();
66
78
  controller.environmentChanged();
67
79
  },
68
80
  mountHome: (root) => {
@@ -17,6 +17,7 @@ export function createRuntimeOnboardingFeature({
17
17
  const usesBridgeBackend = () => state.config?.backend === "bridge";
18
18
  let selectedGuide = null;
19
19
  let bindings = {};
20
+ shell?.runtimeAvailabilityChanged(state.runtimeAvailability);
20
21
 
21
22
  function createConfiguredGuide() {
22
23
  const common = {
@@ -52,6 +53,7 @@ export function createRuntimeOnboardingFeature({
52
53
  loadHostConnection: () => runtimeClient.getSystemHostConnection(),
53
54
  connectLocalHost: () => runtimeClient.connectLocalSystemHost(),
54
55
  createHostPairing: () => runtimeClient.createSystemHostPairing(),
56
+ requestHostStoreConnection: () => runtimeClient.requestSystemHostStoreConnection(),
55
57
  requestHostPermissions: (input) => runtimeClient.requestSystemHostPermissions(input),
56
58
  downloadHostSetup: (platform) =>
57
59
  runtimeClient.downloadSystemHostSetup(platform),
@@ -87,6 +89,7 @@ export function createRuntimeOnboardingFeature({
87
89
  };
88
90
  const controller = createRuntimeOnboardingController({
89
91
  state,
92
+ getEnvironmentId: selectedEnvironmentId,
90
93
  guide,
91
94
  reloadModels: () =>
92
95
  usesBridgeBackend() ? reloadCatalog() : reloadModels(),
@@ -1,8 +1,10 @@
1
+ import { createWorkspaceConversationOpener } from "./controllers/workspace-conversation-opener.js";
1
2
  import { createSchedulesController } from "./controllers/schedules-controller.js";
2
3
  import { createSchedulesWorkspace } from "./components/schedules/workspace.js";
3
4
 
4
5
  export function createSchedulesFeature({
5
6
  dom,
7
+ state = {},
6
8
  client,
7
9
  shell,
8
10
  selectedEnvironmentId,
@@ -13,6 +15,7 @@ export function createSchedulesFeature({
13
15
  documentRoot = globalThis.document,
14
16
  isRuntimeReady = () => true,
15
17
  }) {
18
+ const openConversation = createWorkspaceConversationOpener({ state, shell, openSession });
16
19
  let view;
17
20
  let active = false;
18
21
  let navigationRevision = 0;
@@ -29,10 +32,8 @@ export function createSchedulesFeature({
29
32
  onNavigationChange();
30
33
  },
31
34
  openConversation: async (sessionId, requestId) => {
32
- if (!shell.activateWorkspace("chat")) return;
33
- if (!sessionId) return;
34
35
  try {
35
- await openSession(sessionId);
36
+ if (!await openConversation(sessionId, { page: { targetRequestId: requestId } })) return;
36
37
  if (!requestId) return;
37
38
  requestAnimationFrame(() => {
38
39
  const messages = [
@@ -78,6 +79,7 @@ export function createSchedulesFeature({
78
79
  return client.supportsSchedules();
79
80
  },
80
81
  prepareLeave: view.prepareLeave,
82
+ prepareEnvironmentChange: view.prepareEnvironmentChange,
81
83
  navigationRevision: () => navigationRevision,
82
84
  selectedJobId: () => controller.snapshot().selectedId,
83
85
  setActive(value) {
@@ -6,25 +6,33 @@ type SessionSidebarPreferences = {
6
6
  archivedSessionIds: string[];
7
7
  orderedSessionIds: string[];
8
8
  };
9
+ type PreferenceStorage = {
10
+ getItem(key: string): string | null;
11
+ setItem(key: string, value: string): void | Promise<unknown>;
12
+ removeItem(key: string): void | Promise<unknown>;
13
+ subscribe?(listener: () => void): () => void;
14
+ flush?(): Promise<void>;
15
+ snapshot?(): { preferences: Record<string, string> } | null;
16
+ };
9
17
 
10
- export declare function createClientPreferences(storage: Pick<
11
- Storage, "getItem" | "setItem" | "removeItem"
12
- >): {
18
+ export declare function createClientPreferences(storage: PreferenceStorage): {
19
+ subscribe(listener: () => void): (() => void) | undefined;
20
+ flush(): Promise<void> | undefined;
13
21
  loadSessionSidebar(environmentId: string): SessionSidebarPreferences;
14
- saveSessionSidebar(environmentId: string, value: SessionSidebarPreferences): void;
22
+ saveSessionSidebar(environmentId: string, value: SessionSidebarPreferences): void | Promise<unknown>;
15
23
  loadPinnedSessions(): string[];
16
- savePinnedSessions(sessionIds: readonly string[]): void;
24
+ savePinnedSessions(sessionIds: readonly string[]): void | Promise<unknown>;
17
25
  loadSessionModes(normalize: (value: unknown) => ToolPermissionMode): SessionModeMap;
18
- saveSessionModes(modes: SessionModeMap): void;
26
+ saveSessionModes(modes: SessionModeMap): void | Promise<unknown>;
19
27
  loadLastToolPermissionMode(normalize: (value: unknown) => ToolPermissionMode): ToolPermissionMode;
20
- saveLastToolPermissionMode(mode: ToolPermissionMode): void;
28
+ saveLastToolPermissionMode(mode: ToolPermissionMode): void | Promise<unknown>;
21
29
  loadModelPreferences(): {
22
30
  sessionModels: PreferenceMap;
23
31
  lastModelByEnvironment: PreferenceMap;
24
32
  };
25
- saveModelPreferences(sessionModels: PreferenceMap, lastModelByEnvironment: PreferenceMap): void;
33
+ saveModelPreferences(sessionModels: PreferenceMap, lastModelByEnvironment: PreferenceMap): Promise<unknown[]>;
26
34
  environmentId(): string;
27
- saveEnvironmentId(environmentId: string): void;
35
+ saveEnvironmentId(environmentId: string): void | Promise<unknown>;
28
36
  sessionIdForEnvironment(environmentId: string): string;
29
- saveSessionIdForEnvironment(environmentId: string, sessionId: string): void;
37
+ saveSessionIdForEnvironment(environmentId: string, sessionId: string): void | Promise<unknown>;
30
38
  };
@@ -15,10 +15,10 @@ function parseObject(storage, key) {
15
15
  const raw = storage.getItem(key);
16
16
  const value = raw ? JSON.parse(raw) : {};
17
17
  return value && typeof value === "object" && !Array.isArray(value)
18
- ? value
19
- : {};
18
+ ? Object.assign(Object.create(null), value)
19
+ : Object.create(null);
20
20
  } catch {
21
- return {};
21
+ return Object.create(null);
22
22
  }
23
23
  }
24
24
 
@@ -36,10 +36,15 @@ function restoreSessionMode(value, normalizeToolPermissionMode) {
36
36
 
37
37
  export function createClientPreferences(storage) {
38
38
  return {
39
+ subscribe: (listener) => storage.subscribe?.(listener),
40
+ flush: () => storage.flush?.(),
39
41
  ...createSessionSidebarPreferences(storage),
40
42
  loadPinnedSessions() {
41
43
  try {
42
- const raw = storage.getItem(storageKeys.pinnedSessions);
44
+ const acknowledged = storage.snapshot?.();
45
+ const raw = acknowledged
46
+ ? acknowledged.preferences[storageKeys.pinnedSessions]
47
+ : storage.getItem(storageKeys.pinnedSessions);
43
48
  const value = raw ? JSON.parse(raw) : [];
44
49
  return Array.isArray(value)
45
50
  ? value.map((id) => String(id || "")).filter(Boolean)
@@ -50,7 +55,7 @@ export function createClientPreferences(storage) {
50
55
  },
51
56
 
52
57
  savePinnedSessions(sessionIds) {
53
- storage.setItem(storageKeys.pinnedSessions, JSON.stringify(sessionIds));
58
+ return storage.setItem(storageKeys.pinnedSessions, JSON.stringify(sessionIds));
54
59
  },
55
60
 
56
61
  loadSessionModes(normalizeToolPermissionMode) {
@@ -61,24 +66,25 @@ export function createClientPreferences(storage) {
61
66
  return restored ? [[sessionId, restored]] : [];
62
67
  },
63
68
  ));
64
- storage.setItem(storageKeys.sessionModes, JSON.stringify(modes));
65
- return modes;
69
+ return Object.assign(Object.create(null), modes);
66
70
  },
67
71
 
68
72
  saveSessionModes(modes) {
69
- storage.setItem(storageKeys.sessionModes, JSON.stringify(modes));
73
+ return storage.setItem(storageKeys.sessionModes, JSON.stringify(modes));
70
74
  },
71
75
 
72
76
  loadLastToolPermissionMode(normalizeToolPermissionMode) {
73
77
  try {
74
- return normalizeToolPermissionMode(storage.getItem(storageKeys.lastToolPermissionMode));
78
+ const mode = storage.getItem(storageKeys.lastToolPermissionMode);
79
+ if (!["ask", "full_access", "full_plus"].includes(mode)) return "ask";
80
+ return normalizeToolPermissionMode(mode);
75
81
  } catch {
76
- return "full_access";
82
+ return "ask";
77
83
  }
78
84
  },
79
85
 
80
86
  saveLastToolPermissionMode(mode) {
81
- storage.setItem(storageKeys.lastToolPermissionMode, mode);
87
+ return storage.setItem(storageKeys.lastToolPermissionMode, mode);
82
88
  },
83
89
 
84
90
  loadModelPreferences() {
@@ -92,11 +98,14 @@ export function createClientPreferences(storage) {
92
98
  },
93
99
 
94
100
  saveModelPreferences(sessionModels, lastModelByEnvironment) {
95
- storage.setItem(storageKeys.sessionModels, JSON.stringify(sessionModels));
96
- storage.setItem(
101
+ const sessions = storage.setItem(storageKeys.sessionModels, JSON.stringify(sessionModels));
102
+ const environments = storage.setItem(
97
103
  storageKeys.lastModelByEnvironment,
98
104
  JSON.stringify(lastModelByEnvironment),
99
105
  );
106
+ const saved = Promise.all([sessions, environments]);
107
+ void saved.catch(() => {});
108
+ return saved;
100
109
  },
101
110
 
102
111
  environmentId() {
@@ -105,8 +114,8 @@ export function createClientPreferences(storage) {
105
114
 
106
115
  saveEnvironmentId(environmentId) {
107
116
  if (environmentId)
108
- storage.setItem(storageKeys.environmentId, environmentId);
109
- else storage.removeItem(storageKeys.environmentId);
117
+ return storage.setItem(storageKeys.environmentId, environmentId);
118
+ return storage.removeItem(storageKeys.environmentId);
110
119
  },
111
120
 
112
121
  sessionIdForEnvironment(environmentId) {
@@ -124,7 +133,7 @@ export function createClientPreferences(storage) {
124
133
  );
125
134
  if (sessionId) sessions[environmentId] = sessionId;
126
135
  else delete sessions[environmentId];
127
- storage.setItem(
136
+ return storage.setItem(
128
137
  storageKeys.currentSessionByEnvironment,
129
138
  JSON.stringify(sessions),
130
139
  );
@@ -1,4 +1,4 @@
1
- /** Browser-local review receipts only. Memory content never goes into storage. */
1
+ /** Bounded review receipts only. Memory content is owned by the memory service. */
2
2
  export function createHomeGuidancePreferences(storage) {
3
3
  const key = (environment) => `abot-web.homeGuidance.${encodeURIComponent(environment)}`;
4
4
  const volatile = new Map();
@@ -9,35 +9,35 @@ export function createHomeGuidancePreferences(storage) {
9
9
  if (value && typeof value === "object" && !Array.isArray(value)) return {
10
10
  offeredOn: typeof value.offeredOn === "string" ? value.offeredOn : "",
11
11
  dismissed: Array.isArray(value.dismissed) ? value.dismissed.filter((id) => typeof id === "string").slice(-8) : [],
12
- reviewed: Array.isArray(value.reviewed) ? value.reviewed.filter((id) => typeof id === "string").slice(-200) : [],
12
+ reviewed: Array.isArray(value.reviewed) ? value.reviewed.filter((item) => typeof item?.id === "string" && typeof item.updatedAt === "string").slice(-200) : [],
13
13
  };
14
- } catch { /* Browser preferences may be unavailable. */ }
14
+ } catch { /* A malformed projection does not count as a review receipt. */ }
15
15
  return volatile.get(environment) || {};
16
16
  }
17
17
  function save(environment, patch) {
18
18
  const value = { ...read(environment), ...patch };
19
- try {
20
- if (!storage) throw new Error("Storage unavailable");
21
- storage.setItem(key(environment), JSON.stringify(value));
22
- volatile.delete(environment);
23
- } catch { volatile.set(environment, value); }
19
+ if (!storage) { volatile.set(environment, value); return; }
20
+ return storage.setItem(key(environment), JSON.stringify(value));
24
21
  }
25
22
  return {
26
23
  dismissed: (environment) => read(environment).dismissed || [],
27
24
  dismiss(environment, id) {
28
25
  const dismissed = new Set(read(environment).dismissed || []);
29
26
  dismissed.add(id);
30
- save(environment, { dismissed: [...dismissed].slice(-8) });
27
+ return save(environment, { dismissed: [...dismissed].slice(-8) });
31
28
  },
32
29
  wasOffered: (environment, day) => read(environment).offeredOn === day,
33
30
  markOffered: (environment, day) => save(environment, { offeredOn: day }),
34
31
  hasReviewed(environment, record) {
35
- return (read(environment).reviewed || []).includes(`${record.id}:${record.updatedAt}`);
32
+ return (read(environment).reviewed || []).some((item) => item.id === record.id && item.updatedAt === record.updatedAt);
36
33
  },
37
34
  markReviewed(environment, record) {
38
- const receipt = `${record.id}:${record.updatedAt}`;
39
- const reviewed = (read(environment).reviewed || []).filter((id) => id !== receipt);
40
- save(environment, { reviewed: [...reviewed, receipt].slice(-200) });
35
+ const reviewed = (read(environment).reviewed || []).filter((item) => item.id !== record.id);
36
+ return save(environment, { reviewed: [...reviewed, { id: record.id, updatedAt: record.updatedAt }].slice(-200) });
37
+ },
38
+ forgetReviewed(environment, id) {
39
+ const reviewed = (read(environment).reviewed || []).filter((item) => item.id !== id);
40
+ return save(environment, { reviewed });
41
41
  },
42
42
  };
43
43
  }
@@ -0,0 +1,12 @@
1
+ /** Save only the selected profile flag through the revision-checked config service. */
2
+ export async function enableModelReasoning(client, profileId, environmentId) {
3
+ const payload = await client.loadConfigDashboard(environmentId, { settled: true });
4
+ const file = payload?.dashboard?.files?.models?.find((item) => item.id === profileId && item.registered === true);
5
+ if (!file || file.invalidJson || !file.revision)
6
+ throw new Error("This model cannot be updated here. Open Models to review its configuration.");
7
+ if (file.config?.supportsThinking === true) return;
8
+ await client.saveConfigFile({
9
+ environmentId, kind: "model", id: profileId,
10
+ config: { ...file.config, supportsThinking: true }, expectedRevision: file.revision,
11
+ });
12
+ }
@@ -47,8 +47,16 @@ export function createAutomationRequests({ requestApi, getEnvironmentId, getConf
47
47
  requestAutomation(path(`/${encodeURIComponent(automationId)}/permission`, environmentId), {
48
48
  method: "PUT", body: JSON.stringify(permission),
49
49
  }),
50
- getAutomationCatalog: (automationId, environmentId) =>
51
- requestAutomation(`${path("/catalog", environmentId)}&automation=${encodeURIComponent(automationId)}`),
50
+ async getAutomationCatalog(automationId, environmentId = getEnvironmentId()) {
51
+ const [catalog, modelCatalog] = await Promise.all([
52
+ requestAutomation(`${path("/catalog", environmentId)}&automation=${encodeURIComponent(automationId)}`),
53
+ requestAutomation(`/chat/models?environment=${encodeURIComponent(environmentId)}`),
54
+ ]);
55
+ return { ...catalog, models: (catalog.models || []).map((model) => ({
56
+ ...model,
57
+ supportsThinking: modelCatalog.profiles?.find((profile) => profile.id === model.id)?.supportsThinking === true,
58
+ })) };
59
+ },
52
60
  startAutomationRun: (automationId, idempotencyKey, environmentId) =>
53
61
  post(path(`/${encodeURIComponent(automationId)}/run`, environmentId), { idempotencyKey }),
54
62
  listAutomationRuns: (automationId, environmentId) =>
@@ -1,8 +1,10 @@
1
+ import { createPluginConfigurationRequests } from "./plugin-configuration.js";
1
2
  /** Configuration transport; credentials are sent once and never retained here. */
2
3
  export function createConfigurationRequests({ requestApi, environmentQuery }) {
3
4
  const scoped = (path, environmentId) =>
4
5
  path + "?environment=" + environmentQuery(environmentId);
5
6
  return {
7
+ ...createPluginConfigurationRequests({ requestApi, environmentQuery }),
6
8
  getRuntimeSetup(environmentId) {
7
9
  return requestApi(scoped("/runtime/setup", environmentId));
8
10
  },
@@ -42,6 +44,24 @@ export function createConfigurationRequests({ requestApi, environmentQuery }) {
42
44
  body: JSON.stringify(input),
43
45
  });
44
46
  },
47
+ inspectRuntimePlugin(input, environmentId) {
48
+ return requestApi(scoped("/runtime/plugins/inspect", environmentId), {
49
+ method: "POST",
50
+ body: JSON.stringify(input),
51
+ });
52
+ },
53
+ installRuntimePlugin(input, environmentId) {
54
+ return requestApi(scoped("/runtime/plugins/install", environmentId), {
55
+ method: "POST",
56
+ body: JSON.stringify(input),
57
+ });
58
+ },
59
+ removeRuntimePlugin(input, environmentId) {
60
+ return requestApi(scoped("/runtime/plugins/remove", environmentId), {
61
+ method: "POST",
62
+ body: JSON.stringify(input),
63
+ });
64
+ },
45
65
  applyRuntimeConfiguration(environmentId) {
46
66
  return requestApi(scoped("/runtime/config/apply", environmentId), {
47
67
  method: "POST",
@@ -2,6 +2,7 @@ export function createLongTermMemoryRequests({
2
2
  requestApi,
3
3
  getEnvironmentId,
4
4
  environmentQuery,
5
+ onMemoryDeleted = async () => {},
5
6
  }) {
6
7
  return Object.freeze({
7
8
  loadLongTermMemoryStatus(environmentId = getEnvironmentId()) {
@@ -102,13 +103,17 @@ export function createLongTermMemoryRequests({
102
103
  });
103
104
  },
104
105
 
105
- deleteLongTermMemory({ environmentId = getEnvironmentId(), id }) {
106
- return requestApi(
106
+ async deleteLongTermMemory({ environmentId = getEnvironmentId(), id }) {
107
+ const result = await requestApi(
107
108
  `/runtime/memory/records/${encodeURIComponent(
108
109
  id,
109
110
  )}?environment=${environmentQuery(environmentId)}`,
110
111
  { method: "DELETE" },
111
112
  );
113
+ if (result?.deleted !== true) return result;
114
+ try { await onMemoryDeleted(environmentId, id); }
115
+ catch { /* Receipt storage reports its failure separately; DELETE already succeeded. */ }
116
+ return result;
112
117
  },
113
118
  });
114
119
  }
@@ -0,0 +1,19 @@
1
+ /** Plugin configuration transport never retains entered credentials. */
2
+ export function createPluginConfigurationRequests({
3
+ requestApi,
4
+ environmentQuery,
5
+ }) {
6
+ const path = (pluginId, environmentId) =>
7
+ `/runtime/plugins/configuration/${encodeURIComponent(pluginId)}?environment=${environmentQuery(environmentId)}`;
8
+ return {
9
+ getPluginConfiguration(pluginId, environmentId) {
10
+ return requestApi(path(pluginId, environmentId));
11
+ },
12
+ savePluginConfiguration(pluginId, input, environmentId) {
13
+ return requestApi(path(pluginId, environmentId), {
14
+ method: "PUT",
15
+ body: JSON.stringify(input),
16
+ });
17
+ },
18
+ };
19
+ }
@@ -1,16 +1,16 @@
1
1
  export function createSparkChatRequests({ requestApi, getEnvironmentId, getConfig }) {
2
2
  const supportsSparkChat = () => getConfig()?.backend === "runtime";
3
- function path(environmentId) {
3
+ function path(environmentId, paged = false) {
4
4
  if (!supportsSparkChat()) throw new Error("SPARK chat is unavailable with this backend.");
5
- return `/runtime/spark/chat?${new URLSearchParams({ environment: environmentId })}`;
5
+ return `/runtime/spark/chat?${new URLSearchParams({ environment: environmentId, ...(paged ? { page: "1" } : {}) })}`;
6
6
  }
7
7
  return {
8
8
  supportsSparkChat,
9
9
  loadSparkChat(environmentId = getEnvironmentId()) {
10
- return requestApi(path(environmentId));
10
+ return requestApi(path(environmentId, true));
11
11
  },
12
12
  configureSparkChat(input, environmentId = getEnvironmentId()) {
13
- return requestApi(path(environmentId), {
13
+ return requestApi(path(environmentId, true), {
14
14
  method: "PUT", body: JSON.stringify(input),
15
15
  });
16
16
  },
@@ -14,10 +14,14 @@ export function createSystemHostRequests({ requestApi, getConfig, getEnvironment
14
14
  return {
15
15
  supportsSystemHostConnection,
16
16
  getSystemHostConnection: () => requestSystemHost(`?environment=${encodeURIComponent(getEnvironmentId())}`),
17
+ acceptSystemHostCollectionConsent: () =>
18
+ requestSystemHost("/collection-consent", { method: "POST", body: JSON.stringify({ acknowledged: true }) }),
17
19
  requestSystemHostPermissions: (input) =>
18
20
  requestSystemHost("/permissions", { method: "POST", body: JSON.stringify(input) }),
19
21
  connectLocalSystemHost: () =>
20
22
  requestSystemHost("/connect-local", { method: "POST", body: "{}" }),
23
+ requestSystemHostStoreConnection: () =>
24
+ requestSystemHost("/store-connect", { method: "POST", body: "{}" }),
21
25
  downloadSystemHostSetup: (platform, options = {}) =>
22
26
  requestSystemHost("/setup", {
23
27
  method: "POST",
@@ -84,6 +84,7 @@ export declare function createRuntimeWebClient(options: {
84
84
  getEnvironmentId: () => string;
85
85
  fetchImpl?: typeof fetch;
86
86
  origin?: string;
87
+ onMemoryDeleted?: (environmentId: string, id: string) => Promise<unknown> | void;
87
88
  }): {
88
89
  supportsSparkChat: SparkChatRequests["supportsSparkChat"];
89
90
  loadSparkChat: SparkChatRequests["loadSparkChat"];
@@ -99,8 +100,10 @@ export declare function createRuntimeWebClient(options: {
99
100
  decideToolApproval: ToolApprovalRequests["decideToolApproval"];
100
101
  supportsSystemHostConnection(): boolean;
101
102
  getSystemHostConnection(): Promise<Record<string, unknown>>;
103
+ acceptSystemHostCollectionConsent(): Promise<Record<string, unknown>>;
102
104
  requestSystemHostPermissions(input: Record<string, unknown>): Promise<Record<string, unknown>>;
103
105
  connectLocalSystemHost(): Promise<Record<string, unknown>>;
106
+ requestSystemHostStoreConnection(): Promise<Record<string, unknown>>;
104
107
  downloadSystemHostSetup(
105
108
  platform: "windows" | "macos" | "linux",
106
109
  options?: { purpose?: "learning" },
@@ -128,6 +131,9 @@ export declare function createRuntimeWebClient(options: {
128
131
  environmentId?: string,
129
132
  ): Promise<Record<string, unknown>>;
130
133
  getRuntimePlugins(environmentId?: string): Promise<Record<string, unknown>>;
134
+ inspectRuntimePlugin(input: Record<string, unknown>, environmentId?: string): Promise<Record<string, unknown>>;
135
+ installRuntimePlugin(input: Record<string, unknown>, environmentId?: string): Promise<Record<string, unknown>>;
136
+ removeRuntimePlugin(input: { pluginId: string }, environmentId?: string): Promise<Record<string, unknown>>;
131
137
  setRuntimePlugin(
132
138
  input: { pluginId: string; capabilityId?: string; enabled: boolean },
133
139
  environmentId?: string,
@@ -217,10 +223,11 @@ export declare function createRuntimeWebClient(options: {
217
223
  file: Blob;
218
224
  }): Promise<Record<string, unknown>>;
219
225
  loadWebConfig(): Promise<Record<string, unknown>>;
220
- listSessions(environmentId?: string): Promise<Record<string, unknown>>;
226
+ listSessions(environmentId?: string, page?: Record<string, unknown>): Promise<Record<string, unknown>>;
221
227
  loadSession(
222
228
  sessionId: string,
223
229
  environmentId?: string,
230
+ page?: Record<string, unknown>,
224
231
  ): Promise<Record<string, unknown>>;
225
232
  markSessionRead(options: {
226
233
  sessionId: string;
@@ -36,6 +36,7 @@ export function createRuntimeWebClient({
36
36
  getEnvironmentId,
37
37
  fetchImpl = fetch,
38
38
  origin = window.location.origin,
39
+ onMemoryDeleted,
39
40
  }) {
40
41
  const environmentQuery = (environmentId = getEnvironmentId()) =>
41
42
  encodeURIComponent(environmentId);
@@ -98,6 +99,7 @@ export function createRuntimeWebClient({
98
99
  requestApi,
99
100
  getEnvironmentId,
100
101
  environmentQuery,
102
+ onMemoryDeleted,
101
103
  });
102
104
 
103
105
  return {
@@ -168,17 +170,26 @@ export function createRuntimeWebClient({
168
170
  return request("/web-config", "Web configuration");
169
171
  },
170
172
 
171
- listSessions(environmentId = getEnvironmentId()) {
173
+ listSessions(environmentId = getEnvironmentId(), page) {
174
+ if (page && getConfig()?.backend === "runtime") return requestApi(
175
+ `/chat/sessions/page?environment=${environmentQuery(environmentId)}`,
176
+ { method: "POST", body: JSON.stringify(page) },
177
+ );
172
178
  return requestApi(
173
179
  `/chat/sessions?environment=${environmentQuery(environmentId)}`,
174
180
  );
175
181
  },
176
182
 
177
- loadSession(sessionId, environmentId = getEnvironmentId()) {
183
+ loadSession(sessionId, environmentId = getEnvironmentId(), page = {}) {
184
+ const query = new URLSearchParams({ environment: environmentId });
185
+ if (getConfig()?.backend === "runtime") {
186
+ query.set("page", "1");
187
+ for (const [key, value] of Object.entries(page)) if (value != null) query.set(key, String(value));
188
+ }
178
189
  return requestApi(
179
190
  `/chat/sessions/${encodeURIComponent(
180
191
  sessionId,
181
- )}/messages?environment=${environmentQuery(environmentId)}`,
192
+ )}/messages?${query}`,
182
193
  );
183
194
  },
184
195
 
@@ -0,0 +1,32 @@
1
+ import { createSessionComposerQueue } from "../lib/session-composer-queue.js";
2
+
3
+ /** Reads use the latest server projection. Mutations are serialized by the server. */
4
+ export function createServerComposerQueue(storage) {
5
+ const ownerId = createWindowIdentity();
6
+ const view = () => createSessionComposerQueue({ storage: {
7
+ getItem: () => storage.snapshot()?.queue || null,
8
+ setItem() { throw new Error("Queue writes require server acknowledgement."); },
9
+ } });
10
+ const change = (scope, action, input = {}) =>
11
+ storage.execute({ kind: "queue", scope, action, ownerId, ...input });
12
+ return {
13
+ list: (scope) => view().list(scope),
14
+ peek: (scope) => view().peek(scope),
15
+ getBlockedRelease: (scope) => view().getBlockedRelease(scope),
16
+ claimBlockedRelease: (scope, releaseToken, options = {}) => change(scope, "claim", { releaseToken, takeover: options.takeover === true }),
17
+ beginBlockedSend: (scope, releaseToken) => change(scope, "begin", { releaseToken }),
18
+ markBlockedUncertain: (scope, releaseToken) => change(scope, "uncertain", { releaseToken }),
19
+ enqueue: (scope, item) => change(scope, "enqueue", { item }),
20
+ releaseForTerminal: (scope, requestId) => change(scope, "release", { requestId }),
21
+ bindReleasedSuccess: (scope, releaseToken, requestId) => change(scope, "bind", { releaseToken, requestId }),
22
+ rebindBlocked: (scope, requestId) => change(scope, "rebind", { requestId }),
23
+ updateBlockedRelease: (scope, releaseToken, item) => change(scope, "update", { releaseToken, item }),
24
+ refresh: () => storage.refresh(),
25
+ };
26
+ }
27
+
28
+ function createWindowIdentity() {
29
+ if (globalThis.crypto?.randomUUID) return globalThis.crypto.randomUUID();
30
+ // getRandomValues is also available on HTTP LAN origins, unlike randomUUID.
31
+ return [...globalThis.crypto.getRandomValues(new Uint32Array(4))].join("-");
32
+ }
@@ -8,11 +8,11 @@ function sessionIds(value) {
8
8
  function readEnvironments(storage) {
9
9
  try {
10
10
  const value = JSON.parse(storage.getItem(storageKey) || "{}");
11
- if (!value || typeof value !== "object") return {};
12
- if (Array.isArray(value)) return {};
13
- return value;
11
+ if (!value || typeof value !== "object") return Object.create(null);
12
+ if (Array.isArray(value)) return Object.create(null);
13
+ return Object.assign(Object.create(null), value);
14
14
  } catch {
15
- return {};
15
+ return Object.create(null);
16
16
  }
17
17
  }
18
18
 
@@ -36,7 +36,7 @@ export function createSessionSidebarPreferences(storage) {
36
36
  configurable: true,
37
37
  writable: true,
38
38
  });
39
- storage.setItem(storageKey, JSON.stringify(environments));
39
+ return storage.setItem(storageKey, JSON.stringify(environments));
40
40
  },
41
41
  };
42
42
  }