@abot-ai/runtime 1.3.1 → 1.4.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 (634) hide show
  1. package/dist/plugins/system/source/application-catalog.d.ts +14 -0
  2. package/dist/plugins/system/source/application-catalog.js +185 -0
  3. package/dist/plugins/system/source/application-launch.d.ts +10 -0
  4. package/dist/plugins/system/source/application-launch.js +80 -0
  5. package/dist/plugins/system/source/application-observation.d.ts +25 -0
  6. package/dist/plugins/system/source/application-observation.js +53 -0
  7. package/dist/plugins/system/source/commands.d.ts +7 -0
  8. package/dist/plugins/system/source/commands.js +71 -0
  9. package/dist/plugins/system/source/companion/autostart.d.ts +16 -0
  10. package/dist/plugins/system/source/companion/autostart.js +146 -0
  11. package/dist/plugins/system/source/companion/broker-location.d.ts +11 -0
  12. package/dist/plugins/system/source/companion/broker-location.js +76 -0
  13. package/dist/plugins/system/source/companion/broker-server.d.ts +4 -0
  14. package/dist/plugins/system/source/companion/broker-server.js +147 -0
  15. package/dist/plugins/system/source/companion/connection.d.ts +25 -0
  16. package/dist/plugins/system/source/companion/connection.js +182 -0
  17. package/dist/plugins/system/source/companion/liveness.d.ts +3 -0
  18. package/dist/plugins/system/source/companion/liveness.js +20 -0
  19. package/dist/plugins/system/source/companion/native-address.d.ts +12 -0
  20. package/dist/plugins/system/source/companion/native-address.js +41 -0
  21. package/dist/plugins/system/source/companion/native-identity.d.ts +2 -0
  22. package/dist/plugins/system/source/companion/native-identity.js +23 -0
  23. package/dist/plugins/system/source/companion/native-messages.d.ts +9 -0
  24. package/dist/plugins/system/source/companion/native-messages.js +77 -0
  25. package/dist/plugins/system/source/companion/native-session.d.ts +19 -0
  26. package/dist/plugins/system/source/companion/native-session.js +205 -0
  27. package/dist/plugins/system/source/companion/native-state.d.ts +22 -0
  28. package/dist/plugins/system/source/companion/native-state.js +126 -0
  29. package/dist/plugins/system/source/companion/native-supervisor.d.ts +10 -0
  30. package/dist/plugins/system/source/companion/native-supervisor.js +93 -0
  31. package/dist/plugins/system/source/companion/pairing-store.d.ts +22 -0
  32. package/dist/plugins/system/source/companion/pairing-store.js +102 -0
  33. package/dist/plugins/system/source/companion/private-store.d.ts +4 -0
  34. package/dist/plugins/system/source/companion/private-store.js +59 -0
  35. package/dist/plugins/system/source/companion/process-owner-identity.d.ts +22 -0
  36. package/dist/plugins/system/source/companion/process-owner-identity.js +144 -0
  37. package/dist/plugins/system/source/companion/protocol.d.ts +57 -0
  38. package/dist/plugins/system/source/companion/protocol.js +66 -0
  39. package/dist/plugins/system/source/contracts.d.ts +38 -0
  40. package/dist/plugins/system/source/contracts.js +7 -0
  41. package/dist/plugins/system/source/elevation.d.ts +8 -0
  42. package/dist/plugins/system/source/elevation.js +57 -0
  43. package/dist/plugins/system/source/handlers.d.ts +3 -0
  44. package/dist/plugins/system/source/handlers.js +90 -0
  45. package/dist/plugins/system/source/host-evidence.d.ts +4 -0
  46. package/dist/plugins/system/source/host-evidence.js +52 -0
  47. package/dist/plugins/system/source/host-observation.d.ts +25 -0
  48. package/dist/plugins/system/source/host-observation.js +59 -0
  49. package/dist/plugins/system/source/process-result.d.ts +4 -0
  50. package/dist/plugins/system/source/process-result.js +86 -0
  51. package/dist/plugins/system/source/process-runner.d.ts +3 -0
  52. package/dist/plugins/system/source/process-runner.js +103 -0
  53. package/dist/plugins/system/source/target-observation.d.ts +18 -0
  54. package/dist/plugins/system/source/target-observation.js +29 -0
  55. package/dist/plugins/system/source/targets.d.ts +8 -0
  56. package/dist/plugins/system/source/targets.js +101 -0
  57. package/dist/scripts/add-runtime-model.js +10 -53
  58. package/dist/scripts/runtime-model-addition.d.ts +13 -0
  59. package/dist/scripts/runtime-model-addition.js +53 -0
  60. package/dist/scripts/runtime-setup-files.d.ts +3 -1
  61. package/dist/scripts/runtime-setup-files.js +18 -1
  62. package/dist/src/capabilities/file-output-presentation.d.ts +43 -0
  63. package/dist/src/capabilities/file-output-presentation.js +133 -0
  64. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +2 -0
  65. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.d.ts +5 -0
  66. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +37 -0
  67. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
  68. package/dist/src/capabilities/tool-definition-validator/module-registry.js +12 -0
  69. package/dist/src/capabilities/tool-event-input-text.d.ts +9 -0
  70. package/dist/src/capabilities/tool-event-input-text.js +64 -0
  71. package/dist/src/capabilities/tool-event-metadata.js +10 -0
  72. package/dist/src/capabilities/tool-executor.d.ts +1 -0
  73. package/dist/src/capabilities/tool-executor.js +1 -0
  74. package/dist/src/capabilities/tool-permission-mode.d.ts +7 -0
  75. package/dist/src/capabilities/tool-permission-mode.js +27 -0
  76. package/dist/src/capabilities/tool-types.d.ts +18 -2
  77. package/dist/src/cli/abot.js +18 -15
  78. package/dist/src/cli/host-companion-bundle.mjs +5201 -0
  79. package/dist/src/cli/host-companion-entry.d.ts +8 -0
  80. package/dist/src/cli/host-companion-entry.js +70 -0
  81. package/dist/src/cli/host-companion-startup.d.ts +4 -0
  82. package/dist/src/cli/host-companion-startup.js +35 -0
  83. package/dist/src/cli/host-companion.d.ts +5 -0
  84. package/dist/src/cli/host-companion.js +203 -0
  85. package/dist/src/model-gateway/server/configuration.js +4 -1
  86. package/dist/src/model-gateway/server/contracts.d.ts +2 -0
  87. package/dist/src/plugin-contract/entrypoint.d.ts +4 -2
  88. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  89. package/dist/src/runtime/adapters/config-file-transaction.d.ts +46 -0
  90. package/dist/src/runtime/adapters/config-file-transaction.js +158 -0
  91. package/dist/src/runtime/adapters/configured-skill-provider.js +3 -3
  92. package/dist/src/runtime/adapters/in-memory-session-store.js +11 -1
  93. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +7 -3
  94. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +4 -1
  95. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -1
  96. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +5 -1
  97. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.d.ts +3 -0
  98. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.js +15 -0
  99. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +2 -0
  100. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +17 -43
  101. package/dist/src/runtime/adapters/registered-tool-normal-invocations/catalog/registrations.js +6 -2
  102. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +10 -1
  103. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.d.ts +11 -0
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.js +37 -0
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.d.ts +7 -0
  106. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.js +105 -0
  107. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +29 -3
  108. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +1 -0
  109. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +1 -0
  110. package/dist/src/runtime/capabilities/configured-tool-registry.js +9 -1
  111. package/dist/src/runtime/capabilities/file-output-root-identity.d.ts +5 -0
  112. package/dist/src/runtime/capabilities/file-output-root-identity.js +146 -0
  113. package/dist/src/runtime/capabilities/file-output-root-marker-creation.d.ts +5 -0
  114. package/dist/src/runtime/capabilities/file-output-root-marker-creation.js +63 -0
  115. package/dist/src/runtime/capabilities/request-bound-tool-registry.d.ts +1 -0
  116. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +6 -1
  117. package/dist/src/runtime/capabilities/request-module-preparation.d.ts +3 -0
  118. package/dist/src/runtime/capabilities/request-module-preparation.js +102 -0
  119. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +10 -0
  120. package/dist/src/runtime/capabilities/request-permission-catalog.js +50 -0
  121. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +4 -0
  122. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +61 -0
  123. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +3 -0
  124. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +5 -2
  125. package/dist/src/runtime/capabilities/request-working-directory.d.ts +3 -0
  126. package/dist/src/runtime/capabilities/request-working-directory.js +12 -0
  127. package/dist/src/runtime/composition.d.ts +2 -0
  128. package/dist/src/runtime/config/runner/loader.d.ts +4 -0
  129. package/dist/src/runtime/config/runner/loader.js +23 -3
  130. package/dist/src/runtime/context/capability-brief-budget.d.ts +18 -0
  131. package/dist/src/runtime/context/capability-brief-budget.js +38 -0
  132. package/dist/src/runtime/context/capability-brief-readmission.d.ts +21 -0
  133. package/dist/src/runtime/context/capability-brief-readmission.js +47 -0
  134. package/dist/src/runtime/context/capability-brief.d.ts +9 -2
  135. package/dist/src/runtime/context/capability-brief.js +21 -39
  136. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -0
  137. package/dist/src/runtime/context/capability-descriptions.js +23 -0
  138. package/dist/src/runtime/default-environment-adapters.js +3 -4
  139. package/dist/src/runtime/local-application.d.ts +18 -0
  140. package/dist/src/runtime/local-application.js +12 -0
  141. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  142. package/dist/src/runtime/local-host/app-service-dispatch.js +9 -0
  143. package/dist/src/runtime/local-host/client-services.d.ts +16 -0
  144. package/dist/src/runtime/local-host/client-services.js +3 -2
  145. package/dist/src/runtime/local-host/contracts.d.ts +4 -0
  146. package/dist/src/runtime/local-host/startup-connection.js +22 -7
  147. package/dist/src/runtime/local-host/transport.js +14 -2
  148. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +5 -2
  149. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  150. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.d.ts +3 -0
  151. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.js +46 -0
  152. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  153. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  154. package/dist/src/runtime/orchestration/role-calls/transactions.js +2 -0
  155. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.d.ts +48 -0
  156. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.js +9 -0
  157. package/dist/src/runtime/orchestration/role-calls/work-plan-source.d.ts +7 -0
  158. package/dist/src/runtime/orchestration/role-calls/work-plan-source.js +85 -0
  159. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.d.ts +3 -0
  160. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.js +17 -0
  161. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.d.ts +10 -0
  162. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.js +149 -0
  163. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  164. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  165. package/dist/src/runtime/plugins/compiled-catalog.d.ts +2 -1
  166. package/dist/src/runtime/plugins/configured-manifests.d.ts +3 -0
  167. package/dist/src/runtime/plugins/configured-manifests.js +37 -0
  168. package/dist/src/runtime/plugins/entrypoint-validation.d.ts +6 -0
  169. package/dist/src/runtime/plugins/entrypoint-validation.js +74 -0
  170. package/dist/src/runtime/plugins/loader.js +11 -123
  171. package/dist/src/runtime/plugins/manifest-discovery.d.ts +4 -1
  172. package/dist/src/runtime/plugins/manifest-discovery.js +8 -1
  173. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  174. package/dist/src/runtime/plugins/manifest-validator.js +7 -1
  175. package/dist/src/runtime/plugins/runtime-capability-plugins.d.ts +4 -0
  176. package/dist/src/runtime/plugins/runtime-capability-plugins.js +7 -0
  177. package/dist/src/runtime/plugins/selection.d.ts +14 -0
  178. package/dist/src/runtime/plugins/selection.js +38 -0
  179. package/dist/src/runtime/ports.d.ts +8 -2
  180. package/dist/src/runtime/projects/contracts.d.ts +40 -0
  181. package/dist/src/runtime/projects/contracts.js +10 -0
  182. package/dist/src/runtime/projects/folders.d.ts +7 -0
  183. package/dist/src/runtime/projects/folders.js +110 -0
  184. package/dist/src/runtime/projects/repository.d.ts +10 -0
  185. package/dist/src/runtime/projects/repository.js +54 -0
  186. package/dist/src/runtime/projects/service.d.ts +3 -0
  187. package/dist/src/runtime/projects/service.js +34 -0
  188. package/dist/src/runtime/projects/session-paths.d.ts +5 -0
  189. package/dist/src/runtime/projects/session-paths.js +13 -0
  190. package/dist/src/runtime/request/execution-agent-plan-update.d.ts +4 -0
  191. package/dist/src/runtime/request/execution-agent-plan-update.js +13 -0
  192. package/dist/src/runtime/request/execution-agent-root-execution.js +9 -1
  193. package/dist/src/runtime/request/handler.js +9 -2
  194. package/dist/src/runtime/request/input.d.ts +2 -1
  195. package/dist/src/runtime/request/input.js +1 -6
  196. package/dist/src/runtime/request/role-call-planner-events.js +4 -0
  197. package/dist/src/runtime/request/role-executor-composition.js +9 -1
  198. package/dist/src/runtime/request/root-contract.d.ts +6 -1
  199. package/dist/src/runtime/request/root-execution-kernel.js +17 -0
  200. package/dist/src/runtime/request/root-plan-event-projection.d.ts +3 -0
  201. package/dist/src/runtime/request/root-plan-event-projection.js +32 -0
  202. package/dist/src/runtime/request/root-plan-update.d.ts +15 -0
  203. package/dist/src/runtime/request/root-plan-update.js +20 -0
  204. package/dist/src/runtime/request/worker-capability-composition.d.ts +1 -0
  205. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  206. package/dist/src/runtime/runtime-environment.d.ts +1 -0
  207. package/dist/src/runtime/runtime-environment.js +2 -0
  208. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +32 -0
  209. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +106 -0
  210. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.d.ts +5 -0
  211. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.js +40 -0
  212. package/dist/src/runtime/steps/auditor-decision/audit-input-state.d.ts +12 -0
  213. package/dist/src/runtime/steps/auditor-decision/audit-input-state.js +101 -0
  214. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +31 -16
  215. package/dist/src/runtime/steps/auditor-decision/contracts.js +3 -3
  216. package/dist/src/runtime/steps/auditor-decision/evidence-binding.d.ts +5 -0
  217. package/dist/src/runtime/steps/auditor-decision/evidence-binding.js +43 -0
  218. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.d.ts +2 -0
  219. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +71 -0
  220. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +13 -0
  221. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +89 -0
  222. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +10 -0
  223. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +56 -0
  224. package/dist/src/runtime/steps/auditor-decision/evidence-selection.d.ts +9 -0
  225. package/dist/src/runtime/steps/auditor-decision/evidence-selection.js +71 -0
  226. package/dist/src/runtime/steps/auditor-decision/format.js +44 -2
  227. package/dist/src/runtime/steps/auditor-decision/index.d.ts +3 -0
  228. package/dist/src/runtime/steps/auditor-decision/index.js +3 -0
  229. package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -2
  230. package/dist/src/runtime/steps/auditor-decision/input.js +64 -20
  231. package/dist/src/runtime/steps/auditor-decision/parser.js +38 -23
  232. package/dist/src/runtime/steps/auditor-decision/projection.js +49 -99
  233. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  234. package/dist/src/runtime/steps/auditor-decision/prompt.js +9 -4
  235. package/dist/src/runtime/steps/auditor-decision/run.js +79 -47
  236. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +8 -1
  237. package/dist/src/runtime/steps/execution-agent/contracts.js +2 -0
  238. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +4 -0
  239. package/dist/src/runtime/steps/execution-agent/format.js +4 -3
  240. package/dist/src/runtime/steps/execution-agent/input.js +10 -11
  241. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  242. package/dist/src/runtime/steps/execution-agent/prompt.js +11 -4
  243. package/dist/src/runtime/steps/execution-agent/state-context.js +10 -0
  244. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +18 -0
  245. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +86 -0
  246. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.d.ts +2 -0
  247. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.js +38 -0
  248. package/dist/src/runtime/steps/execution-agent/work-plan-sources.d.ts +6 -0
  249. package/dist/src/runtime/steps/execution-agent/work-plan-sources.js +54 -0
  250. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +40 -0
  251. package/dist/src/runtime/steps/planner-decision/capability-brief.js +47 -0
  252. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -2
  253. package/dist/src/runtime/steps/planner-decision/input.js +23 -13
  254. package/dist/src/runtime/steps/planner-decision/prompt.js +2 -2
  255. package/dist/src/runtime/steps/planner-decision/run.js +11 -7
  256. package/dist/src/runtime/steps/planner-graph/parser.js +0 -11
  257. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -1
  258. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.d.ts +10 -0
  259. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.js +39 -0
  260. package/dist/src/runtime/steps/supervisor-decision/run.js +2 -1
  261. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -1
  262. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +20 -1
  263. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +1 -1
  264. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +6 -6
  265. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +2 -1
  266. package/dist/src/sessions/project-binding.d.ts +12 -0
  267. package/dist/src/sessions/project-binding.js +49 -0
  268. package/dist/src/sessions/record/projection.d.ts +6 -1
  269. package/dist/src/sessions/record/projection.js +1 -0
  270. package/dist/src/sessions/session-service.d.ts +2 -1
  271. package/dist/src/sessions/session-service.js +11 -1
  272. package/dist/src/sessions/types.d.ts +7 -0
  273. package/dist/src/web-ui/app/ARCHITECTURE.md +121 -1
  274. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  275. package/dist/src/web-ui/app/app-dom.js +3 -0
  276. package/dist/src/web-ui/app/app-state.js +38 -0
  277. package/dist/src/web-ui/app/app.js +76 -67
  278. package/dist/src/web-ui/app/components/config-workspace/config-model.js +23 -3
  279. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +2 -0
  280. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +2 -0
  281. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +6 -0
  282. package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +27 -0
  283. package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +28 -0
  284. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +5 -0
  285. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +23 -3
  286. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +26 -8
  287. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +56 -0
  288. package/dist/src/web-ui/app/components/config-workspace.js +11 -0
  289. package/dist/src/web-ui/app/components/conversation-activity.d.ts +6 -0
  290. package/dist/src/web-ui/app/components/conversation-activity.js +10 -2
  291. package/dist/src/web-ui/app/components/conversation-file-action.js +33 -0
  292. package/dist/src/web-ui/app/components/conversation-file-focus.d.ts +12 -0
  293. package/dist/src/web-ui/app/components/conversation-file-focus.js +149 -0
  294. package/dist/src/web-ui/app/components/conversation-file-preview.d.ts +23 -0
  295. package/dist/src/web-ui/app/components/conversation-file-preview.js +247 -0
  296. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +6 -0
  297. package/dist/src/web-ui/app/components/conversation-role-cards.js +10 -2
  298. package/dist/src/web-ui/app/components/conversation-tool-evidence.d.ts +9 -0
  299. package/dist/src/web-ui/app/components/conversation-tool-evidence.js +129 -0
  300. package/dist/src/web-ui/app/components/conversation-tools.d.ts +6 -0
  301. package/dist/src/web-ui/app/components/conversation-tools.js +25 -105
  302. package/dist/src/web-ui/app/components/conversation-view.js +10 -1
  303. package/dist/src/web-ui/app/components/dashboard/workspace.js +19 -7
  304. package/dist/src/web-ui/app/components/model-setup/rendering.js +99 -0
  305. package/dist/src/web-ui/app/components/model-setup/save-flow.js +111 -0
  306. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
  307. package/dist/src/web-ui/app/components/model-setup/validation.js +125 -0
  308. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +44 -0
  309. package/dist/src/web-ui/app/components/model-setup/wizard.js +370 -0
  310. package/dist/src/web-ui/app/components/plugins/manager.js +200 -0
  311. package/dist/src/web-ui/app/components/plugins/rendering.js +124 -0
  312. package/dist/src/web-ui/app/components/plugins/view-state.js +123 -0
  313. package/dist/src/web-ui/app/components/project-creation.js +119 -0
  314. package/dist/src/web-ui/app/components/project-session-groups.js +95 -0
  315. package/dist/src/web-ui/app/components/runtime-config-activation.js +83 -0
  316. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.d.ts +9 -0
  317. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.js +198 -0
  318. package/dist/src/web-ui/app/components/runtime-setup/bridge-rendering.js +107 -0
  319. package/dist/src/web-ui/app/components/runtime-setup/commands.js +54 -0
  320. package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +25 -0
  321. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +154 -0
  322. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +71 -0
  323. package/dist/src/web-ui/app/components/runtime-setup/context-window.js +18 -0
  324. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.d.ts +15 -0
  325. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +87 -0
  326. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +30 -0
  327. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +57 -0
  328. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +284 -0
  329. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +117 -0
  330. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +173 -0
  331. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +141 -0
  332. package/dist/src/web-ui/app/components/runtime-setup/validation.js +69 -0
  333. package/dist/src/web-ui/app/components/runtime-setup/view-state.js +58 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/wizard-shell.js +27 -0
  335. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +66 -5
  336. package/dist/src/web-ui/app/components/runtime-setup-guide.js +415 -461
  337. package/dist/src/web-ui/app/components/system-host/download.js +38 -0
  338. package/dist/src/web-ui/app/components/system-host/manager.js +249 -0
  339. package/dist/src/web-ui/app/components/system-host/rendering.js +88 -0
  340. package/dist/src/web-ui/app/components/system-host/setup-notice.js +87 -0
  341. package/dist/src/web-ui/app/components/system-host/visibility.js +35 -0
  342. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +4 -0
  343. package/dist/src/web-ui/app/components/tool-approval-card.js +15 -0
  344. package/dist/src/web-ui/app/configuration-environment-refresh.js +118 -0
  345. package/dist/src/web-ui/app/configuration-feature.js +125 -4
  346. package/dist/src/web-ui/app/controllers/app-event-bindings.js +2 -0
  347. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +1 -0
  348. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +4 -3
  349. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.d.ts +24 -0
  350. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.js +158 -0
  351. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.d.ts +19 -0
  352. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.js +63 -0
  353. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -0
  354. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +2 -0
  355. package/dist/src/web-ui/app/controllers/conversation-view-feature.js +28 -0
  356. package/dist/src/web-ui/app/controllers/dashboard-controller.js +17 -0
  357. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +45 -0
  358. package/dist/src/web-ui/app/controllers/projects-controller.js +278 -0
  359. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +3 -0
  360. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +13 -6
  361. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -1
  362. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +11 -95
  363. package/dist/src/web-ui/app/controllers/session-controller.js +64 -57
  364. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.d.ts +20 -0
  365. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +116 -0
  366. package/dist/src/web-ui/app/dashboard-feature.js +32 -10
  367. package/dist/src/web-ui/app/index.html +44 -7
  368. package/dist/src/web-ui/app/lib/conversation-file-preview.d.ts +12 -0
  369. package/dist/src/web-ui/app/lib/conversation-file-reference.d.ts +30 -0
  370. package/dist/src/web-ui/app/lib/conversation-file-reference.js +66 -0
  371. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +2 -0
  372. package/dist/src/web-ui/app/lib/tool-activity-event.js +18 -6
  373. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +2 -0
  374. package/dist/src/web-ui/app/lib/tool-activity-model.js +4 -2
  375. package/dist/src/web-ui/app/lib/tool-permission-mode.d.ts +16 -0
  376. package/dist/src/web-ui/app/lib/tool-permission-mode.js +60 -0
  377. package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +102 -0
  378. package/dist/src/web-ui/app/projects-feature.js +134 -0
  379. package/dist/src/web-ui/app/runtime-onboarding-feature.d.ts +34 -0
  380. package/dist/src/web-ui/app/runtime-onboarding-feature.js +92 -0
  381. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.d.ts +5 -0
  382. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.js +13 -0
  383. package/dist/src/web-ui/app/services/client-preferences.d.ts +24 -0
  384. package/dist/src/web-ui/app/services/client-preferences.js +32 -19
  385. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +46 -0
  386. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.d.ts +28 -0
  387. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.js +75 -0
  388. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +19 -0
  389. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +34 -0
  390. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +27 -0
  391. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +52 -0
  392. package/dist/src/web-ui/app/services/runtime-web-client.js +35 -4
  393. package/dist/src/web-ui/app/styles/13-projects.css +272 -0
  394. package/dist/src/web-ui/app/styles/18-dashboard.css +0 -5
  395. package/dist/src/web-ui/app/styles/19-runtime-setup.css +411 -0
  396. package/dist/src/web-ui/app/styles/20-chat-composer.css +0 -384
  397. package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +254 -0
  398. package/dist/src/web-ui/app/styles/37-runtime-activation.css +26 -0
  399. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +1 -10
  400. package/dist/src/web-ui/app/styles/41-plugin-management.css +351 -0
  401. package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +179 -0
  402. package/dist/src/web-ui/app/styles/43-model-setup.css +73 -0
  403. package/dist/src/web-ui/app/styles/44-model-provider-cards.css +63 -0
  404. package/dist/src/web-ui/app/styles/45-bridge-setup.css +44 -0
  405. package/dist/src/web-ui/app/styles/46-system-host.css +132 -0
  406. package/dist/src/web-ui/app/styles.css +10 -0
  407. package/dist/src/web-ui/config-dashboard-backend.d.ts +5 -0
  408. package/dist/src/web-ui/config-dashboard-backend.js +94 -114
  409. package/dist/src/web-ui/config-dashboard-model-identity.d.ts +7 -0
  410. package/dist/src/web-ui/config-dashboard-model-identity.js +45 -0
  411. package/dist/src/web-ui/config-dashboard-save-transaction.d.ts +5 -0
  412. package/dist/src/web-ui/config-dashboard-save-transaction.js +21 -0
  413. package/dist/src/web-ui/environment-config.d.ts +17 -0
  414. package/dist/src/web-ui/environment-config.js +60 -0
  415. package/dist/src/web-ui/forwarded-loopback-policy.d.ts +2 -0
  416. package/dist/src/web-ui/forwarded-loopback-policy.js +14 -0
  417. package/dist/src/web-ui/local-runtime/api-router.d.ts +7 -0
  418. package/dist/src/web-ui/local-runtime/api-router.js +136 -12
  419. package/dist/src/web-ui/local-runtime/config-mutation-request.d.ts +8 -0
  420. package/dist/src/web-ui/local-runtime/config-mutation-request.js +55 -0
  421. package/dist/src/web-ui/local-runtime/configuration-activation-environments.d.ts +22 -0
  422. package/dist/src/web-ui/local-runtime/configuration-activation-environments.js +106 -0
  423. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +7 -0
  424. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +36 -0
  425. package/dist/src/web-ui/local-runtime/configuration-activation.d.ts +20 -0
  426. package/dist/src/web-ui/local-runtime/configuration-activation.js +107 -0
  427. package/dist/src/web-ui/local-runtime/contracts.d.ts +8 -0
  428. package/dist/src/web-ui/local-runtime/conversation-file-access.d.ts +30 -0
  429. package/dist/src/web-ui/local-runtime/conversation-file-access.js +131 -0
  430. package/dist/src/web-ui/local-runtime/conversation-file-content.d.ts +21 -0
  431. package/dist/src/web-ui/local-runtime/conversation-file-content.js +75 -0
  432. package/dist/src/web-ui/local-runtime/conversation-file-format.d.ts +12 -0
  433. package/dist/src/web-ui/local-runtime/conversation-file-format.js +87 -0
  434. package/dist/src/web-ui/local-runtime/conversation-file-native-open.d.ts +10 -0
  435. package/dist/src/web-ui/local-runtime/conversation-file-native-open.js +94 -0
  436. package/dist/src/web-ui/local-runtime/conversation-file-native-request.d.ts +4 -0
  437. package/dist/src/web-ui/local-runtime/conversation-file-native-request.js +72 -0
  438. package/dist/src/web-ui/local-runtime/conversation-file-routes.d.ts +11 -0
  439. package/dist/src/web-ui/local-runtime/conversation-file-routes.js +105 -0
  440. package/dist/src/web-ui/local-runtime/conversation-file-target.d.ts +14 -0
  441. package/dist/src/web-ui/local-runtime/conversation-file-target.js +158 -0
  442. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +14 -0
  443. package/dist/src/web-ui/local-runtime/environment-registry.js +121 -6
  444. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +2 -1
  445. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +15 -10
  446. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +17 -0
  447. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +45 -0
  448. package/dist/src/web-ui/local-runtime/model-setup-identity.d.ts +16 -0
  449. package/dist/src/web-ui/local-runtime/model-setup-identity.js +20 -0
  450. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +24 -0
  451. package/dist/src/web-ui/local-runtime/model-setup-input.js +107 -0
  452. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +17 -0
  453. package/dist/src/web-ui/local-runtime/model-setup-provider.js +68 -0
  454. package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +14 -0
  455. package/dist/src/web-ui/local-runtime/model-setup-retry.js +47 -0
  456. package/dist/src/web-ui/local-runtime/model-setup-routes.d.ts +12 -0
  457. package/dist/src/web-ui/local-runtime/model-setup-routes.js +50 -0
  458. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +30 -0
  459. package/dist/src/web-ui/local-runtime/model-setup-service.js +93 -0
  460. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +5 -0
  461. package/dist/src/web-ui/local-runtime/model-setup-validation.js +33 -0
  462. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +14 -0
  463. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +50 -0
  464. package/dist/src/web-ui/local-runtime/project-routes.d.ts +17 -0
  465. package/dist/src/web-ui/local-runtime/project-routes.js +93 -0
  466. package/dist/src/web-ui/local-runtime/provider-credential-identity.d.ts +3 -0
  467. package/dist/src/web-ui/local-runtime/provider-credential-identity.js +18 -0
  468. package/dist/src/web-ui/local-runtime/request-execution.d.ts +1 -0
  469. package/dist/src/web-ui/local-runtime/request-execution.js +8 -0
  470. package/dist/src/web-ui/local-runtime/runtime-availability.js +36 -7
  471. package/dist/src/web-ui/local-runtime/runtime-setup-completion.d.ts +13 -0
  472. package/dist/src/web-ui/local-runtime/runtime-setup-completion.js +28 -0
  473. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +13 -0
  474. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +110 -0
  475. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.d.ts +4 -0
  476. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +21 -0
  477. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +14 -0
  478. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +148 -0
  479. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.d.ts +7 -0
  480. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.js +18 -0
  481. package/dist/src/web-ui/local-runtime/runtime-setup-draft.d.ts +21 -0
  482. package/dist/src/web-ui/local-runtime/runtime-setup-draft.js +105 -0
  483. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.d.ts +8 -0
  484. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.js +40 -0
  485. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.d.ts +1 -0
  486. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.js +27 -0
  487. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +19 -0
  488. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +82 -0
  489. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.d.ts +7 -0
  490. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.js +35 -0
  491. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.d.ts +4 -0
  492. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.js +23 -0
  493. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.d.ts +11 -0
  494. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.js +31 -0
  495. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +11 -0
  496. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +60 -0
  497. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.d.ts +8 -0
  498. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.js +77 -0
  499. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +35 -0
  500. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +56 -0
  501. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.d.ts +17 -0
  502. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +229 -0
  503. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +65 -0
  504. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +195 -0
  505. package/dist/src/web-ui/local-runtime/runtime-setup-validation.d.ts +8 -0
  506. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +35 -0
  507. package/dist/src/web-ui/local-runtime/saved-model-catalog.d.ts +3 -0
  508. package/dist/src/web-ui/local-runtime/saved-model-catalog.js +20 -0
  509. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +8 -0
  510. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +71 -0
  511. package/dist/src/web-ui/local-runtime/setup-embedding-provider.d.ts +13 -0
  512. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +114 -0
  513. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +12 -0
  514. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +53 -0
  515. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +32 -0
  516. package/dist/src/web-ui/local-runtime/setup-embedding-service.js +59 -0
  517. package/dist/src/web-ui/local-runtime-backend.d.ts +1 -0
  518. package/dist/src/web-ui/local-runtime-backend.js +3 -0
  519. package/dist/src/web-ui/plugin-capability-selection.d.ts +14 -0
  520. package/dist/src/web-ui/plugin-capability-selection.js +48 -0
  521. package/dist/src/web-ui/plugin-management-catalog.d.ts +26 -0
  522. package/dist/src/web-ui/plugin-management-catalog.js +56 -0
  523. package/dist/src/web-ui/plugin-management-selection.d.ts +16 -0
  524. package/dist/src/web-ui/plugin-management-selection.js +71 -0
  525. package/dist/src/web-ui/plugin-management-service.d.ts +29 -0
  526. package/dist/src/web-ui/plugin-management-service.js +150 -0
  527. package/dist/src/web-ui/request-authority.d.ts +8 -0
  528. package/dist/src/web-ui/request-authority.js +129 -0
  529. package/dist/src/web-ui/runtime-setup-gateway-address.d.ts +3 -0
  530. package/dist/src/web-ui/runtime-setup-gateway-address.js +26 -0
  531. package/dist/src/web-ui/runtime-setup-gateway.d.ts +29 -0
  532. package/dist/src/web-ui/runtime-setup-gateway.js +177 -0
  533. package/dist/src/web-ui/runtime-setup-shutdown.d.ts +2 -0
  534. package/dist/src/web-ui/runtime-setup-shutdown.js +20 -0
  535. package/dist/src/web-ui/server.d.ts +7 -14
  536. package/dist/src/web-ui/server.js +53 -63
  537. package/dist/src/web-ui/session-read-state/service.d.ts +12 -2
  538. package/dist/src/web-ui/system-host-service.d.ts +19 -0
  539. package/dist/src/web-ui/system-host-service.js +159 -0
  540. package/dist/src/web-ui/system-host-setup/companion-bundle.d.ts +2 -0
  541. package/dist/src/web-ui/system-host-setup/companion-bundle.js +12 -0
  542. package/dist/src/web-ui/system-host-setup/companion-macos.d.ts +2 -0
  543. package/dist/src/web-ui/system-host-setup/companion-macos.js +74 -0
  544. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +2 -0
  545. package/dist/src/web-ui/system-host-setup/companion-windows.js +105 -0
  546. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +18 -0
  547. package/dist/src/web-ui/system-host-setup/installer-contract.js +51 -0
  548. package/dist/src/web-ui/system-host-setup/installers.d.ts +6 -0
  549. package/dist/src/web-ui/system-host-setup/installers.js +30 -0
  550. package/dist/src/web-ui/system-host-setup/native-authorization.d.ts +3 -0
  551. package/dist/src/web-ui/system-host-setup/native-authorization.js +11 -0
  552. package/dist/src/web-ui/system-host-setup/node-distribution.d.ts +19 -0
  553. package/dist/src/web-ui/system-host-setup/node-distribution.js +9 -0
  554. package/dist/src/web-ui/system-host-setup/readiness.d.ts +18 -0
  555. package/dist/src/web-ui/system-host-setup/readiness.js +70 -0
  556. package/dist/src/web-ui/system-host-setup/routes.d.ts +20 -0
  557. package/dist/src/web-ui/system-host-setup/routes.js +121 -0
  558. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.d.ts +2 -0
  559. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.js +17 -0
  560. package/dist/src/web-ui/system-host-setup/wsl-interop-config.d.ts +3 -0
  561. package/dist/src/web-ui/system-host-setup/wsl-interop-config.js +67 -0
  562. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.d.ts +1 -0
  563. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.js +49 -0
  564. package/dist/src/web-ui/system-host-upgrade-authority.d.ts +5 -0
  565. package/dist/src/web-ui/system-host-upgrade-authority.js +13 -0
  566. package/docs/architecture.md +6 -1
  567. package/docs/installation.md +53 -17
  568. package/docs/known-limitations.md +14 -0
  569. package/docs/plugins.md +124 -19
  570. package/docs/projects-and-full-plus.md +218 -0
  571. package/docs/runtime-invariant-coverage.md +6 -3
  572. package/docs/runtime-prompt-policy-contracts.md +37 -5
  573. package/docs/runtime-public-contracts.md +17 -0
  574. package/package.json +5 -2
  575. package/plugins/exec/plugin.json +30 -9
  576. package/plugins/exec/skills/exec_process_skill/SKILL.md +1 -0
  577. package/plugins/exec/skills/exec_skill/SKILL.md +9 -10
  578. package/plugins/exec/source/handlers.ts +4 -38
  579. package/plugins/exec/source/paths.ts +53 -49
  580. package/plugins/exec/source/types.ts +6 -4
  581. package/plugins/exec/source/validation.ts +33 -198
  582. package/plugins/exec/src/index.cjs +62 -204
  583. package/plugins/filesystem/plugin.json +1 -1
  584. package/plugins/filesystem/skills/dev_view_skill/SKILL.md +7 -0
  585. package/plugins/filesystem/source/atomic-write.ts +6 -3
  586. package/plugins/filesystem/source/dev-view.ts +2 -1
  587. package/plugins/filesystem/source/directory-authority-write.ts +4 -0
  588. package/plugins/filesystem/source/edit-file.ts +3 -0
  589. package/plugins/filesystem/source/file-output-presentation.ts +42 -0
  590. package/plugins/filesystem/source/mutation-parent.ts +18 -9
  591. package/plugins/filesystem/source/view-locator.ts +141 -0
  592. package/plugins/filesystem/source/view-window.ts +12 -25
  593. package/plugins/filesystem/source/write-file.ts +8 -0
  594. package/plugins/filesystem/src/index.cjs +162 -35
  595. package/plugins/system/plugin.json +374 -0
  596. package/plugins/system/skills/system_actions/SKILL.md +31 -0
  597. package/plugins/system/source/application-catalog.ts +237 -0
  598. package/plugins/system/source/application-launch.ts +113 -0
  599. package/plugins/system/source/application-observation.ts +78 -0
  600. package/plugins/system/source/commands.ts +106 -0
  601. package/plugins/system/source/companion/autostart.ts +185 -0
  602. package/plugins/system/source/companion/broker-client.ts +183 -0
  603. package/plugins/system/source/companion/broker-location.ts +89 -0
  604. package/plugins/system/source/companion/broker-server.ts +169 -0
  605. package/plugins/system/source/companion/connection.ts +211 -0
  606. package/plugins/system/source/companion/liveness.ts +23 -0
  607. package/plugins/system/source/companion/native-address.ts +55 -0
  608. package/plugins/system/source/companion/native-identity.ts +26 -0
  609. package/plugins/system/source/companion/native-messages.ts +100 -0
  610. package/plugins/system/source/companion/native-session.ts +268 -0
  611. package/plugins/system/source/companion/native-state.ts +135 -0
  612. package/plugins/system/source/companion/native-supervisor.ts +98 -0
  613. package/plugins/system/source/companion/pairing-store.ts +110 -0
  614. package/plugins/system/source/companion/private-store.ts +58 -0
  615. package/plugins/system/source/companion/process-owner-identity.ts +190 -0
  616. package/plugins/system/source/companion/protocol.ts +108 -0
  617. package/plugins/system/source/contracts.ts +44 -0
  618. package/plugins/system/source/elevation.ts +88 -0
  619. package/plugins/system/source/handlers.ts +120 -0
  620. package/plugins/system/source/host-dispatch.ts +106 -0
  621. package/plugins/system/source/host-evidence.ts +72 -0
  622. package/plugins/system/source/host-observation.ts +66 -0
  623. package/plugins/system/source/index.ts +8 -0
  624. package/plugins/system/source/process-result.ts +111 -0
  625. package/plugins/system/source/process-runner.ts +104 -0
  626. package/plugins/system/source/request-system-modules.ts +117 -0
  627. package/plugins/system/source/request-target-snapshot.ts +163 -0
  628. package/plugins/system/source/target-observation.ts +43 -0
  629. package/plugins/system/source/targets.ts +147 -0
  630. package/plugins/system/src/index.cjs +1730 -0
  631. package/src/runtime/README.md +36 -8
  632. package/src/runtime/local-host/README.md +7 -0
  633. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +0 -14
  634. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +0 -87
@@ -0,0 +1,133 @@
1
+ import { createHash } from "node:crypto";
2
+ export function hasStableFileOutputRootIdentity(identity) {
3
+ if (!identity.isDirectory())
4
+ return false;
5
+ if (typeof identity.dev !== "bigint")
6
+ return false;
7
+ if (identity.dev < 0n)
8
+ return false;
9
+ if (typeof identity.ino !== "bigint")
10
+ return false;
11
+ if (identity.ino <= 0n)
12
+ return false;
13
+ if (typeof identity.birthtimeNs !== "bigint")
14
+ return false;
15
+ return identity.birthtimeNs > 0n;
16
+ }
17
+ /**
18
+ * The caller supplies the canonical rootPath returned by the host resolver.
19
+ * Encoding: SHA-256 of UTF-8 JSON [v3 domain, location, canonical root, decimal
20
+ * device, inode, birthtimeNs, root marker token], with a sha256: prefix. The
21
+ * random marker distinguishes roots even if an inode and birth time are reused.
22
+ * Child changes must not invalidate the root, so mtime/ctime are never included.
23
+ * Older path-only hashes cannot match; unavailable birth identity fails closed.
24
+ */
25
+ export function createFileOutputRootId(location, canonicalRoot, identity, markerToken) {
26
+ if (!hasStableFileOutputRootIdentity(identity))
27
+ throw new Error("Stable file-output root identity is unavailable.");
28
+ if (!/^[a-f0-9]{64}$/u.test(markerToken))
29
+ throw new Error("Stable file-output root marker is unavailable.");
30
+ const encoded = JSON.stringify([
31
+ "abot-file-output-root-v3",
32
+ location,
33
+ canonicalRoot,
34
+ identity.dev.toString(),
35
+ identity.ino.toString(),
36
+ identity.birthtimeNs.toString(),
37
+ markerToken,
38
+ ]);
39
+ return `sha256:${createHash("sha256").update(encoded, "utf8").digest("hex")}`;
40
+ }
41
+ export function isToolFileOutputLocation(value) {
42
+ return value === "agent_work" || value === "workspace";
43
+ }
44
+ function isFileOutputRecord(value) {
45
+ if (value === null)
46
+ return false;
47
+ if (typeof value !== "object")
48
+ return false;
49
+ return !Array.isArray(value);
50
+ }
51
+ function isRootIdentityInteger(value) {
52
+ if (typeof value !== "string")
53
+ return false;
54
+ return /^(?:0|[1-9][0-9]{0,63})$/u.test(value);
55
+ }
56
+ /** A detached host report binding; filesystem authority is verified separately. */
57
+ export function parseToolFileOutputRootIdentity(value) {
58
+ if (!isFileOutputRecord(value))
59
+ return undefined;
60
+ if (!isRootIdentityInteger(value.device))
61
+ return undefined;
62
+ if (!isRootIdentityInteger(value.inode))
63
+ return undefined;
64
+ if (value.inode === "0")
65
+ return undefined;
66
+ if (!isRootIdentityInteger(value.birthtimeNs))
67
+ return undefined;
68
+ if (value.birthtimeNs === "0")
69
+ return undefined;
70
+ return Object.freeze({
71
+ device: value.device,
72
+ inode: value.inode,
73
+ birthtimeNs: value.birthtimeNs,
74
+ });
75
+ }
76
+ function isFileOutputRelativePath(value) {
77
+ if (typeof value !== "string")
78
+ return false;
79
+ if (value.length === 0)
80
+ return false;
81
+ if (value.length > 4096)
82
+ return false;
83
+ if (value.includes("\0"))
84
+ return false;
85
+ if (value.includes("\\"))
86
+ return false;
87
+ if (/^[A-Za-z]:/u.test(value))
88
+ return false;
89
+ return value.split("/").every(isFileOutputPathSegment);
90
+ }
91
+ function isFileOutputPathSegment(value) {
92
+ if (value.length === 0)
93
+ return false;
94
+ if (value === ".")
95
+ return false;
96
+ return value !== "..";
97
+ }
98
+ function isFileOutputOperation(value) {
99
+ return value === "created" || value === "updated";
100
+ }
101
+ function isFileOutputRootId(value) {
102
+ if (typeof value !== "string")
103
+ return false;
104
+ return /^sha256:[a-f0-9]{64}$/u.test(value);
105
+ }
106
+ /** Structural validation is not authorization; the server must verify origin. */
107
+ export function parseToolFileOutputReceipt(value) {
108
+ if (!isFileOutputRecord(value))
109
+ return undefined;
110
+ if (value.version !== 1)
111
+ return undefined;
112
+ if (!isToolFileOutputLocation(value.location))
113
+ return undefined;
114
+ if (!isFileOutputRelativePath(value.relativePath))
115
+ return undefined;
116
+ if (!isFileOutputOperation(value.operation))
117
+ return undefined;
118
+ if (!isFileOutputRootId(value.rootId))
119
+ return undefined;
120
+ const logicalPath = value.location === "workspace"
121
+ ? `workspace/${value.relativePath}`
122
+ : value.relativePath;
123
+ if (value.logicalPath !== logicalPath)
124
+ return undefined;
125
+ return Object.freeze({
126
+ version: 1,
127
+ location: value.location,
128
+ rootId: value.rootId,
129
+ relativePath: value.relativePath,
130
+ logicalPath,
131
+ operation: value.operation,
132
+ });
133
+ }
@@ -1,3 +1,4 @@
1
+ import { parseRequiredToolPermissionMode } from "../tool-permission-mode.js";
1
2
  import { isDevelopmentRole, isExecutionEffect, isRoutingCapability, parseParamsByCommand, parseRuntimePathBindings, parseToolCatalogGroups, } from "./definition-fields.js";
2
3
  import { parseEventPresentation } from "./event-presentation.js";
3
4
  import { parsePayloadChannelSpec } from "./payload-channel-spec.js";
@@ -48,6 +49,7 @@ export function parseToolDefinition(raw) {
48
49
  const parsedEventPresentation = parseEventPresentation(name, eventPresentation);
49
50
  return {
50
51
  name,
52
+ requiredPermissionMode: parseRequiredToolPermissionMode(raw.requiredPermissionMode, `${name}.requiredPermissionMode`),
51
53
  ...(typeof description === "string" ? { description } : {}),
52
54
  routingCapability,
53
55
  ...(controlsRefinement === "mechanical_when_complete"
@@ -0,0 +1,5 @@
1
+ import type { ToolEventMetadataProjection } from "../tool-types.js";
2
+ type InputTextOptions = Pick<ToolEventMetadataProjection, "maxLength" | "preserveWhitespace">;
3
+ /** The same optional input-text contract applies to manifests and tool modules. */
4
+ export declare function parseEventInputTextOptions(projection: Record<string, unknown>, path: string): InputTextOptions;
5
+ export {};
@@ -0,0 +1,37 @@
1
+ /** The same optional input-text contract applies to manifests and tool modules. */
2
+ export function parseEventInputTextOptions(projection, path) {
3
+ const { maxLength, preserveWhitespace } = projection;
4
+ if (maxLength === undefined && preserveWhitespace === undefined)
5
+ return {};
6
+ if (!supportsInputTextOptions(projection.kind)) {
7
+ throw new Error(`${path} text options require kind string or string_array`);
8
+ }
9
+ if (maxLength !== undefined && projection.kind !== "string") {
10
+ throw new Error(`${path}.maxLength requires kind string`);
11
+ }
12
+ if (!hasSupportedInputTextLength(maxLength)) {
13
+ throw new Error(`${path}.maxLength must be an integer from 1 to 4096`);
14
+ }
15
+ if (!hasSupportedWhitespaceOption(preserveWhitespace)) {
16
+ throw new Error(`${path}.preserveWhitespace must be a boolean`);
17
+ }
18
+ return {
19
+ ...(maxLength !== undefined ? { maxLength } : {}),
20
+ ...(preserveWhitespace !== undefined ? { preserveWhitespace } : {}),
21
+ };
22
+ }
23
+ function hasSupportedInputTextLength(value) {
24
+ if (value === undefined)
25
+ return true;
26
+ if (typeof value !== "number" || !Number.isInteger(value))
27
+ return false;
28
+ return value >= 1 && value <= 4_096;
29
+ }
30
+ function hasSupportedWhitespaceOption(value) {
31
+ if (value === undefined)
32
+ return true;
33
+ return typeof value === "boolean";
34
+ }
35
+ function supportsInputTextOptions(kind) {
36
+ return kind === "string" || kind === "string_array";
37
+ }
@@ -1,8 +1,10 @@
1
1
  import { isToolDefinitionRecordValue } from "./definition-shape.js";
2
2
  import { parseEventResultMetadata } from "./event-result-metadata.js";
3
+ import { parseEventInputTextOptions } from "./event-input-text-options.js";
3
4
  const EVENT_PROJECTION_KINDS = [
4
5
  "string",
5
6
  "number",
7
+ "boolean",
6
8
  "string_array",
7
9
  "length",
8
10
  ];
@@ -45,6 +47,7 @@ function parseEventMetadataProjection(toolName, key, raw) {
45
47
  {
46
48
  param: param.trim(),
47
49
  kind,
50
+ ...parseEventInputTextOptions(raw, `eventPresentation.metadata.${key} (${toolName})`),
48
51
  ...(fallback !== undefined ? { default: fallback } : {}),
49
52
  },
50
53
  ];
@@ -51,6 +51,9 @@ export function validateToolModuleDeclarations(modules) {
51
51
  implementation: tool.implementation,
52
52
  ...(tool.adapter ? { adapter: tool.adapter } : {}),
53
53
  normalInvocation: tool.normalInvocation,
54
+ ...(source.prepareRequest
55
+ ? { prepareRequest: source.prepareRequest }
56
+ : {}),
54
57
  };
55
58
  });
56
59
  }
@@ -62,6 +65,7 @@ function parseToolAdapter(toolName, raw) {
62
65
  }
63
66
  const normalizeCall = raw.normalizeCall;
64
67
  const validateCall = raw.validateCall;
68
+ const executionBinding = raw.executionBinding;
65
69
  if (normalizeCall !== undefined && typeof normalizeCall !== "function") {
66
70
  throw new Error(`Invalid tool module for ${toolName} (adapter.normalizeCall)`);
67
71
  }
@@ -69,6 +73,14 @@ function parseToolAdapter(toolName, raw) {
69
73
  throw new Error(`Invalid tool module for ${toolName} (adapter.validateCall)`);
70
74
  }
71
75
  const adapter = {};
76
+ if (executionBinding !== undefined &&
77
+ typeof executionBinding !== "function") {
78
+ throw new Error(`Invalid tool module for ${toolName} (adapter.executionBinding)`);
79
+ }
80
+ if (typeof executionBinding === "function") {
81
+ adapter.executionBinding =
82
+ executionBinding;
83
+ }
72
84
  if (typeof normalizeCall === "function") {
73
85
  adapter.normalizeCall = normalizeCall;
74
86
  }
@@ -0,0 +1,9 @@
1
+ import type { ToolEventMetadataProjection } from "./tool-types.js";
2
+ /** Opt-in exact text stays display-only and never replaces the accepted input. */
3
+ export declare function projectDeclaredInputText(raw: unknown, projection: ToolEventMetadataProjection): Readonly<{
4
+ text: string;
5
+ truncated: boolean;
6
+ }> | undefined;
7
+ export declare function hasDeclaredInputTextOptions(projection: ToolEventMetadataProjection): boolean;
8
+ /** Preserve array positions, empty values and whitespace in opt-in arguments. */
9
+ export declare function projectDeclaredInputFields(key: string, raw: unknown, projection: ToolEventMetadataProjection): [string, unknown][];
@@ -0,0 +1,64 @@
1
+ /** Opt-in exact text stays display-only and never replaces the accepted input. */
2
+ export function projectDeclaredInputText(raw, projection) {
3
+ if (typeof raw !== "string")
4
+ return undefined;
5
+ const text = projection.preserveWhitespace === true ? raw : raw.trim();
6
+ if (text.length === 0)
7
+ return undefined;
8
+ const limit = Math.min(4_096, projection.maxLength ?? 500);
9
+ let end = Math.min(text.length, limit);
10
+ if (splitsInputTextSurrogatePair(text, end))
11
+ end -= 1;
12
+ return { text: text.slice(0, end), truncated: end < text.length };
13
+ }
14
+ export function hasDeclaredInputTextOptions(projection) {
15
+ if (projection.kind !== "string" && projection.kind !== "string_array")
16
+ return false;
17
+ if (projection.maxLength !== undefined)
18
+ return true;
19
+ return projection.preserveWhitespace !== undefined;
20
+ }
21
+ function splitsInputTextSurrogatePair(text, end) {
22
+ if (end <= 0 || end >= text.length)
23
+ return false;
24
+ const before = text.charCodeAt(end - 1);
25
+ const after = text.charCodeAt(end);
26
+ if (before < 0xd800 || before > 0xdbff)
27
+ return false;
28
+ return after >= 0xdc00 && after <= 0xdfff;
29
+ }
30
+ /** Preserve array positions, empty values and whitespace in opt-in arguments. */
31
+ export function projectDeclaredInputFields(key, raw, projection) {
32
+ if (projection.kind === "string_array") {
33
+ return projectDeclaredInputArray(key, raw, projection);
34
+ }
35
+ const text = projectDeclaredInputText(raw, projection);
36
+ return text
37
+ ? [
38
+ [key, text.text],
39
+ [`${key}Truncated`, text.truncated],
40
+ ]
41
+ : [];
42
+ }
43
+ function projectDeclaredInputArray(key, raw, projection) {
44
+ if (!hasOnlyStringArguments(raw))
45
+ return [];
46
+ const omittedCount = Math.max(0, raw.length - 32);
47
+ let truncated = omittedCount > 0;
48
+ const values = raw.slice(0, 32).map((argument) => {
49
+ const text = projectDeclaredInputText(argument, projection);
50
+ if (text?.truncated)
51
+ truncated = true;
52
+ return text?.text ?? "";
53
+ });
54
+ return [
55
+ [key, values],
56
+ [`${key}Truncated`, truncated],
57
+ [`${key}OmittedCount`, omittedCount],
58
+ ];
59
+ }
60
+ function hasOnlyStringArguments(raw) {
61
+ if (!Array.isArray(raw))
62
+ return false;
63
+ return raw.every((value) => typeof value === "string");
64
+ }
@@ -1,4 +1,5 @@
1
1
  import { projectToolResultEventMetadata } from "./tool-result-event-projection.js";
2
+ import { hasDeclaredInputTextOptions, projectDeclaredInputFields, } from "./tool-event-input-text.js";
2
3
  function safeTrim(value) {
3
4
  return typeof value === "string" ? value.trim() : "";
4
5
  }
@@ -99,6 +100,9 @@ function buildDeclaredCallMeta(call, definition) {
99
100
  if (!projections)
100
101
  return undefined;
101
102
  const values = Object.fromEntries(Object.entries(projections).flatMap(([key, projection]) => {
103
+ if (hasDeclaredInputTextOptions(projection)) {
104
+ return projectDeclaredInputFields(key, call.params[projection.param] ?? projection.default, projection);
105
+ }
102
106
  let value;
103
107
  switch (projection.kind) {
104
108
  case "string":
@@ -107,6 +111,12 @@ function buildDeclaredCallMeta(call, definition) {
107
111
  case "number":
108
112
  value = readNumberParam(call.params, projection.param);
109
113
  break;
114
+ case "boolean":
115
+ value =
116
+ typeof call.params[projection.param] === "boolean"
117
+ ? call.params[projection.param]
118
+ : undefined;
119
+ break;
110
120
  case "string_array":
111
121
  value = readStringArrayParam(call.params, projection.param);
112
122
  break;
@@ -5,6 +5,7 @@ type ToolExecutorOptions = {
5
5
  sharedState?: ToolExecutionContext["sharedState"];
6
6
  modelInvoker?: ToolExecutionContext["modelInvoker"];
7
7
  runtimePathResolver?: ToolExecutionContext["runtimePathResolver"];
8
+ reportFileOutput?: ToolExecutionContext["reportFileOutput"];
8
9
  };
9
10
  export declare function executeToolCall(call: ToolCall, options?: ToolExecutorOptions): Promise<ToolExecutionResult>;
10
11
  export {};
@@ -101,6 +101,7 @@ export async function executeToolCall(call, options = {}) {
101
101
  sharedState: options.sharedState,
102
102
  modelInvoker: options.modelInvoker,
103
103
  runtimePathResolver: options.runtimePathResolver,
104
+ reportFileOutput: options.reportFileOutput,
104
105
  });
105
106
  const rawOutput = options.abortSignal
106
107
  ? await raceWithAbort(execution, options.abortSignal)
@@ -0,0 +1,7 @@
1
+ /** User-selected request authority. Never infer this value from model content. */
2
+ export type ToolPermissionMode = "ask" | "full_access" | "full_plus";
3
+ export type ToolRequiredPermissionMode = "full_plus";
4
+ export declare function resolveToolPermissionMode(value: unknown): ToolPermissionMode;
5
+ export declare function permitsRequiredToolMode(mode: ToolPermissionMode, requiredMode: ToolRequiredPermissionMode | undefined): boolean;
6
+ export declare function requiresToolActionApproval(mode: ToolPermissionMode, force: boolean): boolean;
7
+ export declare function parseRequiredToolPermissionMode(value: unknown, path: string): ToolRequiredPermissionMode | undefined;
@@ -0,0 +1,27 @@
1
+ export function resolveToolPermissionMode(value) {
2
+ if (value === "full_plus")
3
+ return "full_plus";
4
+ const mode = typeof value === "string" ? value.trim().toLowerCase() : "";
5
+ if (mode === "full_access" || mode === "full")
6
+ return "full_access";
7
+ return "ask";
8
+ }
9
+ export function permitsRequiredToolMode(mode, requiredMode) {
10
+ if (requiredMode === undefined)
11
+ return true;
12
+ return mode === requiredMode;
13
+ }
14
+ export function requiresToolActionApproval(mode, force) {
15
+ if (mode === "full_plus")
16
+ return false;
17
+ if (force)
18
+ return true;
19
+ return mode === "ask";
20
+ }
21
+ export function parseRequiredToolPermissionMode(value, path) {
22
+ if (value === undefined)
23
+ return undefined;
24
+ if (value === "full_plus")
25
+ return value;
26
+ throw new Error(`${path} must be full_plus when declared`);
27
+ }
@@ -1,6 +1,8 @@
1
+ import type { ToolPermissionMode, ToolRequiredPermissionMode } from "./tool-permission-mode.js";
1
2
  import type { ModelStep } from "../shared/types.js";
2
3
  import type { RuntimeAttachmentKind } from "../shared/attachments.js";
3
4
  import type { ToolNormalInvocationContract } from "./normal-invocation/contracts.js";
5
+ import type { ToolFileOutputReporter } from "./file-output-presentation.js";
4
6
  export type { ToolNormalInvocationApproval, ToolNormalInvocationArrayInput, ToolNormalInvocationBooleanInput, ToolNormalInvocationBoundedStringInput, ToolNormalInvocationContract, ToolNormalInvocationEnumInput, ToolNormalInvocationEffect, ToolNormalInvocationFixedValue, ToolNormalInvocationInput, ToolNormalInvocationInputValidation, ToolNormalInvocationNumberInput, ToolNormalInvocationOperation, ToolNormalInvocationPayload, ToolNormalInvocationPropertyInput, ToolNormalInvocationScalarInput, ToolNormalInvocationUnboundedStringInput, } from "./normal-invocation/contracts.js";
5
7
  export type ToolRoutingCapability = "filesystem_inspection" | "filesystem_mutation" | "semantic_lookup" | "semantic_mutation" | "web_lookup";
6
8
  export type ToolDevelopmentRole = "inspect" | "establish" | "mutate" | "verify" | "auxiliary";
@@ -11,7 +13,9 @@ export type ToolExecutionEffect = "read_only" | "mutating" | "mixed";
11
13
  export type ToolControlsRefinement = "mechanical_when_complete";
12
14
  export type ToolEventMetadataProjection = Readonly<{
13
15
  param: string;
14
- kind: "string" | "number" | "string_array" | "length";
16
+ kind: "string" | "number" | "boolean" | "string_array" | "length";
17
+ maxLength?: number;
18
+ preserveWhitespace?: boolean;
15
19
  default?: string | number | boolean;
16
20
  }>;
17
21
  export type ToolEventLifecycleCopy = Readonly<{
@@ -86,6 +90,7 @@ export type ToolRuntimePathBinding = Readonly<{
86
90
  default?: ".";
87
91
  }>;
88
92
  export type ToolDefinition = {
93
+ requiredPermissionMode?: ToolRequiredPermissionMode;
89
94
  name: string;
90
95
  description?: string;
91
96
  routingCapability: ToolRoutingCapability;
@@ -106,7 +111,7 @@ export type CanonicalToolDefinitionDeclaration = Omit<ToolDefinition, "params" |
106
111
  export type ToolDefinitionDeclaration = CanonicalToolDefinitionDeclaration;
107
112
  export type ToolExecutionRequestContext = Readonly<{
108
113
  agentMode: "fast" | "reasoning" | "deep";
109
- toolPermissionMode: "ask" | "full_access";
114
+ toolPermissionMode: ToolPermissionMode;
110
115
  modelPreference?: Readonly<{
111
116
  profileId: string;
112
117
  scope?: "main" | "all";
@@ -181,6 +186,8 @@ export type ToolExecutionContext = {
181
186
  sharedState?: ToolExecutionSharedState;
182
187
  /** Runtime-owned path interpretation and containment authority. */
183
188
  runtimePathResolver?: RuntimeToolPathResolver;
189
+ /** Optional host presentation channel; never add its data to tool results. */
190
+ reportFileOutput?: ToolFileOutputReporter;
184
191
  /** Trusted request-bound service for tools whose own implementation uses a model. */
185
192
  modelInvoker?: ToolModelInvoker;
186
193
  };
@@ -195,6 +202,12 @@ export type ToolCallAdapter = {
195
202
  error: string;
196
203
  repairHint?: string;
197
204
  } | null;
205
+ /** Request-captured execution authority; never projected into model controls. */
206
+ executionBinding?: (input: ToolCallAdapterInput) => Readonly<{
207
+ identity: string;
208
+ /** Human approval/activity disclosure only, never tool-result evidence. */
209
+ metadata?: Readonly<Record<string, unknown>>;
210
+ }>;
198
211
  };
199
212
  export type ToolModule = {
200
213
  definition: ToolDefinition;
@@ -206,7 +219,10 @@ type ToolModuleDeclarationBase = Omit<ToolModule, "definition" | "normalInvocati
206
219
  export type ToolModuleDeclaration = ToolModuleDeclarationBase & {
207
220
  definition: CanonicalToolDefinitionDeclaration;
208
221
  normalInvocation: ToolNormalInvocationContract;
222
+ /** Shared callback identity groups already selected modules for one request. */
223
+ prepareRequest?: ToolModuleRequestPreparation;
209
224
  };
225
+ export type ToolModuleRequestPreparation = (modules: readonly ToolModuleDeclaration[]) => Promise<readonly ToolModuleDeclaration[]>;
210
226
  export type RegisteredToolNormalInvocation = Readonly<{
211
227
  toolName: string;
212
228
  definition: ToolDefinition;
@@ -2,11 +2,13 @@ import { join, resolve } from "node:path";
2
2
  import { runAddRuntimeModel } from "../../scripts/add-runtime-model.js";
3
3
  import { runInitRuntime } from "../../scripts/init-runtime.js";
4
4
  import { runConfigureLongTermMemory } from "../../scripts/configure-long-term-memory.js";
5
- import { createModelGatewayServer, resolveProviderAdapters, resolveModelGatewayPort, } from "../model-gateway/server.js";
5
+ import { resolveProviderAdapters } from "../model-gateway/server.js";
6
6
  import { loadDotEnvFile } from "../shared/load-dotenv.js";
7
- import { closeHttpServerImmediately } from "../shared/http-server-shutdown.js";
7
+ import { closeRuntimeSetupServices } from "../web-ui/runtime-setup-shutdown.js";
8
+ import { RuntimeSetupGateway } from "../web-ui/runtime-setup-gateway.js";
8
9
  import { startWebUiServer } from "../web-ui/server.js";
9
10
  import { resolveWebUiAddress } from "../web-ui/web-ui-address.js";
11
+ import { runHostCompanionCli } from "./host-companion.js";
10
12
  function printHelp() {
11
13
  console.log([
12
14
  "ABot Runtime",
@@ -16,12 +18,14 @@ function printHelp() {
16
18
  " abot add-model --profile <profile-id> --provider <provider> --model <model-id> [options]",
17
19
  " abot memory <status|models|enable|disable> [options]",
18
20
  " abot start",
21
+ " abot host <connect|status|disconnect|uninstall|run>",
19
22
  "",
20
23
  "Commands:",
21
24
  " init Create the first machine-local runtime configuration.",
22
25
  " add-model Add a provider/model profile without replacing existing ones.",
23
26
  " memory Configure passive long-term memory embeddings.",
24
27
  " start Start the local model gateway and Web UI.",
28
+ " host Pair this computer with a local Docker Runtime.",
25
29
  ].join("\n"));
26
30
  }
27
31
  async function runStart(args) {
@@ -37,17 +41,12 @@ async function runStart(args) {
37
41
  const webAddress = resolveWebUiAddress(process.env);
38
42
  const appDir = resolve(import.meta.dirname, "../web-ui/app");
39
43
  const providerAdapters = resolveProviderAdapters({});
40
- let gateway;
44
+ const gateway = new RuntimeSetupGateway({ rootDir, providerAdapters });
41
45
  try {
42
- gateway = createModelGatewayServer({ providerAdapters });
43
- const gatewayPort = resolveModelGatewayPort();
44
- gateway.listen(gatewayPort, "127.0.0.1", () => {
45
- console.log(`model gateway listening on http://127.0.0.1:${gatewayPort}`);
46
- });
46
+ await gateway.activate(process.env.LLM_RUNTIME_CONFIG_FILE);
47
47
  }
48
- catch (error) {
49
- console.warn(`model gateway not started: ${error instanceof Error ? error.message : String(error)}`);
50
- console.warn("Complete model setup, stop ABot, and run abot start again.");
48
+ catch {
49
+ console.log("Complete model setup in the Web UI to start the model gateway.");
51
50
  }
52
51
  const webUi = startWebUiServer({
53
52
  appDir,
@@ -56,6 +55,9 @@ async function runStart(args) {
56
55
  port: webAddress.port,
57
56
  setupCommandMode: "package",
58
57
  providerAdapters,
58
+ onRuntimeSetup: (configPath) => gateway.activate(configPath),
59
+ createRuntimeSetupRestorePoint: () => gateway.createRestorePoint(),
60
+ checkRuntimeSetupActivation: (configPath) => gateway.checkActivation(configPath),
59
61
  });
60
62
  console.log(`Open ${webAddress.browserUrl}`);
61
63
  await new Promise((resolveExit, rejectExit) => {
@@ -64,10 +66,7 @@ async function runStart(args) {
64
66
  if (closing)
65
67
  return;
66
68
  closing = true;
67
- void Promise.all([
68
- webUi.close(),
69
- ...(gateway ? [closeHttpServerImmediately(gateway)] : []),
70
- ]).then(() => resolveExit(), rejectExit);
69
+ void closeRuntimeSetupServices(() => webUi.close(), () => gateway.close()).then(() => resolveExit(), rejectExit);
71
70
  };
72
71
  process.once("SIGINT", shutdown);
73
72
  process.once("SIGTERM", shutdown);
@@ -98,5 +97,9 @@ export async function runAbotCli(argv = process.argv.slice(2)) {
98
97
  await runStart(args);
99
98
  return;
100
99
  }
100
+ if (command === "host") {
101
+ await runHostCompanionCli(args);
102
+ return;
103
+ }
101
104
  throw new Error(`unknown command: ${command}`);
102
105
  }