@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
@@ -0,0 +1,86 @@
1
+ import { failureResult, successResult, } from "../../../src/plugin-sdk/index.js";
2
+ const STREAM_EXCERPT_CHARS = 2_000;
3
+ const IDENTITY_EXCERPT_CHARS = 512;
4
+ const LEGACY_EVIDENCE_LABELS = {
5
+ command_process_completion: "system command process completion",
6
+ launch_request_dispatch: "application launch request dispatch",
7
+ };
8
+ export function systemProcessResult(target, result, evidenceScope, application) {
9
+ const stdoutOmittedChars = Math.max(0, result.stdout.length - STREAM_EXCERPT_CHARS);
10
+ const stderrOmittedChars = Math.max(0, result.stderr.length - STREAM_EXCERPT_CHARS);
11
+ const data = {
12
+ evidenceScope,
13
+ evidence: LEGACY_EVIDENCE_LABELS[evidenceScope],
14
+ independentOutcomeCheck: "not_performed",
15
+ target: target.id,
16
+ transport: target.transport,
17
+ processStatus: result.status,
18
+ spawnedProcess: result.spawnedProcess ?? null,
19
+ ...(application ? { catalogApplication: application } : {}),
20
+ outputTruncated: result.outputTruncated,
21
+ summaryOmittedChars: {
22
+ stdout: stdoutOmittedChars,
23
+ stderr: stderrOmittedChars,
24
+ },
25
+ observationMeta: {
26
+ kind: "volatile_external",
27
+ carryPolicy: "never",
28
+ },
29
+ };
30
+ const output = [
31
+ `Adapter evidence: ${evidenceScope}. Independent outcome check: not performed. Completion/dispatch alone does not verify the requested application, window or system effect; evaluate command evidence separately.`,
32
+ `Target: ${target.id} (${target.transport})`,
33
+ `Process status: ${result.status}; exit code: ${result.exitCode ?? "unavailable"}`,
34
+ result.spawnedProcess
35
+ ? `Spawned helper: ${identityExcerpt(result.spawnedProcess.executable)}; PID ${result.spawnedProcess.pid} in runtime OS namespace. Identity comes from spawn arguments, not application image inspection.`
36
+ : "Spawned helper identity: not recorded.",
37
+ ...(application
38
+ ? [
39
+ `Revalidated catalog identity: ${identityExcerpt(application.id)} (identity only; no application process/window check).`,
40
+ ]
41
+ : []),
42
+ "STDOUT excerpt:",
43
+ result.stdout.slice(0, STREAM_EXCERPT_CHARS) || "(empty)",
44
+ "STDERR excerpt:",
45
+ result.stderr.slice(0, STREAM_EXCERPT_CHARS) || "(empty)",
46
+ `Summary omitted characters: stdout=${stdoutOmittedChars}, stderr=${stderrOmittedChars}. Raw stream capture truncated: ${result.outputTruncated}.`,
47
+ ].join("\n");
48
+ if (hasSuccessfulSystemObservation(result)) {
49
+ return successResult({
50
+ output,
51
+ stdout: result.stdout,
52
+ stderr: result.stderr,
53
+ exitCode: 0,
54
+ data,
55
+ });
56
+ }
57
+ const errorCode = result.status === "completed"
58
+ ? "system_command_failed"
59
+ : `system_${result.status}`;
60
+ return failureResult({
61
+ errorCode,
62
+ message: hasUncertainDescendantState(result)
63
+ ? "System command observation stopped. External or detached descendants may remain; inspect the target before retrying."
64
+ : "The target did not report successful command completion.",
65
+ output,
66
+ stdout: result.stdout,
67
+ stderr: result.stderr,
68
+ ...(result.exitCode !== null ? { exitCode: result.exitCode } : {}),
69
+ data,
70
+ });
71
+ }
72
+ function hasSuccessfulSystemObservation(result) {
73
+ if (result.status !== "completed")
74
+ return false;
75
+ return result.exitCode === 0;
76
+ }
77
+ function hasUncertainDescendantState(result) {
78
+ if (result.status === "timeout")
79
+ return true;
80
+ return result.status === "aborted";
81
+ }
82
+ function identityExcerpt(identity) {
83
+ if (identity.length <= IDENTITY_EXCERPT_CHARS)
84
+ return identity;
85
+ return `${identity.slice(0, IDENTITY_EXCERPT_CHARS)} [${identity.length - IDENTITY_EXCERPT_CHARS} characters omitted; full identity in result data]`;
86
+ }
@@ -0,0 +1,3 @@
1
+ import type { SystemProcessInput, SystemProcessResult } from "./contracts.js";
2
+ /** Bounded process observation; exit zero proves command completion, not effects. */
3
+ export declare function runSystemProcess(input: SystemProcessInput): Promise<SystemProcessResult>;
@@ -0,0 +1,103 @@
1
+ import { spawn } from "node:child_process";
2
+ const STREAM_MAX_CHARS = 16_000;
3
+ /** Bounded process observation; exit zero proves command completion, not effects. */
4
+ export function runSystemProcess(input) {
5
+ if (input.abortSignal?.aborted)
6
+ return Promise.resolve({
7
+ exitCode: null,
8
+ stdout: "",
9
+ stderr: "",
10
+ status: "aborted",
11
+ outputTruncated: false,
12
+ });
13
+ return new Promise((resolve) => {
14
+ const streamMaxChars = Math.min(input.outputMaxChars ?? STREAM_MAX_CHARS, 512_000);
15
+ let stdout = "";
16
+ let stderr = "";
17
+ let truncated = false;
18
+ let settled = false;
19
+ let status = "completed";
20
+ let spawnedProcess;
21
+ let timeout;
22
+ let stopGrace;
23
+ const finish = (exitCode) => {
24
+ if (settled)
25
+ return;
26
+ settled = true;
27
+ if (timeout)
28
+ clearTimeout(timeout);
29
+ if (stopGrace)
30
+ clearTimeout(stopGrace);
31
+ input.abortSignal?.removeEventListener("abort", abort);
32
+ resolve(Object.freeze({
33
+ exitCode,
34
+ stdout,
35
+ stderr,
36
+ status,
37
+ outputTruncated: truncated,
38
+ ...(spawnedProcess ? { spawnedProcess } : {}),
39
+ }));
40
+ };
41
+ const child = spawn(input.executable, [...input.args], {
42
+ ...(input.cwd ? { cwd: input.cwd } : {}),
43
+ stdio: ["ignore", "pipe", "pipe"],
44
+ windowsHide: true,
45
+ detached: process.platform !== "win32",
46
+ });
47
+ child.once("spawn", () => {
48
+ if (child.pid === undefined)
49
+ return;
50
+ spawnedProcess = {
51
+ pid: child.pid,
52
+ pidNamespace: "runtime_os",
53
+ executable: input.executable,
54
+ identitySource: "spawn_arguments",
55
+ };
56
+ });
57
+ const stop = (reason) => {
58
+ if (settled)
59
+ return;
60
+ status = reason;
61
+ const pid = child.pid;
62
+ if (pid && process.platform !== "win32") {
63
+ try {
64
+ process.kill(-pid, "SIGKILL");
65
+ }
66
+ catch {
67
+ child.kill("SIGKILL");
68
+ }
69
+ }
70
+ else {
71
+ child.kill("SIGKILL");
72
+ }
73
+ // Native/external descendants can outlive a stopped transport; never claim
74
+ // their termination from the shell observation alone.
75
+ stopGrace = setTimeout(() => finish(null), 1_000);
76
+ stopGrace.unref();
77
+ };
78
+ const abort = () => stop("aborted");
79
+ child.stdout.setEncoding("utf8");
80
+ child.stderr.setEncoding("utf8");
81
+ child.stdout.on("data", (chunk) => {
82
+ const remaining = streamMaxChars - stdout.length;
83
+ truncated ||= chunk.length > remaining;
84
+ stdout += chunk.slice(0, remaining);
85
+ });
86
+ child.stderr.on("data", (chunk) => {
87
+ const remaining = streamMaxChars - stderr.length;
88
+ truncated ||= chunk.length > remaining;
89
+ stderr += chunk.slice(0, remaining);
90
+ });
91
+ child.once("error", (error) => {
92
+ status = "spawn_failed";
93
+ stderr = error.message.slice(0, STREAM_MAX_CHARS);
94
+ finish(null);
95
+ });
96
+ child.once("close", (code) => finish(code));
97
+ timeout = setTimeout(() => stop("timeout"), input.timeoutMs ?? 30_000);
98
+ timeout.unref();
99
+ input.abortSignal?.addEventListener("abort", abort, { once: true });
100
+ if (input.abortSignal?.aborted)
101
+ abort();
102
+ });
103
+ }
@@ -0,0 +1,18 @@
1
+ import type { SystemProcessRunner, SystemTarget, SystemTargetId } from "./contracts.js";
2
+ import { observeSystemHost } from "./host-observation.js";
3
+ type TargetObservation = Readonly<(SystemTarget & {
4
+ available: true;
5
+ commandExecutionAvailable: true;
6
+ guiSessionStatus: "not_checked";
7
+ }) | {
8
+ id: SystemTargetId;
9
+ available: false;
10
+ reason: string;
11
+ }>;
12
+ export type SystemTargetObservation = Readonly<{
13
+ host: ReturnType<typeof observeSystemHost>;
14
+ availabilityScope: "command_execution_only";
15
+ targets: readonly TargetObservation[];
16
+ }>;
17
+ export declare function observeSystemTargets(run?: SystemProcessRunner): Promise<SystemTargetObservation>;
18
+ export {};
@@ -0,0 +1,29 @@
1
+ import { observeSystemHost } from "./host-observation.js";
2
+ import { runSystemProcess } from "./process-runner.js";
3
+ import { resolveSystemTarget } from "./targets.js";
4
+ export async function observeSystemTargets(run = runSystemProcess) {
5
+ const observations = [];
6
+ for (const id of ["linux", "macos", "windows"]) {
7
+ try {
8
+ const target = await resolveSystemTarget(id, run);
9
+ observations.push({
10
+ ...target,
11
+ available: true,
12
+ commandExecutionAvailable: true,
13
+ guiSessionStatus: "not_checked",
14
+ });
15
+ }
16
+ catch (error) {
17
+ observations.push({
18
+ id,
19
+ available: false,
20
+ reason: error instanceof Error ? error.message : String(error),
21
+ });
22
+ }
23
+ }
24
+ return {
25
+ host: observeSystemHost(),
26
+ availabilityScope: "command_execution_only",
27
+ targets: observations,
28
+ };
29
+ }
@@ -0,0 +1,8 @@
1
+ import { type SystemProcessRunner, type SystemTarget, type SystemTargetId } from "./contracts.js";
2
+ export declare function powershellArguments(script: string): string[];
3
+ export declare function powershellLiteral(value: string): string;
4
+ export declare function shellLiteral(value: string): string;
5
+ export declare function windowsSystemCommandScript(command: string, cwd: string): string;
6
+ export declare function findExecutable(name: string, additional?: readonly string[]): Promise<string | undefined>;
7
+ export declare function resolveSystemTarget(id: SystemTargetId, run?: SystemProcessRunner): Promise<SystemTarget>;
8
+ export declare function readSystemTargetId(value: unknown): SystemTargetId;
@@ -0,0 +1,101 @@
1
+ import { constants } from "node:fs";
2
+ import { access } from "node:fs/promises";
3
+ import { delimiter, join } from "node:path";
4
+ import { SystemOperationError, } from "./contracts.js";
5
+ import { runSystemProcess } from "./process-runner.js";
6
+ import { isWslHostRuntime, readSystemHostFacts } from "./host-observation.js";
7
+ export function powershellArguments(script) {
8
+ const preamble = "$ErrorActionPreference='Stop';[Console]::OutputEncoding=[Text.UTF8Encoding]::new();$global:LASTEXITCODE=0;";
9
+ return [
10
+ "-NoLogo",
11
+ "-NoProfile",
12
+ "-NonInteractive",
13
+ "-EncodedCommand",
14
+ Buffer.from(preamble + script, "utf16le").toString("base64"),
15
+ ];
16
+ }
17
+ export function powershellLiteral(value) {
18
+ return "'" + value.replaceAll("'", "''") + "'";
19
+ }
20
+ export function shellLiteral(value) {
21
+ return "'" + value.replaceAll("'", "'\"'\"'") + "'";
22
+ }
23
+ export function windowsSystemCommandScript(command, cwd) {
24
+ return `Set-Location -LiteralPath ${powershellLiteral(cwd)};${command}\nif ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }`;
25
+ }
26
+ export async function findExecutable(name, additional = []) {
27
+ const candidates = [
28
+ ...additional,
29
+ ...(process.env.PATH ?? "")
30
+ .split(delimiter)
31
+ .filter(Boolean)
32
+ .map((directory) => join(directory, name)),
33
+ ];
34
+ for (const candidate of candidates) {
35
+ try {
36
+ await access(candidate, constants.X_OK);
37
+ return candidate;
38
+ }
39
+ catch {
40
+ /* next observed candidate */
41
+ }
42
+ }
43
+ return undefined;
44
+ }
45
+ export async function resolveSystemTarget(id, run = runSystemProcess) {
46
+ if (isNativeUnixTarget(id))
47
+ return resolveNativeUnixTarget(id);
48
+ if (id !== "windows")
49
+ throw new SystemOperationError("system_target_unavailable", `The runtime is not executing on ${id}.`);
50
+ const nativeWindows = process.platform === "win32";
51
+ const wslWindows = isWslHostRuntime(readSystemHostFacts());
52
+ if (!hasWindowsExecutionTransport(nativeWindows, wslWindows))
53
+ throw new SystemOperationError("system_target_unavailable", "No Windows execution transport is available on this host.");
54
+ const canonicalShell = nativeWindows
55
+ ? join(process.env.SystemRoot ?? "C:\\Windows", "System32", "WindowsPowerShell", "v1.0", "powershell.exe")
56
+ : "/mnt/c/Windows/System32/WindowsPowerShell/v1.0/powershell.exe";
57
+ const shell = await findExecutable("powershell.exe", [canonicalShell]);
58
+ if (!shell)
59
+ throw new SystemOperationError("system_target_unavailable", "A native Windows PowerShell executable was not found; Windows interop is unavailable.");
60
+ const probe = await run({
61
+ executable: shell,
62
+ args: powershellArguments("[Environment]::OSVersion.Platform.ToString()"),
63
+ timeoutMs: 5_000,
64
+ });
65
+ if (!hasObservedWindowsPlatform(probe))
66
+ throw new SystemOperationError("system_target_unavailable", "Windows PowerShell could not execute. WSL executable interop may be disabled; enable a real Windows execution transport on the host.");
67
+ return { id, transport: nativeWindows ? "native" : "wsl_interop", shell };
68
+ }
69
+ export function readSystemTargetId(value) {
70
+ if (value === "linux" || value === "macos" || value === "windows")
71
+ return value;
72
+ throw new SystemOperationError("system_target_required", "Select an explicit target returned by system_targets: linux, macos, or windows.");
73
+ }
74
+ function isNativeUnixTarget(id) {
75
+ if (id === "linux")
76
+ return process.platform === "linux";
77
+ if (id === "macos")
78
+ return process.platform === "darwin";
79
+ return false;
80
+ }
81
+ async function resolveNativeUnixTarget(id) {
82
+ try {
83
+ await access("/bin/bash", constants.X_OK);
84
+ }
85
+ catch {
86
+ throw new SystemOperationError("system_target_unavailable", "The native target has no executable /bin/bash.");
87
+ }
88
+ return { id, transport: "native", shell: "/bin/bash" };
89
+ }
90
+ function hasWindowsExecutionTransport(nativeWindows, wslWindows) {
91
+ if (nativeWindows)
92
+ return true;
93
+ return wslWindows;
94
+ }
95
+ function hasObservedWindowsPlatform(probe) {
96
+ if (probe.status !== "completed")
97
+ return false;
98
+ if (probe.exitCode !== 0)
99
+ return false;
100
+ return probe.stdout.trim() === "Win32NT";
101
+ }
@@ -1,3 +1,4 @@
1
+ import { mergeRuntimeModelAddition, parseRuntimeModelProfileId, } from "./runtime-model-addition.js";
1
2
  import { constants } from "node:fs";
2
3
  import { access, mkdir } from "node:fs/promises";
3
4
  import { dirname, join, resolve } from "node:path";
@@ -15,13 +16,6 @@ function requireValue(argv, index, flag) {
15
16
  }
16
17
  return value;
17
18
  }
18
- function parseProfile(value) {
19
- const profile = value.trim();
20
- if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(profile)) {
21
- throw new Error("--profile must start with a letter or number and use only letters, numbers, dot, underscore, or dash");
22
- }
23
- return profile;
24
- }
25
19
  function parseArgs(argv, commandMode) {
26
20
  let rootDir = process.cwd();
27
21
  let provider;
@@ -56,12 +50,12 @@ function parseArgs(argv, commandMode) {
56
50
  continue;
57
51
  }
58
52
  if (arg === "--profile") {
59
- profile = parseProfile(requireValue(argv, index, "--profile"));
53
+ profile = parseRuntimeModelProfileId(requireValue(argv, index, "--profile"));
60
54
  index += 1;
61
55
  continue;
62
56
  }
63
57
  if (arg.startsWith("--profile=")) {
64
- profile = parseProfile(arg.slice("--profile=".length));
58
+ profile = parseRuntimeModelProfileId(arg.slice("--profile=".length));
65
59
  continue;
66
60
  }
67
61
  if (arg === "--base-url") {
@@ -135,49 +129,6 @@ function readConfigMap(parent, key) {
135
129
  throw new Error(`${key} must be a JSON object`);
136
130
  return value;
137
131
  }
138
- function mergeRuntimeConfig(runtimeConfig, options) {
139
- const models = readConfigMap(runtimeConfig, "models");
140
- const providers = readConfigMap(models, "providers");
141
- const profiles = readConfigMap(models, "profiles");
142
- if (profiles[options.profile] !== undefined) {
143
- throw new Error(`model profile already exists: ${options.profile}; no files were changed`);
144
- }
145
- const existingProvider = providers[options.provider];
146
- if (existingProvider !== undefined) {
147
- if (!isRecord(existingProvider) ||
148
- existingProvider.type !== options.provider) {
149
- throw new Error(`provider id is already configured with a different adapter: ${options.provider}; no files were changed`);
150
- }
151
- if (options.provider === "ollama" &&
152
- options.baseUrl &&
153
- existingProvider.baseUrl !== options.baseUrl) {
154
- throw new Error(`provider ${options.provider} already uses a different base URL; no files were changed`);
155
- }
156
- }
157
- return {
158
- providerAdded: existingProvider === undefined,
159
- config: {
160
- ...runtimeConfig,
161
- models: {
162
- ...models,
163
- providers: {
164
- ...providers,
165
- ...(existingProvider === undefined
166
- ? {
167
- [options.provider]: buildProviderConfig(options.provider, options.baseUrl),
168
- }
169
- : {}),
170
- },
171
- profiles: {
172
- ...profiles,
173
- [options.profile]: {
174
- configRef: `./models/${options.profile}.config.json`,
175
- },
176
- },
177
- },
178
- },
179
- };
180
- }
181
132
  function selectDefaultProfile(runnerConfig, profile) {
182
133
  const models = readConfigMap(runnerConfig, "models");
183
134
  const defaults = readConfigMap(models, "defaults");
@@ -211,7 +162,13 @@ export async function runAddRuntimeModel(argv = process.argv.slice(2), runOption
211
162
  if (options.setDefault) {
212
163
  parseRequestRunnerConfig(runnerConfig, runnerConfigPath);
213
164
  }
214
- const merged = mergeRuntimeConfig(runtimeConfig, options);
165
+ const merged = mergeRuntimeModelAddition(runtimeConfig, {
166
+ profileId: options.profile,
167
+ providerId: options.provider,
168
+ provider: buildProviderConfig(options.provider, options.baseUrl),
169
+ profile: { configRef: `./models/${options.profile}.config.json` },
170
+ baseUrl: options.baseUrl,
171
+ });
215
172
  const nextRunnerConfig = options.setDefault
216
173
  ? selectDefaultProfile(runnerConfig, options.profile)
217
174
  : runnerConfig;
@@ -1,7 +1,8 @@
1
1
  import { constants } from "node:fs";
2
2
  import { access, copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
3
- import { dirname, join, resolve } from "node:path";
3
+ import { dirname, join, relative, resolve } from "node:path";
4
4
  import { pathToFileURL } from "node:url";
5
+ import { initializeConfiguredRuntimeDirectories } from "./runtime-setup-directories.js";
5
6
  import { buildModelConfig, buildProviderConfig, DEFAULT_ROOT_RESPONSE_METHODOLOGY_FILES, isRecord, parseBaseUrl, parseProvider, readJsonObject, resolveRuntimePackageRoot, writeJsonObject, } from "./runtime-setup-files.js";
6
7
  import { getInitNextSteps, getInitUsage, } from "./runtime-setup-presentation.js";
7
8
  const ENV_FILE = ".env";
@@ -13,16 +14,6 @@ const CONFIG_EXAMPLE_FILE = join("examples", "runtime.config.example.json");
13
14
  const REQUEST_RUNNER_CONFIG_EXAMPLE_FILE = join("examples", "request-runner.config.example.json");
14
15
  const MODEL_CONFIG_EXAMPLE_FILE = join("examples", "models", "default.config.json");
15
16
  const REQUIRED_ENV_LINE = "LLM_RUNTIME_CONFIG_FILE=local/runtime.config.json";
16
- const RUNTIME_DIRS = [
17
- join(".runtime", "compiled"),
18
- join(".runtime", "shared", "logs"),
19
- join(".runtime", "prod"),
20
- join(".runtime", "prod", "sandbox"),
21
- join(".runtime", "prod", "sessions"),
22
- join(".runtime", "dev"),
23
- join(".runtime", "dev", "sandbox"),
24
- join(".runtime", "dev", "sessions"),
25
- ];
26
17
  function requireValue(argv, index, flag) {
27
18
  const value = argv[index + 1]?.trim();
28
19
  if (!value || value.startsWith("--")) {
@@ -238,7 +229,7 @@ export async function runInitRuntime(argv = process.argv.slice(2), runOptions =
238
229
  if (modelConfigStatus !== "kept") {
239
230
  await configureModelProfile(modelConfigPath, options.provider, options.model);
240
231
  }
241
- await Promise.all(RUNTIME_DIRS.map((runtimeDir) => mkdir(join(options.rootDir, runtimeDir), { recursive: true })));
232
+ const runtimeDirectories = await initializeConfiguredRuntimeDirectories(options.rootDir, configPath);
242
233
  console.log([
243
234
  "abot initialized",
244
235
  `root: ${options.rootDir}`,
@@ -250,7 +241,7 @@ export async function runInitRuntime(argv = process.argv.slice(2), runOptions =
250
241
  `${LOCAL_REQUEST_RUNNER_CONFIG_FILE}: ${requestRunnerConfigStatus}`,
251
242
  `${LOCAL_MODEL_CONFIG_FILE}: ${modelConfigStatus}`,
252
243
  ...methodologyStatuses.map(({ relativePath, status }) => `${relativePath}: ${status}`),
253
- "created runtime directories: .runtime/compiled, .runtime/shared/logs, .runtime/prod, .runtime/dev",
244
+ `initialized runtime directories: ${runtimeDirectories.map((directory) => relative(options.rootDir, directory) || ".").join(", ")}`,
254
245
  "",
255
246
  ...getInitNextSteps(commandMode),
256
247
  ].join("\n"));
@@ -0,0 +1,13 @@
1
+ import { type JsonObject } from "./runtime-setup-files.js";
2
+ export declare function parseRuntimeModelProfileId(value: string): string;
3
+ /** Shared additive merge for CLI file references and Web inline model profiles. */
4
+ export declare function mergeRuntimeModelAddition(runtimeConfig: JsonObject, input: {
5
+ profileId: string;
6
+ providerId: string;
7
+ provider: JsonObject;
8
+ profile: JsonObject;
9
+ baseUrl?: string;
10
+ }): Readonly<{
11
+ config: JsonObject;
12
+ providerAdded: boolean;
13
+ }>;
@@ -0,0 +1,53 @@
1
+ import { isRecord } from "./runtime-setup-files.js";
2
+ export function parseRuntimeModelProfileId(value) {
3
+ const profile = value.trim();
4
+ if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/u.test(profile)) {
5
+ throw new Error("--profile must start with a letter or number and use only letters, numbers, dot, underscore, or dash");
6
+ }
7
+ return profile;
8
+ }
9
+ function readConfigMap(parent, key) {
10
+ const value = parent[key];
11
+ if (value === undefined)
12
+ return {};
13
+ if (!isRecord(value))
14
+ throw new Error(`${key} must be a JSON object`);
15
+ return value;
16
+ }
17
+ /** Shared additive merge for CLI file references and Web inline model profiles. */
18
+ export function mergeRuntimeModelAddition(runtimeConfig, input) {
19
+ const models = readConfigMap(runtimeConfig, "models");
20
+ const providers = readConfigMap(models, "providers");
21
+ const profiles = readConfigMap(models, "profiles");
22
+ if (profiles[input.profileId] !== undefined) {
23
+ throw new Error(`model profile already exists: ${input.profileId}; no files were changed`);
24
+ }
25
+ const existingProvider = providers[input.providerId];
26
+ if (existingProvider !== undefined) {
27
+ if (!isRecord(existingProvider) ||
28
+ existingProvider.type !== input.provider.type) {
29
+ throw new Error(`provider id is already configured with a different adapter: ${input.providerId}; no files were changed`);
30
+ }
31
+ if (input.provider.type === "ollama" &&
32
+ input.baseUrl &&
33
+ existingProvider.baseUrl !== input.baseUrl) {
34
+ throw new Error(`provider ${input.providerId} already uses a different base URL; no files were changed`);
35
+ }
36
+ }
37
+ return {
38
+ providerAdded: existingProvider === undefined,
39
+ config: {
40
+ ...runtimeConfig,
41
+ models: {
42
+ ...models,
43
+ providers: {
44
+ ...providers,
45
+ ...(existingProvider === undefined
46
+ ? { [input.providerId]: input.provider }
47
+ : {}),
48
+ },
49
+ profiles: { ...profiles, [input.profileId]: input.profile },
50
+ },
51
+ },
52
+ };
53
+ }
@@ -0,0 +1,2 @@
1
+ /** Initialize the preserved configuration's output roots without moving existing state. */
2
+ export declare function initializeConfiguredRuntimeDirectories(rootDir: string, configPath: string): Promise<string[]>;
@@ -0,0 +1,38 @@
1
+ import { mkdir } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { loadRuntimeConfig } from "../src/runtime/config.js";
4
+ import { RUNTIME_LOGS_DIR_NAME } from "../src/runtime/config/layout.js";
5
+ import { isRecord, readJsonObject, } from "./runtime-setup-files.js";
6
+ function configuredEnvironmentIds(config) {
7
+ if (!isRecord(config.environment))
8
+ return [undefined];
9
+ if (!isRecord(config.environment.profiles))
10
+ return [undefined];
11
+ const profileIds = Object.keys(config.environment.profiles);
12
+ const hasConfiguredEnvironments = profileIds.length > 0;
13
+ return hasConfiguredEnvironments ? profileIds : [undefined];
14
+ }
15
+ function runtimeOwnedDirectories(paths) {
16
+ return [
17
+ paths.runtimeDir,
18
+ paths.agentWorkDir,
19
+ paths.sessionsDir,
20
+ paths.attachmentsDir,
21
+ paths.sharedDir,
22
+ paths.compiledDir,
23
+ dirname(paths.traceFile),
24
+ join(paths.sharedDir, RUNTIME_LOGS_DIR_NAME),
25
+ ];
26
+ }
27
+ /** Initialize the preserved configuration's output roots without moving existing state. */
28
+ export async function initializeConfiguredRuntimeDirectories(rootDir, configPath) {
29
+ const config = await readJsonObject(configPath);
30
+ // Resolve every environment before creating any directories. This preserves the
31
+ // canonical guard against silently reassigning existing shared runtime state.
32
+ const configurations = configuredEnvironmentIds(config).map((profileId) => loadRuntimeConfig({ rootDir, configPath, profileId }));
33
+ const directories = [
34
+ ...new Set(configurations.flatMap(({ paths }) => runtimeOwnedDirectories(paths))),
35
+ ];
36
+ await Promise.all(directories.map((directory) => mkdir(directory, { recursive: true })));
37
+ return directories;
38
+ }
@@ -10,4 +10,6 @@ export declare function writeJsonObject(path: string, value: JsonObject, options
10
10
  exclusive?: boolean;
11
11
  }>): Promise<void>;
12
12
  export declare function buildProviderConfig(provider: Provider, baseUrl?: string): JsonObject;
13
- export declare function buildModelConfig(template: JsonObject, provider: Provider, model: string): JsonObject;
13
+ export declare function buildModelConfig(template: JsonObject, provider: Provider, model: string, contextWindowTokens?: number): JsonObject;
14
+ export declare function parseContextWindowTokens(value: unknown): number | undefined;
15
+ export declare function readDefaultContextWindowTokens(): Promise<number>;
@@ -76,13 +76,16 @@ export function buildProviderConfig(provider, baseUrl) {
76
76
  }
77
77
  return { type: provider };
78
78
  }
79
- export function buildModelConfig(template, provider, model) {
79
+ export function buildModelConfig(template, provider, model, contextWindowTokens) {
80
80
  const context = isRecord(template.context) ? template.context : {};
81
81
  return {
82
82
  ...template,
83
83
  label: model,
84
84
  provider,
85
85
  model,
86
+ ...(contextWindowTokens !== undefined
87
+ ? { contextWindowTokens: parseContextWindowTokens(contextWindowTokens) }
88
+ : {}),
86
89
  ...(provider === "openai"
87
90
  ? {
88
91
  execution: {
@@ -98,3 +101,17 @@ export function buildModelConfig(template, provider, model) {
98
101
  },
99
102
  };
100
103
  }
104
+ export function parseContextWindowTokens(value) {
105
+ if (value === undefined)
106
+ return undefined;
107
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value <= 0)
108
+ throw new Error("Context window must be a positive whole number of tokens.");
109
+ return value;
110
+ }
111
+ export async function readDefaultContextWindowTokens() {
112
+ const template = await readJsonObject(join(resolveRuntimePackageRoot(import.meta.dirname), "examples/models/default.config.json"));
113
+ const value = parseContextWindowTokens(template.contextWindowTokens);
114
+ if (value === undefined)
115
+ throw new Error("The model template is missing its context window.");
116
+ return value;
117
+ }