@abot-ai/runtime 1.7.0 → 1.8.1

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 (532) hide show
  1. package/README.md +216 -222
  2. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +8 -0
  3. package/dist/src/capabilities/tool-request-resources.d.ts +3 -0
  4. package/dist/src/capabilities/tool-types.d.ts +4 -0
  5. package/dist/src/cli/abot.js +2 -0
  6. package/dist/src/cli/host-companion-bundle.mjs +751 -333
  7. package/dist/src/computer-access/collection-consent.d.ts +9 -0
  8. package/dist/src/computer-access/collection-consent.js +47 -0
  9. package/dist/src/computer-access/command-output-capture.d.ts +17 -6
  10. package/dist/src/computer-access/command-output-capture.js +134 -68
  11. package/dist/src/computer-access/command-output-protection.d.ts +17 -0
  12. package/dist/src/computer-access/command-output-protection.js +59 -0
  13. package/dist/src/computer-access/companion/command-output.d.ts +1 -0
  14. package/dist/src/computer-access/companion/command-output.js +23 -6
  15. package/dist/src/computer-access/companion/install-link-macos.js +2 -1
  16. package/dist/src/computer-access/companion/native-notifications.js +3 -2
  17. package/dist/src/computer-access/companion/native-session.js +6 -2
  18. package/dist/src/computer-access/companion/observation-filter.js +2 -26
  19. package/dist/src/computer-access/companion/observation-process.d.ts +2 -0
  20. package/dist/src/computer-access/companion/observation-process.js +51 -25
  21. package/dist/src/computer-access/companion/observation-redaction.d.ts +2 -7
  22. package/dist/src/computer-access/companion/observation-redaction.js +2 -111
  23. package/dist/src/computer-access/companion/secret-protection-protocol.d.ts +6 -0
  24. package/dist/src/computer-access/companion/secret-protection-protocol.js +6 -0
  25. package/dist/src/computer-access/computer/companion-sessions.js +7 -6
  26. package/dist/src/computer-access/computer/unix-native-process.js +23 -11
  27. package/dist/src/computer-access/handlers.d.ts +2 -1
  28. package/dist/src/computer-access/handlers.js +79 -11
  29. package/dist/src/computer-access/host-observation.d.ts +3 -3
  30. package/dist/src/computer-access/native-observation-connection.d.ts +12 -0
  31. package/dist/src/computer-access/native-observation-connection.js +78 -0
  32. package/dist/src/computer-access/native-observation-ownership.d.ts +6 -0
  33. package/dist/src/computer-access/native-observation-ownership.js +55 -0
  34. package/dist/src/computer-access/native-observation-shutdown.d.ts +7 -0
  35. package/dist/src/computer-access/native-observation-shutdown.js +58 -0
  36. package/dist/src/computer-access/observation-source.d.ts +6 -0
  37. package/dist/src/computer-access/observation-source.js +10 -0
  38. package/dist/src/computer-access/security/desktop-result.d.ts +8 -0
  39. package/dist/src/computer-access/security/desktop-result.js +146 -0
  40. package/dist/src/computer-access/security/observed-error.d.ts +2 -0
  41. package/dist/src/computer-access/security/observed-error.js +10 -0
  42. package/dist/src/computer-access/security/secret-text.d.ts +7 -0
  43. package/dist/src/computer-access/security/secret-text.js +111 -0
  44. package/dist/src/computer-access/security/system-results.d.ts +2 -0
  45. package/dist/src/computer-access/security/system-results.js +53 -0
  46. package/dist/src/computer-access/system-result-protection.d.ts +11 -0
  47. package/dist/src/computer-access/system-result-protection.js +1 -0
  48. package/dist/src/model-gateway/observability/provider-response-capture.d.ts +60 -0
  49. package/dist/src/model-gateway/observability/provider-response-capture.js +68 -0
  50. package/dist/src/model-gateway/observability/provider-response-prefix.d.ts +7 -0
  51. package/dist/src/model-gateway/observability/provider-response-prefix.js +14 -0
  52. package/dist/src/model-gateway/observability/provider-response-tail.d.ts +8 -0
  53. package/dist/src/model-gateway/observability/provider-response-tail.js +28 -0
  54. package/dist/src/model-gateway/observability/provider-sse-diagnostics.d.ts +30 -0
  55. package/dist/src/model-gateway/observability/provider-sse-diagnostics.js +119 -0
  56. package/dist/src/model-gateway/observability/provider-trace.js +30 -8
  57. package/dist/src/model-gateway/protocol/message-contract.d.ts +1 -0
  58. package/dist/src/model-gateway/protocol/message-contract.js +1 -1
  59. package/dist/src/model-gateway/providers/ollama/adapter.js +8 -2
  60. package/dist/src/model-gateway/providers/ollama/stream-normalizer.js +70 -50
  61. package/dist/src/model-gateway/providers/ollama/stream-termination.d.ts +6 -0
  62. package/dist/src/model-gateway/providers/ollama/stream-termination.js +20 -0
  63. package/dist/src/model-gateway/providers/openai/adapter.js +9 -7
  64. package/dist/src/model-gateway/providers/openai/diagnostics.d.ts +0 -1
  65. package/dist/src/model-gateway/providers/openai/diagnostics.js +0 -9
  66. package/dist/src/model-gateway/providers/openai/function-output.d.ts +11 -0
  67. package/dist/src/model-gateway/providers/openai/function-output.js +37 -0
  68. package/dist/src/model-gateway/providers/openai/function-result.d.ts +7 -0
  69. package/dist/src/model-gateway/providers/openai/function-result.js +35 -0
  70. package/dist/src/model-gateway/providers/openai/message-output-policy.d.ts +3 -0
  71. package/dist/src/model-gateway/providers/openai/message-output-policy.js +16 -0
  72. package/dist/src/model-gateway/providers/openai/payload.d.ts +0 -2
  73. package/dist/src/model-gateway/providers/openai/payload.js +6 -23
  74. package/dist/src/model-gateway/providers/openai/response-lifetime.d.ts +2 -0
  75. package/dist/src/model-gateway/providers/openai/response-lifetime.js +64 -0
  76. package/dist/src/model-gateway/providers/openai/sse-data.d.ts +9 -0
  77. package/dist/src/model-gateway/providers/openai/sse-data.js +67 -0
  78. package/dist/src/model-gateway/providers/openai/stream-normalizer.d.ts +10 -22
  79. package/dist/src/model-gateway/providers/openai/stream-normalizer.js +78 -79
  80. package/dist/src/model-gateway/providers/openai/stream.js +13 -41
  81. package/dist/src/model-gateway/providers/openai/structured-message-output.d.ts +42 -0
  82. package/dist/src/model-gateway/providers/openai/structured-message-output.js +175 -0
  83. package/dist/src/model-gateway/server/chat-handler.js +5 -7
  84. package/dist/src/model-gateway/server/chat-stream-response.d.ts +7 -0
  85. package/dist/src/model-gateway/server/chat-stream-response.js +25 -0
  86. package/dist/src/model-gateway/server.js +5 -1
  87. package/dist/src/plugin-contract/index.d.ts +1 -0
  88. package/dist/src/plugin-contract/index.js +1 -0
  89. package/dist/src/plugin-contract/manifest.d.ts +2 -0
  90. package/dist/src/plugin-contract/manifest.js +1 -0
  91. package/dist/src/plugin-contract/platform-compatibility.d.ts +16 -0
  92. package/dist/src/plugin-contract/platform-compatibility.js +3 -0
  93. package/dist/src/plugin-sdk/computer-access.d.ts +4 -0
  94. package/dist/src/plugin-sdk/computer-access.js +1 -0
  95. package/dist/src/plugin-sdk/files-windows/process.d.ts +3 -0
  96. package/dist/src/plugin-sdk/files-windows/process.js +93 -0
  97. package/dist/src/plugin-sdk/files-windows/read-script.d.ts +1 -0
  98. package/dist/src/plugin-sdk/files-windows/read-script.js +43 -0
  99. package/dist/src/plugin-sdk/files-windows/read.d.ts +6 -0
  100. package/dist/src/plugin-sdk/files-windows/read.js +56 -0
  101. package/dist/src/plugin-sdk/files-windows/result.d.ts +4 -0
  102. package/dist/src/plugin-sdk/files-windows/result.js +67 -0
  103. package/dist/src/plugin-sdk/files.js +4 -0
  104. package/dist/src/plugin-sdk/index.d.ts +1 -0
  105. package/dist/src/plugin-sdk/index.js +1 -0
  106. package/dist/src/plugin-sdk/mutation-result.d.ts +7 -0
  107. package/dist/src/plugin-sdk/mutation-result.js +11 -0
  108. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +20 -3
  109. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +3 -1
  110. package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.d.ts +3 -0
  111. package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.js +20 -0
  112. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +7 -3
  113. package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +1 -1
  114. package/dist/src/runtime/adapters/passive-learning-runtime.js +3 -3
  115. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.d.ts +2 -2
  116. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-rejection.js +2 -2
  117. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +17 -11
  118. package/dist/src/runtime/adapters/runtime-observation-connection.d.ts +5 -0
  119. package/dist/src/runtime/adapters/runtime-observation-connection.js +13 -0
  120. package/dist/src/runtime/capabilities/tool-availability.js +6 -0
  121. package/dist/src/runtime/context/capability-brief.d.ts +2 -2
  122. package/dist/src/runtime/context/capability-brief.js +3 -3
  123. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -2
  124. package/dist/src/runtime/context/capability-descriptions.js +57 -20
  125. package/dist/src/runtime/local-host/windows-private-access.js +2 -0
  126. package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +6 -1
  127. package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +51 -25
  128. package/dist/src/runtime/long-term-memory/initial-context.d.ts +17 -0
  129. package/dist/src/runtime/long-term-memory/initial-context.js +57 -0
  130. package/dist/src/runtime/long-term-memory/projection.js +1 -1
  131. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -1
  132. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +1 -1
  133. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +5 -2
  134. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +2 -1
  135. package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -1
  136. package/dist/src/runtime/orchestration/role-calls/ledger.js +2 -2
  137. package/dist/src/runtime/orchestration/role-calls/memory-recall-contract.d.ts +7 -0
  138. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.d.ts +2 -0
  139. package/dist/src/runtime/orchestration/role-calls/memory-recall-state-validation.js +88 -0
  140. package/dist/src/runtime/orchestration/role-calls/reducer.d.ts +1 -1
  141. package/dist/src/runtime/orchestration/role-calls/reducer.js +2 -1
  142. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +3 -1
  143. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  144. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +5 -1
  145. package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.d.ts +5 -0
  146. package/dist/src/runtime/orchestration/worker-capabilities/execution/execution-freshness.js +31 -0
  147. package/dist/src/runtime/passive-learning/application-catalog.js +3 -1
  148. package/dist/src/runtime/passive-learning/collection-source.js +7 -0
  149. package/dist/src/runtime/passive-learning/service.js +2 -3
  150. package/dist/src/runtime/passive-learning/status-projection.d.ts +2 -0
  151. package/dist/src/runtime/passive-learning/status-projection.js +9 -0
  152. package/dist/src/runtime/plugins/installation/package.d.ts +8 -0
  153. package/dist/src/runtime/plugins/installation/package.js +2 -0
  154. package/dist/src/runtime/plugins/installation/service.d.ts +7 -0
  155. package/dist/src/runtime/plugins/loader.js +24 -14
  156. package/dist/src/runtime/plugins/manifest-platform-compatibility.d.ts +2 -0
  157. package/dist/src/runtime/plugins/manifest-platform-compatibility.js +39 -0
  158. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  159. package/dist/src/runtime/plugins/manifest-validator.js +9 -1
  160. package/dist/src/runtime/plugins/platform-compatibility.d.ts +4 -0
  161. package/dist/src/runtime/plugins/platform-compatibility.js +44 -0
  162. package/dist/src/runtime/request/approval-wait/activation-events.js +19 -7
  163. package/dist/src/runtime/request/approval-wait/execution-compaction-restore.d.ts +20 -0
  164. package/dist/src/runtime/request/approval-wait/execution-compaction-restore.js +118 -0
  165. package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +2 -1
  166. package/dist/src/runtime/request/capability-execution-freshness.js +6 -1
  167. package/dist/src/runtime/request/execution-agent-root-execution.js +11 -1
  168. package/dist/src/runtime/request/prepared-execution.js +3 -0
  169. package/dist/src/runtime/request/root-contract.d.ts +2 -0
  170. package/dist/src/runtime/request/root-execution-kernel.js +1 -0
  171. package/dist/src/runtime/request/runner.js +9 -3
  172. package/dist/src/runtime/request/supervisor-root-execution.js +6 -0
  173. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +6 -0
  174. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +29 -0
  175. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +10 -0
  176. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +13 -1
  177. package/dist/src/runtime/steps/execution-agent/direct-response-configuration.d.ts +3 -0
  178. package/dist/src/runtime/steps/execution-agent/direct-response-configuration.js +64 -0
  179. package/dist/src/runtime/steps/execution-agent/direct-response-contract.d.ts +7 -0
  180. package/dist/src/runtime/steps/execution-agent/direct-response-contract.js +56 -0
  181. package/dist/src/runtime/steps/execution-agent/direct-response-policy.d.ts +9 -0
  182. package/dist/src/runtime/steps/execution-agent/direct-response-policy.js +30 -0
  183. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.d.ts +7 -0
  184. package/dist/src/runtime/steps/execution-agent/direct-response-prompt.js +43 -0
  185. package/dist/src/runtime/steps/execution-agent/format.js +4 -3
  186. package/dist/src/runtime/steps/execution-agent/input.d.ts +2 -0
  187. package/dist/src/runtime/steps/execution-agent/input.js +22 -1
  188. package/dist/src/runtime/steps/execution-agent/plugin-catalog.d.ts +4 -0
  189. package/dist/src/runtime/steps/execution-agent/plugin-catalog.js +8 -0
  190. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  191. package/dist/src/runtime/steps/execution-agent/prompt.js +7 -8
  192. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  193. package/dist/src/runtime/steps/execution-agent/response-run.js +5 -11
  194. package/dist/src/runtime/steps/execution-agent/run.js +4 -1
  195. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +3 -5
  196. package/dist/src/runtime/steps/execution-agent/state-context.js +5 -51
  197. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +1 -3
  198. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +0 -55
  199. package/dist/src/runtime/steps/execution-agent/work-plan-schema.d.ts +3 -0
  200. package/dist/src/runtime/steps/execution-agent/work-plan-schema.js +61 -0
  201. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +2 -0
  202. package/dist/src/runtime/steps/planner-decision/prompt.js +26 -49
  203. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -0
  204. package/dist/src/runtime/steps/supervisor-decision/input.js +5 -0
  205. package/dist/src/runtime/steps/supervisor-decision/prompt.d.ts +1 -0
  206. package/dist/src/runtime/steps/supervisor-decision/prompt.js +6 -2
  207. package/dist/src/runtime/steps/supervisor-decision/run.d.ts +1 -0
  208. package/dist/src/runtime/steps/supervisor-decision/run.js +4 -0
  209. package/dist/src/runtime/steps/supervisor-response/run.d.ts +2 -0
  210. package/dist/src/runtime/steps/supervisor-response/run.js +3 -6
  211. package/dist/src/sessions/durable-session-commit.js +3 -3
  212. package/dist/src/sessions/prepared-session-replacement.d.ts +6 -0
  213. package/dist/src/sessions/prepared-session-replacement.js +46 -0
  214. package/dist/src/sessions/session-store.js +3 -3
  215. package/dist/src/shared/passive-observation-self-exclusion.d.ts +5 -0
  216. package/dist/src/shared/passive-observation-self-exclusion.js +37 -0
  217. package/dist/src/shared/windows-file-io/authority-script.d.ts +1 -0
  218. package/dist/src/shared/windows-file-io/authority-script.js +94 -0
  219. package/dist/src/shared/windows-file-io/native-script.d.ts +2 -0
  220. package/dist/src/shared/windows-file-io/native-script.js +120 -0
  221. package/dist/src/shared/windows-file-io/read-bytes-script.d.ts +1 -0
  222. package/dist/src/shared/windows-file-io/read-bytes-script.js +18 -0
  223. package/dist/src/shared/windows-job-object.d.ts +2 -0
  224. package/dist/src/shared/windows-job-object.js +66 -0
  225. package/dist/src/web-ui/app/ARCHITECTURE.md +1 -1
  226. package/dist/src/web-ui/app/app-bootstrap.js +14 -1
  227. package/dist/src/web-ui/app/app-state.js +0 -7
  228. package/dist/src/web-ui/app/app.js +54 -156
  229. package/dist/src/web-ui/app/components/automations/node-inspector.js +3 -2
  230. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +3 -0
  231. package/dist/src/web-ui/app/components/automations/timeline.js +3 -2
  232. package/dist/src/web-ui/app/components/composer-submission-notice.js +50 -0
  233. package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +7 -1
  234. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +22 -2
  235. package/dist/src/web-ui/app/components/dashboard/compact-layout.js +137 -0
  236. package/dist/src/web-ui/app/components/dashboard/icons.js +5 -0
  237. package/dist/src/web-ui/app/components/dashboard/widget-card.js +85 -0
  238. package/dist/src/web-ui/app/components/dashboard/widget-dialog.js +83 -0
  239. package/dist/src/web-ui/app/components/dashboard/widget-summaries.js +155 -0
  240. package/dist/src/web-ui/app/components/dashboard/workspace.js +28 -4
  241. package/dist/src/web-ui/app/components/home-guidance/daily-review.js +2 -2
  242. package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +20 -6
  243. package/dist/src/web-ui/app/components/model-setup/context-window-feedback.js +53 -0
  244. package/dist/src/web-ui/app/components/model-setup/save-flow.js +3 -1
  245. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +1 -0
  246. package/dist/src/web-ui/app/components/model-setup/wizard.js +12 -0
  247. package/dist/src/web-ui/app/components/operations-summary.js +2 -1
  248. package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +4 -0
  249. package/dist/src/web-ui/app/components/passive-learning/collection-access.js +35 -0
  250. package/dist/src/web-ui/app/components/passive-learning/collection-consent-dialog.js +59 -0
  251. package/dist/src/web-ui/app/components/passive-learning/collection-consent-gate.js +94 -0
  252. package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +6 -0
  253. package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +1 -0
  254. package/dist/src/web-ui/app/components/passive-learning/home-widget-preview.js +32 -0
  255. package/dist/src/web-ui/app/components/passive-learning/home.js +11 -3
  256. package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +1 -0
  257. package/dist/src/web-ui/app/components/passive-learning/memory.js +2 -4
  258. package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +2 -2
  259. package/dist/src/web-ui/app/components/plugins/compatibility.js +13 -0
  260. package/dist/src/web-ui/app/components/plugins/discovery-rendering.js +9 -1
  261. package/dist/src/web-ui/app/components/plugins/installation-compatibility.js +7 -0
  262. package/dist/src/web-ui/app/components/plugins/installation.js +2 -1
  263. package/dist/src/web-ui/app/components/plugins/rendering.js +3 -0
  264. package/dist/src/web-ui/app/components/reasoning-override-prompt.js +82 -0
  265. package/dist/src/web-ui/app/components/runtime-config-activation.js +22 -8
  266. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +7 -4
  267. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +3 -1
  268. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +6 -4
  269. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +1 -0
  270. package/dist/src/web-ui/app/components/schedules/details.js +3 -2
  271. package/dist/src/web-ui/app/components/schedules/form.js +10 -8
  272. package/dist/src/web-ui/app/components/schedules/workspace.js +23 -4
  273. package/dist/src/web-ui/app/components/session-sidebar-sections.js +2 -2
  274. package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +9 -3
  275. package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -1
  276. package/dist/src/web-ui/app/components/spark-chat/placement.js +4 -7
  277. package/dist/src/web-ui/app/components/spark-chat/settings.js +8 -4
  278. package/dist/src/web-ui/app/components/system-host/home-widget-permission-preview.js +75 -0
  279. package/dist/src/web-ui/app/components/system-host/home-widget-summary.js +93 -0
  280. package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +2 -2
  281. package/dist/src/web-ui/app/components/system-host/macos-permissions.js +2 -0
  282. package/dist/src/web-ui/app/components/system-host/native-windows-access.js +50 -0
  283. package/dist/src/web-ui/app/components/system-host/rendering.js +6 -3
  284. package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +2 -2
  285. package/dist/src/web-ui/app/components/workspace-storage-notice.js +37 -0
  286. package/dist/src/web-ui/app/computer-access-feature.js +13 -1
  287. package/dist/src/web-ui/app/configuration-environment-refresh.js +27 -34
  288. package/dist/src/web-ui/app/configuration-feature.js +11 -1
  289. package/dist/src/web-ui/app/controllers/app-event-bindings.js +38 -105
  290. package/dist/src/web-ui/app/controllers/chat-request-controller.d.ts +28 -0
  291. package/dist/src/web-ui/app/controllers/chat-request-controller.js +34 -66
  292. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +15 -40
  293. package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +26 -69
  294. package/dist/src/web-ui/app/controllers/composer-draft-view.d.ts +27 -0
  295. package/dist/src/web-ui/app/controllers/composer-draft-view.js +48 -0
  296. package/dist/src/web-ui/app/controllers/composer-drafts.d.ts +55 -0
  297. package/dist/src/web-ui/app/controllers/composer-drafts.js +120 -0
  298. package/dist/src/web-ui/app/controllers/composer-feature.d.ts +65 -0
  299. package/dist/src/web-ui/app/controllers/composer-feature.js +124 -0
  300. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +33 -94
  301. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +185 -251
  302. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +48 -0
  303. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.js +97 -0
  304. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +30 -61
  305. package/dist/src/web-ui/app/controllers/composer-submit-controller.js +56 -138
  306. package/dist/src/web-ui/app/controllers/composer-surface-controller.js +6 -0
  307. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +22 -40
  308. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +49 -165
  309. package/dist/src/web-ui/app/controllers/conversation-navigation-intent.js +15 -0
  310. package/dist/src/web-ui/app/controllers/conversation-request-hydration.js +20 -17
  311. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -2
  312. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +49 -22
  313. package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +27 -0
  314. package/dist/src/web-ui/app/controllers/daily-memory-review.js +15 -16
  315. package/dist/src/web-ui/app/controllers/environment-transition.js +126 -0
  316. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +18 -0
  317. package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +14 -36
  318. package/dist/src/web-ui/app/controllers/home-composer-feature.js +17 -114
  319. package/dist/src/web-ui/app/controllers/home-conversation-activation.js +6 -8
  320. package/dist/src/web-ui/app/controllers/operations-controller.js +2 -1
  321. package/dist/src/web-ui/app/controllers/passive-learning-controller.js +56 -0
  322. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +1 -1
  323. package/dist/src/web-ui/app/controllers/projects-controller.js +6 -1
  324. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +174 -0
  325. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -0
  326. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +20 -155
  327. package/dist/src/web-ui/app/controllers/session-controller.js +33 -17
  328. package/dist/src/web-ui/app/controllers/session-pin-updates.js +14 -0
  329. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +12 -14
  330. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +2 -2
  331. package/dist/src/web-ui/app/controllers/steer-controller.js +9 -7
  332. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +1 -1
  333. package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +34 -0
  334. package/dist/src/web-ui/app/dashboard-feature.js +12 -2
  335. package/dist/src/web-ui/app/lib/reasoning-controls.js +40 -0
  336. package/dist/src/web-ui/app/lib/session-composer-queue-ownership.js +58 -0
  337. package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +12 -0
  338. package/dist/src/web-ui/app/lib/session-composer-queue.js +25 -6
  339. package/dist/src/web-ui/app/passive-learning-feature.js +18 -5
  340. package/dist/src/web-ui/app/schedules-feature.js +5 -3
  341. package/dist/src/web-ui/app/services/client-preferences.d.ts +18 -10
  342. package/dist/src/web-ui/app/services/client-preferences.js +25 -16
  343. package/dist/src/web-ui/app/services/home-guidance-preferences.js +13 -13
  344. package/dist/src/web-ui/app/services/reasoning-override.js +12 -0
  345. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
  346. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +7 -2
  347. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +2 -0
  348. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +2 -0
  349. package/dist/src/web-ui/app/services/runtime-web-client.js +2 -0
  350. package/dist/src/web-ui/app/services/server-composer-queue.js +32 -0
  351. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +5 -5
  352. package/dist/src/web-ui/app/services/workspace-state-storage.js +116 -0
  353. package/dist/src/web-ui/app/services/workspace-state.js +27 -0
  354. package/dist/src/web-ui/app/spark-chat-conversation.js +34 -45
  355. package/dist/src/web-ui/app/spark-chat-feature.js +10 -4
  356. package/dist/src/web-ui/app/styles/21-composer-controls.css +16 -0
  357. package/dist/src/web-ui/app/styles/41-plugin-management.css +8 -0
  358. package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +1 -0
  359. package/dist/src/web-ui/app/styles/49-collection-consent.css +30 -0
  360. package/dist/src/web-ui/app/styles/64-workspace-storage.css +23 -0
  361. package/dist/src/web-ui/app/styles/95-home-widgets.css +109 -0
  362. package/dist/src/web-ui/app/styles.css +3 -0
  363. package/dist/src/web-ui/client-state/contracts.d.ts +15 -0
  364. package/dist/src/web-ui/client-state/contracts.js +13 -0
  365. package/dist/src/web-ui/client-state/preference-shapes.d.ts +2 -0
  366. package/dist/src/web-ui/client-state/preference-shapes.js +80 -0
  367. package/dist/src/web-ui/client-state/preferences.d.ts +3 -0
  368. package/dist/src/web-ui/client-state/preferences.js +84 -0
  369. package/dist/src/web-ui/client-state/queue.d.ts +3 -0
  370. package/dist/src/web-ui/client-state/queue.js +43 -0
  371. package/dist/src/web-ui/client-state/routes.d.ts +7 -0
  372. package/dist/src/web-ui/client-state/routes.js +58 -0
  373. package/dist/src/web-ui/client-state/store.d.ts +14 -0
  374. package/dist/src/web-ui/client-state/store.js +88 -0
  375. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +2 -0
  376. package/dist/src/web-ui/local-runtime/http.js +11 -2
  377. package/dist/src/web-ui/local-runtime/model-context-capacity-error.d.ts +14 -0
  378. package/dist/src/web-ui/local-runtime/model-context-capacity-error.js +28 -0
  379. package/dist/src/web-ui/local-runtime/model-setup-context-window.d.ts +15 -0
  380. package/dist/src/web-ui/local-runtime/model-setup-context-window.js +25 -0
  381. package/dist/src/web-ui/local-runtime/model-setup-routes.js +2 -0
  382. package/dist/src/web-ui/local-runtime/model-setup-service.js +5 -2
  383. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +1 -0
  384. package/dist/src/web-ui/local-runtime/model-setup-validation.js +14 -7
  385. package/dist/src/web-ui/local-runtime/request-body-error.d.ts +11 -0
  386. package/dist/src/web-ui/local-runtime/request-body-error.js +14 -0
  387. package/dist/src/web-ui/local-runtime/request-control-observation.js +2 -2
  388. package/dist/src/web-ui/local-runtime/request-execution.js +18 -18
  389. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +2 -0
  390. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +35 -22
  391. package/dist/src/web-ui/local-runtime/runtime-setup-context-window.d.ts +2 -9
  392. package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +4 -27
  393. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +15 -1
  394. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +30 -11
  395. package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.d.ts +20 -0
  396. package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.js +104 -0
  397. package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.d.ts +29 -0
  398. package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.js +151 -0
  399. package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.d.ts +7 -0
  400. package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.js +87 -0
  401. package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.d.ts +3 -0
  402. package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.js +37 -0
  403. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +4 -0
  404. package/dist/src/web-ui/local-runtime-backend.js +14 -0
  405. package/dist/src/web-ui/plugin-management-catalog.d.ts +3 -1
  406. package/dist/src/web-ui/plugin-management-catalog.js +3 -1
  407. package/dist/src/web-ui/plugin-management-service.d.ts +1 -0
  408. package/dist/src/web-ui/plugin-removal-service.d.ts +1 -0
  409. package/dist/src/web-ui/server-readiness.d.ts +3 -0
  410. package/dist/src/web-ui/server-readiness.js +36 -0
  411. package/dist/src/web-ui/server.d.ts +2 -0
  412. package/dist/src/web-ui/server.js +23 -1
  413. package/dist/src/web-ui/system-host-service.js +13 -2
  414. package/dist/src/web-ui/system-host-setup/collection-consent-route.d.ts +3 -0
  415. package/dist/src/web-ui/system-host-setup/collection-consent-route.js +30 -0
  416. package/docs/installation.md +44 -5
  417. package/docs/plugins.md +174 -28
  418. package/docs/tool-execution-result-evidence-contract.md +57 -0
  419. package/docs/windows-companion-store.md +5 -0
  420. package/package.json +4 -2
  421. package/plugins/capability-brief/plugin.json +5 -1
  422. package/plugins/code-outline/README.md +20 -0
  423. package/plugins/code-outline/plugin.json +2 -1
  424. package/plugins/code-outline/source/index.ts +16 -20
  425. package/plugins/code-outline/source/read-failure.ts +40 -0
  426. package/plugins/code-outline/src/index.cjs +614 -29
  427. package/plugins/document-reader/README.md +33 -0
  428. package/plugins/document-reader/plugin.json +2 -1
  429. package/plugins/document-reader/source/pdf-contract.ts +57 -0
  430. package/plugins/document-reader/source/pdf-parser.ts +139 -0
  431. package/plugins/document-reader/source/pdf-process-main.ts +56 -0
  432. package/plugins/document-reader/source/pdf-process.ts +207 -0
  433. package/plugins/document-reader/source/pdf-result.ts +79 -0
  434. package/plugins/document-reader/source/pdf-worker.ts +39 -303
  435. package/plugins/document-reader/source/pdf.ts +4 -1
  436. package/plugins/document-reader/source/read-failure.ts +37 -0
  437. package/plugins/document-reader/source/reader.ts +3 -19
  438. package/plugins/document-reader/src/index.cjs +995 -211
  439. package/plugins/exec/README.md +19 -0
  440. package/plugins/exec/plugin.json +4 -3
  441. package/plugins/exec/skills/exec_skill/SKILL.md +3 -2
  442. package/plugins/exec/source/filesystem-file-observer.ts +98 -0
  443. package/plugins/exec/source/filesystem-observer.ts +8 -79
  444. package/plugins/exec/source/output-files.ts +12 -6
  445. package/plugins/exec/source/paths.ts +3 -1
  446. package/plugins/exec/source/process-manager.ts +8 -24
  447. package/plugins/exec/source/shell-platform.ts +19 -3
  448. package/plugins/exec/source/shell-process.ts +55 -0
  449. package/plugins/exec/source/windows-job-source.ts +1 -0
  450. package/plugins/exec/source/windows-shell-bootstrap.ts +20 -0
  451. package/plugins/exec/src/index.cjs +252 -96
  452. package/plugins/filesystem/README.md +65 -0
  453. package/plugins/filesystem/plugin.json +7 -3
  454. package/plugins/filesystem/source/atomic-write.ts +2 -0
  455. package/plugins/filesystem/source/bounded-io.ts +80 -306
  456. package/plugins/filesystem/source/directory-sample.ts +2 -0
  457. package/plugins/filesystem/source/errors.ts +14 -0
  458. package/plugins/filesystem/source/file-observation.ts +151 -0
  459. package/plugins/filesystem/source/file-version.ts +41 -0
  460. package/plugins/filesystem/source/index.ts +6 -0
  461. package/plugins/filesystem/source/mutation-coordinator.ts +1 -0
  462. package/plugins/filesystem/source/windows/authority-script.ts +1 -0
  463. package/plugins/filesystem/source/windows/native-script.ts +1 -0
  464. package/plugins/filesystem/source/windows/operations.ts +197 -0
  465. package/plugins/filesystem/source/windows/process.ts +214 -0
  466. package/plugins/filesystem/source/windows/publication-script.ts +29 -0
  467. package/plugins/filesystem/source/windows/read-script.ts +63 -0
  468. package/plugins/filesystem/source/windows/request-availability.ts +67 -0
  469. package/plugins/filesystem/source/windows/source.ts +42 -0
  470. package/plugins/filesystem/source/windows/storage-script.ts +11 -0
  471. package/plugins/filesystem/source/windows/streams-script.ts +24 -0
  472. package/plugins/filesystem/source/windows/write-script.ts +86 -0
  473. package/plugins/filesystem/src/index.cjs +1208 -322
  474. package/plugins/json-inspector/README.md +18 -0
  475. package/plugins/json-inspector/plugin.json +2 -1
  476. package/plugins/json-inspector/source/index.ts +16 -19
  477. package/plugins/json-inspector/source/read-failure.ts +42 -0
  478. package/plugins/json-inspector/src/index.cjs +612 -27
  479. package/plugins/local-search/README.md +29 -0
  480. package/plugins/local-search/plugin.json +2 -1
  481. package/plugins/local-search/source/errors.ts +2 -0
  482. package/plugins/local-search/source/paths.ts +3 -0
  483. package/plugins/local-search/source/ripgrep-process.ts +31 -5
  484. package/plugins/local-search/source/ripgrep.ts +3 -3
  485. package/plugins/local-search/source/windows-authority.ts +99 -0
  486. package/plugins/local-search/source/windows-search-lease.ts +49 -0
  487. package/plugins/local-search/source/windows-search-process.ts +91 -0
  488. package/plugins/local-search/source/windows-search-script.ts +52 -0
  489. package/plugins/local-search/src/index.cjs +595 -26
  490. package/plugins/memory/plugin.json +5 -1
  491. package/plugins/memory/source/lock-directory-claim.ts +56 -0
  492. package/plugins/memory/source/lock-owner-file.ts +71 -0
  493. package/plugins/memory/source/lock-path-observation.ts +26 -0
  494. package/plugins/memory/source/prepared-memory-replacement.ts +40 -0
  495. package/plugins/memory/source/store-lock.ts +12 -7
  496. package/plugins/memory/source/store.ts +3 -2
  497. package/plugins/memory/src/index.cjs +174 -25
  498. package/plugins/project-orientation/README.md +23 -0
  499. package/plugins/project-orientation/plugin.json +2 -1
  500. package/plugins/project-orientation/source/index.ts +12 -9
  501. package/plugins/project-orientation/source/inspection-failure.ts +70 -0
  502. package/plugins/project-orientation/source/manifest-summary.ts +9 -2
  503. package/plugins/project-orientation/source/tree.ts +6 -0
  504. package/plugins/project-orientation/src/index.cjs +647 -31
  505. package/plugins/system/README.md +51 -15
  506. package/plugins/system/plugin.json +6 -2
  507. package/plugins/system/skills/system_actions/SKILL.md +1 -1
  508. package/plugins/system/source/command-working-directory.ts +47 -0
  509. package/plugins/system/source/computer/handlers.ts +13 -9
  510. package/plugins/system/source/computer/observation-result.ts +10 -5
  511. package/plugins/system/source/computer/request-computers.ts +10 -3
  512. package/plugins/system/source/computer/request-modules.ts +3 -6
  513. package/plugins/system/source/computer/runtime-platform.ts +18 -0
  514. package/plugins/system/source/host-dispatch.ts +18 -2
  515. package/plugins/system/source/index.ts +5 -3
  516. package/plugins/system/source/local-command-output-retention.ts +16 -0
  517. package/plugins/system/source/local-command-output.ts +16 -8
  518. package/plugins/system/source/request-system-modules.ts +12 -2
  519. package/plugins/system/source/request-target-snapshot.ts +2 -1
  520. package/plugins/system/source/security/desktop-result.ts +177 -0
  521. package/plugins/system/source/security/observed-error.ts +10 -0
  522. package/plugins/system/source/security/secret-text.ts +118 -0
  523. package/plugins/system/source/security/system-results.ts +62 -0
  524. package/plugins/system/source/security/windows-output-directory.ts +82 -0
  525. package/plugins/system/src/index.cjs +837 -151
  526. package/plugins/system-probe/plugin.json +9 -3
  527. package/plugins/system-probe/source/disk-path.ts +8 -0
  528. package/plugins/system-probe/source/index.ts +10 -5
  529. package/plugins/system-probe/source/machine-load.ts +33 -0
  530. package/plugins/system-probe/source/metrics.ts +6 -8
  531. package/plugins/system-probe/src/index.cjs +49 -16
  532. package/plugins/web/plugin.json +5 -1
package/docs/plugins.md CHANGED
@@ -237,12 +237,71 @@ options, or skill lists in `runtime.config.json`. Installing or changing a
237
237
  plugin means changing its package under `plugins/`; runtime config only decides
238
238
  whether that installed capability is available.
239
239
 
240
+ ## Runtime Platform Compatibility
241
+
242
+ A plugin can declare where its code can run using a separate manifest extension:
243
+ `extensions["ai.abot.compatibility"] = { "version": 1, "runtimePlatforms": ["linux", "darwin"] }`.
244
+ The executable `ai.abot.runtime` extension remains at version 1.
245
+
246
+ `runtimePlatforms` is a non-empty, duplicate-free list of Node platform names:
247
+ `linux`, `darwin` (macOS), or `win32` (Windows). Unsupported versions, platform
248
+ names and fields are rejected. Declare only platforms on which the complete
249
+ plugin can safely load; individual operations may still require permissions,
250
+ external programs or a connected computer.
251
+
252
+ The declaration describes the **Runtime host**, not the browser or the computer
253
+ controlled by a tool. A Linux Runtime in WSL or a Linux Docker container remains
254
+ `linux`, including when SYSTEM controls a Windows Companion. It does not grant
255
+ permissions or replace the tool's request-time target checks.
256
+
257
+ Hosts with this compatibility support apply the following policy before resolving
258
+ plugin settings/secrets or importing executable plugin code:
259
+
260
+ - A declared matching platform can load, subject to the existing saved selection.
261
+ - A declared non-matching platform cannot load.
262
+ - Without a declaration, existing non-Windows behavior is preserved. Native
263
+ Windows reports **Compatibility not declared** and does not load the plugin.
264
+
265
+ Installed, onboarding and model-selection views show compatibility separately
266
+ from saved plugin/tool selection. Changing hosts does not rewrite saved selection
267
+ or erase settings and keys. An incompatible package remains inspectable,
268
+ configurable and removable. It can be installed for later use on a supported
269
+ host; the review and installation result explain that it will not load here.
270
+ Applying configuration cannot bypass the loader gate.
271
+
272
+ **Older hosts:** ABot 1.7.0 accepts and preserves additional extension namespaces
273
+ but does not enforce this declaration. Its existing behavior remains unchanged.
274
+ This metadata is not an enforcement guarantee on older hosts, nor a claim that
275
+ ABot 1.7.0 or its bundled plugins support native Windows. Existing bundled plugin
276
+ manifests are not certified for Windows by this contract change.
277
+
278
+ The required `windows-compatibility` CI job builds the Runtime, checks types and
279
+ plugin packages, and runs the focused platform contract and loader suites on
280
+ Windows with Node 24. It complements the Linux validation and macOS Companion
281
+ checks; it does not certify all native Windows tool operations or Store packaging.
282
+
240
283
  ## Manifest Contract
241
284
 
242
285
  `@abot-ai/runtime/plugin-sdk` is the single public plugin-authoring entrypoint. It
243
286
  exports the manifest constants and types, entrypoint contract, and bounded
244
287
  authoring helpers consumed by plugin implementations.
245
288
 
289
+ The SDK's `readBoundedRegularFile(path, { rootPath, maxBytes, signal })` reads one
290
+ regular file within its authorized root and returns bounded bytes or a typed
291
+ refusal. On native Windows, it uses the same C# handle primitives as `filesystem`,
292
+ compiled by the built-in Windows PowerShell for each read. Root and file identity
293
+ are checked before reading; traversal rejects reparse points beneath the root,
294
+ including junctions. Binary content and documents up to 10 MiB are covered by
295
+ native tests; each caller still sets its own size limit. Linux/macOS retain the
296
+ existing no-follow file-descriptor path.
297
+
298
+ A Windows policy or compiler restriction returns `safe_open_unsupported`. Plugins
299
+ must report that safe reading is unavailable and avoid automatic retries or a
300
+ less restricted fallback. Cancellation stops the helper and throws `AbortError`;
301
+ a helper deadline (15 seconds) or ordinary I/O failure remains an explicit error.
302
+ This SDK support does not enable Windows compatibility in a plugin manifest.
303
+ Each plugin must still declare and validate its own Windows support.
304
+
246
305
  The manifest follows the Agent Plugins 1.0 package shape and keeps the local
247
306
  executable contract under `extensions.ai.abot.runtime`:
248
307
 
@@ -328,25 +387,34 @@ and exposes the OR-union of matching capabilities. The Worker still selects
328
387
  the concrete capability and controls.
329
388
 
330
389
  Supervisor routing and delegated Planner each receive one optional, passive
331
- text brief through the same shared projection from the
332
- request-filtered registry used by `capability-brief`. It first includes every
333
- offered operation's tool name, operation id, summary and catalog groups when
334
- that complete description set fits the existing context headroom. Request-bound
335
- facts already present in summaries, such as available execution targets, remain
336
- intact. Admission reserves each consumer's existing context, configured
337
- instructions, calibration, output and safety headroom and stays below the
338
- existing compaction threshold. Root steering is reserved only for Supervisor;
339
- it does not enter the bounded Planner call.
340
-
341
- When complete descriptions cannot fit, the existing compact representations
342
- remain available under a 512-token ceiling: tool names with operation ids and
343
- groups, tool names by group, group counts and effects, or no brief. The declared
344
- level makes omitted detail explicit; it never implies that omitted detail means
345
- an operation is unavailable. Group ids remain in the response schema in every
346
- mode. No subset of tools is selected, no summary is truncated, and no model call
347
- summarizes the catalog. The brief carries no input schemas, execution authority
348
- or completion evidence. It is confined to delegation decisions; Worker selection,
349
- Execution Agent context, approval and terminal-response contracts are unchanged.
390
+ brief from the request-filtered registry. They share EA's plain-text discovery
391
+ catalog, organized by selectable group id with ` | ` between group entries:
392
+
393
+ ```text
394
+ Tool groups: scheduling: schedules | write: filesystem [edit_file, write_file]
395
+ Plugin descriptions: filesystem: Inspect, read, write, and edit files within configured agent-work and workspace roots.
396
+ ```
397
+
398
+ Each group lists its plugins and their tool names as `group: plugin [tool names]`.
399
+ Native tools appear by name without a plugin wrapper; groups without tool entries
400
+ remain bare ids. A plugin may span groups, and a group may contain several plugins.
401
+ Reserved characters in tool names are percent-encoded. Each optional plugin
402
+ description appears once on the separate `Plugin descriptions:` line, with
403
+ whitespace normalized, `|` displayed as `/`, and at most 160 Unicode code points
404
+ plus `....` when truncated. Missing descriptions leave the tool bindings intact;
405
+ the description line is omitted when none are available. This index lists tool
406
+ names, not individual operations, summaries or parameter schemas. Worker still
407
+ receives the exact operations and controls from the selected groups.
408
+
409
+ Admission preserves the existing context, configured instructions, calibration,
410
+ output and safety reserves and compaction threshold. Root steering is reserved
411
+ only for Supervisor; it does not enter the bounded Planner call. When the whole
412
+ plugin catalog cannot fit, complete group counts and effects remain available
413
+ under the existing 512-token ceiling, or the optional brief is omitted. Legal
414
+ group ids remain in the response schema. Neither fallback restores operation
415
+ details, selects a partial set of plugins, or adds a model decision. The brief
416
+ carries no execution authority or completion evidence. EA's output and the
417
+ Worker, approval and terminal-response contracts remain unchanged.
350
418
  Before each Supervisor routing or Planner attempt, including structured-output repairs,
351
419
  the optional brief is reselected against the actual projected messages plus
352
420
  current consumer-specific calibration and context. It retains its reference position or is
@@ -364,15 +432,15 @@ receive it. Planner uses this same brief instead of a separate aggregate-tag
364
432
  catalog. Its existing group-selection schema and Worker scope enforcement stay
365
433
  unchanged; descriptions do not select a group or execute an operation.
366
434
 
367
- Under `execution-agent-v1`, the canonical root receives group descriptions
368
- generated from member capability ids and summaries, and may mechanically open
369
- or extend its own RoleCall scope.
370
- It then selects a concrete capability only from that active scope. Scope
371
- updates, capability binding, payload authoring, adapter execution, and
372
- settlement use the same ledger and capability engine as delegated Worker
373
- execution. Unknown, empty, invalid, repeated, or no-op scopes are rejected
374
- rather than widened to the full catalog. A request with no Worker capabilities
375
- may still invoke an unscoped Worker for a knowledge-only result.
435
+ Under `execution-agent-v1`, the canonical root receives the same plain-text
436
+ discovery catalog shown above. Descriptions supply discovery context, not
437
+ instructions or authority. The root may mechanically open or extend
438
+ its RoleCall scope. Only then does the active catalog expose each capability's
439
+ id, exact summary, and effect, with selection controls in the decision schema.
440
+ It selects concrete capabilities only from that active scope. Scope updates,
441
+ binding, payload authoring, execution, and settlement retain the shared engine
442
+ and ledger. Unknown, empty, invalid, repeated, or no-op scopes are rejected. Requests
443
+ without Worker capabilities may still invoke an unscoped knowledge-only Worker.
376
444
 
377
445
  Skill ids resolve only inside the same plugin package. For the example above,
378
446
  the loader reads:
@@ -492,6 +560,36 @@ they must not include secrets and they never act as instructions, new user
492
560
  intent, or proof that the whole request completed. See
493
561
  [tool-execution-result-evidence-contract.md](tool-execution-result-evidence-contract.md).
494
562
 
563
+ ### Reporting a confirmed mutation
564
+
565
+ Use `successResult()` for ordinary successful observations. After the owning
566
+ plugin has confirmed a completed mutation, use `mutationSuccessResult()` to
567
+ preserve its receipt and add the Runtime's required `data.mutationEvidence: true`:
568
+
569
+ ```ts
570
+ import { mutationSuccessResult } from "@abot-ai/runtime/plugin-sdk";
571
+
572
+ // apiReceipt is the result of a completed write already confirmed by this handler.
573
+ return mutationSuccessResult({
574
+ output: "The article was published.",
575
+ data: apiReceipt,
576
+ }, context.resultBudget);
577
+ ```
578
+
579
+ The helper does not execute the operation or independently verify its effect.
580
+ Do not use it for a failed, ambiguous, pending, or no-op operation. It retains
581
+ the same JSON and result-size bounds as `successResult()`; a rejected receipt
582
+ returns a failure without asserting mutation evidence. The existing generic
583
+ helper does not infer a mutation from `ok`, `progress`, prose, or the presence of
584
+ arbitrary data. Explicit `actions`, `progress`, and other result fields remain
585
+ available to the owning plugin.
586
+
587
+ The adapter records operation outcome separately from observed effect.
588
+ For a `mutating` operation, `ok: true` without `mutationEvidence: true` is
589
+ classified as `mutation_evidence_missing`. The new helper supplies that marker
590
+ after the plugin has established the evidence; it does not change the Runtime's
591
+ classification rules or prove completion of the user's whole request.
592
+
495
593
  ### EXEC output storage
496
594
 
497
595
  EXEC captures stdout and stderr in private files under its injected `stateDir`.
@@ -654,6 +752,54 @@ counts imply full-file coverage.
654
752
 
655
753
  No concrete tool or skill mapping should be added anywhere under `src/runtime`.
656
754
 
755
+ ### Native Windows plugin support
756
+
757
+ The native Windows group contains `capability-brief`, `code-outline`,
758
+ `document-reader`, `exec`, `filesystem`, `json-inspector`, `local-search`, `memory`, `web`,
759
+ `project-orientation`, `system-probe`, and `system`.
760
+ Each declares `win32` in its versioned
761
+ `ai.abot.compatibility` extension, alongside its existing Linux and macOS support.
762
+ Compatibility uses the Runtime process OS, not the browser or a paired computer.
763
+ A Windows-only plugin should declare only `win32`; other hosts will not load it.
764
+
765
+ On native Windows, SYSTEM provides `system_targets`, `system_command`,
766
+ `system_applications`, and `system_launch`. Commands run in local PowerShell and
767
+ retain existing approvals, cancellation, and protected output handling. Desktop
768
+ observation and input (`computer_*`) are excluded from the request catalog in
769
+ this phase. Linux/macOS Runtime and WSL/Docker Companion routes retain their
770
+ existing capabilities. This phase does not add screenshot OCR.
771
+
772
+ `system-probe` reports Windows load averages as unsupported instead of presenting
773
+ the OS's placeholder zeros as measured load. Its default disk probe uses the
774
+ Runtime installation's filesystem; an explicit path selects that path's volume.
775
+
776
+ `code-outline` uses the SDK's bounded file reader on Windows, with the same
777
+ authorized roots, parser and output limits as Linux/macOS. If safe reading is
778
+ unavailable, it reports the restriction explicitly and tells the model not to
779
+ retry or bypass it. See [Code Outline](../plugins/code-outline/README.md).
780
+
781
+ `document-reader` uses the SDK's bounded Windows reader for configured paths
782
+ and request attachments, with shared text, Office and PDF parsers and limits.
783
+ A blocked reader reports an explicit no-retry restriction.
784
+ See [Document Reader](../plugins/document-reader/README.md).
785
+
786
+ `json-inspector` uses the SDK's bounded Windows reader with the existing path,
787
+ UTF-8, size and summary limits. A blocked reader reports an explicit no-retry
788
+ restriction. See [JSON Inspector](../plugins/json-inspector/README.md).
789
+
790
+ `project-orientation` uses the SDK's bounded Windows reader for package
791
+ metadata and retains its existing directory-tree and result limits. Blocked
792
+ manifest reads return an explicit no-retry restriction.
793
+ See [Project Orientation](../plugins/project-orientation/README.md).
794
+
795
+ `local-search` uses native Windows ripgrep through a PowerShell/C# helper that
796
+ pins the selected path and owns the child process through a Job Object. Existing
797
+ query, output, timeout and cancellation limits still apply. A blocked helper
798
+ fails explicitly without a retry or policy bypass.
799
+ See [Local Search](../plugins/local-search/README.md).
800
+
801
+ Enabling manifests alone is not a validation step.
802
+
657
803
  ### Shared Computer access
658
804
 
659
805
  Plugins that need host facilities can import the opt-in
@@ -96,6 +96,63 @@ secrets. Secret acquisition and redaction remain responsibilities of the
96
96
  owning tool/host boundary; core orchestration must not guess sensitive field
97
97
  semantics from arbitrary JSON keys.
98
98
 
99
+ ### Observed-content secret protection, version 1
100
+
101
+ Companion and the internal passive collector own host-side protection. The same
102
+ collector protects SPARK whether it runs inside Companion or locally in Runtime.
103
+ SYSTEM owns a separate implementation for its independent native operations.
104
+ The implementations share conformance cases, not a runtime detector dependency.
105
+
106
+ Required text checks preserve the existing SPARK whole-field detector: credential
107
+ labels, authorization/userinfo, supported provider tokens, private-key indicators
108
+ and compact JOSE tokens, including the supported escaped and encoded forms.
109
+ Successful checking means no known indicator was found; it is not a claim that
110
+ the content contains no secrets. Unknown encodings and arbitrary unlabelled
111
+ secrets remain outside detection. SPARK's existing collection semantics stay intact.
112
+
113
+ Check full observed fields before excerpts or delivery. A suspected field is
114
+ replaced with `[REDACTED]`; unchecked content must not reach logs, model evidence,
115
+ continuation snapshots or cross-host transport. Desktop frame/media retention
116
+ also follows these checks. Temporary local acquisition belongs inside the checking
117
+ boundary; checking must not use a remote model.
118
+ An incomplete required check, malformed encoding or scanner failure withholds
119
+ the affected content and preserves only a non-sensitive technical receipt.
120
+
121
+ Command capture may write unchecked bytes to private local files using the existing
122
+ disk-backed capture mechanism. After natural EOF, both full streams must pass
123
+ checking before any read or delivery is admitted. Suspected content is replaced
124
+ with checked text; failed checking withholds output and attempts to remove the raw
125
+ capture. Existing retention cleanup handles leftovers after failure or interruption.
126
+ This permits temporary raw disk storage, not model access before checking; the
127
+ compaction model must also receive only checked text. Deletion is ordinary file
128
+ cleanup, not a claim of forensic erasure.
129
+
130
+ There is no new logical total-output quota: admitted complete stdout/stderr retain
131
+ the existing context-text handoff, canonical evidence and core compaction path.
132
+ Full-text checking and delivery still materialize text in memory. Capture/storage
133
+ failure does not erase an already dispatched action or justify replaying it for
134
+ output. Published byte counts and digests describe admitted bytes only.
135
+
136
+ Version 1 desktop checks cover descriptive metadata and accessibility text.
137
+ Suspicion in those fields also withholds the associated image before frame or
138
+ media retention. Control bindings, coordinates and dispatch receipts keep their
139
+ mechanical meaning; sensitive actionable catalog identities are withheld rather
140
+ than replaced by a synthetic actionable identifier. Pixel-only content is not
141
+ inspected: OCR and its deployment requirements are explicitly deferred.
142
+
143
+ SYSTEM requires `host_secret_protection_v1` before dispatching protected Companion
144
+ operations, and the existing complete-output capability for commands. A missing
145
+ capability is an upgrade-required failure before dispatch, not a fallback to an
146
+ unprotected path. Installed Companion and independently distributed SYSTEM bundles
147
+ must be validated separately; changing Runtime source does not update either.
148
+
149
+ Conformance covers known indicators, ordinary text, encodings and chunk boundaries,
150
+ late suspicion, scanner/transport failure, pre-admission storage and frame sinks,
151
+ and preservation of exact clean large output and accepted action receipts. Both
152
+ supported implementations must pass the same applicable cases before release.
153
+ This contract does not sandbox an arbitrary third-party plugin's own filesystem
154
+ or network access, nor retroactively remove previously retained observations.
155
+
99
156
  ## Canonical Lifecycle
100
157
 
101
158
  ```text
@@ -10,6 +10,11 @@ The Store app and Runtime have separate releases.
10
10
 
11
11
  ## Connection experience
12
12
 
13
+ A Runtime running directly on Windows uses local access and collection without
14
+ Companion pairing. The Store connection remains available for a Windows computer
15
+ used with a WSL or Docker Runtime. Spark also requires an installation-wide
16
+ collection acknowledgment in the Web UI; accepting it does not start collection.
17
+
13
18
  The Web UI links to the Store for one installation. The user returns to ABot,
14
19
  requests a connection link and explicitly opens Companion. Companion shows the
15
20
  Runtime address and asks for confirmation before pairing. Users who already
package/package.json CHANGED
@@ -18,12 +18,14 @@
18
18
  },
19
19
  "description": "Open runtime for local AI agents.",
20
20
  "devDependencies": {
21
+ "@actions/expressions": "^0.3.61",
21
22
  "@types/node": "^25.5.2",
22
23
  "esbuild": "^0.28.2",
23
24
  "prettier": "^3.8.1",
24
25
  "tsx": "^4.23.13",
25
26
  "typescript": "^6.0.2",
26
- "vitest": "^4.1.11"
27
+ "vitest": "^4.1.11",
28
+ "yaml": "^2.9.1"
27
29
  },
28
30
  "engines": {
29
31
  "node": "^20.19.0 || >=22.12.0"
@@ -181,5 +183,5 @@
181
183
  },
182
184
  "type": "module",
183
185
  "types": "./dist/src/runtime/index.d.ts",
184
- "version": "1.7.0"
186
+ "version": "1.8.1"
185
187
  }
@@ -2,8 +2,12 @@
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "capability-brief",
4
4
  "version": "1.0.0",
5
- "description": "Describe the request-effective ABot tool catalog on demand.",
5
+ "description": "Describe the tools and operations available to the current request.",
6
6
  "extensions": {
7
+ "ai.abot.compatibility": {
8
+ "version": 1,
9
+ "runtimePlatforms": ["linux", "darwin", "win32"]
10
+ },
7
11
  "ai.abot.runtime": {
8
12
  "version": 1,
9
13
  "entrypoint": "./src/index.cjs",
@@ -0,0 +1,20 @@
1
+ # Code Outline
2
+
3
+ Extracts a bounded structural outline from one source file on Linux, macOS,
4
+ or native Windows. Relative paths use the configured agent work directory;
5
+ `workspace/...` uses configured workspace sources. Absolute host paths must
6
+ remain inside an authorized root. Request path restrictions still apply.
7
+
8
+ The existing parser and limits are shared across platforms: at most 512 KiB
9
+ of source, 160 symbols, 40 imports and 6,000 output characters. JavaScript and
10
+ TypeScript use the syntax parser; other supported formats use the existing
11
+ pattern-based outline. The tool does not execute the source.
12
+
13
+ ## Windows requirements
14
+
15
+ Windows uses the SDK's built-in Windows PowerShell/C# reader. No Companion,
16
+ WSL, Docker, administrator elevation or execution-policy bypass is required.
17
+ If computer policy blocks the reader, the tool reports
18
+ `code_outline_safe_read_unavailable` and tells the model not to retry or
19
+ bypass the restriction. Cancellation stops the read. Reparse-point escapes
20
+ and files larger than the limit are rejected without returning source.
@@ -2,8 +2,9 @@
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "code-outline",
4
4
  "version": "0.1.1",
5
- "description": "Extract a bounded structural outline from one source file.",
5
+ "description": "Read the structure, imports, and symbols of a source file.",
6
6
  "extensions": {
7
+ "ai.abot.compatibility": { "version": 1, "runtimePlatforms": ["linux", "darwin", "win32"] },
7
8
  "ai.abot.runtime": {
8
9
  "version": 1,
9
10
  "entrypoint": "./src/index.cjs",
@@ -13,6 +13,7 @@ import {
13
13
  } from "../../../src/plugin-sdk/index.js";
14
14
 
15
15
  import { buildCodeOutline } from "./parser.js";
16
+ import { codeOutlineReadFailure } from "./read-failure.js";
16
17
 
17
18
  const MAX_FILE_BYTES = 512 * 1024;
18
19
  const DEFAULT_MAX_SYMBOLS = 160;
@@ -36,7 +37,8 @@ export default defineRuntimePlugin((context) => {
36
37
  const pathContext = {
37
38
  ...context,
38
39
  runtimePathResolver:
39
- executionContext?.runtimePathResolver ?? context.runtimePathResolver,
40
+ executionContext?.runtimePathResolver ??
41
+ context.runtimePathResolver,
40
42
  };
41
43
  try {
42
44
  const requestedPath = readRequiredString(params.path, "path");
@@ -47,26 +49,9 @@ export default defineRuntimePlugin((context) => {
47
49
  const file = await readBoundedRegularFile(target.absolutePath, {
48
50
  maxBytes: MAX_FILE_BYTES,
49
51
  rootPath: target.rootPath,
52
+ signal: executionContext?.abortSignal,
50
53
  });
51
- if (!file.ok && file.reason === "not_regular_file") {
52
- return failureResult({
53
- errorCode: "code_outline_target_not_file",
54
- message:
55
- "The requested code-outline target is not a regular file.",
56
- });
57
- }
58
- if (!file.ok && file.reason === "too_large") {
59
- return failureResult({
60
- errorCode: "code_outline_file_too_large",
61
- message: `The requested file exceeds the ${MAX_FILE_BYTES}-byte outline limit.`,
62
- });
63
- }
64
- if (!file.ok) {
65
- return failureResult({
66
- errorCode: "code_outline_file_changed",
67
- message: "The requested file changed while it was being read.",
68
- });
69
- }
54
+ if (!file.ok) return codeOutlineReadFailure(file, MAX_FILE_BYTES);
70
55
  const source = file.bytes.toString("utf8");
71
56
  const maxSymbols = readBoundedInteger(params.maxSymbols, {
72
57
  defaultValue: defaultMaxSymbols,
@@ -118,6 +103,17 @@ export default defineRuntimePlugin((context) => {
118
103
  },
119
104
  });
120
105
  } catch (error) {
106
+ const readWasAborted =
107
+ executionContext?.abortSignal?.aborted &&
108
+ error instanceof Error &&
109
+ error.name === "AbortError";
110
+ if (readWasAborted) {
111
+ return failureResult({
112
+ errorCode: "code_outline_cancelled",
113
+ message: "Code outline inspection was cancelled.",
114
+ interruption: "aborted",
115
+ });
116
+ }
121
117
  return failureFromError(error, {
122
118
  fallbackCode: "code_outline_failed",
123
119
  fallbackMessage: "Code outline inspection failed.",
@@ -0,0 +1,40 @@
1
+ import {
2
+ failureResult,
3
+ type BoundedRegularFileReadFailure,
4
+ } from "../../../src/plugin-sdk/index.js";
5
+
6
+ export function codeOutlineReadFailure(
7
+ file: BoundedRegularFileReadFailure,
8
+ maxBytes: number,
9
+ ) {
10
+ switch (file.reason) {
11
+ case "not_regular_file":
12
+ return failureResult({
13
+ errorCode: "code_outline_target_not_file",
14
+ message: "The requested code-outline target is not a regular file.",
15
+ });
16
+ case "too_large":
17
+ return failureResult({
18
+ errorCode: "code_outline_file_too_large",
19
+ message:
20
+ "The requested file exceeds the " + maxBytes + "-byte outline limit.",
21
+ });
22
+ case "outside_root":
23
+ return failureResult({
24
+ errorCode: "code_outline_outside_root",
25
+ message:
26
+ "The requested file resolves outside its authorized root. Do not retry this target or bypass the path restriction.",
27
+ });
28
+ case "safe_open_unsupported":
29
+ return failureResult({
30
+ errorCode: "code_outline_safe_read_unavailable",
31
+ message:
32
+ "Safe file reading is unavailable on this system. On Windows, computer policy may block the required PowerShell/C# helper. Do not retry or bypass this restriction with another tool; ask the user to check the system requirements or contact their administrator.",
33
+ });
34
+ case "changed_during_read":
35
+ return failureResult({
36
+ errorCode: "code_outline_file_changed",
37
+ message: "The requested file changed while it was being read.",
38
+ });
39
+ }
40
+ }