@abot-ai/runtime 1.3.0 → 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 (660) 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/init-runtime.js +4 -13
  59. package/dist/scripts/runtime-model-addition.d.ts +13 -0
  60. package/dist/scripts/runtime-model-addition.js +53 -0
  61. package/dist/scripts/runtime-setup-directories.d.ts +2 -0
  62. package/dist/scripts/runtime-setup-directories.js +38 -0
  63. package/dist/scripts/runtime-setup-files.d.ts +3 -1
  64. package/dist/scripts/runtime-setup-files.js +18 -1
  65. package/dist/src/capabilities/file-output-presentation.d.ts +43 -0
  66. package/dist/src/capabilities/file-output-presentation.js +133 -0
  67. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +2 -0
  68. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.d.ts +5 -0
  69. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +37 -0
  70. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
  71. package/dist/src/capabilities/tool-definition-validator/module-registry.js +12 -0
  72. package/dist/src/capabilities/tool-event-input-text.d.ts +9 -0
  73. package/dist/src/capabilities/tool-event-input-text.js +64 -0
  74. package/dist/src/capabilities/tool-event-metadata.js +10 -0
  75. package/dist/src/capabilities/tool-executor.d.ts +1 -0
  76. package/dist/src/capabilities/tool-executor.js +1 -0
  77. package/dist/src/capabilities/tool-permission-mode.d.ts +7 -0
  78. package/dist/src/capabilities/tool-permission-mode.js +27 -0
  79. package/dist/src/capabilities/tool-types.d.ts +18 -2
  80. package/dist/src/cli/abot.js +18 -15
  81. package/dist/src/cli/host-companion-bundle.mjs +5201 -0
  82. package/dist/src/cli/host-companion-entry.d.ts +8 -0
  83. package/dist/src/cli/host-companion-entry.js +70 -0
  84. package/dist/src/cli/host-companion-startup.d.ts +4 -0
  85. package/dist/src/cli/host-companion-startup.js +35 -0
  86. package/dist/src/cli/host-companion.d.ts +5 -0
  87. package/dist/src/cli/host-companion.js +203 -0
  88. package/dist/src/model-gateway/server/configuration.js +4 -1
  89. package/dist/src/model-gateway/server/contracts.d.ts +2 -0
  90. package/dist/src/plugin-contract/entrypoint.d.ts +4 -2
  91. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  92. package/dist/src/runtime/adapters/config-file-transaction.d.ts +46 -0
  93. package/dist/src/runtime/adapters/config-file-transaction.js +158 -0
  94. package/dist/src/runtime/adapters/configured-skill-provider.js +3 -3
  95. package/dist/src/runtime/adapters/in-memory-session-store.js +11 -1
  96. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +7 -3
  97. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +4 -1
  98. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -1
  99. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +5 -1
  100. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.d.ts +3 -0
  101. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.js +15 -0
  102. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +2 -0
  103. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +17 -43
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/catalog/registrations.js +6 -2
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +10 -1
  106. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.d.ts +11 -0
  107. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.js +37 -0
  108. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.d.ts +7 -0
  109. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.js +105 -0
  110. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +29 -3
  111. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +1 -0
  112. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +1 -0
  113. package/dist/src/runtime/capabilities/configured-tool-registry.js +9 -1
  114. package/dist/src/runtime/capabilities/file-output-root-identity.d.ts +5 -0
  115. package/dist/src/runtime/capabilities/file-output-root-identity.js +146 -0
  116. package/dist/src/runtime/capabilities/file-output-root-marker-creation.d.ts +5 -0
  117. package/dist/src/runtime/capabilities/file-output-root-marker-creation.js +63 -0
  118. package/dist/src/runtime/capabilities/request-bound-tool-registry.d.ts +1 -0
  119. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +6 -1
  120. package/dist/src/runtime/capabilities/request-module-preparation.d.ts +3 -0
  121. package/dist/src/runtime/capabilities/request-module-preparation.js +102 -0
  122. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +10 -0
  123. package/dist/src/runtime/capabilities/request-permission-catalog.js +50 -0
  124. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +4 -0
  125. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +61 -0
  126. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +3 -0
  127. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +5 -2
  128. package/dist/src/runtime/capabilities/request-working-directory.d.ts +3 -0
  129. package/dist/src/runtime/capabilities/request-working-directory.js +12 -0
  130. package/dist/src/runtime/composition.d.ts +2 -0
  131. package/dist/src/runtime/config/runner/loader.d.ts +4 -0
  132. package/dist/src/runtime/config/runner/loader.js +23 -3
  133. package/dist/src/runtime/context/capability-brief-budget.d.ts +18 -0
  134. package/dist/src/runtime/context/capability-brief-budget.js +38 -0
  135. package/dist/src/runtime/context/capability-brief-readmission.d.ts +21 -0
  136. package/dist/src/runtime/context/capability-brief-readmission.js +47 -0
  137. package/dist/src/runtime/context/capability-brief.d.ts +9 -2
  138. package/dist/src/runtime/context/capability-brief.js +21 -39
  139. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -0
  140. package/dist/src/runtime/context/capability-descriptions.js +23 -0
  141. package/dist/src/runtime/default-environment-adapters.js +3 -4
  142. package/dist/src/runtime/local-application.d.ts +18 -0
  143. package/dist/src/runtime/local-application.js +12 -0
  144. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  145. package/dist/src/runtime/local-host/app-service-dispatch.js +9 -0
  146. package/dist/src/runtime/local-host/client-services.d.ts +16 -0
  147. package/dist/src/runtime/local-host/client-services.js +3 -2
  148. package/dist/src/runtime/local-host/contracts.d.ts +4 -0
  149. package/dist/src/runtime/local-host/startup-connection.js +22 -7
  150. package/dist/src/runtime/local-host/transport.js +14 -2
  151. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +5 -2
  152. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  153. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.d.ts +3 -0
  154. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.js +46 -0
  155. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  156. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  157. package/dist/src/runtime/orchestration/role-calls/transactions.js +2 -0
  158. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.d.ts +48 -0
  159. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.js +9 -0
  160. package/dist/src/runtime/orchestration/role-calls/work-plan-source.d.ts +7 -0
  161. package/dist/src/runtime/orchestration/role-calls/work-plan-source.js +85 -0
  162. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.d.ts +3 -0
  163. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.js +17 -0
  164. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.d.ts +10 -0
  165. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.js +149 -0
  166. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  167. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  168. package/dist/src/runtime/plugins/compiled-catalog.d.ts +2 -1
  169. package/dist/src/runtime/plugins/configured-manifests.d.ts +3 -0
  170. package/dist/src/runtime/plugins/configured-manifests.js +37 -0
  171. package/dist/src/runtime/plugins/entrypoint-validation.d.ts +6 -0
  172. package/dist/src/runtime/plugins/entrypoint-validation.js +74 -0
  173. package/dist/src/runtime/plugins/loader.js +11 -123
  174. package/dist/src/runtime/plugins/manifest-discovery.d.ts +4 -1
  175. package/dist/src/runtime/plugins/manifest-discovery.js +8 -1
  176. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  177. package/dist/src/runtime/plugins/manifest-validator.js +7 -1
  178. package/dist/src/runtime/plugins/runtime-capability-plugins.d.ts +4 -0
  179. package/dist/src/runtime/plugins/runtime-capability-plugins.js +7 -0
  180. package/dist/src/runtime/plugins/selection.d.ts +14 -0
  181. package/dist/src/runtime/plugins/selection.js +38 -0
  182. package/dist/src/runtime/ports.d.ts +8 -2
  183. package/dist/src/runtime/projects/contracts.d.ts +40 -0
  184. package/dist/src/runtime/projects/contracts.js +10 -0
  185. package/dist/src/runtime/projects/folders.d.ts +7 -0
  186. package/dist/src/runtime/projects/folders.js +110 -0
  187. package/dist/src/runtime/projects/repository.d.ts +10 -0
  188. package/dist/src/runtime/projects/repository.js +54 -0
  189. package/dist/src/runtime/projects/service.d.ts +3 -0
  190. package/dist/src/runtime/projects/service.js +34 -0
  191. package/dist/src/runtime/projects/session-paths.d.ts +5 -0
  192. package/dist/src/runtime/projects/session-paths.js +13 -0
  193. package/dist/src/runtime/request/execution-agent-plan-update.d.ts +4 -0
  194. package/dist/src/runtime/request/execution-agent-plan-update.js +13 -0
  195. package/dist/src/runtime/request/execution-agent-root-execution.js +9 -1
  196. package/dist/src/runtime/request/handler.js +9 -2
  197. package/dist/src/runtime/request/input.d.ts +2 -1
  198. package/dist/src/runtime/request/input.js +1 -6
  199. package/dist/src/runtime/request/role-call-planner-events.js +4 -0
  200. package/dist/src/runtime/request/role-executor-composition.js +9 -1
  201. package/dist/src/runtime/request/root-contract.d.ts +6 -1
  202. package/dist/src/runtime/request/root-execution-kernel.js +17 -0
  203. package/dist/src/runtime/request/root-plan-event-projection.d.ts +3 -0
  204. package/dist/src/runtime/request/root-plan-event-projection.js +32 -0
  205. package/dist/src/runtime/request/root-plan-update.d.ts +15 -0
  206. package/dist/src/runtime/request/root-plan-update.js +20 -0
  207. package/dist/src/runtime/request/worker-capability-composition.d.ts +1 -0
  208. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  209. package/dist/src/runtime/runtime-environment.d.ts +1 -0
  210. package/dist/src/runtime/runtime-environment.js +2 -0
  211. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +32 -0
  212. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +106 -0
  213. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.d.ts +5 -0
  214. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.js +40 -0
  215. package/dist/src/runtime/steps/auditor-decision/audit-input-state.d.ts +12 -0
  216. package/dist/src/runtime/steps/auditor-decision/audit-input-state.js +101 -0
  217. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +31 -16
  218. package/dist/src/runtime/steps/auditor-decision/contracts.js +3 -3
  219. package/dist/src/runtime/steps/auditor-decision/evidence-binding.d.ts +5 -0
  220. package/dist/src/runtime/steps/auditor-decision/evidence-binding.js +43 -0
  221. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.d.ts +2 -0
  222. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +71 -0
  223. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +13 -0
  224. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +89 -0
  225. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +10 -0
  226. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +56 -0
  227. package/dist/src/runtime/steps/auditor-decision/evidence-selection.d.ts +9 -0
  228. package/dist/src/runtime/steps/auditor-decision/evidence-selection.js +71 -0
  229. package/dist/src/runtime/steps/auditor-decision/format.js +44 -2
  230. package/dist/src/runtime/steps/auditor-decision/index.d.ts +3 -0
  231. package/dist/src/runtime/steps/auditor-decision/index.js +3 -0
  232. package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -2
  233. package/dist/src/runtime/steps/auditor-decision/input.js +64 -20
  234. package/dist/src/runtime/steps/auditor-decision/parser.js +38 -23
  235. package/dist/src/runtime/steps/auditor-decision/projection.js +49 -99
  236. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  237. package/dist/src/runtime/steps/auditor-decision/prompt.js +9 -4
  238. package/dist/src/runtime/steps/auditor-decision/run.js +79 -47
  239. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +8 -1
  240. package/dist/src/runtime/steps/execution-agent/contracts.js +2 -0
  241. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +4 -0
  242. package/dist/src/runtime/steps/execution-agent/format.js +4 -3
  243. package/dist/src/runtime/steps/execution-agent/input.js +10 -11
  244. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  245. package/dist/src/runtime/steps/execution-agent/prompt.js +11 -4
  246. package/dist/src/runtime/steps/execution-agent/state-context.js +10 -0
  247. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +18 -0
  248. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +86 -0
  249. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.d.ts +2 -0
  250. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.js +38 -0
  251. package/dist/src/runtime/steps/execution-agent/work-plan-sources.d.ts +6 -0
  252. package/dist/src/runtime/steps/execution-agent/work-plan-sources.js +54 -0
  253. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +40 -0
  254. package/dist/src/runtime/steps/planner-decision/capability-brief.js +47 -0
  255. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -2
  256. package/dist/src/runtime/steps/planner-decision/input.js +23 -13
  257. package/dist/src/runtime/steps/planner-decision/prompt.js +2 -2
  258. package/dist/src/runtime/steps/planner-decision/run.js +11 -7
  259. package/dist/src/runtime/steps/planner-graph/parser.js +0 -11
  260. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -1
  261. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.d.ts +10 -0
  262. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.js +39 -0
  263. package/dist/src/runtime/steps/supervisor-decision/run.js +2 -1
  264. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -1
  265. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +20 -1
  266. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +1 -1
  267. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +6 -6
  268. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +2 -1
  269. package/dist/src/sessions/project-binding.d.ts +12 -0
  270. package/dist/src/sessions/project-binding.js +49 -0
  271. package/dist/src/sessions/record/projection.d.ts +6 -1
  272. package/dist/src/sessions/record/projection.js +1 -0
  273. package/dist/src/sessions/session-service.d.ts +2 -1
  274. package/dist/src/sessions/session-service.js +11 -1
  275. package/dist/src/sessions/types.d.ts +7 -0
  276. package/dist/src/shared/directory-authority/bootstrap.d.ts +1 -0
  277. package/dist/src/shared/directory-authority/bootstrap.js +118 -0
  278. package/dist/src/shared/directory-authority/command.d.ts +8 -0
  279. package/dist/src/shared/directory-authority/command.js +27 -0
  280. package/dist/src/shared/directory-authority/errors.d.ts +5 -0
  281. package/dist/src/shared/directory-authority/errors.js +10 -0
  282. package/dist/src/shared/directory-authority/index.d.ts +3 -0
  283. package/dist/src/shared/directory-authority/index.js +3 -0
  284. package/dist/src/shared/directory-authority/protocol.d.ts +11 -0
  285. package/dist/src/shared/directory-authority/protocol.js +62 -0
  286. package/dist/src/shared/directory-authority/task.d.ts +7 -0
  287. package/dist/src/shared/directory-authority/task.js +97 -0
  288. package/dist/src/web-ui/app/ARCHITECTURE.md +121 -1
  289. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  290. package/dist/src/web-ui/app/app-dom.js +3 -0
  291. package/dist/src/web-ui/app/app-state.js +38 -0
  292. package/dist/src/web-ui/app/app.js +76 -67
  293. package/dist/src/web-ui/app/components/config-workspace/config-model.js +23 -3
  294. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +2 -0
  295. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +2 -0
  296. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +6 -0
  297. package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +27 -0
  298. package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +28 -0
  299. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +5 -0
  300. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +23 -3
  301. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +26 -8
  302. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +56 -0
  303. package/dist/src/web-ui/app/components/config-workspace.js +11 -0
  304. package/dist/src/web-ui/app/components/conversation-activity.d.ts +6 -0
  305. package/dist/src/web-ui/app/components/conversation-activity.js +10 -2
  306. package/dist/src/web-ui/app/components/conversation-file-action.js +33 -0
  307. package/dist/src/web-ui/app/components/conversation-file-focus.d.ts +12 -0
  308. package/dist/src/web-ui/app/components/conversation-file-focus.js +149 -0
  309. package/dist/src/web-ui/app/components/conversation-file-preview.d.ts +23 -0
  310. package/dist/src/web-ui/app/components/conversation-file-preview.js +247 -0
  311. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +6 -0
  312. package/dist/src/web-ui/app/components/conversation-role-cards.js +10 -2
  313. package/dist/src/web-ui/app/components/conversation-tool-evidence.d.ts +9 -0
  314. package/dist/src/web-ui/app/components/conversation-tool-evidence.js +129 -0
  315. package/dist/src/web-ui/app/components/conversation-tools.d.ts +6 -0
  316. package/dist/src/web-ui/app/components/conversation-tools.js +25 -105
  317. package/dist/src/web-ui/app/components/conversation-view.js +10 -1
  318. package/dist/src/web-ui/app/components/dashboard/workspace.js +19 -7
  319. package/dist/src/web-ui/app/components/model-setup/rendering.js +99 -0
  320. package/dist/src/web-ui/app/components/model-setup/save-flow.js +111 -0
  321. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
  322. package/dist/src/web-ui/app/components/model-setup/validation.js +125 -0
  323. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +44 -0
  324. package/dist/src/web-ui/app/components/model-setup/wizard.js +370 -0
  325. package/dist/src/web-ui/app/components/plugins/manager.js +200 -0
  326. package/dist/src/web-ui/app/components/plugins/rendering.js +124 -0
  327. package/dist/src/web-ui/app/components/plugins/view-state.js +123 -0
  328. package/dist/src/web-ui/app/components/project-creation.js +119 -0
  329. package/dist/src/web-ui/app/components/project-session-groups.js +95 -0
  330. package/dist/src/web-ui/app/components/runtime-config-activation.js +83 -0
  331. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.d.ts +9 -0
  332. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.js +198 -0
  333. package/dist/src/web-ui/app/components/runtime-setup/bridge-rendering.js +107 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/commands.js +54 -0
  335. package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +25 -0
  336. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +154 -0
  337. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +71 -0
  338. package/dist/src/web-ui/app/components/runtime-setup/context-window.js +18 -0
  339. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.d.ts +15 -0
  340. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +87 -0
  341. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +30 -0
  342. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +57 -0
  343. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +284 -0
  344. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +117 -0
  345. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +173 -0
  346. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +141 -0
  347. package/dist/src/web-ui/app/components/runtime-setup/validation.js +69 -0
  348. package/dist/src/web-ui/app/components/runtime-setup/view-state.js +58 -0
  349. package/dist/src/web-ui/app/components/runtime-setup/wizard-shell.js +27 -0
  350. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +66 -5
  351. package/dist/src/web-ui/app/components/runtime-setup-guide.js +415 -461
  352. package/dist/src/web-ui/app/components/system-host/download.js +38 -0
  353. package/dist/src/web-ui/app/components/system-host/manager.js +249 -0
  354. package/dist/src/web-ui/app/components/system-host/rendering.js +88 -0
  355. package/dist/src/web-ui/app/components/system-host/setup-notice.js +87 -0
  356. package/dist/src/web-ui/app/components/system-host/visibility.js +35 -0
  357. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +4 -0
  358. package/dist/src/web-ui/app/components/tool-approval-card.js +15 -0
  359. package/dist/src/web-ui/app/configuration-environment-refresh.js +118 -0
  360. package/dist/src/web-ui/app/configuration-feature.js +125 -4
  361. package/dist/src/web-ui/app/controllers/app-event-bindings.js +2 -0
  362. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +1 -0
  363. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +4 -3
  364. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.d.ts +24 -0
  365. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.js +158 -0
  366. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.d.ts +19 -0
  367. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.js +63 -0
  368. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -0
  369. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +2 -0
  370. package/dist/src/web-ui/app/controllers/conversation-view-feature.js +28 -0
  371. package/dist/src/web-ui/app/controllers/dashboard-controller.js +17 -0
  372. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +45 -0
  373. package/dist/src/web-ui/app/controllers/projects-controller.js +278 -0
  374. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +3 -0
  375. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +13 -6
  376. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -1
  377. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +11 -95
  378. package/dist/src/web-ui/app/controllers/session-controller.js +64 -57
  379. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.d.ts +20 -0
  380. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +116 -0
  381. package/dist/src/web-ui/app/dashboard-feature.js +32 -10
  382. package/dist/src/web-ui/app/index.html +44 -7
  383. package/dist/src/web-ui/app/lib/conversation-file-preview.d.ts +12 -0
  384. package/dist/src/web-ui/app/lib/conversation-file-reference.d.ts +30 -0
  385. package/dist/src/web-ui/app/lib/conversation-file-reference.js +66 -0
  386. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +2 -0
  387. package/dist/src/web-ui/app/lib/tool-activity-event.js +18 -6
  388. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +2 -0
  389. package/dist/src/web-ui/app/lib/tool-activity-model.js +4 -2
  390. package/dist/src/web-ui/app/lib/tool-permission-mode.d.ts +16 -0
  391. package/dist/src/web-ui/app/lib/tool-permission-mode.js +60 -0
  392. package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +102 -0
  393. package/dist/src/web-ui/app/projects-feature.js +134 -0
  394. package/dist/src/web-ui/app/runtime-onboarding-feature.d.ts +34 -0
  395. package/dist/src/web-ui/app/runtime-onboarding-feature.js +92 -0
  396. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.d.ts +5 -0
  397. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.js +13 -0
  398. package/dist/src/web-ui/app/services/client-preferences.d.ts +24 -0
  399. package/dist/src/web-ui/app/services/client-preferences.js +32 -19
  400. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +46 -0
  401. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.d.ts +28 -0
  402. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.js +75 -0
  403. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +19 -0
  404. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +34 -0
  405. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +27 -0
  406. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +52 -0
  407. package/dist/src/web-ui/app/services/runtime-web-client.js +35 -4
  408. package/dist/src/web-ui/app/styles/13-projects.css +272 -0
  409. package/dist/src/web-ui/app/styles/18-dashboard.css +0 -5
  410. package/dist/src/web-ui/app/styles/19-runtime-setup.css +411 -0
  411. package/dist/src/web-ui/app/styles/20-chat-composer.css +0 -384
  412. package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +254 -0
  413. package/dist/src/web-ui/app/styles/37-runtime-activation.css +26 -0
  414. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +1 -10
  415. package/dist/src/web-ui/app/styles/41-plugin-management.css +351 -0
  416. package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +179 -0
  417. package/dist/src/web-ui/app/styles/43-model-setup.css +73 -0
  418. package/dist/src/web-ui/app/styles/44-model-provider-cards.css +63 -0
  419. package/dist/src/web-ui/app/styles/45-bridge-setup.css +44 -0
  420. package/dist/src/web-ui/app/styles/46-system-host.css +132 -0
  421. package/dist/src/web-ui/app/styles.css +10 -0
  422. package/dist/src/web-ui/config-dashboard-backend.d.ts +5 -0
  423. package/dist/src/web-ui/config-dashboard-backend.js +94 -114
  424. package/dist/src/web-ui/config-dashboard-model-identity.d.ts +7 -0
  425. package/dist/src/web-ui/config-dashboard-model-identity.js +45 -0
  426. package/dist/src/web-ui/config-dashboard-save-transaction.d.ts +5 -0
  427. package/dist/src/web-ui/config-dashboard-save-transaction.js +21 -0
  428. package/dist/src/web-ui/environment-config.d.ts +17 -0
  429. package/dist/src/web-ui/environment-config.js +60 -0
  430. package/dist/src/web-ui/forwarded-loopback-policy.d.ts +2 -0
  431. package/dist/src/web-ui/forwarded-loopback-policy.js +14 -0
  432. package/dist/src/web-ui/local-runtime/api-router.d.ts +7 -0
  433. package/dist/src/web-ui/local-runtime/api-router.js +136 -12
  434. package/dist/src/web-ui/local-runtime/config-mutation-request.d.ts +8 -0
  435. package/dist/src/web-ui/local-runtime/config-mutation-request.js +55 -0
  436. package/dist/src/web-ui/local-runtime/configuration-activation-environments.d.ts +22 -0
  437. package/dist/src/web-ui/local-runtime/configuration-activation-environments.js +106 -0
  438. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +7 -0
  439. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +36 -0
  440. package/dist/src/web-ui/local-runtime/configuration-activation.d.ts +20 -0
  441. package/dist/src/web-ui/local-runtime/configuration-activation.js +107 -0
  442. package/dist/src/web-ui/local-runtime/contracts.d.ts +8 -0
  443. package/dist/src/web-ui/local-runtime/conversation-file-access.d.ts +30 -0
  444. package/dist/src/web-ui/local-runtime/conversation-file-access.js +131 -0
  445. package/dist/src/web-ui/local-runtime/conversation-file-content.d.ts +21 -0
  446. package/dist/src/web-ui/local-runtime/conversation-file-content.js +75 -0
  447. package/dist/src/web-ui/local-runtime/conversation-file-format.d.ts +12 -0
  448. package/dist/src/web-ui/local-runtime/conversation-file-format.js +87 -0
  449. package/dist/src/web-ui/local-runtime/conversation-file-native-open.d.ts +10 -0
  450. package/dist/src/web-ui/local-runtime/conversation-file-native-open.js +94 -0
  451. package/dist/src/web-ui/local-runtime/conversation-file-native-request.d.ts +4 -0
  452. package/dist/src/web-ui/local-runtime/conversation-file-native-request.js +72 -0
  453. package/dist/src/web-ui/local-runtime/conversation-file-routes.d.ts +11 -0
  454. package/dist/src/web-ui/local-runtime/conversation-file-routes.js +105 -0
  455. package/dist/src/web-ui/local-runtime/conversation-file-target.d.ts +14 -0
  456. package/dist/src/web-ui/local-runtime/conversation-file-target.js +158 -0
  457. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +14 -0
  458. package/dist/src/web-ui/local-runtime/environment-registry.js +121 -6
  459. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +2 -1
  460. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +15 -10
  461. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +17 -0
  462. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +45 -0
  463. package/dist/src/web-ui/local-runtime/model-setup-identity.d.ts +16 -0
  464. package/dist/src/web-ui/local-runtime/model-setup-identity.js +20 -0
  465. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +24 -0
  466. package/dist/src/web-ui/local-runtime/model-setup-input.js +107 -0
  467. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +17 -0
  468. package/dist/src/web-ui/local-runtime/model-setup-provider.js +68 -0
  469. package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +14 -0
  470. package/dist/src/web-ui/local-runtime/model-setup-retry.js +47 -0
  471. package/dist/src/web-ui/local-runtime/model-setup-routes.d.ts +12 -0
  472. package/dist/src/web-ui/local-runtime/model-setup-routes.js +50 -0
  473. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +30 -0
  474. package/dist/src/web-ui/local-runtime/model-setup-service.js +93 -0
  475. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +5 -0
  476. package/dist/src/web-ui/local-runtime/model-setup-validation.js +33 -0
  477. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +14 -0
  478. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +50 -0
  479. package/dist/src/web-ui/local-runtime/project-routes.d.ts +17 -0
  480. package/dist/src/web-ui/local-runtime/project-routes.js +93 -0
  481. package/dist/src/web-ui/local-runtime/provider-credential-identity.d.ts +3 -0
  482. package/dist/src/web-ui/local-runtime/provider-credential-identity.js +18 -0
  483. package/dist/src/web-ui/local-runtime/request-execution.d.ts +1 -0
  484. package/dist/src/web-ui/local-runtime/request-execution.js +8 -0
  485. package/dist/src/web-ui/local-runtime/runtime-availability.js +36 -7
  486. package/dist/src/web-ui/local-runtime/runtime-setup-completion.d.ts +13 -0
  487. package/dist/src/web-ui/local-runtime/runtime-setup-completion.js +28 -0
  488. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +13 -0
  489. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +110 -0
  490. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.d.ts +4 -0
  491. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +21 -0
  492. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +14 -0
  493. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +148 -0
  494. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.d.ts +7 -0
  495. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.js +18 -0
  496. package/dist/src/web-ui/local-runtime/runtime-setup-draft.d.ts +21 -0
  497. package/dist/src/web-ui/local-runtime/runtime-setup-draft.js +105 -0
  498. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.d.ts +8 -0
  499. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.js +40 -0
  500. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.d.ts +1 -0
  501. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.js +27 -0
  502. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +19 -0
  503. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +82 -0
  504. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.d.ts +7 -0
  505. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.js +35 -0
  506. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.d.ts +4 -0
  507. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.js +23 -0
  508. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.d.ts +11 -0
  509. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.js +31 -0
  510. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +11 -0
  511. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +60 -0
  512. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.d.ts +8 -0
  513. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.js +77 -0
  514. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +35 -0
  515. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +56 -0
  516. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.d.ts +17 -0
  517. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +229 -0
  518. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +65 -0
  519. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +195 -0
  520. package/dist/src/web-ui/local-runtime/runtime-setup-validation.d.ts +8 -0
  521. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +35 -0
  522. package/dist/src/web-ui/local-runtime/saved-model-catalog.d.ts +3 -0
  523. package/dist/src/web-ui/local-runtime/saved-model-catalog.js +20 -0
  524. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +8 -0
  525. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +71 -0
  526. package/dist/src/web-ui/local-runtime/setup-embedding-provider.d.ts +13 -0
  527. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +114 -0
  528. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +12 -0
  529. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +53 -0
  530. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +32 -0
  531. package/dist/src/web-ui/local-runtime/setup-embedding-service.js +59 -0
  532. package/dist/src/web-ui/local-runtime-backend.d.ts +1 -0
  533. package/dist/src/web-ui/local-runtime-backend.js +3 -0
  534. package/dist/src/web-ui/plugin-capability-selection.d.ts +14 -0
  535. package/dist/src/web-ui/plugin-capability-selection.js +48 -0
  536. package/dist/src/web-ui/plugin-management-catalog.d.ts +26 -0
  537. package/dist/src/web-ui/plugin-management-catalog.js +56 -0
  538. package/dist/src/web-ui/plugin-management-selection.d.ts +16 -0
  539. package/dist/src/web-ui/plugin-management-selection.js +71 -0
  540. package/dist/src/web-ui/plugin-management-service.d.ts +29 -0
  541. package/dist/src/web-ui/plugin-management-service.js +150 -0
  542. package/dist/src/web-ui/request-authority.d.ts +8 -0
  543. package/dist/src/web-ui/request-authority.js +129 -0
  544. package/dist/src/web-ui/runtime-setup-gateway-address.d.ts +3 -0
  545. package/dist/src/web-ui/runtime-setup-gateway-address.js +26 -0
  546. package/dist/src/web-ui/runtime-setup-gateway.d.ts +29 -0
  547. package/dist/src/web-ui/runtime-setup-gateway.js +177 -0
  548. package/dist/src/web-ui/runtime-setup-shutdown.d.ts +2 -0
  549. package/dist/src/web-ui/runtime-setup-shutdown.js +20 -0
  550. package/dist/src/web-ui/server.d.ts +7 -14
  551. package/dist/src/web-ui/server.js +53 -63
  552. package/dist/src/web-ui/session-read-state/service.d.ts +12 -2
  553. package/dist/src/web-ui/system-host-service.d.ts +19 -0
  554. package/dist/src/web-ui/system-host-service.js +159 -0
  555. package/dist/src/web-ui/system-host-setup/companion-bundle.d.ts +2 -0
  556. package/dist/src/web-ui/system-host-setup/companion-bundle.js +12 -0
  557. package/dist/src/web-ui/system-host-setup/companion-macos.d.ts +2 -0
  558. package/dist/src/web-ui/system-host-setup/companion-macos.js +74 -0
  559. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +2 -0
  560. package/dist/src/web-ui/system-host-setup/companion-windows.js +105 -0
  561. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +18 -0
  562. package/dist/src/web-ui/system-host-setup/installer-contract.js +51 -0
  563. package/dist/src/web-ui/system-host-setup/installers.d.ts +6 -0
  564. package/dist/src/web-ui/system-host-setup/installers.js +30 -0
  565. package/dist/src/web-ui/system-host-setup/native-authorization.d.ts +3 -0
  566. package/dist/src/web-ui/system-host-setup/native-authorization.js +11 -0
  567. package/dist/src/web-ui/system-host-setup/node-distribution.d.ts +19 -0
  568. package/dist/src/web-ui/system-host-setup/node-distribution.js +9 -0
  569. package/dist/src/web-ui/system-host-setup/readiness.d.ts +18 -0
  570. package/dist/src/web-ui/system-host-setup/readiness.js +70 -0
  571. package/dist/src/web-ui/system-host-setup/routes.d.ts +20 -0
  572. package/dist/src/web-ui/system-host-setup/routes.js +121 -0
  573. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.d.ts +2 -0
  574. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.js +17 -0
  575. package/dist/src/web-ui/system-host-setup/wsl-interop-config.d.ts +3 -0
  576. package/dist/src/web-ui/system-host-setup/wsl-interop-config.js +67 -0
  577. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.d.ts +1 -0
  578. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.js +49 -0
  579. package/dist/src/web-ui/system-host-upgrade-authority.d.ts +5 -0
  580. package/dist/src/web-ui/system-host-upgrade-authority.js +13 -0
  581. package/docs/architecture.md +6 -1
  582. package/docs/installation.md +53 -17
  583. package/docs/known-limitations.md +14 -0
  584. package/docs/plugins.md +137 -26
  585. package/docs/projects-and-full-plus.md +218 -0
  586. package/docs/runtime-invariant-coverage.md +6 -3
  587. package/docs/runtime-prompt-policy-contracts.md +37 -5
  588. package/docs/runtime-public-contracts.md +17 -0
  589. package/package.json +5 -2
  590. package/plugins/exec/plugin.json +30 -9
  591. package/plugins/exec/skills/exec_process_skill/SKILL.md +1 -0
  592. package/plugins/exec/skills/exec_skill/SKILL.md +9 -10
  593. package/plugins/exec/source/handlers.ts +4 -38
  594. package/plugins/exec/source/paths.ts +53 -49
  595. package/plugins/exec/source/process-manager.ts +1 -20
  596. package/plugins/exec/source/shell-platform.ts +29 -0
  597. package/plugins/exec/source/types.ts +6 -4
  598. package/plugins/exec/source/validation.ts +33 -198
  599. package/plugins/exec/src/index.cjs +87 -222
  600. package/plugins/filesystem/plugin.json +1 -1
  601. package/plugins/filesystem/skills/dev_view_skill/SKILL.md +7 -0
  602. package/plugins/filesystem/source/atomic-write.ts +15 -3
  603. package/plugins/filesystem/source/bounded-io.ts +5 -99
  604. package/plugins/filesystem/source/dev-view.ts +2 -1
  605. package/plugins/filesystem/source/directory-authority-write.ts +68 -0
  606. package/plugins/filesystem/source/directory-sample-task.ts +23 -0
  607. package/plugins/filesystem/source/directory-sample.ts +132 -0
  608. package/plugins/filesystem/source/directory-write-task.ts +160 -0
  609. package/plugins/filesystem/source/edit-file.ts +3 -0
  610. package/plugins/filesystem/source/file-output-presentation.ts +42 -0
  611. package/plugins/filesystem/source/mutation-parent.ts +29 -9
  612. package/plugins/filesystem/source/view-locator.ts +141 -0
  613. package/plugins/filesystem/source/view-window.ts +12 -25
  614. package/plugins/filesystem/source/write-file.ts +8 -0
  615. package/plugins/filesystem/src/index.cjs +855 -153
  616. package/plugins/local-search/source/index.ts +2 -0
  617. package/plugins/local-search/source/paths.ts +30 -7
  618. package/plugins/local-search/source/ripgrep-process.ts +69 -0
  619. package/plugins/local-search/source/ripgrep.ts +19 -23
  620. package/plugins/local-search/src/index.cjs +295 -32
  621. package/plugins/system/plugin.json +374 -0
  622. package/plugins/system/skills/system_actions/SKILL.md +31 -0
  623. package/plugins/system/source/application-catalog.ts +237 -0
  624. package/plugins/system/source/application-launch.ts +113 -0
  625. package/plugins/system/source/application-observation.ts +78 -0
  626. package/plugins/system/source/commands.ts +106 -0
  627. package/plugins/system/source/companion/autostart.ts +185 -0
  628. package/plugins/system/source/companion/broker-client.ts +183 -0
  629. package/plugins/system/source/companion/broker-location.ts +89 -0
  630. package/plugins/system/source/companion/broker-server.ts +169 -0
  631. package/plugins/system/source/companion/connection.ts +211 -0
  632. package/plugins/system/source/companion/liveness.ts +23 -0
  633. package/plugins/system/source/companion/native-address.ts +55 -0
  634. package/plugins/system/source/companion/native-identity.ts +26 -0
  635. package/plugins/system/source/companion/native-messages.ts +100 -0
  636. package/plugins/system/source/companion/native-session.ts +268 -0
  637. package/plugins/system/source/companion/native-state.ts +135 -0
  638. package/plugins/system/source/companion/native-supervisor.ts +98 -0
  639. package/plugins/system/source/companion/pairing-store.ts +110 -0
  640. package/plugins/system/source/companion/private-store.ts +58 -0
  641. package/plugins/system/source/companion/process-owner-identity.ts +190 -0
  642. package/plugins/system/source/companion/protocol.ts +108 -0
  643. package/plugins/system/source/contracts.ts +44 -0
  644. package/plugins/system/source/elevation.ts +88 -0
  645. package/plugins/system/source/handlers.ts +120 -0
  646. package/plugins/system/source/host-dispatch.ts +106 -0
  647. package/plugins/system/source/host-evidence.ts +72 -0
  648. package/plugins/system/source/host-observation.ts +66 -0
  649. package/plugins/system/source/index.ts +8 -0
  650. package/plugins/system/source/process-result.ts +111 -0
  651. package/plugins/system/source/process-runner.ts +104 -0
  652. package/plugins/system/source/request-system-modules.ts +117 -0
  653. package/plugins/system/source/request-target-snapshot.ts +163 -0
  654. package/plugins/system/source/target-observation.ts +43 -0
  655. package/plugins/system/source/targets.ts +147 -0
  656. package/plugins/system/src/index.cjs +1730 -0
  657. package/src/runtime/README.md +36 -8
  658. package/src/runtime/local-host/README.md +7 -0
  659. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +0 -14
  660. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +0 -87
@@ -1,3 +1,15 @@
1
+ import { ProjectRoutes } from "./project-routes.js";
2
+ import { ConversationFileRoutes } from "./conversation-file-routes.js";
3
+ import { ConfigFileConflictError } from "../../runtime/adapters/config-file-transaction.js";
4
+ import { ModelSetupRoutes } from "./model-setup-routes.js";
5
+ import { ModelSetupService } from "./model-setup-service.js";
6
+ import { SetupEmbeddingRoutes } from "./setup-embedding-routes.js";
7
+ import { SetupEmbeddingService } from "./setup-embedding-service.js";
8
+ import { RuntimeSetupRoutes } from "./runtime-setup-routes.js";
9
+ import { RuntimeSetupService } from "./runtime-setup-service.js";
10
+ import { applyAndCompleteRuntimeSetup, pendingRuntimeSetupCatalog, } from "./runtime-setup-completion.js";
11
+ import { PluginManagementRoutes } from "./plugin-management-routes.js";
12
+ import { acceptConfigMutationRequest } from "./config-mutation-request.js";
1
13
  import { WebSessionRoutes } from "./session-routes.js";
2
14
  import { WebSessionReadStates } from "../session-read-state/service.js";
3
15
  import { getRuntimeConfig, getRuntimeConfigSchema, } from "../../runtime/admin/config-control.js";
@@ -21,26 +33,70 @@ export class LocalRuntimeApiRouter {
21
33
  options;
22
34
  environments;
23
35
  requests;
36
+ conversationFiles;
24
37
  attachments = new LocalAttachmentRoutes();
38
+ setup;
39
+ modelSetup;
40
+ setupEmbedding;
41
+ plugins;
25
42
  memoryManagement;
26
43
  memoryOnboarding;
27
44
  schedules;
28
45
  readStates;
29
46
  sessions;
47
+ projects = new ProjectRoutes();
30
48
  constructor(options, environments, requests) {
31
49
  this.options = options;
32
50
  this.environments = environments;
33
51
  this.requests = requests;
52
+ this.conversationFiles = new ConversationFileRoutes(environments, requests, () => this.options.defaultEnvironmentId);
53
+ this.modelSetup = new ModelSetupRoutes(new ModelSetupService({
54
+ rootDir: options.rootDir ?? process.cwd(),
55
+ getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
56
+ }));
57
+ this.setup = new RuntimeSetupRoutes(new RuntimeSetupService({
58
+ rootDir: options.rootDir ?? process.cwd(),
59
+ getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
60
+ configure: (configPath) => this.environments.configure(configPath),
61
+ activate: async (_configPath) => {
62
+ const activation = await this.applyWhenRequestsIdle();
63
+ if (activation.status === "ready") {
64
+ await this.initializeSessionReadState([
65
+ options.defaultEnvironmentId,
66
+ ]);
67
+ }
68
+ return activation;
69
+ },
70
+ }));
71
+ this.setupEmbedding = new SetupEmbeddingRoutes(new SetupEmbeddingService({
72
+ rootDir: options.rootDir ?? process.cwd(),
73
+ getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
74
+ providerAdapters: options.providerAdapters,
75
+ }));
76
+ this.plugins = new PluginManagementRoutes({
77
+ rootDir: options.rootDir ?? process.cwd(),
78
+ getConfigPath: () => options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
79
+ });
34
80
  this.readStates = new WebSessionReadStates((id) => this.environments.get(id));
35
81
  this.sessions = new WebSessionRoutes(this.readStates);
36
82
  this.schedules = new ScheduleManagementRoutes((id) => this.environments.get(id));
37
- this.memoryOnboarding = new LongTermMemoryOnboardingRoutes(createLocalLongTermMemoryOnboardingService({
83
+ this.memoryOnboarding = new LongTermMemoryOnboardingRoutes(() => createLocalLongTermMemoryOnboardingService({
38
84
  rootDir: options.rootDir ?? process.cwd(),
39
85
  providerAdapters: options.providerAdapters,
40
- ...(options.configPath ? { configPath: options.configPath } : {}),
86
+ configPath: options.configPath ?? process.env.LLM_RUNTIME_CONFIG_FILE,
41
87
  }));
42
88
  this.memoryManagement = new LongTermMemoryManagementRoutes((environmentId) => this.environments.get(environmentId).services.longTermMemory);
43
89
  }
90
+ async applyWhenRequestsIdle() {
91
+ const hasAcknowledgedRequests = this.requests.healthDetails().length > 0;
92
+ if (hasAcknowledgedRequests) {
93
+ return {
94
+ status: "restart_required",
95
+ message: "Your agent is working. Wait for active conversations and Jobs to finish, then apply again.",
96
+ };
97
+ }
98
+ return this.environments.applyConfiguration();
99
+ }
44
100
  async initializeSessionReadState(environmentIds) {
45
101
  for (const id of environmentIds) {
46
102
  try {
@@ -59,6 +115,38 @@ export class LocalRuntimeApiRouter {
59
115
  const method = req.method || "GET";
60
116
  const segments = pathSegments(pathname);
61
117
  const route = segments.join("/");
118
+ if (await this.conversationFiles.handle(route, req, res))
119
+ return;
120
+ if (await this.modelSetup.handle({
121
+ method,
122
+ route,
123
+ request: req,
124
+ response: res,
125
+ }))
126
+ return;
127
+ if (await this.setup.handle({ method, route, request: req, response: res }))
128
+ return;
129
+ if (await this.setupEmbedding.handle({
130
+ method,
131
+ route,
132
+ request: req,
133
+ response: res,
134
+ }))
135
+ return;
136
+ if (method === "PUT" &&
137
+ ["runtime/plugins", "runtime/config/dashboard/file"].includes(route)) {
138
+ if (!acceptConfigMutationRequest(req, res))
139
+ return;
140
+ }
141
+ if (method === "POST" && route === "runtime/config/apply") {
142
+ if (!acceptConfigMutationRequest(req, res))
143
+ return;
144
+ sendJson(res, 200, {
145
+ ok: true,
146
+ activation: await applyAndCompleteRuntimeSetup(this.setup, () => this.applyWhenRequestsIdle()),
147
+ });
148
+ return;
149
+ }
62
150
  if (route === "chat/attachments") {
63
151
  const environmentId = requestEnvironmentId(url, null, this.options.defaultEnvironmentId);
64
152
  const setupRequirement = this.environments.setupRequirement(environmentId);
@@ -84,6 +172,8 @@ export class LocalRuntimeApiRouter {
84
172
  ? null
85
173
  : readJsonBody(await readBody(req));
86
174
  const environmentId = requestEnvironmentId(url, body, this.options.defaultEnvironmentId);
175
+ if (await this.plugins.handle({ method, route, body, response: res }))
176
+ return;
87
177
  if (segments[0] === "schedules")
88
178
  await this.initializeSessionReadState([environmentId]);
89
179
  if (await this.schedules.handle({
@@ -119,6 +209,7 @@ export class LocalRuntimeApiRouter {
119
209
  return;
120
210
  }
121
211
  if (method === "GET" && route === "runtime/config/dashboard") {
212
+ res.setHeader("cache-control", "no-store");
122
213
  sendJson(res, 200, {
123
214
  ok: true,
124
215
  dashboard: await getConfigDashboardSnapshot({
@@ -129,25 +220,48 @@ export class LocalRuntimeApiRouter {
129
220
  return;
130
221
  }
131
222
  if (method === "PUT" && route === "runtime/config/dashboard/file") {
223
+ res.setHeader("cache-control", "no-store");
132
224
  const kind = readConfigFileKind(body?.kind);
133
225
  if (!kind) {
134
226
  sendJson(res, 400, { ok: false, error: "invalid_config_file_kind" });
135
227
  return;
136
228
  }
137
- const result = await saveConfigDashboardFile({
138
- rootDir: this.options.rootDir ?? process.cwd(),
139
- configPath: this.options.configPath,
140
- kind,
141
- id: getString(body?.id),
142
- config: body?.config,
143
- });
144
- sendJson(res, 200, { ...result, restartRequired: true });
229
+ const expectedRevision = getString(body?.expectedRevision);
230
+ if (!expectedRevision) {
231
+ sendJson(res, 428, {
232
+ ok: false,
233
+ error: "config_revision_required",
234
+ message: "Reload Configuration before saving this file.",
235
+ });
236
+ return;
237
+ }
238
+ try {
239
+ const result = await saveConfigDashboardFile({
240
+ rootDir: this.options.rootDir ?? process.cwd(),
241
+ configPath: this.options.configPath,
242
+ kind,
243
+ id: getString(body?.id),
244
+ config: body?.config,
245
+ expectedRevision,
246
+ });
247
+ sendJson(res, 200, { ...result, restartRequired: true });
248
+ }
249
+ catch (error) {
250
+ if (!(error instanceof ConfigFileConflictError))
251
+ throw error;
252
+ sendJson(res, 409, {
253
+ ok: false,
254
+ error: error.code,
255
+ message: error.message,
256
+ });
257
+ }
145
258
  return;
146
259
  }
147
260
  if (method === "GET" && route === "chat/models") {
261
+ const pendingSetup = await pendingRuntimeSetupCatalog(this.setup);
148
262
  sendJson(res, 200, {
149
263
  ok: true,
150
- ...this.environments.modelCatalog(environmentId),
264
+ ...(pendingSetup ?? this.environments.modelCatalog(environmentId)),
151
265
  modes: [],
152
266
  });
153
267
  return;
@@ -169,6 +283,16 @@ export class LocalRuntimeApiRouter {
169
283
  }
170
284
  }
171
285
  const environment = this.environments.get(environmentId);
286
+ if (await this.projects.handle({
287
+ method,
288
+ segments,
289
+ url,
290
+ body,
291
+ environment,
292
+ request: req,
293
+ response: res,
294
+ }))
295
+ return;
172
296
  if (await this.sessions.handle({
173
297
  method,
174
298
  segments,
@@ -179,7 +303,7 @@ export class LocalRuntimeApiRouter {
179
303
  }))
180
304
  return;
181
305
  if (method === "POST" && route === "chat/messages") {
182
- await this.requests.start(res, body ?? {}, environmentId, environment);
306
+ await this.requests.start(res, body ?? {}, environmentId, this.environments.get(environmentId));
183
307
  return;
184
308
  }
185
309
  if (method === "GET" &&
@@ -0,0 +1,8 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ export declare class ConfigMutationRequestError extends Error {
3
+ readonly statusCode: number;
4
+ constructor(message: string, statusCode?: number);
5
+ }
6
+ /** Browser writes to machine-local configuration require same-origin JSON. */
7
+ export declare function assertConfigMutationRequest(request: IncomingMessage): void;
8
+ export declare function acceptConfigMutationRequest(request: IncomingMessage, response: ServerResponse): boolean;
@@ -0,0 +1,55 @@
1
+ import { sendJson } from "./http.js";
2
+ export class ConfigMutationRequestError extends Error {
3
+ statusCode;
4
+ constructor(message, statusCode = 403) {
5
+ super(message);
6
+ this.statusCode = statusCode;
7
+ }
8
+ }
9
+ function hasJsonContentType(request) {
10
+ const value = request.headers["content-type"] ?? "";
11
+ return value.split(";", 1)[0].trim().toLowerCase() === "application/json";
12
+ }
13
+ function hasSameOrigin(request) {
14
+ const origin = request.headers.origin;
15
+ if (!origin)
16
+ return true;
17
+ try {
18
+ const parsed = new URL(origin);
19
+ if (!["http:", "https:"].includes(parsed.protocol))
20
+ return false;
21
+ const encrypted = "encrypted" in request.socket && request.socket.encrypted;
22
+ const expectedOrigin = `${encrypted ? "https:" : "http:"}//${request.headers.host}`;
23
+ return parsed.origin === expectedOrigin;
24
+ }
25
+ catch {
26
+ return false;
27
+ }
28
+ }
29
+ /** Browser writes to machine-local configuration require same-origin JSON. */
30
+ export function assertConfigMutationRequest(request) {
31
+ if (request.headers["sec-fetch-site"] === "cross-site") {
32
+ throw new ConfigMutationRequestError("Cross-site configuration changes are not allowed.");
33
+ }
34
+ if (!hasSameOrigin(request)) {
35
+ throw new ConfigMutationRequestError("Configuration changes require the same origin.");
36
+ }
37
+ if (!hasJsonContentType(request)) {
38
+ throw new ConfigMutationRequestError("Configuration changes require application/json.", 415);
39
+ }
40
+ }
41
+ export function acceptConfigMutationRequest(request, response) {
42
+ try {
43
+ assertConfigMutationRequest(request);
44
+ return true;
45
+ }
46
+ catch (error) {
47
+ const status = error instanceof ConfigMutationRequestError ? error.statusCode : 403;
48
+ sendJson(response, status, {
49
+ ok: false,
50
+ error: "configuration_request_rejected",
51
+ message: "Configuration changes require same-origin JSON requests.",
52
+ });
53
+ return false;
54
+ }
55
+ }
@@ -0,0 +1,22 @@
1
+ import type { LocalRuntimeApplication } from "../../runtime/local-application.js";
2
+ export type EnvironmentEntry = readonly [string, LocalRuntimeApplication];
3
+ export type ActivationEnvironmentOptions = {
4
+ environments: Map<string, LocalRuntimeApplication>;
5
+ canContinue?: () => boolean;
6
+ };
7
+ export declare function requireActivationIntakeOpen(options: ActivationEnvironmentOptions): void;
8
+ export declare function settleExistingEnvironments(options: ActivationEnvironmentOptions): Promise<EnvironmentEntry[]>;
9
+ export type IdleEnvironmentShutdown = {
10
+ status: "closed";
11
+ closed: readonly EnvironmentEntry[];
12
+ } | {
13
+ status: "failed";
14
+ closed: readonly EnvironmentEntry[];
15
+ error: unknown;
16
+ hasUncertainOwners: boolean;
17
+ };
18
+ /** Every outcome settles before reporting a partial shutdown to Apply. */
19
+ export declare function closeIdleEnvironments(options: ActivationEnvironmentOptions, current: readonly EnvironmentEntry[]): Promise<IdleEnvironmentShutdown>;
20
+ export declare function startReplacementEnvironments(options: ActivationEnvironmentOptions, replacements: readonly EnvironmentEntry[]): Promise<void>;
21
+ /** Retire candidate owners before restoring the previous gateway policy. */
22
+ export declare function closeReplacementEnvironments(options: ActivationEnvironmentOptions, previous: readonly EnvironmentEntry[]): Promise<void>;
@@ -0,0 +1,106 @@
1
+ export function requireActivationIntakeOpen(options) {
2
+ if (options.canContinue?.() === false)
3
+ throw new Error("web_runtime_stopped");
4
+ }
5
+ async function disposeFailedEnvironment(options, entry, startupError) {
6
+ const [id, environment] = entry;
7
+ try {
8
+ await environment.stop();
9
+ }
10
+ catch (stopError) {
11
+ // LocalApplication.stop closes in finally, then may rethrow its original startup error.
12
+ if (stopError !== startupError)
13
+ throw new AggregateError([startupError, stopError], "Failed runtime startup could not be cleaned up.");
14
+ }
15
+ if (options.environments.get(id) === environment)
16
+ options.environments.delete(id);
17
+ }
18
+ export async function settleExistingEnvironments(options) {
19
+ const current = [...options.environments];
20
+ const starts = await Promise.allSettled(current.map(([, environment]) => environment.start()));
21
+ requireActivationIntakeOpen(options);
22
+ for (const [index, result] of starts.entries()) {
23
+ if (result.status !== "rejected")
24
+ continue;
25
+ await disposeFailedEnvironment(options, current[index], result.reason);
26
+ }
27
+ return current.filter(([id, environment]) => options.environments.get(id) === environment);
28
+ }
29
+ function requestIdleEnvironmentShutdown([, environment,]) {
30
+ try {
31
+ return environment.stopIfIdle();
32
+ }
33
+ catch (error) {
34
+ return Promise.reject(error);
35
+ }
36
+ }
37
+ function isConfirmedIdleShutdown(result) {
38
+ if (result.status !== "fulfilled")
39
+ return false;
40
+ return result.value;
41
+ }
42
+ function isRefusedIdleShutdown(result) {
43
+ if (result.status !== "fulfilled")
44
+ return false;
45
+ return !result.value;
46
+ }
47
+ /** Every outcome settles before reporting a partial shutdown to Apply. */
48
+ export async function closeIdleEnvironments(options, current) {
49
+ // No await separates the complete idle snapshot from closing every owner's intake.
50
+ const closes = current.map(requestIdleEnvironmentShutdown);
51
+ const results = await Promise.allSettled(closes);
52
+ const closed = current.filter((_, index) => isConfirmedIdleShutdown(results[index]));
53
+ for (const [id, environment] of closed) {
54
+ if (options.environments.get(id) === environment)
55
+ options.environments.delete(id);
56
+ }
57
+ const failed = results.find((result) => result.status === "rejected");
58
+ if (failed?.status === "rejected") {
59
+ return {
60
+ status: "failed",
61
+ closed,
62
+ error: failed.reason,
63
+ hasUncertainOwners: true,
64
+ };
65
+ }
66
+ if (results.some(isRefusedIdleShutdown)) {
67
+ return {
68
+ status: "failed",
69
+ closed,
70
+ error: new Error("Runtime ownership changed while applying configuration."),
71
+ hasUncertainOwners: false,
72
+ };
73
+ }
74
+ return { status: "closed", closed };
75
+ }
76
+ export async function startReplacementEnvironments(options, replacements) {
77
+ requireActivationIntakeOpen(options);
78
+ for (const [id, replacement] of replacements)
79
+ options.environments.set(id, replacement);
80
+ const starts = await Promise.allSettled(replacements.map(async (entry) => {
81
+ try {
82
+ await entry[1].start();
83
+ }
84
+ catch (error) {
85
+ await disposeFailedEnvironment(options, entry, error);
86
+ throw error;
87
+ }
88
+ }));
89
+ const failed = starts.find((result) => result.status === "rejected");
90
+ if (failed?.status === "rejected")
91
+ throw failed.reason;
92
+ requireActivationIntakeOpen(options);
93
+ }
94
+ /** Retire candidate owners before restoring the previous gateway policy. */
95
+ export async function closeReplacementEnvironments(options, previous) {
96
+ const previousOwners = new Map(previous);
97
+ const candidates = [...options.environments].filter(([id, environment]) => previousOwners.get(id) !== environment);
98
+ const stops = await Promise.allSettled(candidates.map(async ([id, environment]) => {
99
+ await environment.stop();
100
+ if (options.environments.get(id) === environment)
101
+ options.environments.delete(id);
102
+ }));
103
+ const errors = stops.flatMap((result) => result.status === "rejected" ? [result.reason] : []);
104
+ if (errors.length > 0)
105
+ throw new AggregateError(errors, "Candidate runtime cleanup failed.");
106
+ }
@@ -0,0 +1,7 @@
1
+ import type { RuntimeSetupActivation } from "./runtime-setup-input.js";
2
+ export type ConfigurationActivationPreparation = {
3
+ prepareConfiguration(): void;
4
+ restoreConfiguration(): void;
5
+ };
6
+ /** Cooperating root and linked-file saves wait for activation or restoration to finish. */
7
+ export declare function withConfigurationActivationSource(configPath: string, operation: (preparation: ConfigurationActivationPreparation) => Promise<RuntimeSetupActivation>): Promise<RuntimeSetupActivation>;
@@ -0,0 +1,36 @@
1
+ import { withConfigFileTransaction } from "../../runtime/adapters/config-file-transaction.js";
2
+ import { resolveRequestRunnerConfigReference } from "../../runtime/config/request-runner-config.js";
3
+ import { invalidateRequestRunnerConfig } from "../../runtime/config/runner/loader.js";
4
+ function restoreUnappliedRequestRunner(activation, preparation) {
5
+ if (activation.status === "ready")
6
+ return;
7
+ preparation.restoreConfiguration();
8
+ }
9
+ /** Cooperating root and linked-file saves wait for activation or restoration to finish. */
10
+ export function withConfigurationActivationSource(configPath, operation) {
11
+ return withConfigFileTransaction(configPath, async (transaction) => {
12
+ const runner = resolveRequestRunnerConfigReference({
13
+ fileConfig: transaction.snapshot.config,
14
+ mainConfigPath: configPath,
15
+ });
16
+ let restoreRequestRunner = () => { };
17
+ const preparation = {
18
+ prepareConfiguration() {
19
+ if (runner)
20
+ restoreRequestRunner = invalidateRequestRunnerConfig(runner);
21
+ },
22
+ restoreConfiguration() {
23
+ restoreRequestRunner();
24
+ },
25
+ };
26
+ try {
27
+ const activation = await operation(preparation);
28
+ restoreUnappliedRequestRunner(activation, preparation);
29
+ return activation;
30
+ }
31
+ catch (error) {
32
+ preparation.restoreConfiguration();
33
+ throw error;
34
+ }
35
+ });
36
+ }
@@ -0,0 +1,20 @@
1
+ import type { LocalRuntimeApplication } from "../../runtime/local-application.js";
2
+ import type { RuntimeSetupActivation } from "./runtime-setup-input.js";
3
+ import type { RuntimeSetupGatewayRestorePoint } from "../runtime-setup-gateway.js";
4
+ type ActivationOptions = {
5
+ environments: Map<string, LocalRuntimeApplication>;
6
+ defaultEnvironmentId: string;
7
+ environmentIds?: readonly string[];
8
+ createEnvironment: (id: string) => LocalRuntimeApplication;
9
+ recreateEnvironment: (id: string, previous: LocalRuntimeApplication) => LocalRuntimeApplication;
10
+ createGatewayRestorePoint?: () => RuntimeSetupGatewayRestorePoint;
11
+ onRestorationFailure?: () => void;
12
+ prepareConfiguration?: () => void;
13
+ restoreConfiguration?: () => void;
14
+ checkGateway?: () => Promise<RuntimeSetupActivation>;
15
+ activateGateway: () => Promise<RuntimeSetupActivation>;
16
+ canContinue?: () => boolean;
17
+ };
18
+ /** Idle admission is checked at the owning host, never from a browser activity list. */
19
+ export declare function applyRuntimeConfiguration(options: ActivationOptions): Promise<RuntimeSetupActivation>;
20
+ export {};
@@ -0,0 +1,107 @@
1
+ import { closeIdleEnvironments, closeReplacementEnvironments, requireActivationIntakeOpen, settleExistingEnvironments, startReplacementEnvironments, } from "./configuration-activation-environments.js";
2
+ function blockedActivation(message) {
3
+ return { status: "restart_required", message };
4
+ }
5
+ function ownerActivationBlock(current) {
6
+ const hasExternalOwner = current.some(([, environment]) => environment.getOwnership() !== "owner");
7
+ if (hasExternalOwner) {
8
+ return blockedActivation("Another process owns this runtime. Changes are saved and will apply when that process restarts.");
9
+ }
10
+ const hasBusyOwner = current.some(([, environment]) => !environment.isOwnerIdle());
11
+ if (hasBusyOwner) {
12
+ return blockedActivation("Your agent is working. Wait for active conversations and Jobs to finish, then apply again.");
13
+ }
14
+ return undefined;
15
+ }
16
+ function desiredEnvironmentIds(options) {
17
+ const ids = new Set(options.environmentIds ?? options.environments.keys());
18
+ if (ids.size === 0)
19
+ ids.add(options.defaultEnvironmentId);
20
+ return [...ids];
21
+ }
22
+ /** Idle admission is checked at the owning host, never from a browser activity list. */
23
+ export async function applyRuntimeConfiguration(options) {
24
+ requireActivationIntakeOpen(options);
25
+ const ids = desiredEnvironmentIds(options);
26
+ const current = await settleExistingEnvironments(options);
27
+ const initialBlock = ownerActivationBlock(current);
28
+ if (initialBlock)
29
+ return initialBlock;
30
+ options.prepareConfiguration?.();
31
+ const gatewayCheck = await options.checkGateway?.();
32
+ requireActivationIntakeOpen(options);
33
+ if (gatewayCheck?.status === "restart_required")
34
+ return gatewayCheck;
35
+ // Config parsing is synchronous and cannot alter owner intake.
36
+ const replacements = ids.map((id) => [id, options.createEnvironment(id)]);
37
+ const finalBlock = ownerActivationBlock(current);
38
+ if (finalBlock)
39
+ return finalBlock;
40
+ const gatewayRestorePoint = options.createGatewayRestorePoint?.();
41
+ const shutdown = await closeIdleEnvironments(options, current);
42
+ if (shutdown.status === "failed") {
43
+ await restoreAfterIdleShutdownFailure(options, shutdown);
44
+ throw shutdown.error;
45
+ }
46
+ let activation;
47
+ try {
48
+ requireActivationIntakeOpen(options);
49
+ activation = await options.activateGateway();
50
+ requireActivationIntakeOpen(options);
51
+ if (isRuntimeActivationReady(activation))
52
+ await startReplacementEnvironments(options, replacements);
53
+ }
54
+ catch (error) {
55
+ await restoreConfigurationAfterFailure(options, current, gatewayRestorePoint, error);
56
+ throw error;
57
+ }
58
+ if (!isRuntimeActivationReady(activation)) {
59
+ await restoreConfigurationAfterFailure(options, current, gatewayRestorePoint, new Error(activation.message ?? "Runtime configuration was not activated."));
60
+ }
61
+ return activation;
62
+ }
63
+ async function restoreAfterIdleShutdownFailure(options, shutdown) {
64
+ if (isActivationStopped(options))
65
+ return;
66
+ // A rejected close does not prove that the previous owner's lease was released.
67
+ if (shutdown.hasUncertainOwners)
68
+ options.onRestorationFailure?.();
69
+ try {
70
+ options.restoreConfiguration?.();
71
+ const restored = shutdown.closed.map(([id, environment]) => [id, options.recreateEnvironment(id, environment)]);
72
+ await startReplacementEnvironments(options, restored);
73
+ }
74
+ catch (restorationError) {
75
+ if (isActivationStopped(options))
76
+ return;
77
+ options.onRestorationFailure?.();
78
+ throw new AggregateError([shutdown.error, restorationError], "Idle runtime shutdown failed and closed environments could not be restored.");
79
+ }
80
+ }
81
+ async function restoreConfigurationAfterFailure(options, previous, gateway, activationError) {
82
+ if (isActivationStopped(options))
83
+ return;
84
+ try {
85
+ await closeReplacementEnvironments(options, previous);
86
+ if (isActivationStopped(options))
87
+ return;
88
+ options.restoreConfiguration?.();
89
+ await gateway?.restore();
90
+ if (isActivationStopped(options))
91
+ return;
92
+ const restored = previous.map(([id, environment]) => [id, options.recreateEnvironment(id, environment)]);
93
+ await startReplacementEnvironments(options, restored);
94
+ }
95
+ catch (restorationError) {
96
+ if (isActivationStopped(options))
97
+ return;
98
+ options.onRestorationFailure?.();
99
+ throw new AggregateError([activationError, restorationError], "Configuration activation failed and the previous runtime could not be restored.");
100
+ }
101
+ }
102
+ function isActivationStopped(options) {
103
+ return options.canContinue?.() === false;
104
+ }
105
+ function isRuntimeActivationReady(activation) {
106
+ return activation.status === "ready";
107
+ }
@@ -1,3 +1,6 @@
1
+ import type { RuntimeSetupGatewayRestorePoint } from "../runtime-setup-gateway.js";
2
+ import type { WebUiEnvironmentConfig } from "../environment-config.js";
3
+ import type { RuntimeSetupActivation } from "./runtime-setup-input.js";
1
4
  import type { LocalRuntimeApplication } from "../../runtime/local-application.js";
2
5
  import type { RequestSteeringInbox } from "../../runtime/request/request-steering.js";
3
6
  import type { ModelProviderAdapterRegistry } from "../../model-gateway/index.js";
@@ -6,7 +9,11 @@ export type LocalRuntimeBackendOptions = {
6
9
  rootDir?: string;
7
10
  configPath?: string;
8
11
  defaultEnvironmentId: string;
12
+ resolveEnvironmentConfig?: (configPath?: string) => WebUiEnvironmentConfig;
9
13
  providerAdapters?: ModelProviderAdapterRegistry;
14
+ onRuntimeSetup?: (configPath: string) => Promise<RuntimeSetupActivation>;
15
+ createRuntimeSetupRestorePoint?: () => RuntimeSetupGatewayRestorePoint;
16
+ checkRuntimeSetupActivation?: (configPath: string) => Promise<RuntimeSetupActivation>;
10
17
  };
11
18
  export type ResolvedLocalRuntimeBackendOptions = Omit<LocalRuntimeBackendOptions, "providerAdapters"> & {
12
19
  providerAdapters: ModelProviderAdapterRegistry;
@@ -16,6 +23,7 @@ export type RuntimeSetupRequirement = {
16
23
  status: "setup_required";
17
24
  code: "runtime_configuration_required";
18
25
  message: string;
26
+ recovery?: "configuration";
19
27
  };
20
28
  export type RuntimeAvailability = {
21
29
  status: "ready";
@@ -0,0 +1,30 @@
1
+ import type { RuntimeEnvironmentRegistry } from "./environment-registry.js";
2
+ import type { LocalRequestExecution } from "./request-execution.js";
3
+ export type ConversationFileReference = {
4
+ environmentId: string;
5
+ sessionId: string;
6
+ requestId: string;
7
+ executionId: string;
8
+ };
9
+ export declare function readConversationFileReference(url: URL): ConversationFileReference;
10
+ /** The recorded completion and its request generation own every file action. */
11
+ export declare class ConversationFileAccess {
12
+ private readonly environments;
13
+ private readonly requests;
14
+ private readonly defaultEnvironmentId;
15
+ constructor(environments: Pick<RuntimeEnvironmentRegistry, "environmentConfig" | "setupRequirement" | "get">, requests: LocalRequestExecution, defaultEnvironmentId: () => string);
16
+ authorize(reference: ConversationFileReference): Promise<{
17
+ receipt: Readonly<{
18
+ version: 1;
19
+ location: import("../../capabilities/file-output-presentation.js").ToolFileOutputLocation;
20
+ rootId: string;
21
+ relativePath: string;
22
+ logicalPath: string;
23
+ operation: import("../../capabilities/file-output-presentation.js").ToolFileOutputOperation;
24
+ }>;
25
+ paths: import("../../runtime/ports.js").RuntimePaths;
26
+ assertCurrent: () => Promise<void>;
27
+ }>;
28
+ private fileReceipt;
29
+ private resolveEnvironment;
30
+ }