@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,8 @@
1
+ import type { Readable } from "node:stream";
2
+ import { runHostCompanionCli } from "./host-companion.js";
3
+ /** Installer-only setup receives secrets over stdin; login startup uses host run. */
4
+ export declare function runHostCompanionEntry(args: string[], options?: Readonly<{
5
+ input?: Readable;
6
+ cliPath?: string;
7
+ runCli?: typeof runHostCompanionCli;
8
+ }>): Promise<void>;
@@ -0,0 +1,70 @@
1
+ import { stdin } from "node:process";
2
+ import { fileURLToPath, pathToFileURL } from "node:url";
3
+ import { isNativeCredential } from "../../plugins/system/source/companion/native-state.js";
4
+ import { isHostRecord } from "../../plugins/system/source/companion/protocol.js";
5
+ import { runHostCompanionCli } from "./host-companion.js";
6
+ const SETUP_INPUT_LIMIT_BYTES = 16_384;
7
+ const SETUP_INPUT_TIMEOUT_MS = 10_000;
8
+ async function readSetupInput(input) {
9
+ const chunks = [];
10
+ let length = 0;
11
+ const deadline = setTimeout(() => {
12
+ input.destroy(new Error("Host setup input timed out."));
13
+ }, SETUP_INPUT_TIMEOUT_MS);
14
+ try {
15
+ for await (const chunk of input) {
16
+ const bytes = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
17
+ length += bytes.length;
18
+ if (length > SETUP_INPUT_LIMIT_BYTES)
19
+ throw new Error("Host setup input exceeds the size limit.");
20
+ chunks.push(bytes);
21
+ }
22
+ try {
23
+ return JSON.parse(Buffer.concat(chunks).toString("utf8"));
24
+ }
25
+ catch {
26
+ throw new Error("Host setup requires a JSON object on standard input.");
27
+ }
28
+ }
29
+ finally {
30
+ clearTimeout(deadline);
31
+ }
32
+ }
33
+ function readSetupRequest(value) {
34
+ if (!isHostRecord(value))
35
+ throw new Error("Invalid host setup request.");
36
+ if (Object.keys(value).some((key) => !["url", "code"].includes(key)))
37
+ throw new Error("Unexpected host setup fields.");
38
+ if (typeof value.url !== "string")
39
+ throw new Error("Missing Runtime URL.");
40
+ if (value.url.length === 0 || value.url.length > 4_096)
41
+ throw new Error("Invalid Runtime URL length.");
42
+ if (!isNativeCredential(value.code))
43
+ throw new Error("Invalid pairing code.");
44
+ return { url: value.url, code: value.code };
45
+ }
46
+ /** Installer-only setup receives secrets over stdin; login startup uses host run. */
47
+ export async function runHostCompanionEntry(args, options = {}) {
48
+ const cliPath = options.cliPath ?? fileURLToPath(import.meta.url);
49
+ const runCli = options.runCli ?? runHostCompanionCli;
50
+ if (args[0] === "setup") {
51
+ if (args.length !== 1)
52
+ throw new Error("Host setup accepts JSON on standard input, not arguments.");
53
+ const setup = readSetupRequest(await readSetupInput(options.input ?? stdin));
54
+ await runCli(["connect", "--url", setup.url], {
55
+ cliPath,
56
+ pairingCode: setup.code,
57
+ });
58
+ return;
59
+ }
60
+ if (args[0] !== "host")
61
+ throw new Error("Use setup or host <run|status|disconnect|uninstall>.");
62
+ await runCli(args.slice(1), { cliPath });
63
+ }
64
+ if (process.argv[1] &&
65
+ import.meta.url === pathToFileURL(process.argv[1]).href) {
66
+ void runHostCompanionEntry(process.argv.slice(2)).catch((error) => {
67
+ console.error(error instanceof Error ? error.message : "Host companion failed.");
68
+ process.exitCode = 1;
69
+ });
70
+ }
@@ -0,0 +1,4 @@
1
+ import { type NativeAutostartOptions } from "../../plugins/system/source/companion/autostart.js";
2
+ import type { NativeHostState } from "../../plugins/system/source/companion/native-state.js";
3
+ /** Startup can be resumed without consuming another grant or changing the saved pairing. */
4
+ export declare function completeHostCompanionStartup(state: NativeHostState, startup: NativeAutostartOptions, hostId: string): Promise<void>;
@@ -0,0 +1,35 @@
1
+ import { spawn } from "node:child_process";
2
+ import { setTimeout as delay } from "node:timers/promises";
3
+ import { installNativeAutostart, } from "../../plugins/system/source/companion/autostart.js";
4
+ async function startDetachedCompanion(options) {
5
+ const child = spawn(options.nodePath, [options.cliPath, "host", "run"], {
6
+ cwd: options.homeDir,
7
+ detached: true,
8
+ stdio: "ignore",
9
+ windowsHide: true,
10
+ });
11
+ await new Promise((resolve, reject) => {
12
+ child.once("spawn", resolve);
13
+ child.once("error", reject);
14
+ });
15
+ child.unref();
16
+ }
17
+ async function waitForNativeConnection(state, hostId) {
18
+ const deadline = Date.now() + 10_000;
19
+ do {
20
+ if (await state.isConnected(hostId))
21
+ return true;
22
+ await delay(200);
23
+ } while (Date.now() < deadline);
24
+ return false;
25
+ }
26
+ /** Startup can be resumed without consuming another grant or changing the saved pairing. */
27
+ export async function completeHostCompanionStartup(state, startup, hostId) {
28
+ const installed = await installNativeAutostart(startup);
29
+ if (!installed.started)
30
+ await startDetachedCompanion(startup);
31
+ const connected = await waitForNativeConnection(state, hostId);
32
+ console.log(connected
33
+ ? "Host companion connected. It will start automatically when you log in."
34
+ : "Host companion installed for login startup. It is waiting for the local Runtime to reconnect.");
35
+ }
@@ -0,0 +1,5 @@
1
+ export type HostCompanionCliOptions = Readonly<{
2
+ cliPath?: string;
3
+ pairingCode?: string;
4
+ }>;
5
+ export declare function runHostCompanionCli(args: string[], options?: HostCompanionCliOptions): Promise<void>;
@@ -0,0 +1,203 @@
1
+ import { homedir } from "node:os";
2
+ import { join } from "node:path";
3
+ import { createInterface } from "node:readline/promises";
4
+ import { stdin, stdout } from "node:process";
5
+ import { fileURLToPath } from "node:url";
6
+ import { nativeAutostartFile, uninstallNativeAutostart, } from "../../plugins/system/source/companion/autostart.js";
7
+ import { normalizeNativeRuntimeUrl, resolveNativeRuntimeAddress, } from "../../plugins/system/source/companion/native-address.js";
8
+ import { readNativeHostIdentity } from "../../plugins/system/source/companion/native-identity.js";
9
+ import { connectNativeHost } from "../../plugins/system/source/companion/native-session.js";
10
+ import { createNativeHostState, } from "../../plugins/system/source/companion/native-state.js";
11
+ import { runNativeHostSupervisor } from "../../plugins/system/source/companion/native-supervisor.js";
12
+ import { isProcessOwnerAlive, requireCurrentProcessOwnerIdentity, } from "../../plugins/system/source/companion/process-owner-identity.js";
13
+ import { acquireFileLock } from "../runtime/adapters/long-term-memory/file-lock/acquisition.js";
14
+ import { ensurePrivateRuntimeDirectory } from "../runtime/local-host/private-directory.js";
15
+ import { assertPrivateRuntimeAccess } from "../runtime/local-host/private-access.js";
16
+ import { completeHostCompanionStartup } from "./host-companion-startup.js";
17
+ function printHostHelp() {
18
+ console.log([
19
+ "Usage:",
20
+ " abot host connect --url http://localhost:5177",
21
+ " abot host status",
22
+ " abot host disconnect",
23
+ " abot host uninstall",
24
+ " abot host run",
25
+ "",
26
+ "Connect asks for a one-time code from ABot Settings, saves a private credential,",
27
+ "and starts the companion now and at future Windows/macOS user logins.",
28
+ "Run is the foreground companion used by the login registration.",
29
+ "Disconnect/uninstall stop the registration and remove this computer's credential.",
30
+ "Revoke the host in ABot Settings to remove Runtime-side pairing too.",
31
+ ].join("\n"));
32
+ }
33
+ function nativeState() {
34
+ return createNativeHostState(join(homedir(), ".abot", "host-companion"), {
35
+ ensureDirectory: ensurePrivateRuntimeDirectory,
36
+ assertFile: (path, stat) => assertPrivateRuntimeAccess(path, stat, "host_companion_state_not_private"),
37
+ });
38
+ }
39
+ function autostartOptions(state, options = {}) {
40
+ return {
41
+ platform: process.platform,
42
+ homeDir: homedir(),
43
+ appData: process.env.APPDATA,
44
+ uid: process.getuid?.(),
45
+ nodePath: process.execPath,
46
+ cliPath: options.cliPath ?? fileURLToPath(new URL("./bin.js", import.meta.url)),
47
+ stateDir: state.directory,
48
+ };
49
+ }
50
+ async function readPairingCode() {
51
+ const prompt = createInterface({ input: stdin, output: stdout });
52
+ try {
53
+ return (await prompt.question("One-time pairing code: ")).trim();
54
+ }
55
+ finally {
56
+ prompt.close();
57
+ }
58
+ }
59
+ async function withStopSignals(operation) {
60
+ const controller = new AbortController();
61
+ const stop = () => controller.abort();
62
+ process.once("SIGINT", stop);
63
+ process.once("SIGTERM", stop);
64
+ try {
65
+ await operation(controller.signal);
66
+ }
67
+ finally {
68
+ process.removeListener("SIGINT", stop);
69
+ process.removeListener("SIGTERM", stop);
70
+ }
71
+ }
72
+ function hasConflictingSavedRuntime(saved, url) {
73
+ if (!saved)
74
+ return false;
75
+ return saved.url !== url;
76
+ }
77
+ async function connectHost(args, state, options) {
78
+ if (args.length !== 2 || args[0] !== "--url")
79
+ throw new Error("Usage: abot host connect --url http://localhost:5177");
80
+ const startup = autostartOptions(state, options);
81
+ nativeAutostartFile(startup);
82
+ const url = normalizeNativeRuntimeUrl(args[1]);
83
+ await resolveNativeRuntimeAddress(url);
84
+ const saved = await state.read();
85
+ if (hasConflictingSavedRuntime(saved, url))
86
+ throw new Error("A Runtime is already paired. Use 'abot host disconnect' before pairing another.");
87
+ if (saved) {
88
+ await completeHostCompanionStartup(state, startup, saved.hostId);
89
+ return;
90
+ }
91
+ const code = options.pairingCode ?? (await readPairingCode());
92
+ let pairedHostId;
93
+ let interrupted = false;
94
+ await withStopSignals(async (signal) => {
95
+ const connection = new AbortController();
96
+ const stop = () => connection.abort();
97
+ signal.addEventListener("abort", stop, { once: true });
98
+ try {
99
+ if (signal.aborted)
100
+ stop();
101
+ await connectNativeHost({
102
+ url,
103
+ authorization: code,
104
+ identity: readNativeHostIdentity(),
105
+ signal: connection.signal,
106
+ onPaired: async (hostId, credential) => {
107
+ await state.write({ version: 1, url, hostId, credential });
108
+ pairedHostId = hostId;
109
+ },
110
+ onReady: () => {
111
+ throw new Error("Pairing must finish before an authenticated native connection becomes ready.");
112
+ },
113
+ });
114
+ }
115
+ finally {
116
+ interrupted = signal.aborted;
117
+ signal.removeEventListener("abort", stop);
118
+ }
119
+ });
120
+ if (interrupted)
121
+ throw new Error("Host setup was interrupted before startup installation.");
122
+ if (!pairedHostId)
123
+ throw new Error("Pairing did not complete. Check ABot Settings and use a fresh pairing code.");
124
+ await completeHostCompanionStartup(state, startup, pairedHostId);
125
+ }
126
+ async function runHost(state) {
127
+ if (!(await state.read()))
128
+ return;
129
+ const ownerIdentity = await requireCurrentProcessOwnerIdentity();
130
+ let release;
131
+ try {
132
+ release = await acquireFileLock(join(state.directory, "agent"), {
133
+ waitMs: 0,
134
+ releaseMode: "synchronous",
135
+ ownerIdentity,
136
+ processIsAlive: isProcessOwnerAlive,
137
+ });
138
+ }
139
+ catch (error) {
140
+ if (error instanceof Error &&
141
+ error.message === "long_term_memory_store_lock_timeout")
142
+ return;
143
+ throw error;
144
+ }
145
+ try {
146
+ await withStopSignals((signal) => runNativeHostSupervisor({
147
+ state,
148
+ identity: readNativeHostIdentity(),
149
+ signal,
150
+ }));
151
+ }
152
+ finally {
153
+ await release();
154
+ }
155
+ }
156
+ async function disconnectHost(state) {
157
+ await state.remove();
158
+ await uninstallNativeAutostart(autostartOptions(state));
159
+ const ownerIdentity = await requireCurrentProcessOwnerIdentity();
160
+ const release = await acquireFileLock(join(state.directory, "agent"), {
161
+ waitMs: 5_000,
162
+ releaseMode: "synchronous",
163
+ ownerIdentity,
164
+ processIsAlive: isProcessOwnerAlive,
165
+ });
166
+ await release();
167
+ console.log("Host companion stopped. Login startup and the saved credential were removed.");
168
+ }
169
+ export async function runHostCompanionCli(args, options = {}) {
170
+ const [command, ...rest] = args;
171
+ if (!command || ["help", "--help", "-h"].includes(command)) {
172
+ printHostHelp();
173
+ return;
174
+ }
175
+ const state = nativeState();
176
+ if (command === "connect") {
177
+ await connectHost(rest, state, options);
178
+ return;
179
+ }
180
+ if (rest.length > 0)
181
+ throw new Error(`Unknown host argument: ${rest[0]}`);
182
+ if (command === "run") {
183
+ await runHost(state);
184
+ return;
185
+ }
186
+ if (command === "disconnect" || command === "uninstall") {
187
+ await disconnectHost(state);
188
+ return;
189
+ }
190
+ if (command === "status") {
191
+ const saved = await state.read();
192
+ console.log(JSON.stringify(saved
193
+ ? {
194
+ paired: true,
195
+ url: saved.url,
196
+ hostId: saved.hostId,
197
+ connected: await state.isConnected(saved.hostId),
198
+ }
199
+ : { paired: false, connected: false }, null, 2));
200
+ return;
201
+ }
202
+ throw new Error(`Unknown host command: ${command}`);
203
+ }
@@ -27,7 +27,10 @@ export function resolveModelGatewayPort(environment = process.env) {
27
27
  return Number(parsedUrl.port || "80");
28
28
  }
29
29
  export function configureModelGateway(options) {
30
- const runtimeConfig = loadRuntimeConfig({ rootDir: process.cwd() });
30
+ const runtimeConfig = loadRuntimeConfig({
31
+ rootDir: options.rootDir ?? process.cwd(),
32
+ configPath: options.configPath,
33
+ });
31
34
  const modelPolicy = options.modelPolicy ??
32
35
  createRequestModelPolicy({
33
36
  platformPolicy: runtimeConfig.models,
@@ -11,6 +11,8 @@ export type ModelGatewayInvocationContext = Readonly<{
11
11
  abortSignal?: AbortSignal;
12
12
  }>;
13
13
  export type ModelGatewayHandlerOptions = {
14
+ rootDir?: string;
15
+ configPath?: string;
14
16
  fetchImpl?: GatewayFetch;
15
17
  modelPolicy?: ModelGatewayPolicyConfig;
16
18
  ollamaUrl?: string;
@@ -1,4 +1,4 @@
1
- import type { ResolvedRuntimeToolPath, RuntimeToolPathError, RuntimeToolPathErrorCode, RuntimeToolPathLocation, RuntimeToolPathResolver, ToolAvailabilityEntry, ToolCall, ToolCallAdapter, ToolCallAdapterInput, ToolCatalogGroup, ToolDefinition, ToolExecutionContext, ToolImplementation, ToolImplementationOutput } from "../capabilities/tool-types.js";
1
+ import type { ResolvedRuntimeToolPath, RuntimeToolPathError, RuntimeToolPathErrorCode, RuntimeToolPathLocation, RuntimeToolPathResolver, ToolAvailabilityEntry, ToolCall, ToolCallAdapter, ToolCallAdapterInput, ToolCatalogGroup, ToolDefinition, ToolExecutionContext, ToolImplementation, ToolImplementationOutput, ToolModuleDeclaration, ToolModuleRequestPreparation } from "../capabilities/tool-types.js";
2
2
  import type { ToolNormalInvocationContract } from "../capabilities/normal-invocation/contracts.js";
3
3
  export type RuntimePluginLoadContext = {
4
4
  id: string;
@@ -27,8 +27,10 @@ export type RuntimePluginLoadContext = {
27
27
  export type RuntimePluginEntrypoint = Readonly<{
28
28
  handlers: Readonly<Record<string, ToolImplementation>>;
29
29
  adapters?: Readonly<Record<string, ToolCallAdapter>>;
30
+ /** Observe availability once before any model sees this request's catalog. */
31
+ prepareRequest?: ToolModuleRequestPreparation;
30
32
  }>;
31
33
  export type RuntimePluginEntrypointFactory = (context: RuntimePluginLoadContext & Readonly<{
32
34
  pluginRoot: string;
33
35
  }>) => RuntimePluginEntrypoint;
34
- export type { ResolvedRuntimeToolPath, RuntimeToolPathError, RuntimeToolPathErrorCode, RuntimeToolPathLocation, RuntimeToolPathResolver, ToolAvailabilityEntry, ToolCall, ToolCallAdapter, ToolCallAdapterInput, ToolCatalogGroup, ToolDefinition, ToolExecutionContext, ToolImplementation, ToolImplementationOutput, ToolNormalInvocationContract, };
36
+ export type { ResolvedRuntimeToolPath, RuntimeToolPathError, RuntimeToolPathErrorCode, RuntimeToolPathLocation, RuntimeToolPathResolver, ToolAvailabilityEntry, ToolCall, ToolCallAdapter, ToolCallAdapterInput, ToolCatalogGroup, ToolDefinition, ToolExecutionContext, ToolImplementation, ToolImplementationOutput, ToolModuleDeclaration, ToolModuleRequestPreparation, ToolNormalInvocationContract, };
@@ -12,6 +12,7 @@ export type AgentPluginOperationManifest = Readonly<{
12
12
  payload?: ToolNormalInvocationPayload;
13
13
  }>;
14
14
  export type AgentPluginCapabilityManifest = Readonly<{
15
+ requiredPermissionMode?: import("../capabilities/tool-permission-mode.js").ToolRequiredPermissionMode;
15
16
  description: string;
16
17
  routingCapability: ToolRoutingCapability;
17
18
  controlsRefinement?: "mechanical_when_complete";
@@ -0,0 +1,46 @@
1
+ /** Configuration activation can hold this lock throughout shutdown and restart.
2
+ * Cooperating writers wait for release; dead owners remain reclaimable.
3
+ */
4
+ export declare const CONFIG_FILE_LOCK_OPTIONS: Readonly<{
5
+ waitMs: number;
6
+ }>;
7
+ type JsonConfig = Record<string, unknown>;
8
+ export type ConfigFileReadOptions = Readonly<{
9
+ allowMalformedJson?: boolean;
10
+ }>;
11
+ export type InvalidConfigJson = Readonly<{
12
+ raw: string;
13
+ message: string;
14
+ }>;
15
+ export type ConfigFileSnapshot = Readonly<{
16
+ config: JsonConfig;
17
+ invalidJson?: InvalidConfigJson;
18
+ exists: boolean;
19
+ revision: string;
20
+ }>;
21
+ export type ConfigFileExpectation = Readonly<{
22
+ expectedConfig?: JsonConfig;
23
+ expectedRevision?: string;
24
+ }>;
25
+ export type ConfigFileCommit = Readonly<{
26
+ revision: string;
27
+ backupPath?: string;
28
+ }>;
29
+ export type ConfigFileTransaction = Readonly<{
30
+ path: string;
31
+ snapshot: ConfigFileSnapshot;
32
+ write(config: JsonConfig, expectation?: ConfigFileExpectation): Promise<ConfigFileCommit>;
33
+ }>;
34
+ export declare class ConfigFileConflictError extends Error {
35
+ readonly code = "config_changed";
36
+ constructor();
37
+ }
38
+ /** Existing targets and missing children of symlinked directories share one lock. */
39
+ export declare function canonicalConfigFilePath(path: string): Promise<string>;
40
+ export declare function readConfigFileSnapshot(path: string, options?: ConfigFileReadOptions): Promise<ConfigFileSnapshot>;
41
+ /** All cooperating config writers hold this lock from read through commit.
42
+ * Revision checks also reject completed external edits; advisory locks cannot
43
+ * exclude an external editor that writes between the final check and rename.
44
+ */
45
+ export declare function withConfigFileTransaction<T>(path: string, operation: (transaction: ConfigFileTransaction) => Promise<T>, options?: ConfigFileReadOptions): Promise<T>;
46
+ export {};
@@ -0,0 +1,158 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { chmod, mkdir, readFile, realpath, rename, rm, stat, writeFile, } from "node:fs/promises";
3
+ import { basename, dirname, join, resolve } from "node:path";
4
+ import { isDeepStrictEqual } from "node:util";
5
+ import { isRecord } from "../config/utils.js";
6
+ import { withFileLock } from "./long-term-memory/file-lock.js";
7
+ /** Configuration activation can hold this lock throughout shutdown and restart.
8
+ * Cooperating writers wait for release; dead owners remain reclaimable.
9
+ */
10
+ export const CONFIG_FILE_LOCK_OPTIONS = Object.freeze({
11
+ waitMs: Number.POSITIVE_INFINITY,
12
+ });
13
+ export class ConfigFileConflictError extends Error {
14
+ code = "config_changed";
15
+ constructor() {
16
+ super("Configuration changed since it was loaded. Refresh Configuration before saving again.");
17
+ }
18
+ }
19
+ function isMissingFile(error) {
20
+ return error instanceof Error && "code" in error && error.code === "ENOENT";
21
+ }
22
+ /** Existing targets and missing children of symlinked directories share one lock. */
23
+ export async function canonicalConfigFilePath(path) {
24
+ const absolute = resolve(path);
25
+ try {
26
+ return await realpath(absolute);
27
+ }
28
+ catch (error) {
29
+ if (!isMissingFile(error))
30
+ throw error;
31
+ const parent = dirname(absolute);
32
+ if (parent === absolute)
33
+ throw error;
34
+ return join(await canonicalConfigFilePath(parent), basename(absolute));
35
+ }
36
+ }
37
+ function configRevision(path, raw) {
38
+ const hash = createHash("sha256").update(path).update("\0");
39
+ if (raw === undefined)
40
+ return hash.update("missing").digest("hex");
41
+ return hash.update("present:").update(raw).digest("hex");
42
+ }
43
+ function parseSnapshotConfig(raw, options) {
44
+ if (raw === undefined)
45
+ return { config: {} };
46
+ const text = raw.toString("utf8");
47
+ try {
48
+ const config = JSON.parse(text);
49
+ if (!isRecord(config))
50
+ throw new Error("Configuration must contain a JSON object.");
51
+ return { config };
52
+ }
53
+ catch (error) {
54
+ if (!options.allowMalformedJson)
55
+ throw error;
56
+ return {
57
+ config: {},
58
+ invalidJson: {
59
+ raw: text,
60
+ message: "This file is not a valid JSON object. Correct its Raw JSON and save the file to repair it.",
61
+ },
62
+ };
63
+ }
64
+ }
65
+ async function readSnapshot(path, options = {}) {
66
+ let raw;
67
+ try {
68
+ raw = await readFile(path);
69
+ }
70
+ catch (error) {
71
+ if (!isMissingFile(error))
72
+ throw error;
73
+ }
74
+ return {
75
+ ...parseSnapshotConfig(raw, options),
76
+ exists: raw !== undefined,
77
+ revision: configRevision(path, raw),
78
+ raw,
79
+ };
80
+ }
81
+ export async function readConfigFileSnapshot(path, options = {}) {
82
+ const { raw: _raw, ...snapshot } = await readSnapshot(await canonicalConfigFilePath(path), options);
83
+ return snapshot;
84
+ }
85
+ function requireExpectedSnapshot(snapshot, expectation) {
86
+ if (snapshot.invalidJson && expectation.expectedRevision === undefined)
87
+ throw new ConfigFileConflictError();
88
+ if (expectation.expectedRevision !== undefined &&
89
+ expectation.expectedRevision !== snapshot.revision)
90
+ throw new ConfigFileConflictError();
91
+ if (expectation.expectedConfig !== undefined &&
92
+ !isDeepStrictEqual(expectation.expectedConfig, snapshot.config))
93
+ throw new ConfigFileConflictError();
94
+ }
95
+ async function requireUnchangedFile(path, revision, options) {
96
+ if ((await readSnapshot(path, options)).revision !== revision)
97
+ throw new ConfigFileConflictError();
98
+ }
99
+ /** All cooperating config writers hold this lock from read through commit.
100
+ * Revision checks also reject completed external edits; advisory locks cannot
101
+ * exclude an external editor that writes between the final check and rename.
102
+ */
103
+ export async function withConfigFileTransaction(path, operation, options = {}) {
104
+ const canonicalPath = await canonicalConfigFilePath(path);
105
+ await mkdir(dirname(canonicalPath), { recursive: true });
106
+ return withFileLock(`${canonicalPath}.config.lock`, async () => {
107
+ let current = await readSnapshot(canonicalPath, options);
108
+ return operation({
109
+ path: canonicalPath,
110
+ get snapshot() {
111
+ return current;
112
+ },
113
+ async write(config, expectation = {}) {
114
+ requireExpectedSnapshot(current, expectation);
115
+ await requireUnchangedFile(canonicalPath, current.revision, options);
116
+ const token = randomUUID();
117
+ const temporaryPath = `${canonicalPath}.${token}.tmp`;
118
+ const backupPath = current.exists
119
+ ? `${canonicalPath}.${new Date().toISOString().replace(/[:.]/gu, "-")}.${token}.bak`
120
+ : undefined;
121
+ const mode = current.exists
122
+ ? (await stat(canonicalPath)).mode & 0o777
123
+ : 0o600;
124
+ const raw = Buffer.from(`${JSON.stringify(config, null, 2)}\n`, "utf8");
125
+ try {
126
+ if (backupPath)
127
+ await writeFile(backupPath, current.raw, {
128
+ encoding: "utf8",
129
+ mode,
130
+ flag: "wx",
131
+ });
132
+ await writeFile(temporaryPath, raw, {
133
+ encoding: "utf8",
134
+ mode,
135
+ flag: "wx",
136
+ });
137
+ await chmod(temporaryPath, mode);
138
+ await requireUnchangedFile(canonicalPath, current.revision, options);
139
+ await rename(temporaryPath, canonicalPath);
140
+ }
141
+ catch (error) {
142
+ await rm(temporaryPath, { force: true }).catch(() => undefined);
143
+ throw error;
144
+ }
145
+ current = {
146
+ config,
147
+ exists: true,
148
+ revision: configRevision(canonicalPath, raw),
149
+ raw,
150
+ };
151
+ return {
152
+ revision: current.revision,
153
+ ...(backupPath ? { backupPath } : {}),
154
+ };
155
+ },
156
+ });
157
+ }, CONFIG_FILE_LOCK_OPTIONS);
158
+ }
@@ -1,5 +1,5 @@
1
1
  import { createSkillsContextProvider, } from "../context/skills-context.js";
2
- import { loadBundledRuntimePlugins, loadConfiguredRuntimePlugins, } from "../plugins/loader.js";
2
+ import { loadRuntimeCapabilityPlugins } from "../plugins/runtime-capability-plugins.js";
3
3
  function unique(values) {
4
4
  return [...new Set(values.filter((value) => value.trim().length > 0))];
5
5
  }
@@ -46,14 +46,14 @@ export function createRuntimePluginSkillProvider(options) {
46
46
  /** Loads the config-selected plugin catalog and projects only its skills. */
47
47
  export function createConfiguredSkillProvider(options) {
48
48
  return createProviderFromPlugins({
49
- plugins: loadConfiguredRuntimePlugins(options.config),
49
+ plugins: loadRuntimeCapabilityPlugins(options.config),
50
50
  listToolDefinitions: options.listToolDefinitions,
51
51
  });
52
52
  }
53
53
  /** Uses the same bundled plugin manifests as the unconfigured tool registry. */
54
54
  export function createBundledPluginSkillProvider(options = {}) {
55
55
  return createProviderFromPlugins({
56
- plugins: loadBundledRuntimePlugins(),
56
+ plugins: loadRuntimeCapabilityPlugins(),
57
57
  listToolDefinitions: options.listToolDefinitions,
58
58
  });
59
59
  }
@@ -1,3 +1,5 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { assertSessionProjectUnchanged, copySessionProject, } from "../../sessions/project-binding.js";
1
3
  import { assertValidSessionArtifactPathInputs, upsertSessionArtifactPaths, } from "../../sessions/artifact-paths.js";
2
4
  import { clientVisibleMessages, compactRequestEvents, filterMessagesAfter, getRequestFinalState, getSessionRequest, isSameMessageId, normalizeAfterSeq, normalizeCursor, normalizeLimit, normalizeSessionTitle, toClientReplayEvent, toEpochMs, toSessionListItem, toSnapshotMessage, toSnapshotRequest, } from "../../sessions/record/projection.js";
3
5
  import { assertValidRequestId, assertValidSessionId, createContextEntryId, defaultCreateMessageId, pruneSupersededContextEntries, } from "../../sessions/record/rules.js";
@@ -40,15 +42,19 @@ class InMemorySessionStore {
40
42
  this.sessions.set(session.id, cloneSession(session));
41
43
  }
42
44
  }
43
- async getOrCreateSession(sessionId) {
45
+ async getOrCreateSession(sessionId, options = {}) {
44
46
  assertValidSessionId(sessionId);
45
47
  const existing = this.sessions.get(sessionId);
46
48
  if (existing) {
49
+ assertSessionProjectUnchanged(existing, options.project);
47
50
  return cloneSession(existing);
48
51
  }
49
52
  const timestamp = toIso(this.now);
50
53
  const session = {
51
54
  id: sessionId,
55
+ ...(options.project
56
+ ? { project: copySessionProject(options.project) }
57
+ : {}),
52
58
  title: sessionId,
53
59
  createdAt: timestamp,
54
60
  updatedAt: timestamp,
@@ -87,6 +93,7 @@ class InMemorySessionStore {
87
93
  }
88
94
  return {
89
95
  sessionId,
96
+ ...(session.project ? { project: session.project } : {}),
90
97
  title: session.title,
91
98
  messages: filterMessagesAfter(clientVisibleMessages(session.messages), options.afterMessageId).map((message) => toSnapshotMessage(sessionId, message, session.requests ?? [])),
92
99
  requests: options.includeRequests === false
@@ -106,6 +113,7 @@ class InMemorySessionStore {
106
113
  return {
107
114
  requestId,
108
115
  sessionId: request.sessionId,
116
+ ...(request.generation ? { generation: request.generation } : {}),
109
117
  events: request.events
110
118
  .filter((event) => event.seqNo > normalizedAfterSeq)
111
119
  .map(toClientReplayEvent),
@@ -262,6 +270,8 @@ class InMemorySessionStore {
262
270
  const request = {
263
271
  requestId,
264
272
  sessionId,
273
+ // Only an explicit new stream establishes a request lifetime.
274
+ generation: randomUUID(),
265
275
  status: "streaming",
266
276
  createdAt: timestamp,
267
277
  updatedAt: timestamp,