@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
@@ -1,6 +1,6 @@
1
- import { realpathSync } from "node:fs";
1
+ import { validateManifestEntrypoint } from "./entrypoint-validation.js";
2
2
  import { createRequire } from "node:module";
3
- import { join, resolve } from "node:path";
3
+ import { join } from "node:path";
4
4
  import { createRuntimeToolPathResolver } from "../capabilities/runtime-target-path.js";
5
5
  import { validateToolModuleDeclarations } from "../../capabilities/tool-definition-validator.js";
6
6
  import { traceDebug } from "../observability/debug-logger.js";
@@ -8,42 +8,11 @@ import { ABOT_RUNTIME_EXTENSION } from "../../plugin-contract/manifest.js";
8
8
  import { discoverAgentPluginManifests } from "./manifest-discovery.js";
9
9
  import { resolveBundledRuntimeRoot } from "./bundled-root.js";
10
10
  import { projectManifestRuntimeContract } from "./manifest-projection.js";
11
+ import { discoverConfiguredRuntimePluginManifests } from "./configured-manifests.js";
12
+ import { isPluginCatalogDisabled, isPluginToolSelected, normalizePluginSelection, pluginSelectionCacheKey, } from "./selection.js";
11
13
  const require = createRequire(import.meta.url);
12
14
  const compiledCatalogCache = new WeakMap();
13
15
  const bundledCatalogCache = new Map();
14
- function uniqueSorted(values) {
15
- return [
16
- ...new Set((values ?? [])
17
- .map((value) => value.trim())
18
- .filter((value) => value.length > 0)),
19
- ].sort((left, right) => left.localeCompare(right));
20
- }
21
- function normalizePluginSelection(config) {
22
- return Object.freeze({
23
- enabled: config?.enabled !== false,
24
- allow: Object.freeze(uniqueSorted(config?.allow)),
25
- deny: Object.freeze(uniqueSorted(config?.deny)),
26
- });
27
- }
28
- function pluginSelectionCacheKey(selection) {
29
- return JSON.stringify([selection.enabled, selection.allow, selection.deny]);
30
- }
31
- function matchesPluginToolId(pluginId, toolName, configuredId) {
32
- return (configuredId === "*" ||
33
- configuredId === pluginId ||
34
- configuredId === toolName ||
35
- configuredId === `${pluginId}.${toolName}`);
36
- }
37
- function isPluginToolSelected(params) {
38
- if (!params.selection.enabled) {
39
- return false;
40
- }
41
- if (params.selection.allow.length > 0 &&
42
- !params.selection.allow.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry))) {
43
- return false;
44
- }
45
- return !params.selection.deny.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry));
46
- }
47
16
  function isRecord(value) {
48
17
  return !!value && typeof value === "object" && !Array.isArray(value);
49
18
  }
@@ -61,64 +30,12 @@ function unwrapPluginExport(rawModule) {
61
30
  function compiledCapabilityFromDeclaration(tool) {
62
31
  return {
63
32
  execute: tool.implementation,
33
+ ...(tool.prepareRequest ? { prepareRequest: tool.prepareRequest } : {}),
64
34
  ...(tool.adapter ? { adapter: tool.adapter } : {}),
65
35
  definition: tool.definition,
66
36
  normalInvocation: tool.normalInvocation,
67
37
  };
68
38
  }
69
- function validateManifestEntrypoint(params) {
70
- if (!isRecord(params.raw) || !isRecord(params.raw.handlers)) {
71
- throw new Error(`Runtime plugin ${params.pluginId} entrypoint must export handlers`);
72
- }
73
- const unexpectedEntrypointKeys = Object.keys(params.raw).filter((key) => key !== "handlers" && key !== "adapters");
74
- if (unexpectedEntrypointKeys.length > 0) {
75
- throw new Error(`Runtime plugin ${params.pluginId} entrypoint contains unsupported field ${unexpectedEntrypointKeys[0]}`);
76
- }
77
- const handlers = {};
78
- for (const [capabilityId, handler] of Object.entries(params.raw.handlers)) {
79
- if (typeof handler !== "function") {
80
- throw new Error(`Runtime plugin ${params.pluginId} handler ${capabilityId} must be a function`);
81
- }
82
- handlers[capabilityId] = handler;
83
- }
84
- const expected = new Set(params.expectedCapabilityIds);
85
- const missing = params.expectedCapabilityIds.filter((capabilityId) => !handlers[capabilityId]);
86
- const unexpected = Object.keys(handlers).filter((capabilityId) => !expected.has(capabilityId));
87
- if (missing.length > 0 || unexpected.length > 0) {
88
- throw new Error(`Runtime plugin ${params.pluginId} handler mismatch: missing=${missing.join(",") || "none"}; unexpected=${unexpected.join(",") || "none"}`);
89
- }
90
- const adapters = {};
91
- if (params.raw.adapters !== undefined) {
92
- if (!isRecord(params.raw.adapters)) {
93
- throw new Error(`Runtime plugin ${params.pluginId} entrypoint adapters must be an object`);
94
- }
95
- for (const [capabilityId, rawAdapter] of Object.entries(params.raw.adapters)) {
96
- if (!expected.has(capabilityId)) {
97
- throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId} has no declared capability`);
98
- }
99
- if (!isRecord(rawAdapter)) {
100
- throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId} must be an object`);
101
- }
102
- const unexpectedAdapterKeys = Object.keys(rawAdapter).filter((key) => key !== "normalizeCall" && key !== "validateCall");
103
- if (unexpectedAdapterKeys.length > 0) {
104
- throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId} contains unsupported field ${unexpectedAdapterKeys[0]}`);
105
- }
106
- if (rawAdapter.normalizeCall !== undefined &&
107
- typeof rawAdapter.normalizeCall !== "function") {
108
- throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId}.normalizeCall must be a function`);
109
- }
110
- if (rawAdapter.validateCall !== undefined &&
111
- typeof rawAdapter.validateCall !== "function") {
112
- throw new Error(`Runtime plugin ${params.pluginId} adapter ${capabilityId}.validateCall must be a function`);
113
- }
114
- adapters[capabilityId] = rawAdapter;
115
- }
116
- }
117
- return {
118
- handlers,
119
- ...(Object.keys(adapters).length > 0 ? { adapters } : {}),
120
- };
121
- }
122
39
  function createManifestSecretAccessor(pluginId, declarations) {
123
40
  if (!declarations || Object.keys(declarations).length === 0) {
124
41
  return undefined;
@@ -180,6 +97,9 @@ function loadManifestRuntimePlugin(host, discovered, selectedCapabilityIds) {
180
97
  definition,
181
98
  normalInvocation,
182
99
  implementation: entrypoint.handlers[definition.name],
100
+ ...(entrypoint.prepareRequest
101
+ ? { prepareRequest: entrypoint.prepareRequest }
102
+ : {}),
183
103
  ...(entrypoint.adapters?.[definition.name]
184
104
  ? { adapter: entrypoint.adapters[definition.name] }
185
105
  : {}),
@@ -201,42 +121,9 @@ function loadManifestRuntimePlugin(host, discovered, selectedCapabilityIds) {
201
121
  capabilitySkills: projection.capabilitySkills,
202
122
  };
203
123
  }
204
- function canonicalPluginDiscoveryRoot(rootDir) {
205
- const absoluteRoot = resolve(rootDir);
206
- try {
207
- return realpathSync(absoluteRoot);
208
- }
209
- catch (error) {
210
- if (error.code !== "ENOENT") {
211
- throw error;
212
- }
213
- return absoluteRoot;
214
- }
215
- }
216
- function assertUniquePluginManifestIds(plugins) {
217
- const manifestPathsByPluginId = new Map();
218
- for (const plugin of plugins) {
219
- const pluginId = plugin.manifest.name;
220
- const previousManifestPath = manifestPathsByPluginId.get(pluginId);
221
- if (previousManifestPath) {
222
- throw new Error(`Duplicate runtime plugin id: ${pluginId}; manifests: ${previousManifestPath}, ${plugin.manifestPath}`);
223
- }
224
- manifestPathsByPluginId.set(pluginId, plugin.manifestPath);
225
- }
226
- }
227
- function discoverConfiguredRuntimePluginManifests(consumerRoot) {
228
- const bundledRoot = resolveBundledRuntimeRoot();
229
- const roots = canonicalPluginDiscoveryRoot(bundledRoot) ===
230
- canonicalPluginDiscoveryRoot(consumerRoot)
231
- ? [consumerRoot]
232
- : [bundledRoot, consumerRoot];
233
- const plugins = roots.flatMap((rootDir) => discoverAgentPluginManifests(rootDir));
234
- assertUniquePluginManifestIds(plugins);
235
- return Object.freeze(plugins);
236
- }
237
124
  export function loadConfiguredRuntimePlugins(config) {
238
125
  const selection = normalizePluginSelection(config.plugins);
239
- if (!selection.enabled) {
126
+ if (isPluginCatalogDisabled(selection)) {
240
127
  return [];
241
128
  }
242
129
  const cacheKey = pluginSelectionCacheKey(selection);
@@ -251,7 +138,7 @@ export function loadConfiguredRuntimePlugins(config) {
251
138
  agentBridgeUrl: config.agentBridgeUrl,
252
139
  runtimePaths: config.paths,
253
140
  };
254
- const manifestPlugins = discoverConfiguredRuntimePluginManifests(config.paths.rootDir)
141
+ const manifestPlugins = discoverConfiguredRuntimePluginManifests(config.paths.rootDir, { excludedPluginIds: new Set(selection.deny) })
255
142
  .map((plugin) => ({
256
143
  plugin,
257
144
  selectedCapabilityIds: Object.keys(plugin.manifest.extensions[ABOT_RUNTIME_EXTENSION].capabilities).filter((capabilityId) => isPluginToolSelected({
@@ -330,6 +217,7 @@ export function runtimePluginsToToolModules(plugins) {
330
217
  function toolModuleDeclarationFromRuntimePlugin(tool) {
331
218
  return {
332
219
  implementation: tool.execute,
220
+ ...(tool.prepareRequest ? { prepareRequest: tool.prepareRequest } : {}),
333
221
  ...(tool.adapter ? { adapter: tool.adapter } : {}),
334
222
  definition: tool.definition,
335
223
  normalInvocation: tool.normalInvocation,
@@ -1,8 +1,11 @@
1
1
  import type { DiscoveredAgentPluginManifest } from "./discovered-manifest.js";
2
+ export type AgentPluginManifestDiscoveryOptions = Readonly<{
3
+ excludedPluginIds?: ReadonlySet<string>;
4
+ }>;
2
5
  export declare function resolveContainedPluginFile(params: {
3
6
  pluginRoot: string;
4
7
  configuredPath: string;
5
8
  label: string;
6
9
  }): string;
7
10
  export declare function readAgentPluginSkills(plugin: DiscoveredAgentPluginManifest, selectedSkillNames?: ReadonlySet<string>): Record<string, string>;
8
- export declare function discoverAgentPluginManifests(rootDir: string): DiscoveredAgentPluginManifest[];
11
+ export declare function discoverAgentPluginManifests(rootDir: string, options?: AgentPluginManifestDiscoveryOptions): DiscoveredAgentPluginManifest[];
@@ -2,6 +2,9 @@ import { existsSync, readFileSync, readdirSync, realpathSync, statSync, } from "
2
2
  import { isAbsolute, join, relative, resolve } from "node:path";
3
3
  import { traceDebug } from "../observability/debug-logger.js";
4
4
  import { parseAgentPluginManifest } from "./manifest-validator.js";
5
+ function isPluginManifestExcluded(pluginId, options) {
6
+ return options.excludedPluginIds?.has(pluginId) ?? false;
7
+ }
5
8
  function isContained(root, candidate) {
6
9
  const relativePath = relative(root, candidate);
7
10
  return (relativePath === "" ||
@@ -62,7 +65,7 @@ export function readAgentPluginSkills(plugin, selectedSkillNames) {
62
65
  }
63
66
  return skills;
64
67
  }
65
- export function discoverAgentPluginManifests(rootDir) {
68
+ export function discoverAgentPluginManifests(rootDir, options = {}) {
66
69
  const pluginsPath = resolve(rootDir, "plugins");
67
70
  traceDebug("runtime.plugins", "manifest_discovery.started", {
68
71
  pluginsPath,
@@ -80,6 +83,10 @@ export function discoverAgentPluginManifests(rootDir) {
80
83
  }).sort((left, right) => left.name.localeCompare(right.name));
81
84
  const discovered = [];
82
85
  for (const entry of entries) {
86
+ // A valid manifest must use its directory name as the plugin ID. An
87
+ // explicitly denied package needs no filesystem traversal or validation.
88
+ if (isPluginManifestExcluded(entry.name, options))
89
+ continue;
83
90
  const candidateRoot = join(resolvedPluginsPath, entry.name);
84
91
  if (!statSync(candidateRoot).isDirectory()) {
85
92
  continue;
@@ -40,6 +40,9 @@ export function projectManifestRuntimeContract(discovered, selectedCapabilityIds
40
40
  declarations.push({
41
41
  definition: {
42
42
  name: capabilityId,
43
+ ...(capability.requiredPermissionMode
44
+ ? { requiredPermissionMode: capability.requiredPermissionMode }
45
+ : {}),
43
46
  description: capability.description,
44
47
  routingCapability: capability.routingCapability,
45
48
  ...(capability.controlsRefinement
@@ -1,5 +1,7 @@
1
+ import { parseRequiredToolPermissionMode } from "../../capabilities/tool-permission-mode.js";
1
2
  import { isToolCatalogGroupId } from "../../capabilities/tool-types.js";
2
3
  import { parseEventResultMetadata } from "../../capabilities/tool-definition-validator/event-result-metadata.js";
4
+ import { parseEventInputTextOptions } from "../../capabilities/tool-definition-validator/event-input-text-options.js";
3
5
  import { ABOT_RUNTIME_EXTENSION, ABOT_RUNTIME_EXTENSION_VERSION, AGENT_PLUGIN_MANIFEST_SCHEMA, } from "../../plugin-contract/manifest.js";
4
6
  const PLUGIN_NAME_PATTERN = /^(?!.*(?:--|\.\.))[a-z0-9][a-z0-9.-]{0,62}[a-z0-9]$|^[a-z0-9]$/u;
5
7
  const SECRET_ENV_PATTERN = /^[A-Z][A-Z0-9_]*$/u;
@@ -20,6 +22,7 @@ const DEVELOPMENT_ROLES = [
20
22
  const EVENT_PROJECTION_KINDS = [
21
23
  "string",
22
24
  "number",
25
+ "boolean",
23
26
  "string_array",
24
27
  "length",
25
28
  ];
@@ -211,7 +214,7 @@ function parseEventPresentation(value, path) {
211
214
  throw new Error(`${path}.metadata contains an empty key`);
212
215
  }
213
216
  const projection = expectRecord(rawProjection, `${path}.metadata.${key}`);
214
- rejectUnknownKeys(projection, ["param", "kind", "default"], `${path}.metadata.${key}`);
217
+ rejectUnknownKeys(projection, ["param", "kind", "default", "maxLength", "preserveWhitespace"], `${path}.metadata.${key}`);
215
218
  if (!nonEmptyString(projection.param)) {
216
219
  throw new Error(`${path}.metadata.${key}.param must be non-empty`);
217
220
  }
@@ -228,6 +231,7 @@ function parseEventPresentation(value, path) {
228
231
  return [
229
232
  key,
230
233
  {
234
+ ...parseEventInputTextOptions(projection, `${path}.metadata.${key}`),
231
235
  param: projection.param.trim(),
232
236
  kind: projection.kind,
233
237
  ...(fallback !== undefined ? { default: fallback } : {}),
@@ -349,6 +353,7 @@ function parseCapabilities(value, path) {
349
353
  }
350
354
  const capability = expectRecord(rawCapability, `${path}.${capabilityId}`);
351
355
  rejectUnknownKeys(capability, [
356
+ "requiredPermissionMode",
352
357
  "description",
353
358
  "routingCapability",
354
359
  "controlsRefinement",
@@ -393,6 +398,7 @@ function parseCapabilities(value, path) {
393
398
  return [
394
399
  capabilityId,
395
400
  {
401
+ requiredPermissionMode: parseRequiredToolPermissionMode(capability.requiredPermissionMode, `${path}.${capabilityId}.requiredPermissionMode`),
396
402
  description: capability.description.trim(),
397
403
  routingCapability: capability.routingCapability,
398
404
  ...(controlsRefinement === "mechanical_when_complete"
@@ -0,0 +1,4 @@
1
+ import type { RuntimeConfig } from "../ports.js";
2
+ import type { CompiledRuntimePlugin } from "./compiled-catalog.js";
3
+ /** Tools and skills share the same selected catalog and compiled instances. */
4
+ export declare function loadRuntimeCapabilityPlugins(config?: RuntimeConfig): readonly CompiledRuntimePlugin[];
@@ -0,0 +1,7 @@
1
+ import { loadBundledRuntimePlugins, loadConfiguredRuntimePlugins, } from "./loader.js";
2
+ /** Tools and skills share the same selected catalog and compiled instances. */
3
+ export function loadRuntimeCapabilityPlugins(config) {
4
+ return config
5
+ ? loadConfiguredRuntimePlugins(config)
6
+ : loadBundledRuntimePlugins();
7
+ }
@@ -0,0 +1,14 @@
1
+ import type { RuntimePluginConfig } from "../ports.js";
2
+ export type PluginSelection = Readonly<{
3
+ enabled: boolean;
4
+ allow: readonly string[];
5
+ deny: readonly string[];
6
+ }>;
7
+ export declare function normalizePluginSelection(config: RuntimePluginConfig | undefined): PluginSelection;
8
+ export declare function pluginSelectionCacheKey(selection: PluginSelection): string;
9
+ export declare function isPluginCatalogDisabled(selection: PluginSelection): boolean;
10
+ export declare function isPluginToolSelected(params: {
11
+ pluginId: string;
12
+ toolName: string;
13
+ selection: PluginSelection;
14
+ }): boolean;
@@ -0,0 +1,38 @@
1
+ function uniqueSorted(values) {
2
+ return [
3
+ ...new Set((values ?? [])
4
+ .map((value) => value.trim())
5
+ .filter((value) => value.length > 0)),
6
+ ].sort((left, right) => left.localeCompare(right));
7
+ }
8
+ export function normalizePluginSelection(config) {
9
+ return Object.freeze({
10
+ enabled: config?.enabled !== false,
11
+ allow: Object.freeze(uniqueSorted(config?.allow)),
12
+ deny: Object.freeze(uniqueSorted(config?.deny)),
13
+ });
14
+ }
15
+ export function pluginSelectionCacheKey(selection) {
16
+ return JSON.stringify([selection.enabled, selection.allow, selection.deny]);
17
+ }
18
+ export function isPluginCatalogDisabled(selection) {
19
+ if (!selection.enabled)
20
+ return true;
21
+ return selection.deny.includes("*");
22
+ }
23
+ function matchesPluginToolId(pluginId, toolName, configuredId) {
24
+ return (configuredId === "*" ||
25
+ configuredId === pluginId ||
26
+ configuredId === toolName ||
27
+ configuredId === `${pluginId}.${toolName}`);
28
+ }
29
+ export function isPluginToolSelected(params) {
30
+ if (!params.selection.enabled) {
31
+ return false;
32
+ }
33
+ if (params.selection.allow.length > 0 &&
34
+ !params.selection.allow.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry))) {
35
+ return false;
36
+ }
37
+ return !params.selection.deny.some((entry) => matchesPluginToolId(params.pluginId, params.toolName, entry));
38
+ }
@@ -1,4 +1,5 @@
1
1
  import type WebSocket from "ws";
2
+ import type { SessionCreationOptions } from "../sessions/project-binding.js";
2
3
  import type { AgentMode, ModelReasoningLevel, ModelStep } from "../shared/types.js";
3
4
  import type { ContextBuckets, ModelContextMessage } from "../sessions/context-window.js";
4
5
  import type { SessionArtifactPathInput, SessionContextEntryKind, SessionDeleteResult, SessionListResult, SessionMessageDeleteResult, SessionMessageGrounding, SessionMessageObservationMeta, SessionMessageRole, SessionMessageSource, SessionMessageTaskType, SessionMessagesClearResult, SessionRecord, SessionRequestReplay, SessionSnapshot, SessionThinkingTraceEntry } from "../sessions/types.js";
@@ -111,7 +112,7 @@ export type AppendSessionContextEntryOptions = {
111
112
  requestId?: string;
112
113
  };
113
114
  export type SessionStore = SessionMemoryRepository & {
114
- getOrCreateSession: (sessionId: string) => Promise<SessionRecord>;
115
+ getOrCreateSession: (sessionId: string, options?: SessionCreationOptions) => Promise<SessionRecord>;
115
116
  getAllSessions: () => Promise<SessionRecord[]>;
116
117
  listSessions: (params?: {
117
118
  limit?: number;
@@ -147,11 +148,14 @@ export type ConversationContextProvider = {
147
148
  buildContextWindow: (session: SessionRecord, maxMessages?: number) => ModelContextMessage[];
148
149
  };
149
150
  export type ToolExecutionOptions = {
151
+ /** Trusted request snapshot, never parsed from a model tool payload. */
152
+ requestWorkingDirectory?: string;
150
153
  abortSignal?: AbortSignal;
151
154
  sharedState?: ToolExecutionContext["sharedState"];
152
155
  modelInvoker?: ToolExecutionContext["modelInvoker"];
156
+ reportFileOutput?: ToolExecutionContext["reportFileOutput"];
153
157
  };
154
- export type ToolPermissionMode = "full_access" | "ask";
158
+ export type { ToolPermissionMode } from "../capabilities/tool-permission-mode.js";
155
159
  export type ToolApprovalRequest = {
156
160
  requestId: string;
157
161
  approvalId: string;
@@ -168,6 +172,8 @@ export type ToolApprovalController = {
168
172
  }) => Promise<ToolApprovalDecision>;
169
173
  };
170
174
  export type ToolRegistry = {
175
+ /** Build an isolated availability/execution snapshot before model projection. */
176
+ prepareRequest?: () => Promise<ToolRegistry>;
171
177
  listDefinitions: () => ToolDefinition[];
172
178
  /** The sole config-filtered availability snapshot for ordinary invocation. */
173
179
  listNormalInvocations?: () => readonly RegisteredToolNormalInvocation[];
@@ -0,0 +1,40 @@
1
+ import type { SessionProject } from "../../sessions/project-binding.js";
2
+ export type RuntimeProject = SessionProject & Readonly<{
3
+ createdAt: string;
4
+ }>;
5
+ export type ProjectFolder = Readonly<{
6
+ name: string;
7
+ path: string;
8
+ }>;
9
+ export type ProjectFolderPage = Readonly<{
10
+ directory: string;
11
+ parent: string | null;
12
+ entries: readonly ProjectFolder[];
13
+ nextCursor: string | null;
14
+ roots: readonly Readonly<{
15
+ label: string;
16
+ path: string;
17
+ }>[];
18
+ hostPlatform: NodeJS.Platform;
19
+ }>;
20
+ export type RuntimeProjectService = Readonly<{
21
+ list: () => Promise<readonly RuntimeProject[]>;
22
+ get: (id: string) => Promise<RuntimeProject | null>;
23
+ create: (input: {
24
+ name?: string;
25
+ directory: string;
26
+ }) => Promise<RuntimeProject>;
27
+ browseFolders: (input?: {
28
+ path?: string;
29
+ cursor?: string;
30
+ }) => Promise<ProjectFolderPage>;
31
+ createSession: (projectId: string) => Promise<{
32
+ sessionId: string;
33
+ project: SessionProject;
34
+ }>;
35
+ }>;
36
+ export declare class ProjectOperationError extends Error {
37
+ readonly code: string;
38
+ readonly status: number;
39
+ constructor(code: string, message: string, status?: number);
40
+ }
@@ -0,0 +1,10 @@
1
+ export class ProjectOperationError extends Error {
2
+ code;
3
+ status;
4
+ constructor(code, message, status = 400) {
5
+ super(message);
6
+ this.code = code;
7
+ this.status = status;
8
+ this.name = "ProjectOperationError";
9
+ }
10
+ }
@@ -0,0 +1,7 @@
1
+ import { type ProjectFolderPage } from "./contracts.js";
2
+ export declare function resolveProjectDirectory(input: string): Promise<string>;
3
+ export declare function browseProjectFolders(defaultDirectory: string, input?: {
4
+ path?: string;
5
+ cursor?: string;
6
+ }): Promise<ProjectFolderPage>;
7
+ export declare function projectDisplayName(input: string | undefined, directory: string): string;
@@ -0,0 +1,110 @@
1
+ import { homedir } from "node:os";
2
+ import { readdir, realpath, stat } from "node:fs/promises";
3
+ import { basename, dirname, isAbsolute, join, parse } from "node:path";
4
+ import { ProjectOperationError } from "./contracts.js";
5
+ function isAbsoluteProjectDirectory(input) {
6
+ if (typeof input !== "string")
7
+ return false;
8
+ if (!input.trim())
9
+ return false;
10
+ return isAbsolute(input);
11
+ }
12
+ export async function resolveProjectDirectory(input) {
13
+ if (!isAbsoluteProjectDirectory(input))
14
+ throw new ProjectOperationError("project_directory_absolute_required", "Choose an absolute folder path on this Runtime host.");
15
+ if (input.includes("\0"))
16
+ throw new ProjectOperationError("project_directory_invalid", "The folder path is invalid.");
17
+ try {
18
+ const canonical = await realpath(input);
19
+ if (!(await directoryExists(canonical)))
20
+ throw new ProjectOperationError("project_directory_required", "Choose a directory.");
21
+ return canonical;
22
+ }
23
+ catch (error) {
24
+ if (error instanceof ProjectOperationError)
25
+ throw error;
26
+ throw new ProjectOperationError("project_directory_unavailable", "This folder is unavailable to the Runtime host.", 404);
27
+ }
28
+ }
29
+ async function directoryExists(path) {
30
+ try {
31
+ return (await stat(path)).isDirectory();
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ async function isProjectDirectoryEntry(child, path) {
38
+ if (child.isDirectory())
39
+ return true;
40
+ if (!child.isSymbolicLink())
41
+ return false;
42
+ return directoryExists(path);
43
+ }
44
+ function resolveFolderPageStart(names, cursor) {
45
+ if (!cursor)
46
+ return 0;
47
+ const index = names.indexOf(cursor);
48
+ if (index < 0)
49
+ throw new ProjectOperationError("project_folder_cursor_stale", "Folder contents changed. Browse this folder again.", 409);
50
+ return index + 1;
51
+ }
52
+ async function initialProjectBrowserDirectory(defaultDirectory, selected) {
53
+ if (selected)
54
+ return resolveProjectDirectory(selected);
55
+ if (await directoryExists(defaultDirectory))
56
+ return resolveProjectDirectory(defaultDirectory);
57
+ return resolveProjectDirectory(homedir());
58
+ }
59
+ export async function browseProjectFolders(defaultDirectory, input = {}) {
60
+ const directory = await initialProjectBrowserDirectory(defaultDirectory, input.path);
61
+ const roots = [
62
+ { label: "Default workspace", path: defaultDirectory },
63
+ { label: "Home", path: homedir() },
64
+ { label: "Desktop", path: join(homedir(), "Desktop") },
65
+ { label: "Filesystem", path: parse(directory).root },
66
+ ];
67
+ const availableRoots = [];
68
+ for (const root of roots) {
69
+ if (await directoryExists(root.path))
70
+ availableRoots.push(root);
71
+ }
72
+ let children;
73
+ try {
74
+ children = await readdir(directory, { withFileTypes: true });
75
+ }
76
+ catch {
77
+ throw new ProjectOperationError("project_directory_unreadable", "The Runtime host cannot list this folder.", 403);
78
+ }
79
+ const folders = [];
80
+ for (const child of children) {
81
+ const path = join(directory, child.name);
82
+ if (await isProjectDirectoryEntry(child, path))
83
+ folders.push({ name: child.name, path });
84
+ }
85
+ folders.sort((left, right) => left.name.localeCompare(right.name));
86
+ const start = resolveFolderPageStart(folders.map((folder) => folder.name), input.cursor);
87
+ const entries = folders.slice(start, start + 100);
88
+ const parent = dirname(directory);
89
+ return {
90
+ directory,
91
+ parent: parent === directory ? null : parent,
92
+ entries,
93
+ nextCursor: start + entries.length < folders.length ? entries.at(-1).name : null,
94
+ roots: availableRoots,
95
+ hostPlatform: process.platform,
96
+ };
97
+ }
98
+ function isProjectDisplayName(name) {
99
+ if (!name)
100
+ return false;
101
+ if (name.length > 120)
102
+ return false;
103
+ return !/[\u0000-\u001f]/.test(name);
104
+ }
105
+ export function projectDisplayName(input, directory) {
106
+ const name = input?.trim() || basename(directory) || directory;
107
+ if (!isProjectDisplayName(name))
108
+ throw new ProjectOperationError("project_name_invalid", "Choose a project name of 1 to 120 characters.");
109
+ return name;
110
+ }
@@ -0,0 +1,10 @@
1
+ import type { RuntimeProject } from "./contracts.js";
2
+ /** One environment owner serializes updates; rename publishes a complete registry. */
3
+ export declare class FileProjectRepository {
4
+ private readonly filename;
5
+ private tail;
6
+ constructor(filename: string);
7
+ list(): Promise<RuntimeProject[]>;
8
+ create(project: RuntimeProject): Promise<RuntimeProject>;
9
+ private save;
10
+ }
@@ -0,0 +1,54 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
3
+ import { dirname } from "node:path";
4
+ import { copySessionProject } from "../../sessions/project-binding.js";
5
+ /** One environment owner serializes updates; rename publishes a complete registry. */
6
+ export class FileProjectRepository {
7
+ filename;
8
+ tail = Promise.resolve();
9
+ constructor(filename) {
10
+ this.filename = filename;
11
+ }
12
+ async list() {
13
+ try {
14
+ const input = JSON.parse(await readFile(this.filename, "utf8"));
15
+ if (!Array.isArray(input))
16
+ throw new Error("project_registry_invalid");
17
+ return input.map((entry) => {
18
+ const project = copySessionProject(entry);
19
+ if (typeof entry.createdAt !== "string")
20
+ throw new Error("project_registry_created_at_invalid");
21
+ return { ...project, createdAt: entry.createdAt };
22
+ });
23
+ }
24
+ catch (error) {
25
+ if (error.code === "ENOENT")
26
+ return [];
27
+ throw error;
28
+ }
29
+ }
30
+ create(project) {
31
+ const result = this.tail.then(async () => {
32
+ const projects = await this.list();
33
+ const existing = projects.find((entry) => entry.directory === project.directory);
34
+ if (existing)
35
+ return existing;
36
+ await this.save([...projects, project]);
37
+ return project;
38
+ });
39
+ this.tail = result.then(() => undefined, () => undefined);
40
+ return result;
41
+ }
42
+ async save(projects) {
43
+ await mkdir(dirname(this.filename), { recursive: true });
44
+ const temporary = `${this.filename}.${process.pid}.${randomUUID()}.tmp`;
45
+ try {
46
+ await writeFile(temporary, JSON.stringify(projects, null, 2), "utf8");
47
+ await rename(temporary, this.filename);
48
+ }
49
+ catch (error) {
50
+ await rm(temporary, { force: true }).catch(() => undefined);
51
+ throw error;
52
+ }
53
+ }
54
+ }
@@ -0,0 +1,3 @@
1
+ import type { RuntimeConfig, SessionStore } from "../ports.js";
2
+ import { type RuntimeProjectService } from "./contracts.js";
3
+ export declare function createRuntimeProjectService(config: RuntimeConfig, sessions: Pick<SessionStore, "getOrCreateSession">): RuntimeProjectService;