@abot-ai/runtime 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. package/dist/plugins/system/source/application-catalog.d.ts +14 -0
  2. package/dist/plugins/system/source/application-catalog.js +185 -0
  3. package/dist/plugins/system/source/application-launch.d.ts +10 -0
  4. package/dist/plugins/system/source/application-launch.js +80 -0
  5. package/dist/plugins/system/source/application-observation.d.ts +25 -0
  6. package/dist/plugins/system/source/application-observation.js +53 -0
  7. package/dist/plugins/system/source/commands.d.ts +7 -0
  8. package/dist/plugins/system/source/commands.js +71 -0
  9. package/dist/plugins/system/source/companion/autostart.d.ts +16 -0
  10. package/dist/plugins/system/source/companion/autostart.js +146 -0
  11. package/dist/plugins/system/source/companion/broker-location.d.ts +11 -0
  12. package/dist/plugins/system/source/companion/broker-location.js +76 -0
  13. package/dist/plugins/system/source/companion/broker-server.d.ts +4 -0
  14. package/dist/plugins/system/source/companion/broker-server.js +147 -0
  15. package/dist/plugins/system/source/companion/connection.d.ts +25 -0
  16. package/dist/plugins/system/source/companion/connection.js +182 -0
  17. package/dist/plugins/system/source/companion/liveness.d.ts +3 -0
  18. package/dist/plugins/system/source/companion/liveness.js +20 -0
  19. package/dist/plugins/system/source/companion/native-address.d.ts +12 -0
  20. package/dist/plugins/system/source/companion/native-address.js +41 -0
  21. package/dist/plugins/system/source/companion/native-identity.d.ts +2 -0
  22. package/dist/plugins/system/source/companion/native-identity.js +23 -0
  23. package/dist/plugins/system/source/companion/native-messages.d.ts +9 -0
  24. package/dist/plugins/system/source/companion/native-messages.js +77 -0
  25. package/dist/plugins/system/source/companion/native-session.d.ts +19 -0
  26. package/dist/plugins/system/source/companion/native-session.js +205 -0
  27. package/dist/plugins/system/source/companion/native-state.d.ts +22 -0
  28. package/dist/plugins/system/source/companion/native-state.js +126 -0
  29. package/dist/plugins/system/source/companion/native-supervisor.d.ts +10 -0
  30. package/dist/plugins/system/source/companion/native-supervisor.js +93 -0
  31. package/dist/plugins/system/source/companion/pairing-store.d.ts +22 -0
  32. package/dist/plugins/system/source/companion/pairing-store.js +102 -0
  33. package/dist/plugins/system/source/companion/private-store.d.ts +4 -0
  34. package/dist/plugins/system/source/companion/private-store.js +59 -0
  35. package/dist/plugins/system/source/companion/process-owner-identity.d.ts +22 -0
  36. package/dist/plugins/system/source/companion/process-owner-identity.js +144 -0
  37. package/dist/plugins/system/source/companion/protocol.d.ts +57 -0
  38. package/dist/plugins/system/source/companion/protocol.js +66 -0
  39. package/dist/plugins/system/source/contracts.d.ts +38 -0
  40. package/dist/plugins/system/source/contracts.js +7 -0
  41. package/dist/plugins/system/source/elevation.d.ts +8 -0
  42. package/dist/plugins/system/source/elevation.js +57 -0
  43. package/dist/plugins/system/source/handlers.d.ts +3 -0
  44. package/dist/plugins/system/source/handlers.js +90 -0
  45. package/dist/plugins/system/source/host-evidence.d.ts +4 -0
  46. package/dist/plugins/system/source/host-evidence.js +52 -0
  47. package/dist/plugins/system/source/host-observation.d.ts +25 -0
  48. package/dist/plugins/system/source/host-observation.js +59 -0
  49. package/dist/plugins/system/source/process-result.d.ts +4 -0
  50. package/dist/plugins/system/source/process-result.js +86 -0
  51. package/dist/plugins/system/source/process-runner.d.ts +3 -0
  52. package/dist/plugins/system/source/process-runner.js +103 -0
  53. package/dist/plugins/system/source/target-observation.d.ts +18 -0
  54. package/dist/plugins/system/source/target-observation.js +29 -0
  55. package/dist/plugins/system/source/targets.d.ts +8 -0
  56. package/dist/plugins/system/source/targets.js +101 -0
  57. package/dist/scripts/add-runtime-model.js +10 -53
  58. package/dist/scripts/runtime-model-addition.d.ts +13 -0
  59. package/dist/scripts/runtime-model-addition.js +53 -0
  60. package/dist/scripts/runtime-setup-files.d.ts +3 -1
  61. package/dist/scripts/runtime-setup-files.js +18 -1
  62. package/dist/src/capabilities/file-output-presentation.d.ts +43 -0
  63. package/dist/src/capabilities/file-output-presentation.js +133 -0
  64. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +2 -0
  65. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.d.ts +5 -0
  66. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +37 -0
  67. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
  68. package/dist/src/capabilities/tool-definition-validator/module-registry.js +12 -0
  69. package/dist/src/capabilities/tool-event-input-text.d.ts +9 -0
  70. package/dist/src/capabilities/tool-event-input-text.js +64 -0
  71. package/dist/src/capabilities/tool-event-metadata.js +10 -0
  72. package/dist/src/capabilities/tool-executor.d.ts +1 -0
  73. package/dist/src/capabilities/tool-executor.js +1 -0
  74. package/dist/src/capabilities/tool-permission-mode.d.ts +7 -0
  75. package/dist/src/capabilities/tool-permission-mode.js +27 -0
  76. package/dist/src/capabilities/tool-types.d.ts +18 -2
  77. package/dist/src/cli/abot.js +18 -15
  78. package/dist/src/cli/host-companion-bundle.mjs +5201 -0
  79. package/dist/src/cli/host-companion-entry.d.ts +8 -0
  80. package/dist/src/cli/host-companion-entry.js +70 -0
  81. package/dist/src/cli/host-companion-startup.d.ts +4 -0
  82. package/dist/src/cli/host-companion-startup.js +35 -0
  83. package/dist/src/cli/host-companion.d.ts +5 -0
  84. package/dist/src/cli/host-companion.js +203 -0
  85. package/dist/src/model-gateway/server/configuration.js +4 -1
  86. package/dist/src/model-gateway/server/contracts.d.ts +2 -0
  87. package/dist/src/plugin-contract/entrypoint.d.ts +4 -2
  88. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  89. package/dist/src/runtime/adapters/config-file-transaction.d.ts +46 -0
  90. package/dist/src/runtime/adapters/config-file-transaction.js +158 -0
  91. package/dist/src/runtime/adapters/configured-skill-provider.js +3 -3
  92. package/dist/src/runtime/adapters/in-memory-session-store.js +11 -1
  93. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +7 -3
  94. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +4 -1
  95. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -1
  96. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +5 -1
  97. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.d.ts +3 -0
  98. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.js +15 -0
  99. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +2 -0
  100. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +17 -43
  101. package/dist/src/runtime/adapters/registered-tool-normal-invocations/catalog/registrations.js +6 -2
  102. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +10 -1
  103. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.d.ts +11 -0
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.js +37 -0
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.d.ts +7 -0
  106. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.js +105 -0
  107. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +29 -3
  108. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +1 -0
  109. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +1 -0
  110. package/dist/src/runtime/capabilities/configured-tool-registry.js +9 -1
  111. package/dist/src/runtime/capabilities/file-output-root-identity.d.ts +5 -0
  112. package/dist/src/runtime/capabilities/file-output-root-identity.js +146 -0
  113. package/dist/src/runtime/capabilities/file-output-root-marker-creation.d.ts +5 -0
  114. package/dist/src/runtime/capabilities/file-output-root-marker-creation.js +63 -0
  115. package/dist/src/runtime/capabilities/request-bound-tool-registry.d.ts +1 -0
  116. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +6 -1
  117. package/dist/src/runtime/capabilities/request-module-preparation.d.ts +3 -0
  118. package/dist/src/runtime/capabilities/request-module-preparation.js +102 -0
  119. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +10 -0
  120. package/dist/src/runtime/capabilities/request-permission-catalog.js +50 -0
  121. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +4 -0
  122. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +61 -0
  123. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +3 -0
  124. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +5 -2
  125. package/dist/src/runtime/capabilities/request-working-directory.d.ts +3 -0
  126. package/dist/src/runtime/capabilities/request-working-directory.js +12 -0
  127. package/dist/src/runtime/composition.d.ts +2 -0
  128. package/dist/src/runtime/config/runner/loader.d.ts +4 -0
  129. package/dist/src/runtime/config/runner/loader.js +23 -3
  130. package/dist/src/runtime/context/capability-brief-budget.d.ts +18 -0
  131. package/dist/src/runtime/context/capability-brief-budget.js +38 -0
  132. package/dist/src/runtime/context/capability-brief-readmission.d.ts +21 -0
  133. package/dist/src/runtime/context/capability-brief-readmission.js +47 -0
  134. package/dist/src/runtime/context/capability-brief.d.ts +9 -2
  135. package/dist/src/runtime/context/capability-brief.js +21 -39
  136. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -0
  137. package/dist/src/runtime/context/capability-descriptions.js +23 -0
  138. package/dist/src/runtime/default-environment-adapters.js +3 -4
  139. package/dist/src/runtime/local-application.d.ts +18 -0
  140. package/dist/src/runtime/local-application.js +12 -0
  141. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  142. package/dist/src/runtime/local-host/app-service-dispatch.js +9 -0
  143. package/dist/src/runtime/local-host/client-services.d.ts +16 -0
  144. package/dist/src/runtime/local-host/client-services.js +3 -2
  145. package/dist/src/runtime/local-host/contracts.d.ts +4 -0
  146. package/dist/src/runtime/local-host/startup-connection.js +22 -7
  147. package/dist/src/runtime/local-host/transport.js +14 -2
  148. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +5 -2
  149. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  150. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.d.ts +3 -0
  151. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.js +46 -0
  152. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  153. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  154. package/dist/src/runtime/orchestration/role-calls/transactions.js +2 -0
  155. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.d.ts +48 -0
  156. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.js +9 -0
  157. package/dist/src/runtime/orchestration/role-calls/work-plan-source.d.ts +7 -0
  158. package/dist/src/runtime/orchestration/role-calls/work-plan-source.js +85 -0
  159. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.d.ts +3 -0
  160. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.js +17 -0
  161. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.d.ts +10 -0
  162. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.js +149 -0
  163. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  164. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  165. package/dist/src/runtime/plugins/compiled-catalog.d.ts +2 -1
  166. package/dist/src/runtime/plugins/configured-manifests.d.ts +3 -0
  167. package/dist/src/runtime/plugins/configured-manifests.js +37 -0
  168. package/dist/src/runtime/plugins/entrypoint-validation.d.ts +6 -0
  169. package/dist/src/runtime/plugins/entrypoint-validation.js +74 -0
  170. package/dist/src/runtime/plugins/loader.js +11 -123
  171. package/dist/src/runtime/plugins/manifest-discovery.d.ts +4 -1
  172. package/dist/src/runtime/plugins/manifest-discovery.js +8 -1
  173. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  174. package/dist/src/runtime/plugins/manifest-validator.js +7 -1
  175. package/dist/src/runtime/plugins/runtime-capability-plugins.d.ts +4 -0
  176. package/dist/src/runtime/plugins/runtime-capability-plugins.js +7 -0
  177. package/dist/src/runtime/plugins/selection.d.ts +14 -0
  178. package/dist/src/runtime/plugins/selection.js +38 -0
  179. package/dist/src/runtime/ports.d.ts +8 -2
  180. package/dist/src/runtime/projects/contracts.d.ts +40 -0
  181. package/dist/src/runtime/projects/contracts.js +10 -0
  182. package/dist/src/runtime/projects/folders.d.ts +7 -0
  183. package/dist/src/runtime/projects/folders.js +110 -0
  184. package/dist/src/runtime/projects/repository.d.ts +10 -0
  185. package/dist/src/runtime/projects/repository.js +54 -0
  186. package/dist/src/runtime/projects/service.d.ts +3 -0
  187. package/dist/src/runtime/projects/service.js +34 -0
  188. package/dist/src/runtime/projects/session-paths.d.ts +5 -0
  189. package/dist/src/runtime/projects/session-paths.js +13 -0
  190. package/dist/src/runtime/request/execution-agent-plan-update.d.ts +4 -0
  191. package/dist/src/runtime/request/execution-agent-plan-update.js +13 -0
  192. package/dist/src/runtime/request/execution-agent-root-execution.js +9 -1
  193. package/dist/src/runtime/request/handler.js +9 -2
  194. package/dist/src/runtime/request/input.d.ts +2 -1
  195. package/dist/src/runtime/request/input.js +1 -6
  196. package/dist/src/runtime/request/role-call-planner-events.js +4 -0
  197. package/dist/src/runtime/request/role-executor-composition.js +9 -1
  198. package/dist/src/runtime/request/root-contract.d.ts +6 -1
  199. package/dist/src/runtime/request/root-execution-kernel.js +17 -0
  200. package/dist/src/runtime/request/root-plan-event-projection.d.ts +3 -0
  201. package/dist/src/runtime/request/root-plan-event-projection.js +32 -0
  202. package/dist/src/runtime/request/root-plan-update.d.ts +15 -0
  203. package/dist/src/runtime/request/root-plan-update.js +20 -0
  204. package/dist/src/runtime/request/worker-capability-composition.d.ts +1 -0
  205. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  206. package/dist/src/runtime/runtime-environment.d.ts +1 -0
  207. package/dist/src/runtime/runtime-environment.js +2 -0
  208. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +32 -0
  209. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +106 -0
  210. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.d.ts +5 -0
  211. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.js +40 -0
  212. package/dist/src/runtime/steps/auditor-decision/audit-input-state.d.ts +12 -0
  213. package/dist/src/runtime/steps/auditor-decision/audit-input-state.js +101 -0
  214. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +31 -16
  215. package/dist/src/runtime/steps/auditor-decision/contracts.js +3 -3
  216. package/dist/src/runtime/steps/auditor-decision/evidence-binding.d.ts +5 -0
  217. package/dist/src/runtime/steps/auditor-decision/evidence-binding.js +43 -0
  218. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.d.ts +2 -0
  219. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +71 -0
  220. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +13 -0
  221. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +89 -0
  222. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +10 -0
  223. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +56 -0
  224. package/dist/src/runtime/steps/auditor-decision/evidence-selection.d.ts +9 -0
  225. package/dist/src/runtime/steps/auditor-decision/evidence-selection.js +71 -0
  226. package/dist/src/runtime/steps/auditor-decision/format.js +44 -2
  227. package/dist/src/runtime/steps/auditor-decision/index.d.ts +3 -0
  228. package/dist/src/runtime/steps/auditor-decision/index.js +3 -0
  229. package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -2
  230. package/dist/src/runtime/steps/auditor-decision/input.js +64 -20
  231. package/dist/src/runtime/steps/auditor-decision/parser.js +38 -23
  232. package/dist/src/runtime/steps/auditor-decision/projection.js +49 -99
  233. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  234. package/dist/src/runtime/steps/auditor-decision/prompt.js +9 -4
  235. package/dist/src/runtime/steps/auditor-decision/run.js +79 -47
  236. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +8 -1
  237. package/dist/src/runtime/steps/execution-agent/contracts.js +2 -0
  238. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +4 -0
  239. package/dist/src/runtime/steps/execution-agent/format.js +4 -3
  240. package/dist/src/runtime/steps/execution-agent/input.js +10 -11
  241. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  242. package/dist/src/runtime/steps/execution-agent/prompt.js +11 -4
  243. package/dist/src/runtime/steps/execution-agent/state-context.js +10 -0
  244. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +18 -0
  245. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +86 -0
  246. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.d.ts +2 -0
  247. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.js +38 -0
  248. package/dist/src/runtime/steps/execution-agent/work-plan-sources.d.ts +6 -0
  249. package/dist/src/runtime/steps/execution-agent/work-plan-sources.js +54 -0
  250. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +40 -0
  251. package/dist/src/runtime/steps/planner-decision/capability-brief.js +47 -0
  252. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -2
  253. package/dist/src/runtime/steps/planner-decision/input.js +23 -13
  254. package/dist/src/runtime/steps/planner-decision/prompt.js +2 -2
  255. package/dist/src/runtime/steps/planner-decision/run.js +11 -7
  256. package/dist/src/runtime/steps/planner-graph/parser.js +0 -11
  257. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -1
  258. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.d.ts +10 -0
  259. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.js +39 -0
  260. package/dist/src/runtime/steps/supervisor-decision/run.js +2 -1
  261. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -1
  262. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +20 -1
  263. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +1 -1
  264. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +6 -6
  265. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +2 -1
  266. package/dist/src/sessions/project-binding.d.ts +12 -0
  267. package/dist/src/sessions/project-binding.js +49 -0
  268. package/dist/src/sessions/record/projection.d.ts +6 -1
  269. package/dist/src/sessions/record/projection.js +1 -0
  270. package/dist/src/sessions/session-service.d.ts +2 -1
  271. package/dist/src/sessions/session-service.js +11 -1
  272. package/dist/src/sessions/types.d.ts +7 -0
  273. package/dist/src/web-ui/app/ARCHITECTURE.md +121 -1
  274. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  275. package/dist/src/web-ui/app/app-dom.js +3 -0
  276. package/dist/src/web-ui/app/app-state.js +38 -0
  277. package/dist/src/web-ui/app/app.js +76 -67
  278. package/dist/src/web-ui/app/components/config-workspace/config-model.js +23 -3
  279. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +2 -0
  280. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +2 -0
  281. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +6 -0
  282. package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +27 -0
  283. package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +28 -0
  284. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +5 -0
  285. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +23 -3
  286. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +26 -8
  287. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +56 -0
  288. package/dist/src/web-ui/app/components/config-workspace.js +11 -0
  289. package/dist/src/web-ui/app/components/conversation-activity.d.ts +6 -0
  290. package/dist/src/web-ui/app/components/conversation-activity.js +10 -2
  291. package/dist/src/web-ui/app/components/conversation-file-action.js +33 -0
  292. package/dist/src/web-ui/app/components/conversation-file-focus.d.ts +12 -0
  293. package/dist/src/web-ui/app/components/conversation-file-focus.js +149 -0
  294. package/dist/src/web-ui/app/components/conversation-file-preview.d.ts +23 -0
  295. package/dist/src/web-ui/app/components/conversation-file-preview.js +247 -0
  296. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +6 -0
  297. package/dist/src/web-ui/app/components/conversation-role-cards.js +10 -2
  298. package/dist/src/web-ui/app/components/conversation-tool-evidence.d.ts +9 -0
  299. package/dist/src/web-ui/app/components/conversation-tool-evidence.js +129 -0
  300. package/dist/src/web-ui/app/components/conversation-tools.d.ts +6 -0
  301. package/dist/src/web-ui/app/components/conversation-tools.js +25 -105
  302. package/dist/src/web-ui/app/components/conversation-view.js +10 -1
  303. package/dist/src/web-ui/app/components/dashboard/workspace.js +19 -7
  304. package/dist/src/web-ui/app/components/model-setup/rendering.js +99 -0
  305. package/dist/src/web-ui/app/components/model-setup/save-flow.js +111 -0
  306. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
  307. package/dist/src/web-ui/app/components/model-setup/validation.js +125 -0
  308. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +44 -0
  309. package/dist/src/web-ui/app/components/model-setup/wizard.js +370 -0
  310. package/dist/src/web-ui/app/components/plugins/manager.js +200 -0
  311. package/dist/src/web-ui/app/components/plugins/rendering.js +124 -0
  312. package/dist/src/web-ui/app/components/plugins/view-state.js +123 -0
  313. package/dist/src/web-ui/app/components/project-creation.js +119 -0
  314. package/dist/src/web-ui/app/components/project-session-groups.js +95 -0
  315. package/dist/src/web-ui/app/components/runtime-config-activation.js +83 -0
  316. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.d.ts +9 -0
  317. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.js +198 -0
  318. package/dist/src/web-ui/app/components/runtime-setup/bridge-rendering.js +107 -0
  319. package/dist/src/web-ui/app/components/runtime-setup/commands.js +54 -0
  320. package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +25 -0
  321. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +154 -0
  322. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +71 -0
  323. package/dist/src/web-ui/app/components/runtime-setup/context-window.js +18 -0
  324. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.d.ts +15 -0
  325. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +87 -0
  326. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +30 -0
  327. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +57 -0
  328. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +284 -0
  329. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +117 -0
  330. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +173 -0
  331. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +141 -0
  332. package/dist/src/web-ui/app/components/runtime-setup/validation.js +69 -0
  333. package/dist/src/web-ui/app/components/runtime-setup/view-state.js +58 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/wizard-shell.js +27 -0
  335. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +66 -5
  336. package/dist/src/web-ui/app/components/runtime-setup-guide.js +415 -461
  337. package/dist/src/web-ui/app/components/system-host/download.js +38 -0
  338. package/dist/src/web-ui/app/components/system-host/manager.js +249 -0
  339. package/dist/src/web-ui/app/components/system-host/rendering.js +88 -0
  340. package/dist/src/web-ui/app/components/system-host/setup-notice.js +87 -0
  341. package/dist/src/web-ui/app/components/system-host/visibility.js +35 -0
  342. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +4 -0
  343. package/dist/src/web-ui/app/components/tool-approval-card.js +15 -0
  344. package/dist/src/web-ui/app/configuration-environment-refresh.js +118 -0
  345. package/dist/src/web-ui/app/configuration-feature.js +125 -4
  346. package/dist/src/web-ui/app/controllers/app-event-bindings.js +2 -0
  347. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +1 -0
  348. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +4 -3
  349. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.d.ts +24 -0
  350. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.js +158 -0
  351. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.d.ts +19 -0
  352. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.js +63 -0
  353. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -0
  354. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +2 -0
  355. package/dist/src/web-ui/app/controllers/conversation-view-feature.js +28 -0
  356. package/dist/src/web-ui/app/controllers/dashboard-controller.js +17 -0
  357. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +45 -0
  358. package/dist/src/web-ui/app/controllers/projects-controller.js +278 -0
  359. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +3 -0
  360. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +13 -6
  361. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -1
  362. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +11 -95
  363. package/dist/src/web-ui/app/controllers/session-controller.js +64 -57
  364. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.d.ts +20 -0
  365. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +116 -0
  366. package/dist/src/web-ui/app/dashboard-feature.js +32 -10
  367. package/dist/src/web-ui/app/index.html +44 -7
  368. package/dist/src/web-ui/app/lib/conversation-file-preview.d.ts +12 -0
  369. package/dist/src/web-ui/app/lib/conversation-file-reference.d.ts +30 -0
  370. package/dist/src/web-ui/app/lib/conversation-file-reference.js +66 -0
  371. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +2 -0
  372. package/dist/src/web-ui/app/lib/tool-activity-event.js +18 -6
  373. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +2 -0
  374. package/dist/src/web-ui/app/lib/tool-activity-model.js +4 -2
  375. package/dist/src/web-ui/app/lib/tool-permission-mode.d.ts +16 -0
  376. package/dist/src/web-ui/app/lib/tool-permission-mode.js +60 -0
  377. package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +102 -0
  378. package/dist/src/web-ui/app/projects-feature.js +134 -0
  379. package/dist/src/web-ui/app/runtime-onboarding-feature.d.ts +34 -0
  380. package/dist/src/web-ui/app/runtime-onboarding-feature.js +92 -0
  381. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.d.ts +5 -0
  382. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.js +13 -0
  383. package/dist/src/web-ui/app/services/client-preferences.d.ts +24 -0
  384. package/dist/src/web-ui/app/services/client-preferences.js +32 -19
  385. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +46 -0
  386. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.d.ts +28 -0
  387. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.js +75 -0
  388. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +19 -0
  389. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +34 -0
  390. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +27 -0
  391. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +52 -0
  392. package/dist/src/web-ui/app/services/runtime-web-client.js +35 -4
  393. package/dist/src/web-ui/app/styles/13-projects.css +272 -0
  394. package/dist/src/web-ui/app/styles/18-dashboard.css +0 -5
  395. package/dist/src/web-ui/app/styles/19-runtime-setup.css +411 -0
  396. package/dist/src/web-ui/app/styles/20-chat-composer.css +0 -384
  397. package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +254 -0
  398. package/dist/src/web-ui/app/styles/37-runtime-activation.css +26 -0
  399. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +1 -10
  400. package/dist/src/web-ui/app/styles/41-plugin-management.css +351 -0
  401. package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +179 -0
  402. package/dist/src/web-ui/app/styles/43-model-setup.css +73 -0
  403. package/dist/src/web-ui/app/styles/44-model-provider-cards.css +63 -0
  404. package/dist/src/web-ui/app/styles/45-bridge-setup.css +44 -0
  405. package/dist/src/web-ui/app/styles/46-system-host.css +132 -0
  406. package/dist/src/web-ui/app/styles.css +10 -0
  407. package/dist/src/web-ui/config-dashboard-backend.d.ts +5 -0
  408. package/dist/src/web-ui/config-dashboard-backend.js +94 -114
  409. package/dist/src/web-ui/config-dashboard-model-identity.d.ts +7 -0
  410. package/dist/src/web-ui/config-dashboard-model-identity.js +45 -0
  411. package/dist/src/web-ui/config-dashboard-save-transaction.d.ts +5 -0
  412. package/dist/src/web-ui/config-dashboard-save-transaction.js +21 -0
  413. package/dist/src/web-ui/environment-config.d.ts +17 -0
  414. package/dist/src/web-ui/environment-config.js +60 -0
  415. package/dist/src/web-ui/forwarded-loopback-policy.d.ts +2 -0
  416. package/dist/src/web-ui/forwarded-loopback-policy.js +14 -0
  417. package/dist/src/web-ui/local-runtime/api-router.d.ts +7 -0
  418. package/dist/src/web-ui/local-runtime/api-router.js +136 -12
  419. package/dist/src/web-ui/local-runtime/config-mutation-request.d.ts +8 -0
  420. package/dist/src/web-ui/local-runtime/config-mutation-request.js +55 -0
  421. package/dist/src/web-ui/local-runtime/configuration-activation-environments.d.ts +22 -0
  422. package/dist/src/web-ui/local-runtime/configuration-activation-environments.js +106 -0
  423. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +7 -0
  424. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +36 -0
  425. package/dist/src/web-ui/local-runtime/configuration-activation.d.ts +20 -0
  426. package/dist/src/web-ui/local-runtime/configuration-activation.js +107 -0
  427. package/dist/src/web-ui/local-runtime/contracts.d.ts +8 -0
  428. package/dist/src/web-ui/local-runtime/conversation-file-access.d.ts +30 -0
  429. package/dist/src/web-ui/local-runtime/conversation-file-access.js +131 -0
  430. package/dist/src/web-ui/local-runtime/conversation-file-content.d.ts +21 -0
  431. package/dist/src/web-ui/local-runtime/conversation-file-content.js +75 -0
  432. package/dist/src/web-ui/local-runtime/conversation-file-format.d.ts +12 -0
  433. package/dist/src/web-ui/local-runtime/conversation-file-format.js +87 -0
  434. package/dist/src/web-ui/local-runtime/conversation-file-native-open.d.ts +10 -0
  435. package/dist/src/web-ui/local-runtime/conversation-file-native-open.js +94 -0
  436. package/dist/src/web-ui/local-runtime/conversation-file-native-request.d.ts +4 -0
  437. package/dist/src/web-ui/local-runtime/conversation-file-native-request.js +72 -0
  438. package/dist/src/web-ui/local-runtime/conversation-file-routes.d.ts +11 -0
  439. package/dist/src/web-ui/local-runtime/conversation-file-routes.js +105 -0
  440. package/dist/src/web-ui/local-runtime/conversation-file-target.d.ts +14 -0
  441. package/dist/src/web-ui/local-runtime/conversation-file-target.js +158 -0
  442. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +14 -0
  443. package/dist/src/web-ui/local-runtime/environment-registry.js +121 -6
  444. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +2 -1
  445. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +15 -10
  446. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +17 -0
  447. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +45 -0
  448. package/dist/src/web-ui/local-runtime/model-setup-identity.d.ts +16 -0
  449. package/dist/src/web-ui/local-runtime/model-setup-identity.js +20 -0
  450. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +24 -0
  451. package/dist/src/web-ui/local-runtime/model-setup-input.js +107 -0
  452. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +17 -0
  453. package/dist/src/web-ui/local-runtime/model-setup-provider.js +68 -0
  454. package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +14 -0
  455. package/dist/src/web-ui/local-runtime/model-setup-retry.js +47 -0
  456. package/dist/src/web-ui/local-runtime/model-setup-routes.d.ts +12 -0
  457. package/dist/src/web-ui/local-runtime/model-setup-routes.js +50 -0
  458. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +30 -0
  459. package/dist/src/web-ui/local-runtime/model-setup-service.js +93 -0
  460. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +5 -0
  461. package/dist/src/web-ui/local-runtime/model-setup-validation.js +33 -0
  462. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +14 -0
  463. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +50 -0
  464. package/dist/src/web-ui/local-runtime/project-routes.d.ts +17 -0
  465. package/dist/src/web-ui/local-runtime/project-routes.js +93 -0
  466. package/dist/src/web-ui/local-runtime/provider-credential-identity.d.ts +3 -0
  467. package/dist/src/web-ui/local-runtime/provider-credential-identity.js +18 -0
  468. package/dist/src/web-ui/local-runtime/request-execution.d.ts +1 -0
  469. package/dist/src/web-ui/local-runtime/request-execution.js +8 -0
  470. package/dist/src/web-ui/local-runtime/runtime-availability.js +36 -7
  471. package/dist/src/web-ui/local-runtime/runtime-setup-completion.d.ts +13 -0
  472. package/dist/src/web-ui/local-runtime/runtime-setup-completion.js +28 -0
  473. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +13 -0
  474. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +110 -0
  475. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.d.ts +4 -0
  476. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +21 -0
  477. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +14 -0
  478. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +148 -0
  479. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.d.ts +7 -0
  480. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.js +18 -0
  481. package/dist/src/web-ui/local-runtime/runtime-setup-draft.d.ts +21 -0
  482. package/dist/src/web-ui/local-runtime/runtime-setup-draft.js +105 -0
  483. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.d.ts +8 -0
  484. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.js +40 -0
  485. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.d.ts +1 -0
  486. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.js +27 -0
  487. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +19 -0
  488. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +82 -0
  489. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.d.ts +7 -0
  490. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.js +35 -0
  491. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.d.ts +4 -0
  492. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.js +23 -0
  493. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.d.ts +11 -0
  494. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.js +31 -0
  495. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +11 -0
  496. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +60 -0
  497. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.d.ts +8 -0
  498. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.js +77 -0
  499. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +35 -0
  500. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +56 -0
  501. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.d.ts +17 -0
  502. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +229 -0
  503. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +65 -0
  504. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +195 -0
  505. package/dist/src/web-ui/local-runtime/runtime-setup-validation.d.ts +8 -0
  506. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +35 -0
  507. package/dist/src/web-ui/local-runtime/saved-model-catalog.d.ts +3 -0
  508. package/dist/src/web-ui/local-runtime/saved-model-catalog.js +20 -0
  509. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +8 -0
  510. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +71 -0
  511. package/dist/src/web-ui/local-runtime/setup-embedding-provider.d.ts +13 -0
  512. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +114 -0
  513. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +12 -0
  514. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +53 -0
  515. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +32 -0
  516. package/dist/src/web-ui/local-runtime/setup-embedding-service.js +59 -0
  517. package/dist/src/web-ui/local-runtime-backend.d.ts +1 -0
  518. package/dist/src/web-ui/local-runtime-backend.js +3 -0
  519. package/dist/src/web-ui/plugin-capability-selection.d.ts +14 -0
  520. package/dist/src/web-ui/plugin-capability-selection.js +48 -0
  521. package/dist/src/web-ui/plugin-management-catalog.d.ts +26 -0
  522. package/dist/src/web-ui/plugin-management-catalog.js +56 -0
  523. package/dist/src/web-ui/plugin-management-selection.d.ts +16 -0
  524. package/dist/src/web-ui/plugin-management-selection.js +71 -0
  525. package/dist/src/web-ui/plugin-management-service.d.ts +29 -0
  526. package/dist/src/web-ui/plugin-management-service.js +150 -0
  527. package/dist/src/web-ui/request-authority.d.ts +8 -0
  528. package/dist/src/web-ui/request-authority.js +129 -0
  529. package/dist/src/web-ui/runtime-setup-gateway-address.d.ts +3 -0
  530. package/dist/src/web-ui/runtime-setup-gateway-address.js +26 -0
  531. package/dist/src/web-ui/runtime-setup-gateway.d.ts +29 -0
  532. package/dist/src/web-ui/runtime-setup-gateway.js +177 -0
  533. package/dist/src/web-ui/runtime-setup-shutdown.d.ts +2 -0
  534. package/dist/src/web-ui/runtime-setup-shutdown.js +20 -0
  535. package/dist/src/web-ui/server.d.ts +7 -14
  536. package/dist/src/web-ui/server.js +53 -63
  537. package/dist/src/web-ui/session-read-state/service.d.ts +12 -2
  538. package/dist/src/web-ui/system-host-service.d.ts +19 -0
  539. package/dist/src/web-ui/system-host-service.js +159 -0
  540. package/dist/src/web-ui/system-host-setup/companion-bundle.d.ts +2 -0
  541. package/dist/src/web-ui/system-host-setup/companion-bundle.js +12 -0
  542. package/dist/src/web-ui/system-host-setup/companion-macos.d.ts +2 -0
  543. package/dist/src/web-ui/system-host-setup/companion-macos.js +74 -0
  544. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +2 -0
  545. package/dist/src/web-ui/system-host-setup/companion-windows.js +105 -0
  546. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +18 -0
  547. package/dist/src/web-ui/system-host-setup/installer-contract.js +51 -0
  548. package/dist/src/web-ui/system-host-setup/installers.d.ts +6 -0
  549. package/dist/src/web-ui/system-host-setup/installers.js +30 -0
  550. package/dist/src/web-ui/system-host-setup/native-authorization.d.ts +3 -0
  551. package/dist/src/web-ui/system-host-setup/native-authorization.js +11 -0
  552. package/dist/src/web-ui/system-host-setup/node-distribution.d.ts +19 -0
  553. package/dist/src/web-ui/system-host-setup/node-distribution.js +9 -0
  554. package/dist/src/web-ui/system-host-setup/readiness.d.ts +18 -0
  555. package/dist/src/web-ui/system-host-setup/readiness.js +70 -0
  556. package/dist/src/web-ui/system-host-setup/routes.d.ts +20 -0
  557. package/dist/src/web-ui/system-host-setup/routes.js +121 -0
  558. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.d.ts +2 -0
  559. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.js +17 -0
  560. package/dist/src/web-ui/system-host-setup/wsl-interop-config.d.ts +3 -0
  561. package/dist/src/web-ui/system-host-setup/wsl-interop-config.js +67 -0
  562. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.d.ts +1 -0
  563. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.js +49 -0
  564. package/dist/src/web-ui/system-host-upgrade-authority.d.ts +5 -0
  565. package/dist/src/web-ui/system-host-upgrade-authority.js +13 -0
  566. package/docs/architecture.md +6 -1
  567. package/docs/installation.md +53 -17
  568. package/docs/known-limitations.md +14 -0
  569. package/docs/plugins.md +124 -19
  570. package/docs/projects-and-full-plus.md +218 -0
  571. package/docs/runtime-invariant-coverage.md +6 -3
  572. package/docs/runtime-prompt-policy-contracts.md +37 -5
  573. package/docs/runtime-public-contracts.md +17 -0
  574. package/package.json +5 -2
  575. package/plugins/exec/plugin.json +30 -9
  576. package/plugins/exec/skills/exec_process_skill/SKILL.md +1 -0
  577. package/plugins/exec/skills/exec_skill/SKILL.md +9 -10
  578. package/plugins/exec/source/handlers.ts +4 -38
  579. package/plugins/exec/source/paths.ts +53 -49
  580. package/plugins/exec/source/types.ts +6 -4
  581. package/plugins/exec/source/validation.ts +33 -198
  582. package/plugins/exec/src/index.cjs +62 -204
  583. package/plugins/filesystem/plugin.json +1 -1
  584. package/plugins/filesystem/skills/dev_view_skill/SKILL.md +7 -0
  585. package/plugins/filesystem/source/atomic-write.ts +6 -3
  586. package/plugins/filesystem/source/dev-view.ts +2 -1
  587. package/plugins/filesystem/source/directory-authority-write.ts +4 -0
  588. package/plugins/filesystem/source/edit-file.ts +3 -0
  589. package/plugins/filesystem/source/file-output-presentation.ts +42 -0
  590. package/plugins/filesystem/source/mutation-parent.ts +18 -9
  591. package/plugins/filesystem/source/view-locator.ts +141 -0
  592. package/plugins/filesystem/source/view-window.ts +12 -25
  593. package/plugins/filesystem/source/write-file.ts +8 -0
  594. package/plugins/filesystem/src/index.cjs +162 -35
  595. package/plugins/system/plugin.json +374 -0
  596. package/plugins/system/skills/system_actions/SKILL.md +31 -0
  597. package/plugins/system/source/application-catalog.ts +237 -0
  598. package/plugins/system/source/application-launch.ts +113 -0
  599. package/plugins/system/source/application-observation.ts +78 -0
  600. package/plugins/system/source/commands.ts +106 -0
  601. package/plugins/system/source/companion/autostart.ts +185 -0
  602. package/plugins/system/source/companion/broker-client.ts +183 -0
  603. package/plugins/system/source/companion/broker-location.ts +89 -0
  604. package/plugins/system/source/companion/broker-server.ts +169 -0
  605. package/plugins/system/source/companion/connection.ts +211 -0
  606. package/plugins/system/source/companion/liveness.ts +23 -0
  607. package/plugins/system/source/companion/native-address.ts +55 -0
  608. package/plugins/system/source/companion/native-identity.ts +26 -0
  609. package/plugins/system/source/companion/native-messages.ts +100 -0
  610. package/plugins/system/source/companion/native-session.ts +268 -0
  611. package/plugins/system/source/companion/native-state.ts +135 -0
  612. package/plugins/system/source/companion/native-supervisor.ts +98 -0
  613. package/plugins/system/source/companion/pairing-store.ts +110 -0
  614. package/plugins/system/source/companion/private-store.ts +58 -0
  615. package/plugins/system/source/companion/process-owner-identity.ts +190 -0
  616. package/plugins/system/source/companion/protocol.ts +108 -0
  617. package/plugins/system/source/contracts.ts +44 -0
  618. package/plugins/system/source/elevation.ts +88 -0
  619. package/plugins/system/source/handlers.ts +120 -0
  620. package/plugins/system/source/host-dispatch.ts +106 -0
  621. package/plugins/system/source/host-evidence.ts +72 -0
  622. package/plugins/system/source/host-observation.ts +66 -0
  623. package/plugins/system/source/index.ts +8 -0
  624. package/plugins/system/source/process-result.ts +111 -0
  625. package/plugins/system/source/process-runner.ts +104 -0
  626. package/plugins/system/source/request-system-modules.ts +117 -0
  627. package/plugins/system/source/request-target-snapshot.ts +163 -0
  628. package/plugins/system/source/target-observation.ts +43 -0
  629. package/plugins/system/source/targets.ts +147 -0
  630. package/plugins/system/src/index.cjs +1730 -0
  631. package/src/runtime/README.md +36 -8
  632. package/src/runtime/local-host/README.md +7 -0
  633. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +0 -14
  634. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +0 -87
@@ -0,0 +1,146 @@
1
+ import { closeSync, constants, fstatSync, lstatSync, openSync, readSync, realpathSync, statSync, } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { createFileOutputRootId, hasStableFileOutputRootIdentity, parseToolFileOutputRootIdentity, } from "../../capabilities/file-output-presentation.js";
4
+ import { initializeFileOutputRootMarker } from "./file-output-root-marker-creation.js";
5
+ const markerName = ".abot-file-output-root";
6
+ const markerPrefix = "abot-file-output-root-v1\n";
7
+ const markerSize = Buffer.byteLength(markerPrefix) + 64 + 1;
8
+ function rootIdentityUnavailable() {
9
+ throw new Error("Stable file-output root identity is unavailable.");
10
+ }
11
+ function sameRootInstance(left, right) {
12
+ if (left.dev !== right.dev)
13
+ return false;
14
+ if (left.ino !== right.ino)
15
+ return false;
16
+ return left.birthtimeNs === right.birthtimeNs;
17
+ }
18
+ function matchesCommittedRootIdentity(opened, expected) {
19
+ if (expected === undefined)
20
+ return true;
21
+ const identity = parseToolFileOutputRootIdentity(expected);
22
+ if (!identity)
23
+ return false;
24
+ if (opened.dev.toString() !== identity.device)
25
+ return false;
26
+ if (opened.ino.toString() !== identity.inode)
27
+ return false;
28
+ return opened.birthtimeNs.toString() === identity.birthtimeNs;
29
+ }
30
+ function sameMarkerVersion(left, right) {
31
+ if (!sameRootInstance(left, right))
32
+ return false;
33
+ if (left.size !== right.size)
34
+ return false;
35
+ if (left.mtimeNs !== right.mtimeNs)
36
+ return false;
37
+ return left.ctimeNs === right.ctimeNs;
38
+ }
39
+ function canonicalRootIdentity(canonicalRoot) {
40
+ if (realpathSync(canonicalRoot) !== canonicalRoot)
41
+ rootIdentityUnavailable();
42
+ const identity = statSync(canonicalRoot, { bigint: true });
43
+ if (!identity.isDirectory())
44
+ rootIdentityUnavailable();
45
+ return identity;
46
+ }
47
+ function canReadRootMarker(identity) {
48
+ if (!identity.isFile())
49
+ return false;
50
+ if (identity.nlink !== 1n)
51
+ return false;
52
+ return identity.size === BigInt(markerSize);
53
+ }
54
+ function parseRootMarker(bytes) {
55
+ const text = bytes.toString("utf8");
56
+ if (!text.startsWith(markerPrefix))
57
+ rootIdentityUnavailable();
58
+ const token = text.slice(markerPrefix.length, -1);
59
+ if (!/^[a-f0-9]{64}$/u.test(token))
60
+ rootIdentityUnavailable();
61
+ if (!text.endsWith("\n"))
62
+ rootIdentityUnavailable();
63
+ return token;
64
+ }
65
+ function requireSafeRootMarkerOpen() {
66
+ if (typeof constants.O_NOFOLLOW !== "number")
67
+ rootIdentityUnavailable();
68
+ if (typeof constants.O_NONBLOCK !== "number")
69
+ rootIdentityUnavailable();
70
+ if (typeof constants.O_DIRECTORY !== "number")
71
+ rootIdentityUnavailable();
72
+ }
73
+ function readRootMarker(markerPath) {
74
+ requireSafeRootMarkerOpen();
75
+ const handle = openSync(markerPath, constants.O_RDONLY | constants.O_NOFOLLOW | constants.O_NONBLOCK);
76
+ try {
77
+ const before = fstatSync(handle, { bigint: true });
78
+ if (!canReadRootMarker(before))
79
+ rootIdentityUnavailable();
80
+ const bytes = Buffer.alloc(markerSize + 1);
81
+ const length = readSync(handle, bytes, 0, bytes.length, 0);
82
+ if (length !== markerSize)
83
+ rootIdentityUnavailable();
84
+ const after = fstatSync(handle, { bigint: true });
85
+ if (!sameMarkerVersion(before, after))
86
+ rootIdentityUnavailable();
87
+ const current = lstatSync(markerPath, { bigint: true });
88
+ if (!canReadRootMarker(current))
89
+ rootIdentityUnavailable();
90
+ if (!sameMarkerVersion(after, current))
91
+ rootIdentityUnavailable();
92
+ return parseRootMarker(bytes.subarray(0, length));
93
+ }
94
+ finally {
95
+ closeSync(handle);
96
+ }
97
+ }
98
+ function hasFilesystemErrorCode(error, code) {
99
+ if (!(error instanceof Error))
100
+ return false;
101
+ return error.code === code;
102
+ }
103
+ function captureRootMarker(markerPath, canonicalRoot, rootHandle) {
104
+ try {
105
+ return readRootMarker(markerPath);
106
+ }
107
+ catch (error) {
108
+ if (!hasFilesystemErrorCode(error, "ENOENT"))
109
+ throw error;
110
+ }
111
+ initializeFileOutputRootMarker(canonicalRoot, rootHandle);
112
+ return readRootMarker(markerPath);
113
+ }
114
+ function rootBoundIdentity(location, canonicalRoot, readMarker, expectedIdentity) {
115
+ requireSafeRootMarkerOpen();
116
+ const handle = openSync(canonicalRoot, constants.O_RDONLY |
117
+ constants.O_DIRECTORY |
118
+ constants.O_NOFOLLOW |
119
+ constants.O_NONBLOCK);
120
+ try {
121
+ const before = fstatSync(handle, { bigint: true });
122
+ if (!hasStableFileOutputRootIdentity(before))
123
+ rootIdentityUnavailable();
124
+ if (!matchesCommittedRootIdentity(before, expectedIdentity))
125
+ rootIdentityUnavailable();
126
+ const current = canonicalRootIdentity(canonicalRoot);
127
+ if (!sameRootInstance(before, current))
128
+ rootIdentityUnavailable();
129
+ const token = readMarker(join(canonicalRoot, markerName), canonicalRoot, handle);
130
+ const after = canonicalRootIdentity(canonicalRoot);
131
+ if (!sameRootInstance(before, after))
132
+ rootIdentityUnavailable();
133
+ return createFileOutputRootId(location, canonicalRoot, after, token);
134
+ }
135
+ finally {
136
+ closeSync(handle);
137
+ }
138
+ }
139
+ /** Host presentation capture only. Creates a marker once; never overwrites it. */
140
+ export function captureFileOutputRootId(location, canonicalRoot, expectedIdentity) {
141
+ return rootBoundIdentity(location, canonicalRoot, captureRootMarker, expectedIdentity);
142
+ }
143
+ /** Preview authorization is read-only: missing or invalid markers stay invalid. */
144
+ export function readFileOutputRootId(location, canonicalRoot) {
145
+ return rootBoundIdentity(location, canonicalRoot, readRootMarker);
146
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The isolated process pins cwd to the inherited directory authority before
3
+ * creating the fixed marker name. No pathname-based write happens in the host.
4
+ */
5
+ export declare function initializeFileOutputRootMarker(canonicalRoot: string, rootHandle: number): void;
@@ -0,0 +1,63 @@
1
+ import { spawnSync } from "node:child_process";
2
+ import { directoryAuthorityScript } from "../../shared/directory-authority/bootstrap.js";
3
+ import { authorityEnvironment, decodeAuthorityResult, encodeAuthorityRequest, } from "../../shared/directory-authority/protocol.js";
4
+ /** Serialized trusted task; cwd is verified against the inherited root fd. */
5
+ function createMarkerInHeldDirectory() {
6
+ const fs = require("node:fs");
7
+ const { randomBytes } = require("node:crypto");
8
+ const name = ".abot-file-output-root";
9
+ const { constants } = fs;
10
+ function isExistingMarker(error) {
11
+ if (!(error instanceof Error))
12
+ return false;
13
+ if (!("code" in error))
14
+ return false;
15
+ return error.code === "EEXIST";
16
+ }
17
+ let handle;
18
+ try {
19
+ handle = fs.openSync(name, constants.O_WRONLY |
20
+ constants.O_CREAT |
21
+ constants.O_EXCL |
22
+ constants.O_NOFOLLOW, 0o600);
23
+ }
24
+ catch (error) {
25
+ if (isExistingMarker(error))
26
+ return;
27
+ throw error;
28
+ }
29
+ try {
30
+ const token = randomBytes(32).toString("hex");
31
+ fs.writeFileSync(handle, `abot-file-output-root-v1\n${token}\n`, "ascii");
32
+ }
33
+ finally {
34
+ fs.closeSync(handle);
35
+ }
36
+ }
37
+ /**
38
+ * The isolated process pins cwd to the inherited directory authority before
39
+ * creating the fixed marker name. No pathname-based write happens in the host.
40
+ */
41
+ export function initializeFileOutputRootMarker(canonicalRoot, rootHandle) {
42
+ const outputLimit = 4096;
43
+ const result = spawnSync(process.execPath, [
44
+ "--input-type=commonjs",
45
+ "-e",
46
+ directoryAuthorityScript("task", outputLimit, createMarkerInHeldDirectory),
47
+ ], {
48
+ cwd: canonicalRoot,
49
+ env: authorityEnvironment(),
50
+ stdio: ["pipe", "pipe", "pipe", rootHandle],
51
+ input: encodeAuthorityRequest({}),
52
+ encoding: "utf8",
53
+ maxBuffer: outputLimit,
54
+ timeout: 5000,
55
+ killSignal: "SIGKILL",
56
+ windowsHide: true,
57
+ });
58
+ if (result.error)
59
+ throw result.error;
60
+ if (result.status !== 0)
61
+ throw new Error("Root marker creation failed.");
62
+ decodeAuthorityResult(result.stdout);
63
+ }
@@ -7,5 +7,6 @@ import type { ToolRegistry } from "../ports.js";
7
7
  export declare function bindRequestToolRegistry(params: Readonly<{
8
8
  registry: ToolRegistry;
9
9
  modelInvoker: ToolModelInvoker;
10
+ requestWorkingDirectory?: string;
10
11
  requestAttachments?: readonly ToolRequestAttachment[];
11
12
  }>): ToolRegistry;
@@ -1,3 +1,4 @@
1
+ import { bindRequestWorkingDirectory } from "./request-working-directory.js";
1
2
  import { projectAvailableTools } from "./tool-availability.js";
2
3
  /**
3
4
  * Adds trusted request services to an already config-filtered Tool Registry.
@@ -45,13 +46,17 @@ export function bindRequestToolRegistry(params) {
45
46
  ? { requestAttachments: params.requestAttachments }
46
47
  : {}),
47
48
  };
48
- return registry.prepareSharedState
49
+ const prepared = registry.prepareSharedState
49
50
  ? registry.prepareSharedState(requestState)
50
51
  : requestState;
52
+ return bindRequestWorkingDirectory(prepared, params.requestWorkingDirectory);
51
53
  },
52
54
  execute: (call, options) => registry.execute(call, {
53
55
  ...options,
54
56
  modelInvoker: params.modelInvoker,
57
+ ...(params.requestWorkingDirectory !== undefined
58
+ ? { requestWorkingDirectory: params.requestWorkingDirectory }
59
+ : {}),
55
60
  }),
56
61
  });
57
62
  }
@@ -0,0 +1,3 @@
1
+ import type { ToolModuleDeclaration } from "../../capabilities/tool-types.js";
2
+ /** Config selection precedes observation. A plugin may narrow, never add authority. */
3
+ export declare function prepareRequestToolModules(modules: readonly ToolModuleDeclaration[]): Promise<readonly ToolModuleDeclaration[]>;
@@ -0,0 +1,102 @@
1
+ import { isDeepStrictEqual } from "node:util";
2
+ import { validateToolModuleDeclarations } from "../../capabilities/tool-definition-validator.js";
3
+ /** Config selection precedes observation. A plugin may narrow, never add authority. */
4
+ export async function prepareRequestToolModules(modules) {
5
+ const selectedModules = validateToolModuleDeclarations(modules);
6
+ const groups = new Map();
7
+ for (const module of selectedModules) {
8
+ if (!module.prepareRequest)
9
+ continue;
10
+ const selected = groups.get(module.prepareRequest) ?? [];
11
+ selected.push(module);
12
+ groups.set(module.prepareRequest, selected);
13
+ }
14
+ const prepared = new Map();
15
+ await Promise.all([...groups].map(async ([prepare, selected]) => {
16
+ const inputs = Object.freeze(selected.map(captureSelectedModule));
17
+ const output = validateToolModuleDeclarations(await prepare(inputs));
18
+ assertPreparedAuthorityIsNarrowed(selected, output);
19
+ for (const module of output) {
20
+ const { prepareRequest: _prepare, ...bound } = module;
21
+ prepared.set(module.definition.name, bound);
22
+ }
23
+ }));
24
+ return selectedModules.flatMap((module) => {
25
+ if (!module.prepareRequest)
26
+ return [module];
27
+ const bound = prepared.get(module.definition.name);
28
+ return bound ? [bound] : [];
29
+ });
30
+ }
31
+ function captureSelectedModule(module) {
32
+ return Object.freeze({
33
+ definition: freezeContract(structuredClone(module.definition)),
34
+ normalInvocation: freezeContract(structuredClone(module.normalInvocation)),
35
+ implementation: module.implementation,
36
+ ...(module.adapter
37
+ ? { adapter: Object.freeze({ ...module.adapter }) }
38
+ : {}),
39
+ });
40
+ }
41
+ function freezeContract(value) {
42
+ if (value === null || typeof value !== "object")
43
+ return value;
44
+ for (const child of Object.values(value))
45
+ freezeContract(child);
46
+ return Object.freeze(value);
47
+ }
48
+ function assertPreparedAuthorityIsNarrowed(selected, prepared) {
49
+ const byName = new Map(selected.map((module) => [module.definition.name, module]));
50
+ for (const module of prepared) {
51
+ const source = byName.get(module.definition.name);
52
+ if (!source)
53
+ throw new Error("Request preparation returned an unselected tool");
54
+ if (!isDeepStrictEqual(source.definition, module.definition)) {
55
+ throw new Error(`Request preparation changed tool authority: ${module.definition.name}`);
56
+ }
57
+ if (source.normalInvocation.version !== module.normalInvocation.version) {
58
+ throw new Error("Request preparation changed invocation version");
59
+ }
60
+ const operations = new Map(source.normalInvocation.operations.map((operation) => [
61
+ operation.operationId,
62
+ operation,
63
+ ]));
64
+ for (const operation of module.normalInvocation.operations) {
65
+ const original = operations.get(operation.operationId);
66
+ if (!original)
67
+ throw new Error("Request preparation returned an undeclared operation");
68
+ assertOperationAuthorityIsNarrowed(original, operation);
69
+ }
70
+ }
71
+ }
72
+ function assertOperationAuthorityIsNarrowed(original, prepared) {
73
+ const { summary: _summary, input: originalInput, ...originalAuthority } = original;
74
+ const { summary: _preparedSummary, input: preparedInput, ...preparedAuthority } = prepared;
75
+ if (!isDeepStrictEqual(originalAuthority, preparedAuthority)) {
76
+ throw new Error(`Request preparation changed operation authority: ${original.operationId}`);
77
+ }
78
+ const { properties: originalProperties, ...originalShape } = originalInput;
79
+ const { properties: preparedProperties, ...preparedShape } = preparedInput;
80
+ if (!isDeepStrictEqual(originalShape, preparedShape)) {
81
+ throw new Error("Request preparation changed input shape");
82
+ }
83
+ if (!isDeepStrictEqual(Object.keys(originalProperties).sort(), Object.keys(preparedProperties).sort())) {
84
+ throw new Error("Request preparation changed input controls");
85
+ }
86
+ for (const [name, property] of Object.entries(preparedProperties)) {
87
+ if (!isNarrowedInputProperty(originalProperties[name], property)) {
88
+ throw new Error(`Request preparation widened input control: ${name}`);
89
+ }
90
+ }
91
+ }
92
+ function isNarrowedInputProperty(original, prepared) {
93
+ if (!("enum" in original))
94
+ return isDeepStrictEqual(original, prepared);
95
+ if (!("enum" in prepared))
96
+ return false;
97
+ const { enum: originalValues, ...originalShape } = original;
98
+ const { enum: preparedValues, ...preparedShape } = prepared;
99
+ if (!isDeepStrictEqual(originalShape, preparedShape))
100
+ return false;
101
+ return preparedValues.every((value) => originalValues.includes(value));
102
+ }
@@ -0,0 +1,10 @@
1
+ import { type ToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
2
+ import type { RegisteredToolNormalInvocation, ToolDefinition } from "../../capabilities/tool-types.js";
3
+ import type { ToolRegistry } from "../ports.js";
4
+ /** One lazy registration snapshot; any declared restriction wins across projections. */
5
+ export declare function captureRequestPermissionCatalog(registry: ToolRegistry, mode: ToolPermissionMode): Readonly<{
6
+ listDefinitions: () => ToolDefinition[];
7
+ listNormalInvocations: () => readonly RegisteredToolNormalInvocation[] | undefined;
8
+ getDefinition: (name: string) => ToolDefinition | undefined;
9
+ isRequestToolAvailable: (name: string) => boolean;
10
+ }>;
@@ -0,0 +1,50 @@
1
+ import { permitsRequiredToolMode, } from "../../capabilities/tool-permission-mode.js";
2
+ /** One lazy registration snapshot; any declared restriction wins across projections. */
3
+ export function captureRequestPermissionCatalog(registry, mode) {
4
+ const definitions = Object.freeze([...registry.listDefinitions()]);
5
+ const definitionByName = new Map(definitions.map((definition) => [definition.name, definition]));
6
+ let registrations;
7
+ let resolvedRegistrations = false;
8
+ const registeredAllowedNames = new Set();
9
+ const registeredDeniedNames = new Set();
10
+ const permitsDefinition = (definition) => permitsRequiredToolMode(mode, definition.requiredPermissionMode);
11
+ const permitsRegistration = (registration) => {
12
+ const definition = definitionByName.get(registration.toolName);
13
+ if (definition && !permitsDefinition(definition))
14
+ return false;
15
+ return permitsDefinition(registration.definition);
16
+ };
17
+ function resolveRegistrations() {
18
+ if (resolvedRegistrations)
19
+ return registrations;
20
+ const source = registry.listNormalInvocations?.();
21
+ if (source === undefined) {
22
+ resolvedRegistrations = true;
23
+ return undefined;
24
+ }
25
+ for (const registration of source) {
26
+ const names = permitsRegistration(registration)
27
+ ? registeredAllowedNames
28
+ : registeredDeniedNames;
29
+ names.add(registration.toolName);
30
+ }
31
+ registrations = Object.freeze(source.filter(permitsRegistration));
32
+ resolvedRegistrations = true;
33
+ return registrations;
34
+ }
35
+ function isRequestToolAvailable(name) {
36
+ resolveRegistrations();
37
+ if (registeredDeniedNames.has(name))
38
+ return false;
39
+ const definition = definitionByName.get(name);
40
+ if (definition)
41
+ return permitsDefinition(definition);
42
+ return registeredAllowedNames.has(name);
43
+ }
44
+ return Object.freeze({
45
+ listDefinitions: () => definitions.filter(({ name }) => isRequestToolAvailable(name)),
46
+ listNormalInvocations: resolveRegistrations,
47
+ getDefinition: (name) => isRequestToolAvailable(name) ? definitionByName.get(name) : undefined,
48
+ isRequestToolAvailable,
49
+ });
50
+ }
@@ -0,0 +1,4 @@
1
+ import { type ToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
2
+ import type { ToolRegistry } from "../ports.js";
3
+ /** Captures user authority once; all discovery and execution use the same gate. */
4
+ export declare function restrictToolRegistryToRequestMode(registry: ToolRegistry, mode: ToolPermissionMode): ToolRegistry;
@@ -0,0 +1,61 @@
1
+ import { captureRequestPermissionCatalog } from "./request-permission-catalog.js";
2
+ /** Captures user authority once; all discovery and execution use the same gate. */
3
+ export function restrictToolRegistryToRequestMode(registry, mode) {
4
+ const catalog = captureRequestPermissionCatalog(registry, mode);
5
+ const isRequestToolAvailable = catalog.isRequestToolAvailable;
6
+ const rejectUnavailableTool = (tool) => ({
7
+ ok: false,
8
+ tool,
9
+ output: "This tool is unavailable for the captured request permission mode.",
10
+ producedNewInformation: false,
11
+ error: "This tool is unavailable for the captured request permission mode.",
12
+ errorCode: "tool_permission_mode_required",
13
+ });
14
+ const bindAuthority = (state) => ({
15
+ ...state,
16
+ requestContext: Object.freeze({
17
+ agentMode: state?.requestContext?.agentMode ?? "fast",
18
+ ...state?.requestContext,
19
+ toolPermissionMode: mode,
20
+ }),
21
+ });
22
+ const implementations = {};
23
+ for (const [name, implementation] of Object.entries(registry.getImplementations())) {
24
+ if (!isRequestToolAvailable(name))
25
+ continue;
26
+ implementations[name] = (params, context) => implementation(params, {
27
+ ...context,
28
+ sharedState: bindAuthority(context?.sharedState),
29
+ });
30
+ }
31
+ return Object.freeze({
32
+ listDefinitions: catalog.listDefinitions,
33
+ ...(registry.listNormalInvocations
34
+ ? {
35
+ listNormalInvocations: () => catalog.listNormalInvocations(),
36
+ }
37
+ : {}),
38
+ getDefinition: catalog.getDefinition,
39
+ ...(registry.getAdapter
40
+ ? {
41
+ getAdapter: (name) => isRequestToolAvailable(name)
42
+ ? registry.getAdapter(name)
43
+ : undefined,
44
+ }
45
+ : {}),
46
+ hasToolsAvailable: () => catalog.listDefinitions().length > 0 ||
47
+ (catalog.listNormalInvocations()?.length ?? 0) > 0,
48
+ getImplementations: () => ({ ...implementations }),
49
+ prepareSharedState: (state) => bindAuthority(registry.prepareSharedState
50
+ ? registry.prepareSharedState(state)
51
+ : state),
52
+ execute: (call, options) => {
53
+ if (!isRequestToolAvailable(call.tool))
54
+ return Promise.resolve(rejectUnavailableTool(call.tool));
55
+ return registry.execute(call, {
56
+ ...options,
57
+ sharedState: bindAuthority(options?.sharedState),
58
+ });
59
+ },
60
+ });
61
+ }
@@ -1,3 +1,4 @@
1
+ import type { ToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
1
2
  import type { RuntimeConfig, ToolRegistry } from "../ports.js";
2
3
  import type { BoundRequestModelInvocationContext } from "../request/contracts.js";
3
4
  import type { ToolRequestAttachment } from "../../capabilities/tool-types.js";
@@ -8,7 +9,9 @@ import type { ToolRequestAttachment } from "../../capabilities/tool-types.js";
8
9
  */
9
10
  export declare function createRequestRuntimeToolRegistry(params: Readonly<{
10
11
  request: BoundRequestModelInvocationContext;
12
+ toolPermissionMode?: ToolPermissionMode;
11
13
  requestAttachments?: readonly ToolRequestAttachment[];
12
14
  runtimeConfig?: RuntimeConfig;
15
+ requestWorkingDirectory?: string;
13
16
  toolRegistryOverride?: ToolRegistry;
14
17
  }>): ToolRegistry;
@@ -1,3 +1,4 @@
1
+ import { restrictToolRegistryToRequestMode } from "./request-permission-tool-registry.js";
1
2
  import { createRequestToolModelInvoker } from "../adapters/request-tool-model-invoker.js";
2
3
  import { createConfiguredToolRegistry } from "./configured-tool-registry.js";
3
4
  import { bindRequestToolRegistry } from "./request-bound-tool-registry.js";
@@ -7,10 +8,12 @@ import { bindRequestToolRegistry } from "./request-bound-tool-registry.js";
7
8
  * This boundary contains no orchestration-policy selection.
8
9
  */
9
10
  export function createRequestRuntimeToolRegistry(params) {
11
+ const registry = restrictToolRegistryToRequestMode(params.toolRegistryOverride ??
12
+ createConfiguredToolRegistry(params.runtimeConfig, []), params.toolPermissionMode ?? "ask");
10
13
  return bindRequestToolRegistry({
11
- registry: params.toolRegistryOverride ??
12
- createConfiguredToolRegistry(params.runtimeConfig, []),
14
+ registry,
13
15
  modelInvoker: createRequestToolModelInvoker(params.request),
16
+ requestWorkingDirectory: params.requestWorkingDirectory,
14
17
  ...(params.requestAttachments
15
18
  ? { requestAttachments: params.requestAttachments }
16
19
  : {}),
@@ -0,0 +1,3 @@
1
+ import type { ToolExecutionSharedState } from "../../capabilities/tool-types.js";
2
+ /** The immutable session root replaces only agent_work, never shared namespaces. */
3
+ export declare function bindRequestWorkingDirectory(state: ToolExecutionSharedState, directory?: string): ToolExecutionSharedState;
@@ -0,0 +1,12 @@
1
+ import { isAbsolute } from "node:path";
2
+ /** The immutable session root replaces only agent_work, never shared namespaces. */
3
+ export function bindRequestWorkingDirectory(state, directory) {
4
+ if (directory === undefined)
5
+ return state;
6
+ if (!isAbsolute(directory))
7
+ throw new TypeError("request_working_directory_absolute_required");
8
+ return {
9
+ ...state,
10
+ runtimePaths: { ...state.runtimePaths, agentWorkDir: directory },
11
+ };
12
+ }
@@ -1,4 +1,5 @@
1
1
  import type WebSocket from "ws";
2
+ import type { RuntimeProjectService } from "./projects/contracts.js";
2
3
  import type { EventSinkFactory, ModelGatewayClient, RuntimeConfig, RuntimeHost, SessionStore, ToolRegistry } from "./ports.js";
3
4
  import type { RuntimeAttachmentStore } from "./attachments/store.js";
4
5
  import type { RequestHandlerOptions, RunRequestMessage } from "./request/contracts.js";
@@ -10,6 +11,7 @@ import type { RequestSteeringAppendResult } from "./request/request-steering.js"
10
11
  export type RuntimeEnvironmentServices = Readonly<{
11
12
  config: RuntimeConfig;
12
13
  sessions: SessionStore;
14
+ projects?: RuntimeProjectService;
13
15
  attachments: RuntimeAttachmentStore;
14
16
  tools: ToolRegistry;
15
17
  models: ModelGatewayClient;
@@ -1,4 +1,8 @@
1
1
  import type { RequestRunnerConfig } from "./contracts.js";
2
+ /** Explicit configuration application refreshes only its selected runner. */
3
+ export declare function invalidateRequestRunnerConfig(params: {
4
+ configPath: string;
5
+ }): () => void;
2
6
  export declare function loadRequestRunnerConfig(params: {
3
7
  configPath: string;
4
8
  }): RequestRunnerConfig;
@@ -3,12 +3,32 @@ import { isAbsolute, resolve } from "node:path";
3
3
  import { deepFreezeConfig, formatConfigError } from "./validation.js";
4
4
  import { parseRequestRunnerConfig } from "./versioned-config.js";
5
5
  const configCache = new Map();
6
- export function loadRequestRunnerConfig(params) {
7
- const configuredPath = params.configPath.trim();
6
+ function requestRunnerConfigCachePath(value) {
7
+ const configuredPath = value.trim();
8
8
  if (!configuredPath || !isAbsolute(configuredPath)) {
9
9
  throw new Error("runtime request runner configPath must be an absolute path resolved from runtime config");
10
10
  }
11
- const configPath = resolve(configuredPath);
11
+ return resolve(configuredPath);
12
+ }
13
+ /** Explicit configuration application refreshes only its selected runner. */
14
+ export function invalidateRequestRunnerConfig(params) {
15
+ const configPath = requestRunnerConfigCachePath(params.configPath);
16
+ const previous = configCache.get(configPath);
17
+ configCache.delete(configPath);
18
+ let restored = false;
19
+ return () => {
20
+ if (restored)
21
+ return;
22
+ restored = true;
23
+ if (previous === undefined) {
24
+ configCache.delete(configPath);
25
+ return;
26
+ }
27
+ configCache.set(configPath, previous);
28
+ };
29
+ }
30
+ export function loadRequestRunnerConfig(params) {
31
+ const configPath = requestRunnerConfigCachePath(params.configPath);
12
32
  const cached = configCache.get(configPath);
13
33
  if (cached) {
14
34
  return cached;
@@ -0,0 +1,18 @@
1
+ import type { ChatMessage } from "../../model-gateway/types.js";
2
+ import type { RequestContextBudget } from "./request-context-contracts.js";
3
+ import type { projectRequestContext } from "./request-context.js";
4
+ type ContextInput = Parameters<typeof projectRequestContext>[0];
5
+ /** Headroom for one passive brief without evicting existing request context. */
6
+ export declare function resolveCapabilityBriefHeadroom(params: Readonly<{
7
+ context: ContextInput;
8
+ additionalBudgetMessages?: readonly ChatMessage[];
9
+ }>): number;
10
+ /** Computes capacity from concrete messages plus any not-yet-added reserves. */
11
+ export declare function resolveCapabilityBriefMessageHeadroom(params: Readonly<{
12
+ messages: readonly ChatMessage[];
13
+ budget: RequestContextBudget;
14
+ format?: Readonly<{
15
+ schema: unknown;
16
+ }>;
17
+ }>): number;
18
+ export {};
@@ -0,0 +1,38 @@
1
+ import { assessRequestMessagesBudget } from "./request-context-budget.js";
2
+ /** Headroom for one passive brief without evicting existing request context. */
3
+ export function resolveCapabilityBriefHeadroom(params) {
4
+ const { context } = params;
5
+ const messages = [
6
+ { role: "system", content: context.instructions },
7
+ ...(context.priorConversationMessages ?? []),
8
+ ...context.historyMessages,
9
+ ...(context.referenceMessages ?? []),
10
+ ...(context.referenceParts?.flatMap((part) => part.messages) ?? []),
11
+ ...(context.continuationMessages ?? []),
12
+ ...(context.continuationParts?.flatMap((part) => part.messages) ?? []),
13
+ {
14
+ role: "user",
15
+ content: context.prompt,
16
+ ...(context.attachments ? { attachments: context.attachments } : {}),
17
+ },
18
+ ...(params.additionalBudgetMessages ?? []),
19
+ ];
20
+ return resolveCapabilityBriefMessageHeadroom({
21
+ messages,
22
+ budget: context.budget,
23
+ ...(context.format ? { format: context.format } : {}),
24
+ });
25
+ }
26
+ /** Computes capacity from concrete messages plus any not-yet-added reserves. */
27
+ export function resolveCapabilityBriefMessageHeadroom(params) {
28
+ const { budget } = assessRequestMessagesBudget(params);
29
+ // Reserve instructions not yet inserted against both the 70% threshold
30
+ // and the input ceiling. Strictly below: admission triggers on >=.
31
+ const instructionReserve = params.budget.configuredInstructionReserveTokens ?? 0;
32
+ const compactionHeadroom = budget.compactionTriggerInputTokens -
33
+ 1 -
34
+ budget.estimatedInputTokens -
35
+ instructionReserve;
36
+ const admissionHeadroom = budget.availableInputTokens - budget.estimatedInputTokens;
37
+ return Math.max(0, Math.min(compactionHeadroom, admissionHeadroom));
38
+ }