@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,150 @@
1
+ import { realpathSync } from "node:fs";
2
+ import { ConfigFileConflictError, withConfigFileTransaction, } from "../runtime/adapters/config-file-transaction.js";
3
+ import { inspectRuntimeConfigFileWithMeta } from "../runtime/config/loader.js";
4
+ import { isRecord } from "../runtime/config/utils.js";
5
+ import { validatePluginConfig } from "../runtime/config/validation/runtime-root-section-validation.js";
6
+ import { ABOT_RUNTIME_EXTENSION } from "../plugin-contract/manifest.js";
7
+ import { discoverConfiguredRuntimePluginManifests } from "../runtime/plugins/configured-manifests.js";
8
+ import { normalizePluginSelection } from "../runtime/plugins/selection.js";
9
+ import { capabilityPolicyBlockReason } from "./plugin-capability-selection.js";
10
+ import { projectPluginSnapshot, } from "./plugin-management-catalog.js";
11
+ import { saveConfigDashboardFile } from "./config-dashboard-backend.js";
12
+ import { pluginSelectionEscapesRequestedScope, updatePluginSelection, } from "./plugin-management-selection.js";
13
+ export class PluginManagementError extends Error {
14
+ code;
15
+ statusCode;
16
+ constructor(code, message, statusCode = 400) {
17
+ super(message);
18
+ this.code = code;
19
+ this.statusCode = statusCode;
20
+ }
21
+ }
22
+ function readPluginSelection(value) {
23
+ if (value === undefined)
24
+ return {};
25
+ if (!isRecord(value)) {
26
+ throw new PluginManagementError("invalid_plugin_configuration", "The plugin configuration must be an object.");
27
+ }
28
+ const issues = [];
29
+ validatePluginConfig(issues, value);
30
+ if (issues.length > 0) {
31
+ throw new PluginManagementError("invalid_plugin_configuration", "The plugin configuration is invalid. Review it in Advanced settings.");
32
+ }
33
+ return value;
34
+ }
35
+ export function getRuntimePluginSnapshot(options) {
36
+ const source = inspectRuntimeConfigFileWithMeta(options.rootDir, options.configPath);
37
+ return projectPluginSnapshot(discoverConfiguredRuntimePluginManifests(options.rootDir), readPluginSelection(source.config.plugins));
38
+ }
39
+ function isPluginSelectionIdentifier(value) {
40
+ if (typeof value !== "string")
41
+ return false;
42
+ return value.trim().length > 0;
43
+ }
44
+ function parsePluginToggle(input) {
45
+ if (!isRecord(input))
46
+ throw new PluginManagementError("invalid_plugin_update", "Choose a plugin and whether it should be enabled.");
47
+ const hasUnsupportedSelectionFields = Object.keys(input).some((key) => !["pluginId", "capabilityId", "enabled"].includes(key));
48
+ if (hasUnsupportedSelectionFields) {
49
+ throw new PluginManagementError("invalid_plugin_update", "The plugin update contains unsupported fields.");
50
+ }
51
+ if (!isPluginSelectionIdentifier(input.pluginId)) {
52
+ throw new PluginManagementError("invalid_plugin_update", "A plugin ID is required.");
53
+ }
54
+ if (typeof input.enabled !== "boolean") {
55
+ throw new PluginManagementError("invalid_plugin_update", "The enabled value must be true or false.");
56
+ }
57
+ if (input.capabilityId === undefined) {
58
+ return { pluginId: input.pluginId.trim(), enabled: input.enabled };
59
+ }
60
+ if (!isPluginSelectionIdentifier(input.capabilityId)) {
61
+ throw new PluginManagementError("invalid_plugin_update", "A capability ID must be a non-empty string.");
62
+ }
63
+ return {
64
+ pluginId: input.pluginId.trim(),
65
+ capabilityId: input.capabilityId.trim(),
66
+ enabled: input.enabled,
67
+ };
68
+ }
69
+ function requireCapabilityUpdateAllowed(plugin, toggle, current) {
70
+ const capabilityId = toggle.capabilityId;
71
+ if (capabilityId === undefined)
72
+ return;
73
+ const capabilities = plugin.manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities;
74
+ const isDeclaredCapability = Object.hasOwn(capabilities, capabilityId);
75
+ if (!isDeclaredCapability) {
76
+ throw new PluginManagementError("plugin_capability_not_found", "The selected capability does not belong to this plugin.", 404);
77
+ }
78
+ if (!toggle.enabled)
79
+ return;
80
+ const blockedReason = capabilityPolicyBlockReason({
81
+ pluginId: plugin.manifest.name,
82
+ capabilityId,
83
+ selection: normalizePluginSelection(current),
84
+ });
85
+ if (!blockedReason)
86
+ return;
87
+ throw new PluginManagementError("plugin_capability_blocked", blockedReason, 409);
88
+ }
89
+ function configuredPluginSource(options) {
90
+ const source = inspectRuntimeConfigFileWithMeta(options.rootDir, options.configPath);
91
+ if (!source.exists) {
92
+ throw new PluginManagementError("runtime_setup_required", "Complete Runtime setup before changing plugins.", 409);
93
+ }
94
+ return source;
95
+ }
96
+ export async function setRuntimePluginEnabled(options, input) {
97
+ const toggle = parsePluginToggle(input);
98
+ const source = configuredPluginSource(options);
99
+ const configPath = realpathSync(source.path);
100
+ const canonicalOptions = {
101
+ rootDir: realpathSync(options.rootDir),
102
+ configPath,
103
+ };
104
+ try {
105
+ return await withConfigFileTransaction(configPath, (transaction) => savePluginSelection(canonicalOptions, toggle, transaction));
106
+ }
107
+ catch (error) {
108
+ if (error instanceof ConfigFileConflictError)
109
+ throw new PluginManagementError("config_changed", error.message, 409);
110
+ throw error;
111
+ }
112
+ }
113
+ async function savePluginSelection(options, toggle, transaction) {
114
+ const source = configuredPluginSource(options);
115
+ const manifests = discoverConfiguredRuntimePluginManifests(options.rootDir);
116
+ const plugin = manifests.find((entry) => entry.manifest.name === toggle.pluginId);
117
+ if (!plugin)
118
+ throw new PluginManagementError("plugin_not_found", "The selected plugin is not installed.", 404);
119
+ const current = readPluginSelection(source.config.plugins);
120
+ const capabilityId = toggle.capabilityId;
121
+ requireCapabilityUpdateAllowed(plugin, toggle, current);
122
+ const next = updatePluginSelection({
123
+ current,
124
+ ...(capabilityId ? { capabilityId } : {}),
125
+ pluginId: toggle.pluginId,
126
+ capabilityIds: Object.keys(plugin.manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities),
127
+ enabled: toggle.enabled,
128
+ });
129
+ const escapesRequestedScope = pluginSelectionEscapesRequestedScope({
130
+ manifests,
131
+ pluginId: toggle.pluginId,
132
+ ...(capabilityId ? { capabilityId } : {}),
133
+ before: current,
134
+ after: next,
135
+ });
136
+ if (escapesRequestedScope) {
137
+ throw new PluginManagementError("plugin_selection_conflict", "This selection would also change other capabilities. Review the selection in Advanced settings.", 409);
138
+ }
139
+ const result = await saveConfigDashboardFile({
140
+ ...options,
141
+ kind: "runtime",
142
+ config: { ...source.config, plugins: next },
143
+ transaction,
144
+ });
145
+ return {
146
+ ...projectPluginSnapshot(manifests, next),
147
+ restartRequired: true,
148
+ ...(result.backupPath ? { backupPath: result.backupPath } : {}),
149
+ };
150
+ }
@@ -0,0 +1,8 @@
1
+ import type { IncomingMessage, ServerResponse } from "node:http";
2
+ import type { Duplex } from "node:stream";
3
+ /** Trust the configured listener and local interface, never request DNS or proxy headers. */
4
+ export declare function hasTrustedWebUiAuthority(request: IncomingMessage, listenHost: string, allowPublishedLoopback?: boolean): boolean;
5
+ /** A native client may use a Docker-published loopback port unlike the listener port. */
6
+ export declare function hasLoopbackRequestAuthority(request: IncomingMessage): boolean;
7
+ export declare function acceptWebUiHttpAuthority(request: IncomingMessage, response: ServerResponse, listenHost: string, allowPublishedLoopback?: boolean): boolean;
8
+ export declare function acceptWebUiUpgradeAuthority(request: IncomingMessage, socket: Duplex, listenHost: string, allowPublishedLoopback?: boolean): boolean;
@@ -0,0 +1,129 @@
1
+ import { isIP } from "node:net";
2
+ function normalizeIpAddress(value) {
3
+ const address = value.replace(/^\[|\]$/g, "");
4
+ const family = isIP(address);
5
+ if (!family)
6
+ return undefined;
7
+ const ipv6 = family === 4 ? "::ffff:" + address : address;
8
+ try {
9
+ return new URL("http://[" + ipv6 + "]").hostname;
10
+ }
11
+ catch {
12
+ return undefined;
13
+ }
14
+ }
15
+ function isLoopbackAddress(address) {
16
+ if (!address)
17
+ return false;
18
+ if (address === "[::1]")
19
+ return true;
20
+ return /^\[::ffff:7f[0-9a-f]{2}:/.test(address);
21
+ }
22
+ function hasSingleHostHeader(request) {
23
+ let count = 0;
24
+ for (let index = 0; index < request.rawHeaders.length; index += 2) {
25
+ if (request.rawHeaders[index].toLowerCase() === "host")
26
+ count += 1;
27
+ }
28
+ return count === 1;
29
+ }
30
+ function readRequestAuthority(request) {
31
+ if (!hasSingleHostHeader(request))
32
+ return undefined;
33
+ const host = request.headers.host;
34
+ if (!host || /[\s,/\\?#@]/u.test(host))
35
+ return undefined;
36
+ const encrypted = "encrypted" in request.socket && request.socket.encrypted;
37
+ try {
38
+ return new URL((encrypted ? "https://" : "http://") + host);
39
+ }
40
+ catch {
41
+ return undefined;
42
+ }
43
+ }
44
+ function hasListenerPort(authority, request) {
45
+ const defaultPort = authority.protocol === "https:" ? 443 : 80;
46
+ const port = authority.port ? Number(authority.port) : defaultPort;
47
+ return port === request.socket.localPort;
48
+ }
49
+ function normalizeHostname(hostname) {
50
+ return hostname.toLowerCase().replace(/\.$/, "");
51
+ }
52
+ function isConfiguredHostname(hostname, listenHost) {
53
+ const configured = normalizeHostname(listenHost.trim());
54
+ if (["*", "0.0.0.0", "::", "[::]"].includes(configured))
55
+ return false;
56
+ return normalizeHostname(hostname) === configured;
57
+ }
58
+ function hasTrustedListenerHostname(hostname, localAddress, listenHost) {
59
+ const localIp = normalizeIpAddress(localAddress);
60
+ const hostIp = normalizeIpAddress(hostname);
61
+ if (hostIp && hostIp === localIp)
62
+ return true;
63
+ if (isConfiguredHostname(hostname, listenHost))
64
+ return true;
65
+ if (!isLoopbackAddress(localIp))
66
+ return false;
67
+ if (normalizeHostname(hostname) === "localhost")
68
+ return true;
69
+ return isLoopbackAddress(hostIp);
70
+ }
71
+ function hasPublishedLoopbackAuthority(request, allowed) {
72
+ if (!allowed)
73
+ return false;
74
+ return hasLoopbackRequestAuthority(request);
75
+ }
76
+ /** Trust the configured listener and local interface, never request DNS or proxy headers. */
77
+ export function hasTrustedWebUiAuthority(request, listenHost, allowPublishedLoopback = false) {
78
+ const authority = readRequestAuthority(request);
79
+ if (!authority)
80
+ return false;
81
+ const localAddress = request.socket.localAddress;
82
+ if (!localAddress)
83
+ return false;
84
+ if (hasPublishedLoopbackAuthority(request, allowPublishedLoopback))
85
+ return true;
86
+ if (!hasListenerPort(authority, request))
87
+ return false;
88
+ return hasTrustedListenerHostname(authority.hostname, localAddress, listenHost);
89
+ }
90
+ /** A native client may use a Docker-published loopback port unlike the listener port. */
91
+ export function hasLoopbackRequestAuthority(request) {
92
+ const authority = readRequestAuthority(request);
93
+ if (!authority)
94
+ return false;
95
+ const hostname = normalizeHostname(authority.hostname);
96
+ if (hostname === "localhost")
97
+ return true;
98
+ if (hostname.endsWith(".localhost"))
99
+ return true;
100
+ return isLoopbackAddress(normalizeIpAddress(hostname));
101
+ }
102
+ export function acceptWebUiHttpAuthority(request, response, listenHost, allowPublishedLoopback = false) {
103
+ if (hasTrustedWebUiAuthority(request, listenHost, allowPublishedLoopback))
104
+ return true;
105
+ response.writeHead(403, {
106
+ "content-type": "application/json; charset=utf-8",
107
+ "cache-control": "no-store",
108
+ });
109
+ response.end(JSON.stringify({
110
+ ok: false,
111
+ error: "web_ui_authority_rejected",
112
+ message: "Use the configured Web UI hostname or a local listener address.",
113
+ }));
114
+ return false;
115
+ }
116
+ function hasTrustedWebUiUpgrade(request, listenHost, allowPublishedLoopback) {
117
+ if (!hasTrustedWebUiAuthority(request, listenHost, allowPublishedLoopback))
118
+ return false;
119
+ const origin = request.headers.origin;
120
+ if (origin === undefined)
121
+ return true;
122
+ return origin === readRequestAuthority(request)?.origin;
123
+ }
124
+ export function acceptWebUiUpgradeAuthority(request, socket, listenHost, allowPublishedLoopback = false) {
125
+ if (hasTrustedWebUiUpgrade(request, listenHost, allowPublishedLoopback))
126
+ return true;
127
+ socket.destroy();
128
+ return false;
129
+ }
@@ -0,0 +1,3 @@
1
+ export declare function isLoopbackGateway(url: URL): boolean;
2
+ /** Probe all configured hostname addresses; net's ADDRCONFIG can hide IPv6 loopback. */
3
+ export declare function hasGatewayListener(port: number, host: string, ownedHost?: string): Promise<boolean>;
@@ -0,0 +1,26 @@
1
+ import { lookup } from "node:dns/promises";
2
+ import { createConnection } from "node:net";
3
+ export function isLoopbackGateway(url) {
4
+ if (url.protocol !== "http:")
5
+ return false;
6
+ return ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
7
+ }
8
+ function probeGatewayAddress(port, host) {
9
+ return new Promise((resolve) => {
10
+ const socket = createConnection({ port, host });
11
+ const finish = (connected) => {
12
+ socket.destroy();
13
+ resolve(connected);
14
+ };
15
+ socket.once("connect", () => finish(true));
16
+ socket.once("error", () => finish(false));
17
+ socket.setTimeout(750, () => finish(false));
18
+ });
19
+ }
20
+ /** Probe all configured hostname addresses; net's ADDRCONFIG can hide IPv6 loopback. */
21
+ export async function hasGatewayListener(port, host, ownedHost) {
22
+ const resolved = await lookup(host, { all: true, verbatim: true });
23
+ const addresses = [...new Set(resolved.map(({ address }) => address))].filter((address) => address !== ownedHost);
24
+ const listeners = await Promise.all(addresses.map((address) => probeGatewayAddress(port, address)));
25
+ return listeners.some(Boolean);
26
+ }
@@ -0,0 +1,29 @@
1
+ import { type ModelGatewayHandlerOptions } from "../model-gateway/server.js";
2
+ import type { RuntimeSetupActivation } from "./local-runtime/runtime-setup-input.js";
3
+ export type RuntimeSetupGatewayRestorePoint = {
4
+ restore(): Promise<void>;
5
+ };
6
+ /** Owns only a gateway started by this Web/CLI process, never an external service. */
7
+ export declare class RuntimeSetupGateway {
8
+ private readonly options;
9
+ private owned;
10
+ private checkpoint;
11
+ private transition;
12
+ private closed;
13
+ constructor(options: ModelGatewayHandlerOptions & {
14
+ rootDir: string;
15
+ });
16
+ private requireGatewayOpen;
17
+ private configuredBinding;
18
+ checkActivation(configPath?: string): Promise<RuntimeSetupActivation>;
19
+ private captureGatewayCheckpoint;
20
+ /** Retains the old server's compiled handlers, without rereading saved config. */
21
+ createRestorePoint(): RuntimeSetupGatewayRestorePoint;
22
+ private restoreGatewayCheckpoint;
23
+ private runGatewayTransition;
24
+ private replaceOwnedGateway;
25
+ private closeGatewayListener;
26
+ private failAfterGatewayCleanup;
27
+ activate(configPath?: string): Promise<RuntimeSetupActivation>;
28
+ close(): Promise<void>;
29
+ }
@@ -0,0 +1,177 @@
1
+ import { isLoopbackGateway, hasGatewayListener, } from "./runtime-setup-gateway-address.js";
2
+ import { createModelGatewayServer, } from "../model-gateway/server.js";
3
+ import { loadRuntimeConfig } from "../runtime/config.js";
4
+ import { closeHttpServerImmediately } from "../shared/http-server-shutdown.js";
5
+ function listenGateway(server, port, host) {
6
+ return new Promise((resolve, reject) => {
7
+ server.once("error", reject);
8
+ server.listen(port, host, () => {
9
+ server.off("error", reject);
10
+ resolve();
11
+ });
12
+ });
13
+ }
14
+ /** Owns only a gateway started by this Web/CLI process, never an external service. */
15
+ export class RuntimeSetupGateway {
16
+ options;
17
+ owned;
18
+ checkpoint;
19
+ transition;
20
+ closed = false;
21
+ constructor(options) {
22
+ this.options = options;
23
+ }
24
+ requireGatewayOpen() {
25
+ if (this.closed)
26
+ throw new Error("setup_gateway_closed");
27
+ }
28
+ configuredBinding(configPath) {
29
+ const config = loadRuntimeConfig({
30
+ rootDir: this.options.rootDir,
31
+ configPath,
32
+ });
33
+ const url = new URL(config.modelGatewayUrl);
34
+ const host = url.hostname === "[::1]" ? "::1" : url.hostname;
35
+ const port = Number(url.port || "80");
36
+ return { url, host, port };
37
+ }
38
+ async checkActivation(configPath) {
39
+ this.requireGatewayOpen();
40
+ const { url, host, port } = this.configuredBinding(configPath);
41
+ if (!isLoopbackGateway(url)) {
42
+ return {
43
+ status: "restart_required",
44
+ message: "Configuration saved. The configured model gateway is managed outside this Web UI.",
45
+ };
46
+ }
47
+ const ownAddress = this.owned?.server.address();
48
+ const ownsTargetPort = ownAddress && typeof ownAddress !== "string" && ownAddress.port === port;
49
+ const ownedHost = ownsTargetPort ? ownAddress.address : undefined;
50
+ const externalListener = await hasGatewayListener(port, host, ownedHost);
51
+ this.requireGatewayOpen();
52
+ if (externalListener) {
53
+ return {
54
+ status: "restart_required",
55
+ message: "Configuration saved. An existing model gateway owns this address; restart that gateway to load its new configuration.",
56
+ };
57
+ }
58
+ return { status: "ready" };
59
+ }
60
+ captureGatewayCheckpoint() {
61
+ this.requireGatewayOpen();
62
+ return (this.checkpoint ??= { owned: this.owned });
63
+ }
64
+ /** Retains the old server's compiled handlers, without rereading saved config. */
65
+ createRestorePoint() {
66
+ const checkpoint = this.captureGatewayCheckpoint();
67
+ return { restore: () => this.restoreGatewayCheckpoint(checkpoint) };
68
+ }
69
+ restoreGatewayCheckpoint(checkpoint, activationOwnsTransition = false) {
70
+ if (checkpoint.restoration)
71
+ return checkpoint.restoration;
72
+ if (this.checkpoint === checkpoint)
73
+ this.checkpoint = undefined;
74
+ const restore = () => this.replaceOwnedGateway(checkpoint.owned);
75
+ checkpoint.restoration = activationOwnsTransition
76
+ ? restore()
77
+ : this.runGatewayTransition(restore);
78
+ return checkpoint.restoration;
79
+ }
80
+ async runGatewayTransition(operation) {
81
+ this.requireGatewayOpen();
82
+ if (this.transition)
83
+ throw new Error("setup_gateway_transition_in_progress");
84
+ const pending = Promise.resolve().then(operation);
85
+ this.transition = pending;
86
+ try {
87
+ return await pending;
88
+ }
89
+ finally {
90
+ if (this.transition === pending)
91
+ this.transition = undefined;
92
+ }
93
+ }
94
+ async replaceOwnedGateway(target) {
95
+ this.requireGatewayOpen();
96
+ const isTargetAlreadyActive = target === this.owned && target?.server.listening === true;
97
+ if (isTargetAlreadyActive)
98
+ return;
99
+ const current = this.owned;
100
+ if (current?.server.listening) {
101
+ await closeHttpServerImmediately(current.server);
102
+ this.requireGatewayOpen();
103
+ }
104
+ this.owned = undefined;
105
+ if (!target)
106
+ return;
107
+ this.requireGatewayOpen();
108
+ this.owned = target;
109
+ try {
110
+ await listenGateway(target.server, target.port, target.host);
111
+ this.requireGatewayOpen();
112
+ const address = target.server.address();
113
+ if (address && typeof address !== "string") {
114
+ target.host = address.address;
115
+ target.port = address.port;
116
+ }
117
+ }
118
+ catch (error) {
119
+ return this.failAfterGatewayCleanup(target, error);
120
+ }
121
+ }
122
+ closeGatewayListener(owned) {
123
+ if (!owned.server.listening)
124
+ return Promise.resolve();
125
+ return closeHttpServerImmediately(owned.server);
126
+ }
127
+ async failAfterGatewayCleanup(target, error) {
128
+ try {
129
+ await this.closeGatewayListener(target);
130
+ }
131
+ catch (closeError) {
132
+ throw new AggregateError([error, closeError], "Model gateway activation failed and its listener could not be closed.");
133
+ }
134
+ if (this.owned === target)
135
+ this.owned = undefined;
136
+ throw error;
137
+ }
138
+ activate(configPath) {
139
+ return this.runGatewayTransition(async () => {
140
+ const checkpoint = this.captureGatewayCheckpoint();
141
+ this.checkpoint = undefined;
142
+ try {
143
+ const allowed = await this.checkActivation(configPath);
144
+ this.requireGatewayOpen();
145
+ if (allowed.status !== "ready")
146
+ return allowed;
147
+ const { host, port } = this.configuredBinding(configPath);
148
+ const server = createModelGatewayServer({
149
+ ...this.options,
150
+ configPath,
151
+ });
152
+ await this.replaceOwnedGateway({ server, host, port });
153
+ this.requireGatewayOpen();
154
+ return { status: "ready" };
155
+ }
156
+ catch (error) {
157
+ if (this.closed)
158
+ throw error;
159
+ try {
160
+ await this.restoreGatewayCheckpoint(checkpoint, true);
161
+ }
162
+ catch (restoreError) {
163
+ throw new AggregateError([error, restoreError], "Model gateway activation failed and the previous gateway could not be restored.");
164
+ }
165
+ throw error;
166
+ }
167
+ });
168
+ }
169
+ async close() {
170
+ this.closed = true;
171
+ await this.transition?.catch(() => { });
172
+ const owned = this.owned;
173
+ this.owned = undefined;
174
+ if (owned?.server.listening)
175
+ await closeHttpServerImmediately(owned.server);
176
+ }
177
+ }
@@ -0,0 +1,2 @@
1
+ /** Fence both runtime owners immediately, then always release the owned gateway. */
2
+ export declare function closeRuntimeSetupServices(closeRuntime: () => Promise<void>, closeGateway: () => Promise<void>, closeHost?: () => Promise<void>): Promise<void>;
@@ -0,0 +1,20 @@
1
+ /** Fence both runtime owners immediately, then always release the owned gateway. */
2
+ export async function closeRuntimeSetupServices(closeRuntime, closeGateway, closeHost) {
3
+ const failures = [];
4
+ const owners = closeHost ? [closeRuntime, closeHost] : [closeRuntime];
5
+ const outcomes = await Promise.allSettled(owners.map(async (close) => close()));
6
+ for (const outcome of outcomes) {
7
+ if (outcome.status === "rejected")
8
+ failures.push(outcome.reason);
9
+ }
10
+ try {
11
+ await closeGateway();
12
+ }
13
+ catch (error) {
14
+ failures.push(error);
15
+ }
16
+ if (failures.length === 1)
17
+ throw failures[0];
18
+ if (failures.length > 1)
19
+ throw new AggregateError(failures, "Runtime services and model gateway shutdown failed.");
20
+ }
@@ -1,10 +1,9 @@
1
+ import type { RuntimeSetupGatewayRestorePoint } from "./runtime-setup-gateway.js";
2
+ import type { RuntimeSetupActivation } from "./local-runtime/runtime-setup-input.js";
3
+ import { type WebUiEnvironmentOption } from "./environment-config.js";
4
+ export { resolveWebUiEnvironmentConfig, type WebUiEnvironmentOption, } from "./environment-config.js";
1
5
  import type { ModelProviderAdapterRegistry } from "../model-gateway/index.js";
2
6
  export type WebUiSetupCommandMode = "source" | "package";
3
- export type WebUiEnvironmentOption = {
4
- id: string;
5
- label: string;
6
- isDefault: boolean;
7
- };
8
7
  type WebUiServerOptions = {
9
8
  host?: string;
10
9
  port?: number;
@@ -22,17 +21,11 @@ type WebUiServerOptions = {
22
21
  configPath?: string;
23
22
  setupCommandMode?: WebUiSetupCommandMode;
24
23
  providerAdapters?: ModelProviderAdapterRegistry;
24
+ onRuntimeSetup?: (configPath: string) => Promise<RuntimeSetupActivation>;
25
+ createRuntimeSetupRestorePoint?: () => RuntimeSetupGatewayRestorePoint;
26
+ checkRuntimeSetupActivation?: (configPath: string) => Promise<RuntimeSetupActivation>;
25
27
  };
26
28
  type WebUiServerHandle = {
27
29
  close: () => Promise<void>;
28
30
  };
29
- export declare function resolveWebUiEnvironmentConfig(params: {
30
- rootDir: string;
31
- configPath?: string;
32
- defaultEnvironmentId?: string;
33
- }): {
34
- defaultEnvironmentId: string;
35
- environments: WebUiEnvironmentOption[];
36
- };
37
31
  export declare function startWebUiServer(overrides?: WebUiServerOptions): WebUiServerHandle;
38
- export {};