@abot-ai/runtime 1.3.0 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (660) hide show
  1. package/dist/plugins/system/source/application-catalog.d.ts +14 -0
  2. package/dist/plugins/system/source/application-catalog.js +185 -0
  3. package/dist/plugins/system/source/application-launch.d.ts +10 -0
  4. package/dist/plugins/system/source/application-launch.js +80 -0
  5. package/dist/plugins/system/source/application-observation.d.ts +25 -0
  6. package/dist/plugins/system/source/application-observation.js +53 -0
  7. package/dist/plugins/system/source/commands.d.ts +7 -0
  8. package/dist/plugins/system/source/commands.js +71 -0
  9. package/dist/plugins/system/source/companion/autostart.d.ts +16 -0
  10. package/dist/plugins/system/source/companion/autostart.js +146 -0
  11. package/dist/plugins/system/source/companion/broker-location.d.ts +11 -0
  12. package/dist/plugins/system/source/companion/broker-location.js +76 -0
  13. package/dist/plugins/system/source/companion/broker-server.d.ts +4 -0
  14. package/dist/plugins/system/source/companion/broker-server.js +147 -0
  15. package/dist/plugins/system/source/companion/connection.d.ts +25 -0
  16. package/dist/plugins/system/source/companion/connection.js +182 -0
  17. package/dist/plugins/system/source/companion/liveness.d.ts +3 -0
  18. package/dist/plugins/system/source/companion/liveness.js +20 -0
  19. package/dist/plugins/system/source/companion/native-address.d.ts +12 -0
  20. package/dist/plugins/system/source/companion/native-address.js +41 -0
  21. package/dist/plugins/system/source/companion/native-identity.d.ts +2 -0
  22. package/dist/plugins/system/source/companion/native-identity.js +23 -0
  23. package/dist/plugins/system/source/companion/native-messages.d.ts +9 -0
  24. package/dist/plugins/system/source/companion/native-messages.js +77 -0
  25. package/dist/plugins/system/source/companion/native-session.d.ts +19 -0
  26. package/dist/plugins/system/source/companion/native-session.js +205 -0
  27. package/dist/plugins/system/source/companion/native-state.d.ts +22 -0
  28. package/dist/plugins/system/source/companion/native-state.js +126 -0
  29. package/dist/plugins/system/source/companion/native-supervisor.d.ts +10 -0
  30. package/dist/plugins/system/source/companion/native-supervisor.js +93 -0
  31. package/dist/plugins/system/source/companion/pairing-store.d.ts +22 -0
  32. package/dist/plugins/system/source/companion/pairing-store.js +102 -0
  33. package/dist/plugins/system/source/companion/private-store.d.ts +4 -0
  34. package/dist/plugins/system/source/companion/private-store.js +59 -0
  35. package/dist/plugins/system/source/companion/process-owner-identity.d.ts +22 -0
  36. package/dist/plugins/system/source/companion/process-owner-identity.js +144 -0
  37. package/dist/plugins/system/source/companion/protocol.d.ts +57 -0
  38. package/dist/plugins/system/source/companion/protocol.js +66 -0
  39. package/dist/plugins/system/source/contracts.d.ts +38 -0
  40. package/dist/plugins/system/source/contracts.js +7 -0
  41. package/dist/plugins/system/source/elevation.d.ts +8 -0
  42. package/dist/plugins/system/source/elevation.js +57 -0
  43. package/dist/plugins/system/source/handlers.d.ts +3 -0
  44. package/dist/plugins/system/source/handlers.js +90 -0
  45. package/dist/plugins/system/source/host-evidence.d.ts +4 -0
  46. package/dist/plugins/system/source/host-evidence.js +52 -0
  47. package/dist/plugins/system/source/host-observation.d.ts +25 -0
  48. package/dist/plugins/system/source/host-observation.js +59 -0
  49. package/dist/plugins/system/source/process-result.d.ts +4 -0
  50. package/dist/plugins/system/source/process-result.js +86 -0
  51. package/dist/plugins/system/source/process-runner.d.ts +3 -0
  52. package/dist/plugins/system/source/process-runner.js +103 -0
  53. package/dist/plugins/system/source/target-observation.d.ts +18 -0
  54. package/dist/plugins/system/source/target-observation.js +29 -0
  55. package/dist/plugins/system/source/targets.d.ts +8 -0
  56. package/dist/plugins/system/source/targets.js +101 -0
  57. package/dist/scripts/add-runtime-model.js +10 -53
  58. package/dist/scripts/init-runtime.js +4 -13
  59. package/dist/scripts/runtime-model-addition.d.ts +13 -0
  60. package/dist/scripts/runtime-model-addition.js +53 -0
  61. package/dist/scripts/runtime-setup-directories.d.ts +2 -0
  62. package/dist/scripts/runtime-setup-directories.js +38 -0
  63. package/dist/scripts/runtime-setup-files.d.ts +3 -1
  64. package/dist/scripts/runtime-setup-files.js +18 -1
  65. package/dist/src/capabilities/file-output-presentation.d.ts +43 -0
  66. package/dist/src/capabilities/file-output-presentation.js +133 -0
  67. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +2 -0
  68. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.d.ts +5 -0
  69. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +37 -0
  70. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
  71. package/dist/src/capabilities/tool-definition-validator/module-registry.js +12 -0
  72. package/dist/src/capabilities/tool-event-input-text.d.ts +9 -0
  73. package/dist/src/capabilities/tool-event-input-text.js +64 -0
  74. package/dist/src/capabilities/tool-event-metadata.js +10 -0
  75. package/dist/src/capabilities/tool-executor.d.ts +1 -0
  76. package/dist/src/capabilities/tool-executor.js +1 -0
  77. package/dist/src/capabilities/tool-permission-mode.d.ts +7 -0
  78. package/dist/src/capabilities/tool-permission-mode.js +27 -0
  79. package/dist/src/capabilities/tool-types.d.ts +18 -2
  80. package/dist/src/cli/abot.js +18 -15
  81. package/dist/src/cli/host-companion-bundle.mjs +5201 -0
  82. package/dist/src/cli/host-companion-entry.d.ts +8 -0
  83. package/dist/src/cli/host-companion-entry.js +70 -0
  84. package/dist/src/cli/host-companion-startup.d.ts +4 -0
  85. package/dist/src/cli/host-companion-startup.js +35 -0
  86. package/dist/src/cli/host-companion.d.ts +5 -0
  87. package/dist/src/cli/host-companion.js +203 -0
  88. package/dist/src/model-gateway/server/configuration.js +4 -1
  89. package/dist/src/model-gateway/server/contracts.d.ts +2 -0
  90. package/dist/src/plugin-contract/entrypoint.d.ts +4 -2
  91. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  92. package/dist/src/runtime/adapters/config-file-transaction.d.ts +46 -0
  93. package/dist/src/runtime/adapters/config-file-transaction.js +158 -0
  94. package/dist/src/runtime/adapters/configured-skill-provider.js +3 -3
  95. package/dist/src/runtime/adapters/in-memory-session-store.js +11 -1
  96. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +7 -3
  97. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +4 -1
  98. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -1
  99. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +5 -1
  100. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.d.ts +3 -0
  101. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.js +15 -0
  102. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +2 -0
  103. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +17 -43
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/catalog/registrations.js +6 -2
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +10 -1
  106. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.d.ts +11 -0
  107. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.js +37 -0
  108. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.d.ts +7 -0
  109. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.js +105 -0
  110. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +29 -3
  111. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +1 -0
  112. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +1 -0
  113. package/dist/src/runtime/capabilities/configured-tool-registry.js +9 -1
  114. package/dist/src/runtime/capabilities/file-output-root-identity.d.ts +5 -0
  115. package/dist/src/runtime/capabilities/file-output-root-identity.js +146 -0
  116. package/dist/src/runtime/capabilities/file-output-root-marker-creation.d.ts +5 -0
  117. package/dist/src/runtime/capabilities/file-output-root-marker-creation.js +63 -0
  118. package/dist/src/runtime/capabilities/request-bound-tool-registry.d.ts +1 -0
  119. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +6 -1
  120. package/dist/src/runtime/capabilities/request-module-preparation.d.ts +3 -0
  121. package/dist/src/runtime/capabilities/request-module-preparation.js +102 -0
  122. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +10 -0
  123. package/dist/src/runtime/capabilities/request-permission-catalog.js +50 -0
  124. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +4 -0
  125. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +61 -0
  126. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +3 -0
  127. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +5 -2
  128. package/dist/src/runtime/capabilities/request-working-directory.d.ts +3 -0
  129. package/dist/src/runtime/capabilities/request-working-directory.js +12 -0
  130. package/dist/src/runtime/composition.d.ts +2 -0
  131. package/dist/src/runtime/config/runner/loader.d.ts +4 -0
  132. package/dist/src/runtime/config/runner/loader.js +23 -3
  133. package/dist/src/runtime/context/capability-brief-budget.d.ts +18 -0
  134. package/dist/src/runtime/context/capability-brief-budget.js +38 -0
  135. package/dist/src/runtime/context/capability-brief-readmission.d.ts +21 -0
  136. package/dist/src/runtime/context/capability-brief-readmission.js +47 -0
  137. package/dist/src/runtime/context/capability-brief.d.ts +9 -2
  138. package/dist/src/runtime/context/capability-brief.js +21 -39
  139. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -0
  140. package/dist/src/runtime/context/capability-descriptions.js +23 -0
  141. package/dist/src/runtime/default-environment-adapters.js +3 -4
  142. package/dist/src/runtime/local-application.d.ts +18 -0
  143. package/dist/src/runtime/local-application.js +12 -0
  144. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  145. package/dist/src/runtime/local-host/app-service-dispatch.js +9 -0
  146. package/dist/src/runtime/local-host/client-services.d.ts +16 -0
  147. package/dist/src/runtime/local-host/client-services.js +3 -2
  148. package/dist/src/runtime/local-host/contracts.d.ts +4 -0
  149. package/dist/src/runtime/local-host/startup-connection.js +22 -7
  150. package/dist/src/runtime/local-host/transport.js +14 -2
  151. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +5 -2
  152. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  153. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.d.ts +3 -0
  154. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.js +46 -0
  155. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  156. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  157. package/dist/src/runtime/orchestration/role-calls/transactions.js +2 -0
  158. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.d.ts +48 -0
  159. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.js +9 -0
  160. package/dist/src/runtime/orchestration/role-calls/work-plan-source.d.ts +7 -0
  161. package/dist/src/runtime/orchestration/role-calls/work-plan-source.js +85 -0
  162. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.d.ts +3 -0
  163. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.js +17 -0
  164. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.d.ts +10 -0
  165. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.js +149 -0
  166. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  167. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  168. package/dist/src/runtime/plugins/compiled-catalog.d.ts +2 -1
  169. package/dist/src/runtime/plugins/configured-manifests.d.ts +3 -0
  170. package/dist/src/runtime/plugins/configured-manifests.js +37 -0
  171. package/dist/src/runtime/plugins/entrypoint-validation.d.ts +6 -0
  172. package/dist/src/runtime/plugins/entrypoint-validation.js +74 -0
  173. package/dist/src/runtime/plugins/loader.js +11 -123
  174. package/dist/src/runtime/plugins/manifest-discovery.d.ts +4 -1
  175. package/dist/src/runtime/plugins/manifest-discovery.js +8 -1
  176. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  177. package/dist/src/runtime/plugins/manifest-validator.js +7 -1
  178. package/dist/src/runtime/plugins/runtime-capability-plugins.d.ts +4 -0
  179. package/dist/src/runtime/plugins/runtime-capability-plugins.js +7 -0
  180. package/dist/src/runtime/plugins/selection.d.ts +14 -0
  181. package/dist/src/runtime/plugins/selection.js +38 -0
  182. package/dist/src/runtime/ports.d.ts +8 -2
  183. package/dist/src/runtime/projects/contracts.d.ts +40 -0
  184. package/dist/src/runtime/projects/contracts.js +10 -0
  185. package/dist/src/runtime/projects/folders.d.ts +7 -0
  186. package/dist/src/runtime/projects/folders.js +110 -0
  187. package/dist/src/runtime/projects/repository.d.ts +10 -0
  188. package/dist/src/runtime/projects/repository.js +54 -0
  189. package/dist/src/runtime/projects/service.d.ts +3 -0
  190. package/dist/src/runtime/projects/service.js +34 -0
  191. package/dist/src/runtime/projects/session-paths.d.ts +5 -0
  192. package/dist/src/runtime/projects/session-paths.js +13 -0
  193. package/dist/src/runtime/request/execution-agent-plan-update.d.ts +4 -0
  194. package/dist/src/runtime/request/execution-agent-plan-update.js +13 -0
  195. package/dist/src/runtime/request/execution-agent-root-execution.js +9 -1
  196. package/dist/src/runtime/request/handler.js +9 -2
  197. package/dist/src/runtime/request/input.d.ts +2 -1
  198. package/dist/src/runtime/request/input.js +1 -6
  199. package/dist/src/runtime/request/role-call-planner-events.js +4 -0
  200. package/dist/src/runtime/request/role-executor-composition.js +9 -1
  201. package/dist/src/runtime/request/root-contract.d.ts +6 -1
  202. package/dist/src/runtime/request/root-execution-kernel.js +17 -0
  203. package/dist/src/runtime/request/root-plan-event-projection.d.ts +3 -0
  204. package/dist/src/runtime/request/root-plan-event-projection.js +32 -0
  205. package/dist/src/runtime/request/root-plan-update.d.ts +15 -0
  206. package/dist/src/runtime/request/root-plan-update.js +20 -0
  207. package/dist/src/runtime/request/worker-capability-composition.d.ts +1 -0
  208. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  209. package/dist/src/runtime/runtime-environment.d.ts +1 -0
  210. package/dist/src/runtime/runtime-environment.js +2 -0
  211. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +32 -0
  212. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +106 -0
  213. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.d.ts +5 -0
  214. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.js +40 -0
  215. package/dist/src/runtime/steps/auditor-decision/audit-input-state.d.ts +12 -0
  216. package/dist/src/runtime/steps/auditor-decision/audit-input-state.js +101 -0
  217. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +31 -16
  218. package/dist/src/runtime/steps/auditor-decision/contracts.js +3 -3
  219. package/dist/src/runtime/steps/auditor-decision/evidence-binding.d.ts +5 -0
  220. package/dist/src/runtime/steps/auditor-decision/evidence-binding.js +43 -0
  221. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.d.ts +2 -0
  222. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +71 -0
  223. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +13 -0
  224. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +89 -0
  225. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +10 -0
  226. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +56 -0
  227. package/dist/src/runtime/steps/auditor-decision/evidence-selection.d.ts +9 -0
  228. package/dist/src/runtime/steps/auditor-decision/evidence-selection.js +71 -0
  229. package/dist/src/runtime/steps/auditor-decision/format.js +44 -2
  230. package/dist/src/runtime/steps/auditor-decision/index.d.ts +3 -0
  231. package/dist/src/runtime/steps/auditor-decision/index.js +3 -0
  232. package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -2
  233. package/dist/src/runtime/steps/auditor-decision/input.js +64 -20
  234. package/dist/src/runtime/steps/auditor-decision/parser.js +38 -23
  235. package/dist/src/runtime/steps/auditor-decision/projection.js +49 -99
  236. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  237. package/dist/src/runtime/steps/auditor-decision/prompt.js +9 -4
  238. package/dist/src/runtime/steps/auditor-decision/run.js +79 -47
  239. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +8 -1
  240. package/dist/src/runtime/steps/execution-agent/contracts.js +2 -0
  241. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +4 -0
  242. package/dist/src/runtime/steps/execution-agent/format.js +4 -3
  243. package/dist/src/runtime/steps/execution-agent/input.js +10 -11
  244. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  245. package/dist/src/runtime/steps/execution-agent/prompt.js +11 -4
  246. package/dist/src/runtime/steps/execution-agent/state-context.js +10 -0
  247. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +18 -0
  248. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +86 -0
  249. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.d.ts +2 -0
  250. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.js +38 -0
  251. package/dist/src/runtime/steps/execution-agent/work-plan-sources.d.ts +6 -0
  252. package/dist/src/runtime/steps/execution-agent/work-plan-sources.js +54 -0
  253. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +40 -0
  254. package/dist/src/runtime/steps/planner-decision/capability-brief.js +47 -0
  255. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -2
  256. package/dist/src/runtime/steps/planner-decision/input.js +23 -13
  257. package/dist/src/runtime/steps/planner-decision/prompt.js +2 -2
  258. package/dist/src/runtime/steps/planner-decision/run.js +11 -7
  259. package/dist/src/runtime/steps/planner-graph/parser.js +0 -11
  260. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -1
  261. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.d.ts +10 -0
  262. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.js +39 -0
  263. package/dist/src/runtime/steps/supervisor-decision/run.js +2 -1
  264. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -1
  265. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +20 -1
  266. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +1 -1
  267. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +6 -6
  268. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +2 -1
  269. package/dist/src/sessions/project-binding.d.ts +12 -0
  270. package/dist/src/sessions/project-binding.js +49 -0
  271. package/dist/src/sessions/record/projection.d.ts +6 -1
  272. package/dist/src/sessions/record/projection.js +1 -0
  273. package/dist/src/sessions/session-service.d.ts +2 -1
  274. package/dist/src/sessions/session-service.js +11 -1
  275. package/dist/src/sessions/types.d.ts +7 -0
  276. package/dist/src/shared/directory-authority/bootstrap.d.ts +1 -0
  277. package/dist/src/shared/directory-authority/bootstrap.js +118 -0
  278. package/dist/src/shared/directory-authority/command.d.ts +8 -0
  279. package/dist/src/shared/directory-authority/command.js +27 -0
  280. package/dist/src/shared/directory-authority/errors.d.ts +5 -0
  281. package/dist/src/shared/directory-authority/errors.js +10 -0
  282. package/dist/src/shared/directory-authority/index.d.ts +3 -0
  283. package/dist/src/shared/directory-authority/index.js +3 -0
  284. package/dist/src/shared/directory-authority/protocol.d.ts +11 -0
  285. package/dist/src/shared/directory-authority/protocol.js +62 -0
  286. package/dist/src/shared/directory-authority/task.d.ts +7 -0
  287. package/dist/src/shared/directory-authority/task.js +97 -0
  288. package/dist/src/web-ui/app/ARCHITECTURE.md +121 -1
  289. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  290. package/dist/src/web-ui/app/app-dom.js +3 -0
  291. package/dist/src/web-ui/app/app-state.js +38 -0
  292. package/dist/src/web-ui/app/app.js +76 -67
  293. package/dist/src/web-ui/app/components/config-workspace/config-model.js +23 -3
  294. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +2 -0
  295. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +2 -0
  296. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +6 -0
  297. package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +27 -0
  298. package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +28 -0
  299. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +5 -0
  300. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +23 -3
  301. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +26 -8
  302. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +56 -0
  303. package/dist/src/web-ui/app/components/config-workspace.js +11 -0
  304. package/dist/src/web-ui/app/components/conversation-activity.d.ts +6 -0
  305. package/dist/src/web-ui/app/components/conversation-activity.js +10 -2
  306. package/dist/src/web-ui/app/components/conversation-file-action.js +33 -0
  307. package/dist/src/web-ui/app/components/conversation-file-focus.d.ts +12 -0
  308. package/dist/src/web-ui/app/components/conversation-file-focus.js +149 -0
  309. package/dist/src/web-ui/app/components/conversation-file-preview.d.ts +23 -0
  310. package/dist/src/web-ui/app/components/conversation-file-preview.js +247 -0
  311. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +6 -0
  312. package/dist/src/web-ui/app/components/conversation-role-cards.js +10 -2
  313. package/dist/src/web-ui/app/components/conversation-tool-evidence.d.ts +9 -0
  314. package/dist/src/web-ui/app/components/conversation-tool-evidence.js +129 -0
  315. package/dist/src/web-ui/app/components/conversation-tools.d.ts +6 -0
  316. package/dist/src/web-ui/app/components/conversation-tools.js +25 -105
  317. package/dist/src/web-ui/app/components/conversation-view.js +10 -1
  318. package/dist/src/web-ui/app/components/dashboard/workspace.js +19 -7
  319. package/dist/src/web-ui/app/components/model-setup/rendering.js +99 -0
  320. package/dist/src/web-ui/app/components/model-setup/save-flow.js +111 -0
  321. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
  322. package/dist/src/web-ui/app/components/model-setup/validation.js +125 -0
  323. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +44 -0
  324. package/dist/src/web-ui/app/components/model-setup/wizard.js +370 -0
  325. package/dist/src/web-ui/app/components/plugins/manager.js +200 -0
  326. package/dist/src/web-ui/app/components/plugins/rendering.js +124 -0
  327. package/dist/src/web-ui/app/components/plugins/view-state.js +123 -0
  328. package/dist/src/web-ui/app/components/project-creation.js +119 -0
  329. package/dist/src/web-ui/app/components/project-session-groups.js +95 -0
  330. package/dist/src/web-ui/app/components/runtime-config-activation.js +83 -0
  331. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.d.ts +9 -0
  332. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.js +198 -0
  333. package/dist/src/web-ui/app/components/runtime-setup/bridge-rendering.js +107 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/commands.js +54 -0
  335. package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +25 -0
  336. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +154 -0
  337. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +71 -0
  338. package/dist/src/web-ui/app/components/runtime-setup/context-window.js +18 -0
  339. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.d.ts +15 -0
  340. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +87 -0
  341. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +30 -0
  342. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +57 -0
  343. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +284 -0
  344. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +117 -0
  345. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +173 -0
  346. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +141 -0
  347. package/dist/src/web-ui/app/components/runtime-setup/validation.js +69 -0
  348. package/dist/src/web-ui/app/components/runtime-setup/view-state.js +58 -0
  349. package/dist/src/web-ui/app/components/runtime-setup/wizard-shell.js +27 -0
  350. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +66 -5
  351. package/dist/src/web-ui/app/components/runtime-setup-guide.js +415 -461
  352. package/dist/src/web-ui/app/components/system-host/download.js +38 -0
  353. package/dist/src/web-ui/app/components/system-host/manager.js +249 -0
  354. package/dist/src/web-ui/app/components/system-host/rendering.js +88 -0
  355. package/dist/src/web-ui/app/components/system-host/setup-notice.js +87 -0
  356. package/dist/src/web-ui/app/components/system-host/visibility.js +35 -0
  357. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +4 -0
  358. package/dist/src/web-ui/app/components/tool-approval-card.js +15 -0
  359. package/dist/src/web-ui/app/configuration-environment-refresh.js +118 -0
  360. package/dist/src/web-ui/app/configuration-feature.js +125 -4
  361. package/dist/src/web-ui/app/controllers/app-event-bindings.js +2 -0
  362. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +1 -0
  363. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +4 -3
  364. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.d.ts +24 -0
  365. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.js +158 -0
  366. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.d.ts +19 -0
  367. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.js +63 -0
  368. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -0
  369. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +2 -0
  370. package/dist/src/web-ui/app/controllers/conversation-view-feature.js +28 -0
  371. package/dist/src/web-ui/app/controllers/dashboard-controller.js +17 -0
  372. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +45 -0
  373. package/dist/src/web-ui/app/controllers/projects-controller.js +278 -0
  374. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +3 -0
  375. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +13 -6
  376. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -1
  377. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +11 -95
  378. package/dist/src/web-ui/app/controllers/session-controller.js +64 -57
  379. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.d.ts +20 -0
  380. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +116 -0
  381. package/dist/src/web-ui/app/dashboard-feature.js +32 -10
  382. package/dist/src/web-ui/app/index.html +44 -7
  383. package/dist/src/web-ui/app/lib/conversation-file-preview.d.ts +12 -0
  384. package/dist/src/web-ui/app/lib/conversation-file-reference.d.ts +30 -0
  385. package/dist/src/web-ui/app/lib/conversation-file-reference.js +66 -0
  386. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +2 -0
  387. package/dist/src/web-ui/app/lib/tool-activity-event.js +18 -6
  388. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +2 -0
  389. package/dist/src/web-ui/app/lib/tool-activity-model.js +4 -2
  390. package/dist/src/web-ui/app/lib/tool-permission-mode.d.ts +16 -0
  391. package/dist/src/web-ui/app/lib/tool-permission-mode.js +60 -0
  392. package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +102 -0
  393. package/dist/src/web-ui/app/projects-feature.js +134 -0
  394. package/dist/src/web-ui/app/runtime-onboarding-feature.d.ts +34 -0
  395. package/dist/src/web-ui/app/runtime-onboarding-feature.js +92 -0
  396. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.d.ts +5 -0
  397. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.js +13 -0
  398. package/dist/src/web-ui/app/services/client-preferences.d.ts +24 -0
  399. package/dist/src/web-ui/app/services/client-preferences.js +32 -19
  400. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +46 -0
  401. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.d.ts +28 -0
  402. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.js +75 -0
  403. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +19 -0
  404. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +34 -0
  405. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +27 -0
  406. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +52 -0
  407. package/dist/src/web-ui/app/services/runtime-web-client.js +35 -4
  408. package/dist/src/web-ui/app/styles/13-projects.css +272 -0
  409. package/dist/src/web-ui/app/styles/18-dashboard.css +0 -5
  410. package/dist/src/web-ui/app/styles/19-runtime-setup.css +411 -0
  411. package/dist/src/web-ui/app/styles/20-chat-composer.css +0 -384
  412. package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +254 -0
  413. package/dist/src/web-ui/app/styles/37-runtime-activation.css +26 -0
  414. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +1 -10
  415. package/dist/src/web-ui/app/styles/41-plugin-management.css +351 -0
  416. package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +179 -0
  417. package/dist/src/web-ui/app/styles/43-model-setup.css +73 -0
  418. package/dist/src/web-ui/app/styles/44-model-provider-cards.css +63 -0
  419. package/dist/src/web-ui/app/styles/45-bridge-setup.css +44 -0
  420. package/dist/src/web-ui/app/styles/46-system-host.css +132 -0
  421. package/dist/src/web-ui/app/styles.css +10 -0
  422. package/dist/src/web-ui/config-dashboard-backend.d.ts +5 -0
  423. package/dist/src/web-ui/config-dashboard-backend.js +94 -114
  424. package/dist/src/web-ui/config-dashboard-model-identity.d.ts +7 -0
  425. package/dist/src/web-ui/config-dashboard-model-identity.js +45 -0
  426. package/dist/src/web-ui/config-dashboard-save-transaction.d.ts +5 -0
  427. package/dist/src/web-ui/config-dashboard-save-transaction.js +21 -0
  428. package/dist/src/web-ui/environment-config.d.ts +17 -0
  429. package/dist/src/web-ui/environment-config.js +60 -0
  430. package/dist/src/web-ui/forwarded-loopback-policy.d.ts +2 -0
  431. package/dist/src/web-ui/forwarded-loopback-policy.js +14 -0
  432. package/dist/src/web-ui/local-runtime/api-router.d.ts +7 -0
  433. package/dist/src/web-ui/local-runtime/api-router.js +136 -12
  434. package/dist/src/web-ui/local-runtime/config-mutation-request.d.ts +8 -0
  435. package/dist/src/web-ui/local-runtime/config-mutation-request.js +55 -0
  436. package/dist/src/web-ui/local-runtime/configuration-activation-environments.d.ts +22 -0
  437. package/dist/src/web-ui/local-runtime/configuration-activation-environments.js +106 -0
  438. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +7 -0
  439. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +36 -0
  440. package/dist/src/web-ui/local-runtime/configuration-activation.d.ts +20 -0
  441. package/dist/src/web-ui/local-runtime/configuration-activation.js +107 -0
  442. package/dist/src/web-ui/local-runtime/contracts.d.ts +8 -0
  443. package/dist/src/web-ui/local-runtime/conversation-file-access.d.ts +30 -0
  444. package/dist/src/web-ui/local-runtime/conversation-file-access.js +131 -0
  445. package/dist/src/web-ui/local-runtime/conversation-file-content.d.ts +21 -0
  446. package/dist/src/web-ui/local-runtime/conversation-file-content.js +75 -0
  447. package/dist/src/web-ui/local-runtime/conversation-file-format.d.ts +12 -0
  448. package/dist/src/web-ui/local-runtime/conversation-file-format.js +87 -0
  449. package/dist/src/web-ui/local-runtime/conversation-file-native-open.d.ts +10 -0
  450. package/dist/src/web-ui/local-runtime/conversation-file-native-open.js +94 -0
  451. package/dist/src/web-ui/local-runtime/conversation-file-native-request.d.ts +4 -0
  452. package/dist/src/web-ui/local-runtime/conversation-file-native-request.js +72 -0
  453. package/dist/src/web-ui/local-runtime/conversation-file-routes.d.ts +11 -0
  454. package/dist/src/web-ui/local-runtime/conversation-file-routes.js +105 -0
  455. package/dist/src/web-ui/local-runtime/conversation-file-target.d.ts +14 -0
  456. package/dist/src/web-ui/local-runtime/conversation-file-target.js +158 -0
  457. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +14 -0
  458. package/dist/src/web-ui/local-runtime/environment-registry.js +121 -6
  459. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +2 -1
  460. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +15 -10
  461. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +17 -0
  462. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +45 -0
  463. package/dist/src/web-ui/local-runtime/model-setup-identity.d.ts +16 -0
  464. package/dist/src/web-ui/local-runtime/model-setup-identity.js +20 -0
  465. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +24 -0
  466. package/dist/src/web-ui/local-runtime/model-setup-input.js +107 -0
  467. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +17 -0
  468. package/dist/src/web-ui/local-runtime/model-setup-provider.js +68 -0
  469. package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +14 -0
  470. package/dist/src/web-ui/local-runtime/model-setup-retry.js +47 -0
  471. package/dist/src/web-ui/local-runtime/model-setup-routes.d.ts +12 -0
  472. package/dist/src/web-ui/local-runtime/model-setup-routes.js +50 -0
  473. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +30 -0
  474. package/dist/src/web-ui/local-runtime/model-setup-service.js +93 -0
  475. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +5 -0
  476. package/dist/src/web-ui/local-runtime/model-setup-validation.js +33 -0
  477. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +14 -0
  478. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +50 -0
  479. package/dist/src/web-ui/local-runtime/project-routes.d.ts +17 -0
  480. package/dist/src/web-ui/local-runtime/project-routes.js +93 -0
  481. package/dist/src/web-ui/local-runtime/provider-credential-identity.d.ts +3 -0
  482. package/dist/src/web-ui/local-runtime/provider-credential-identity.js +18 -0
  483. package/dist/src/web-ui/local-runtime/request-execution.d.ts +1 -0
  484. package/dist/src/web-ui/local-runtime/request-execution.js +8 -0
  485. package/dist/src/web-ui/local-runtime/runtime-availability.js +36 -7
  486. package/dist/src/web-ui/local-runtime/runtime-setup-completion.d.ts +13 -0
  487. package/dist/src/web-ui/local-runtime/runtime-setup-completion.js +28 -0
  488. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +13 -0
  489. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +110 -0
  490. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.d.ts +4 -0
  491. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +21 -0
  492. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +14 -0
  493. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +148 -0
  494. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.d.ts +7 -0
  495. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.js +18 -0
  496. package/dist/src/web-ui/local-runtime/runtime-setup-draft.d.ts +21 -0
  497. package/dist/src/web-ui/local-runtime/runtime-setup-draft.js +105 -0
  498. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.d.ts +8 -0
  499. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.js +40 -0
  500. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.d.ts +1 -0
  501. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.js +27 -0
  502. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +19 -0
  503. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +82 -0
  504. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.d.ts +7 -0
  505. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.js +35 -0
  506. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.d.ts +4 -0
  507. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.js +23 -0
  508. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.d.ts +11 -0
  509. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.js +31 -0
  510. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +11 -0
  511. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +60 -0
  512. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.d.ts +8 -0
  513. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.js +77 -0
  514. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +35 -0
  515. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +56 -0
  516. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.d.ts +17 -0
  517. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +229 -0
  518. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +65 -0
  519. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +195 -0
  520. package/dist/src/web-ui/local-runtime/runtime-setup-validation.d.ts +8 -0
  521. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +35 -0
  522. package/dist/src/web-ui/local-runtime/saved-model-catalog.d.ts +3 -0
  523. package/dist/src/web-ui/local-runtime/saved-model-catalog.js +20 -0
  524. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +8 -0
  525. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +71 -0
  526. package/dist/src/web-ui/local-runtime/setup-embedding-provider.d.ts +13 -0
  527. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +114 -0
  528. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +12 -0
  529. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +53 -0
  530. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +32 -0
  531. package/dist/src/web-ui/local-runtime/setup-embedding-service.js +59 -0
  532. package/dist/src/web-ui/local-runtime-backend.d.ts +1 -0
  533. package/dist/src/web-ui/local-runtime-backend.js +3 -0
  534. package/dist/src/web-ui/plugin-capability-selection.d.ts +14 -0
  535. package/dist/src/web-ui/plugin-capability-selection.js +48 -0
  536. package/dist/src/web-ui/plugin-management-catalog.d.ts +26 -0
  537. package/dist/src/web-ui/plugin-management-catalog.js +56 -0
  538. package/dist/src/web-ui/plugin-management-selection.d.ts +16 -0
  539. package/dist/src/web-ui/plugin-management-selection.js +71 -0
  540. package/dist/src/web-ui/plugin-management-service.d.ts +29 -0
  541. package/dist/src/web-ui/plugin-management-service.js +150 -0
  542. package/dist/src/web-ui/request-authority.d.ts +8 -0
  543. package/dist/src/web-ui/request-authority.js +129 -0
  544. package/dist/src/web-ui/runtime-setup-gateway-address.d.ts +3 -0
  545. package/dist/src/web-ui/runtime-setup-gateway-address.js +26 -0
  546. package/dist/src/web-ui/runtime-setup-gateway.d.ts +29 -0
  547. package/dist/src/web-ui/runtime-setup-gateway.js +177 -0
  548. package/dist/src/web-ui/runtime-setup-shutdown.d.ts +2 -0
  549. package/dist/src/web-ui/runtime-setup-shutdown.js +20 -0
  550. package/dist/src/web-ui/server.d.ts +7 -14
  551. package/dist/src/web-ui/server.js +53 -63
  552. package/dist/src/web-ui/session-read-state/service.d.ts +12 -2
  553. package/dist/src/web-ui/system-host-service.d.ts +19 -0
  554. package/dist/src/web-ui/system-host-service.js +159 -0
  555. package/dist/src/web-ui/system-host-setup/companion-bundle.d.ts +2 -0
  556. package/dist/src/web-ui/system-host-setup/companion-bundle.js +12 -0
  557. package/dist/src/web-ui/system-host-setup/companion-macos.d.ts +2 -0
  558. package/dist/src/web-ui/system-host-setup/companion-macos.js +74 -0
  559. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +2 -0
  560. package/dist/src/web-ui/system-host-setup/companion-windows.js +105 -0
  561. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +18 -0
  562. package/dist/src/web-ui/system-host-setup/installer-contract.js +51 -0
  563. package/dist/src/web-ui/system-host-setup/installers.d.ts +6 -0
  564. package/dist/src/web-ui/system-host-setup/installers.js +30 -0
  565. package/dist/src/web-ui/system-host-setup/native-authorization.d.ts +3 -0
  566. package/dist/src/web-ui/system-host-setup/native-authorization.js +11 -0
  567. package/dist/src/web-ui/system-host-setup/node-distribution.d.ts +19 -0
  568. package/dist/src/web-ui/system-host-setup/node-distribution.js +9 -0
  569. package/dist/src/web-ui/system-host-setup/readiness.d.ts +18 -0
  570. package/dist/src/web-ui/system-host-setup/readiness.js +70 -0
  571. package/dist/src/web-ui/system-host-setup/routes.d.ts +20 -0
  572. package/dist/src/web-ui/system-host-setup/routes.js +121 -0
  573. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.d.ts +2 -0
  574. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.js +17 -0
  575. package/dist/src/web-ui/system-host-setup/wsl-interop-config.d.ts +3 -0
  576. package/dist/src/web-ui/system-host-setup/wsl-interop-config.js +67 -0
  577. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.d.ts +1 -0
  578. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.js +49 -0
  579. package/dist/src/web-ui/system-host-upgrade-authority.d.ts +5 -0
  580. package/dist/src/web-ui/system-host-upgrade-authority.js +13 -0
  581. package/docs/architecture.md +6 -1
  582. package/docs/installation.md +53 -17
  583. package/docs/known-limitations.md +14 -0
  584. package/docs/plugins.md +137 -26
  585. package/docs/projects-and-full-plus.md +218 -0
  586. package/docs/runtime-invariant-coverage.md +6 -3
  587. package/docs/runtime-prompt-policy-contracts.md +37 -5
  588. package/docs/runtime-public-contracts.md +17 -0
  589. package/package.json +5 -2
  590. package/plugins/exec/plugin.json +30 -9
  591. package/plugins/exec/skills/exec_process_skill/SKILL.md +1 -0
  592. package/plugins/exec/skills/exec_skill/SKILL.md +9 -10
  593. package/plugins/exec/source/handlers.ts +4 -38
  594. package/plugins/exec/source/paths.ts +53 -49
  595. package/plugins/exec/source/process-manager.ts +1 -20
  596. package/plugins/exec/source/shell-platform.ts +29 -0
  597. package/plugins/exec/source/types.ts +6 -4
  598. package/plugins/exec/source/validation.ts +33 -198
  599. package/plugins/exec/src/index.cjs +87 -222
  600. package/plugins/filesystem/plugin.json +1 -1
  601. package/plugins/filesystem/skills/dev_view_skill/SKILL.md +7 -0
  602. package/plugins/filesystem/source/atomic-write.ts +15 -3
  603. package/plugins/filesystem/source/bounded-io.ts +5 -99
  604. package/plugins/filesystem/source/dev-view.ts +2 -1
  605. package/plugins/filesystem/source/directory-authority-write.ts +68 -0
  606. package/plugins/filesystem/source/directory-sample-task.ts +23 -0
  607. package/plugins/filesystem/source/directory-sample.ts +132 -0
  608. package/plugins/filesystem/source/directory-write-task.ts +160 -0
  609. package/plugins/filesystem/source/edit-file.ts +3 -0
  610. package/plugins/filesystem/source/file-output-presentation.ts +42 -0
  611. package/plugins/filesystem/source/mutation-parent.ts +29 -9
  612. package/plugins/filesystem/source/view-locator.ts +141 -0
  613. package/plugins/filesystem/source/view-window.ts +12 -25
  614. package/plugins/filesystem/source/write-file.ts +8 -0
  615. package/plugins/filesystem/src/index.cjs +855 -153
  616. package/plugins/local-search/source/index.ts +2 -0
  617. package/plugins/local-search/source/paths.ts +30 -7
  618. package/plugins/local-search/source/ripgrep-process.ts +69 -0
  619. package/plugins/local-search/source/ripgrep.ts +19 -23
  620. package/plugins/local-search/src/index.cjs +295 -32
  621. package/plugins/system/plugin.json +374 -0
  622. package/plugins/system/skills/system_actions/SKILL.md +31 -0
  623. package/plugins/system/source/application-catalog.ts +237 -0
  624. package/plugins/system/source/application-launch.ts +113 -0
  625. package/plugins/system/source/application-observation.ts +78 -0
  626. package/plugins/system/source/commands.ts +106 -0
  627. package/plugins/system/source/companion/autostart.ts +185 -0
  628. package/plugins/system/source/companion/broker-client.ts +183 -0
  629. package/plugins/system/source/companion/broker-location.ts +89 -0
  630. package/plugins/system/source/companion/broker-server.ts +169 -0
  631. package/plugins/system/source/companion/connection.ts +211 -0
  632. package/plugins/system/source/companion/liveness.ts +23 -0
  633. package/plugins/system/source/companion/native-address.ts +55 -0
  634. package/plugins/system/source/companion/native-identity.ts +26 -0
  635. package/plugins/system/source/companion/native-messages.ts +100 -0
  636. package/plugins/system/source/companion/native-session.ts +268 -0
  637. package/plugins/system/source/companion/native-state.ts +135 -0
  638. package/plugins/system/source/companion/native-supervisor.ts +98 -0
  639. package/plugins/system/source/companion/pairing-store.ts +110 -0
  640. package/plugins/system/source/companion/private-store.ts +58 -0
  641. package/plugins/system/source/companion/process-owner-identity.ts +190 -0
  642. package/plugins/system/source/companion/protocol.ts +108 -0
  643. package/plugins/system/source/contracts.ts +44 -0
  644. package/plugins/system/source/elevation.ts +88 -0
  645. package/plugins/system/source/handlers.ts +120 -0
  646. package/plugins/system/source/host-dispatch.ts +106 -0
  647. package/plugins/system/source/host-evidence.ts +72 -0
  648. package/plugins/system/source/host-observation.ts +66 -0
  649. package/plugins/system/source/index.ts +8 -0
  650. package/plugins/system/source/process-result.ts +111 -0
  651. package/plugins/system/source/process-runner.ts +104 -0
  652. package/plugins/system/source/request-system-modules.ts +117 -0
  653. package/plugins/system/source/request-target-snapshot.ts +163 -0
  654. package/plugins/system/source/target-observation.ts +43 -0
  655. package/plugins/system/source/targets.ts +147 -0
  656. package/plugins/system/src/index.cjs +1730 -0
  657. package/src/runtime/README.md +36 -8
  658. package/src/runtime/local-host/README.md +7 -0
  659. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +0 -14
  660. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +0 -87
@@ -1,3 +1,4 @@
1
+ import type { SessionProject } from "./project-binding.js";
1
2
  import type { AgentMode } from "../shared/types.js";
2
3
  import type { RuntimeAttachmentReference } from "../shared/attachments.js";
3
4
  import type { SessionMemoryCheckpoint } from "./memory/contracts.js";
@@ -50,6 +51,8 @@ export type SessionRuntimeEvent = {
50
51
  export type SessionRequestRecord = {
51
52
  requestId: string;
52
53
  sessionId: string;
54
+ /** Absent for legacy records and records recreated by late event appends. */
55
+ generation?: string;
53
56
  status: SessionRequestStatus;
54
57
  createdAt: string;
55
58
  updatedAt: string;
@@ -68,10 +71,12 @@ export type SessionRequestFinalState = {
68
71
  export type SessionRequestReplay = {
69
72
  requestId: string;
70
73
  sessionId: string;
74
+ generation?: string;
71
75
  events: Record<string, unknown>[];
72
76
  finalState: SessionRequestFinalState | null;
73
77
  };
74
78
  export type SessionListItem = {
79
+ project?: SessionProject;
75
80
  id: string;
76
81
  title: string;
77
82
  createdAt: number;
@@ -110,6 +115,7 @@ export type SessionSnapshotRequest = {
110
115
  finalState: SessionRequestFinalState | null;
111
116
  };
112
117
  export type SessionSnapshot = {
118
+ project?: SessionProject;
113
119
  sessionId: string;
114
120
  title: string;
115
121
  messages: SessionSnapshotMessage[];
@@ -156,6 +162,7 @@ export type SessionMessage = {
156
162
  attachments?: RuntimeAttachmentReference[];
157
163
  };
158
164
  export type SessionRecord = {
165
+ project?: SessionProject;
159
166
  id: string;
160
167
  title: string;
161
168
  createdAt: string;
@@ -0,0 +1 @@
1
+ export declare function directoryAuthorityScript(mode: "task" | "command", messageLimit: number, task?: (input: never) => unknown): string;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * This function is serialized into a fresh Node process. It must remain
3
+ * closure-free and use only node: built-ins; the starting cwd is untrusted
4
+ * until its identity has been compared with the inherited directory handle.
5
+ */
6
+ function directoryAuthorityBootstrap(mode, messageLimit, task) {
7
+ const fs = require("node:fs");
8
+ function fail(code, message) {
9
+ throw Object.assign(new Error(message), { code });
10
+ }
11
+ function verifyDirectoryAuthority() {
12
+ const expected = fs.fstatSync(3, { bigint: true });
13
+ const actual = fs.statSync(".", { bigint: true });
14
+ const matchesHeldDirectory = expected.isDirectory() &&
15
+ actual.isDirectory() &&
16
+ expected.dev === actual.dev &&
17
+ expected.ino === actual.ino;
18
+ if (matchesHeldDirectory)
19
+ return;
20
+ fail("directory_authority_changed", "The directory changed before the operation could establish its authority.");
21
+ }
22
+ function readRequest() {
23
+ const fd = mode === "task" ? 0 : 4;
24
+ const chunk = Buffer.alloc(64 * 1024);
25
+ const chunks = [];
26
+ let total = 0;
27
+ for (;;) {
28
+ const length = fs.readSync(fd, chunk, 0, chunk.length, null);
29
+ if (length === 0)
30
+ break;
31
+ total += length;
32
+ if (total > messageLimit) {
33
+ fail("directory_authority_request_too_large", "The directory operation input exceeds the bridge byte limit.");
34
+ }
35
+ chunks.push(Buffer.from(chunk.subarray(0, length)));
36
+ }
37
+ return JSON.parse(Buffer.concat(chunks).toString("utf8"));
38
+ }
39
+ function reportFailure(error) {
40
+ const detail = error;
41
+ const code = typeof detail?.code === "string"
42
+ ? detail.code.slice(0, 256)
43
+ : "directory_authority_failed";
44
+ const message = typeof detail?.message === "string"
45
+ ? detail.message.slice(0, 4096)
46
+ : "The directory operation failed.";
47
+ let encoded;
48
+ try {
49
+ encoded = JSON.stringify({
50
+ ok: false,
51
+ error: { code, message, data: detail?.data },
52
+ });
53
+ if (Buffer.byteLength(encoded) > messageLimit)
54
+ throw new Error();
55
+ }
56
+ catch {
57
+ encoded = JSON.stringify({ ok: false, error: { code, message } });
58
+ }
59
+ writeResponse(mode === "task" ? 1 : 2, encoded);
60
+ process.exitCode = mode === "task" ? 0 : 125;
61
+ }
62
+ function writeResponse(fd, encoded) {
63
+ const bytes = Buffer.from(encoded);
64
+ let offset = 0;
65
+ while (offset < bytes.length) {
66
+ offset += fs.writeSync(fd, bytes, offset, bytes.length - offset);
67
+ }
68
+ }
69
+ async function runTask(input) {
70
+ if (!task)
71
+ fail("directory_authority_failed", "The directory task is missing.");
72
+ const result = await task(input);
73
+ const encoded = JSON.stringify({ ok: true, result });
74
+ if (Buffer.byteLength(encoded) > messageLimit) {
75
+ fail("directory_authority_result_too_large", "The directory operation result exceeds the bridge byte limit.");
76
+ }
77
+ writeResponse(1, encoded);
78
+ }
79
+ function runCommand(input) {
80
+ const { spawn } = require("node:child_process");
81
+ const command = input;
82
+ // Omitting cwd inherits the kernel-pinned authority. Resolving cwd() back
83
+ // into a pathname here would reopen the race this bridge prevents.
84
+ const child = spawn(command.command, command.args, {
85
+ stdio: ["ignore", "inherit", "inherit"],
86
+ env: process.env,
87
+ });
88
+ child.once("error", reportFailure);
89
+ child.once("exit", (code, signal) => {
90
+ if (signal) {
91
+ process.kill(process.pid, signal);
92
+ return;
93
+ }
94
+ if (typeof code === "number")
95
+ process.exitCode = code;
96
+ });
97
+ }
98
+ try {
99
+ verifyDirectoryAuthority();
100
+ const input = readRequest();
101
+ if (mode === "command") {
102
+ runCommand(input);
103
+ return;
104
+ }
105
+ void runTask(input).catch(reportFailure);
106
+ }
107
+ catch (error) {
108
+ reportFailure(error);
109
+ }
110
+ }
111
+ export function directoryAuthorityScript(mode, messageLimit, task) {
112
+ const taskSource = task ? `(${task.toString()})` : "undefined";
113
+ // tsx preserves nested function names with esbuild's __name annotation.
114
+ // Include that annotation's definition so the same trusted task works in
115
+ // development and in the production bundle without rewriting its source.
116
+ const preserveFunctionName = "const __name=(target,value)=>Object.defineProperty(target,'name',{value,configurable:true});";
117
+ return `${preserveFunctionName}(${directoryAuthorityBootstrap.toString()})(${JSON.stringify(mode)},${messageLimit},${taskSource});`;
118
+ }
@@ -0,0 +1,8 @@
1
+ import { type ChildProcessByStdio } from "node:child_process";
2
+ import type { Readable } from "node:stream";
3
+ import { type DirectoryAuthorityLocation } from "./protocol.js";
4
+ export declare function spawnDirectoryAuthorityCommand(input: DirectoryAuthorityLocation & Readonly<{
5
+ command: string;
6
+ args: readonly string[];
7
+ env?: NodeJS.ProcessEnv;
8
+ }>): ChildProcessByStdio<null, Readable, Readable>;
@@ -0,0 +1,27 @@
1
+ import { spawn } from "node:child_process";
2
+ import { directoryAuthorityScript } from "./bootstrap.js";
3
+ import { assertDirectoryAuthorityLocation, authorityEnvironment, AUTHORITY_MESSAGE_LIMIT, encodeAuthorityRequest, } from "./protocol.js";
4
+ export function spawnDirectoryAuthorityCommand(input) {
5
+ assertDirectoryAuthorityLocation(input);
6
+ const request = encodeAuthorityRequest({
7
+ command: input.command,
8
+ args: input.args,
9
+ });
10
+ const child = spawn(process.execPath, [
11
+ "--input-type=commonjs",
12
+ "-e",
13
+ directoryAuthorityScript("command", AUTHORITY_MESSAGE_LIMIT),
14
+ ], {
15
+ cwd: input.directoryPath,
16
+ env: authorityEnvironment(input.env),
17
+ detached: true,
18
+ windowsHide: true,
19
+ stdio: ["ignore", "pipe", "pipe", input.directoryFd, "pipe"],
20
+ });
21
+ const requestPipe = child.stdio[4];
22
+ // An early authority failure may close the request pipe before the parent
23
+ // finishes writing. The process result remains the authoritative error.
24
+ requestPipe?.on("error", () => undefined);
25
+ requestPipe?.end(request);
26
+ return child;
27
+ }
@@ -0,0 +1,5 @@
1
+ export declare class DirectoryAuthorityError extends Error {
2
+ readonly code: string;
3
+ readonly data?: Readonly<Record<string, unknown>> | undefined;
4
+ constructor(code: string, message: string, data?: Readonly<Record<string, unknown>> | undefined);
5
+ }
@@ -0,0 +1,10 @@
1
+ export class DirectoryAuthorityError extends Error {
2
+ code;
3
+ data;
4
+ constructor(code, message, data) {
5
+ super(message);
6
+ this.code = code;
7
+ this.data = data;
8
+ this.name = "DirectoryAuthorityError";
9
+ }
10
+ }
@@ -0,0 +1,3 @@
1
+ export { spawnDirectoryAuthorityCommand } from "./command.js";
2
+ export { DirectoryAuthorityError } from "./errors.js";
3
+ export { runDirectoryAuthorityTask } from "./task.js";
@@ -0,0 +1,3 @@
1
+ export { spawnDirectoryAuthorityCommand } from "./command.js";
2
+ export { DirectoryAuthorityError } from "./errors.js";
3
+ export { runDirectoryAuthorityTask } from "./task.js";
@@ -0,0 +1,11 @@
1
+ export declare const AUTHORITY_MESSAGE_LIMIT: number;
2
+ export declare const AUTHORITY_STDERR_LIMIT: number;
3
+ export declare const AUTHORITY_TASK_TIMEOUT_MS = 30000;
4
+ export type DirectoryAuthorityLocation = Readonly<{
5
+ directoryPath: string;
6
+ directoryFd: number;
7
+ }>;
8
+ export declare function assertDirectoryAuthorityLocation(location: DirectoryAuthorityLocation): void;
9
+ export declare function authorityEnvironment(environment?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
10
+ export declare function encodeAuthorityRequest(input: unknown): string;
11
+ export declare function decodeAuthorityResult<Result>(output: string): Result;
@@ -0,0 +1,62 @@
1
+ import { isAbsolute } from "node:path";
2
+ import { DirectoryAuthorityError } from "./errors.js";
3
+ export const AUTHORITY_MESSAGE_LIMIT = 8 * 1024 * 1024;
4
+ export const AUTHORITY_STDERR_LIMIT = 16 * 1024;
5
+ export const AUTHORITY_TASK_TIMEOUT_MS = 30_000;
6
+ export function assertDirectoryAuthorityLocation(location) {
7
+ if (!isAbsolute(location.directoryPath)) {
8
+ throw new DirectoryAuthorityError("directory_authority_invalid_path", "The directory authority requires an absolute starting path.");
9
+ }
10
+ const hasOpenDescriptorNumber = Number.isInteger(location.directoryFd) && location.directoryFd >= 0;
11
+ if (hasOpenDescriptorNumber)
12
+ return;
13
+ throw new DirectoryAuthorityError("directory_authority_invalid_fd", "The directory authority requires an open directory descriptor.");
14
+ }
15
+ export function authorityEnvironment(environment = process.env) {
16
+ const sanitized = { ...environment };
17
+ delete sanitized.NODE_OPTIONS;
18
+ delete sanitized.NODE_PATH;
19
+ return sanitized;
20
+ }
21
+ export function encodeAuthorityRequest(input) {
22
+ let encoded;
23
+ try {
24
+ encoded = JSON.stringify(input);
25
+ }
26
+ catch {
27
+ throw new DirectoryAuthorityError("directory_authority_invalid_request", "The directory operation input must be JSON serializable.");
28
+ }
29
+ if (encoded === undefined) {
30
+ throw new DirectoryAuthorityError("directory_authority_invalid_request", "The directory operation input must be JSON serializable.");
31
+ }
32
+ if (Buffer.byteLength(encoded) <= AUTHORITY_MESSAGE_LIMIT)
33
+ return encoded;
34
+ throw new DirectoryAuthorityError("directory_authority_request_too_large", "The directory operation input exceeds the bridge byte limit.");
35
+ }
36
+ function isAuthorityMessageObject(value) {
37
+ return typeof value === "object" && value !== null && !Array.isArray(value);
38
+ }
39
+ export function decodeAuthorityResult(output) {
40
+ let message;
41
+ try {
42
+ message = JSON.parse(output);
43
+ }
44
+ catch {
45
+ throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
46
+ }
47
+ if (!isAuthorityMessageObject(message)) {
48
+ throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
49
+ }
50
+ if (message.ok === true)
51
+ return message.result;
52
+ const hasAuthorityError = message.ok === false && isAuthorityMessageObject(message.error);
53
+ if (!hasAuthorityError) {
54
+ throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid response.");
55
+ }
56
+ const { code, message: explanation, data, } = message.error;
57
+ const hasErrorDescription = typeof code === "string" && typeof explanation === "string";
58
+ if (!hasErrorDescription) {
59
+ throw new DirectoryAuthorityError("directory_authority_protocol_error", "The directory operation returned an invalid error response.");
60
+ }
61
+ throw new DirectoryAuthorityError(code, explanation, isAuthorityMessageObject(data) ? data : undefined);
62
+ }
@@ -0,0 +1,7 @@
1
+ import { type DirectoryAuthorityLocation } from "./protocol.js";
2
+ export declare function runDirectoryAuthorityTask<Input, Result>(input: DirectoryAuthorityLocation & Readonly<{
3
+ input: Input;
4
+ task: (input: Input) => Result | Promise<Result>;
5
+ timeoutMs?: number;
6
+ signal?: AbortSignal;
7
+ }>): Promise<Result>;
@@ -0,0 +1,97 @@
1
+ import { spawn } from "node:child_process";
2
+ import { directoryAuthorityScript } from "./bootstrap.js";
3
+ import { DirectoryAuthorityError } from "./errors.js";
4
+ import { assertDirectoryAuthorityLocation, authorityEnvironment, AUTHORITY_MESSAGE_LIMIT, AUTHORITY_STDERR_LIMIT, AUTHORITY_TASK_TIMEOUT_MS, decodeAuthorityResult, encodeAuthorityRequest, } from "./protocol.js";
5
+ export async function runDirectoryAuthorityTask(input) {
6
+ assertDirectoryAuthorityLocation(input);
7
+ const request = encodeAuthorityRequest(input.input);
8
+ const timeoutMs = input.timeoutMs ?? AUTHORITY_TASK_TIMEOUT_MS;
9
+ const hasPositiveDeadline = Number.isFinite(timeoutMs) && timeoutMs > 0;
10
+ if (!hasPositiveDeadline) {
11
+ throw new DirectoryAuthorityError("directory_authority_invalid_timeout", "The directory operation deadline must be a positive finite duration.");
12
+ }
13
+ if (input.signal?.aborted) {
14
+ throw new DirectoryAuthorityError("directory_authority_aborted", "The directory operation was cancelled before it started.");
15
+ }
16
+ const child = spawn(process.execPath, [
17
+ "--input-type=commonjs",
18
+ "-e",
19
+ directoryAuthorityScript("task", AUTHORITY_MESSAGE_LIMIT, input.task),
20
+ ], {
21
+ cwd: input.directoryPath,
22
+ env: authorityEnvironment(),
23
+ detached: true,
24
+ windowsHide: true,
25
+ stdio: ["pipe", "pipe", "pipe", input.directoryFd],
26
+ });
27
+ return new Promise((resolve, reject) => {
28
+ const chunks = [];
29
+ const stderrChunks = [];
30
+ let bytes = 0;
31
+ let stderrBytes = 0;
32
+ let failure;
33
+ const stop = (error) => {
34
+ if (failure)
35
+ return;
36
+ failure = error;
37
+ if (typeof child.pid === "number") {
38
+ try {
39
+ process.kill(-child.pid, "SIGKILL");
40
+ return;
41
+ }
42
+ catch {
43
+ // A process which has already exited may no longer own its group.
44
+ }
45
+ }
46
+ child.kill("SIGKILL");
47
+ };
48
+ const onAbort = () => stop(new DirectoryAuthorityError("directory_authority_aborted", "The directory operation was cancelled."));
49
+ const timer = setTimeout(() => stop(new DirectoryAuthorityError("directory_authority_timeout", "The directory operation exceeded its deadline.")), timeoutMs);
50
+ timer.unref();
51
+ input.signal?.addEventListener("abort", onAbort, { once: true });
52
+ if (input.signal?.aborted)
53
+ onAbort();
54
+ child.stdout.on("data", (chunk) => {
55
+ bytes += chunk.length;
56
+ if (bytes > AUTHORITY_MESSAGE_LIMIT) {
57
+ stop(new DirectoryAuthorityError("directory_authority_result_too_large", "The directory operation result exceeds the bridge byte limit."));
58
+ return;
59
+ }
60
+ chunks.push(chunk);
61
+ });
62
+ child.stderr.on("data", (chunk) => {
63
+ const remaining = Math.max(AUTHORITY_STDERR_LIMIT - stderrBytes, 0);
64
+ if (remaining === 0)
65
+ return;
66
+ stderrChunks.push(chunk.subarray(0, remaining));
67
+ stderrBytes += Math.min(chunk.length, remaining);
68
+ });
69
+ child.stdin.on("error", () => undefined);
70
+ child.once("error", (error) => {
71
+ failure ??= new DirectoryAuthorityError("directory_authority_unavailable", `The directory operation could not start: ${error.message}`);
72
+ });
73
+ child.once("close", (code, signal) => {
74
+ clearTimeout(timer);
75
+ input.signal?.removeEventListener("abort", onAbort);
76
+ if (failure) {
77
+ reject(failure);
78
+ return;
79
+ }
80
+ if (code !== 0) {
81
+ reject(new DirectoryAuthorityError("directory_authority_failed", "The directory operation process did not complete successfully.", {
82
+ exitCode: code,
83
+ signal,
84
+ stderr: Buffer.concat(stderrChunks).toString("utf8"),
85
+ }));
86
+ return;
87
+ }
88
+ try {
89
+ resolve(decodeAuthorityResult(Buffer.concat(chunks).toString("utf8")));
90
+ }
91
+ catch (error) {
92
+ reject(error);
93
+ }
94
+ });
95
+ child.stdin.end(request);
96
+ });
97
+ }
@@ -48,6 +48,17 @@ the completion-event boundary: tool output, canonical evidence and model context
48
48
  are unchanged. The Web UI does not fetch a file or memory record again to recreate
49
49
  historical evidence. Passive Runtime memory remains outside tool activity.
50
50
 
51
+ `tool-process-activity-fields.js` projects declared process display fields without
52
+ branching on tool identities. Opted-in commands retain up to 4,096 characters and
53
+ whitespace; shared `conversation-tool-evidence.js` renders them as inert
54
+ preformatted text in both activity and approval disclosures. Working
55
+ directory, target, exit code and recorded process evidence remain distinct from
56
+ model-authored intent. Result output stays a bounded excerpt, and completion or
57
+ exit zero does not establish an application window or independent outcome check.
58
+ Terminal failures preserve recorded result fields and clipping flags. Old events
59
+ without declared input/output evidence remain unavailable; the UI never guesses
60
+ commands from rationale or opaque parameter summaries.
61
+
51
62
  Web sources appear in a separate Activity section alongside role cards and the event timeline. `web-source-event.js` projects only successful `web_search` and `web_fetch` completions; `web-sources.js` validates bounded plugin receipts and groups them by recorded call. `conversation-sources.js` renders links and retrieval/presentation states without interpreting answer text. Source-bearing events retain their own identity before display grouping, and stored session events use the same projection as live events. Session switching clears them with the existing Activity state.
52
63
 
53
64
  The optional `meta.webSources` version 1 receipt describes the final bounded **tool output**, not whether a later model invocation consumed or cited it. Older events can show found/fetched URLs with unknown output visibility; absent or unsupported receipts never imply full content. Favicons are best-effort browser requests to the source origin's `/favicon.ico`, loaded lazily with no referrer and a local fallback. No third-party icon service or server proxy is used. Source URL policy rejects unsafe schemes and credentials, and prevents automatic image loads for local/private IP literals; origin DNS, redirects, cookies, and browser image policy remain browser concerns. Icons carry no evidence and never block tool execution.
@@ -80,6 +91,36 @@ The native conversation list uses the existing `SessionService` disk reader and
80
91
 
81
92
  Read-state persistence is an optional Web UI projection. `session-read-state/availability.ts` isolates sidecar failures from listing, loading, clearing and deleting conversations. A failure returns `readStateStatus: "unavailable"` and unknown counts, preserves the sidecar for diagnosis, and leaves read acknowledgements unsuccessful. The browser keeps the last known receipt, labels unavailable tracking explicitly and resumes normal counts after a healthy list refresh. Canonical session and attachment failures remain errors. Workspace visibility is committed before change callbacks attempt to acknowledge visible messages, including drawer closure and responsive layout changes.
82
93
 
94
+ ## Conversation file preview
95
+
96
+ `conversation-file-reference.js` projects only explicit successful file-output
97
+ receipts from tool events. Activity keeps this reference separate from the
98
+ historical sent/received fields and excerpt. `conversation-file-action.js` makes
99
+ the existing filename an inline preview control inside the tool summary. Its click suppresses disclosure activation;
100
+ other summary interactions retain the recorded evidence disclosure.
101
+
102
+ `conversation-file-preview-controller.js` owns scoped loading and stale-response
103
+ rejection. The feature adapter mounts the viewer outside the message subtree and
104
+ preserves conversation scroll while the layout changes. Session resets and
105
+ workspace departure close it; responsive focus and Escape behavior belong to
106
+ `conversation-file-focus.js`. Transport stays in the conversation-files service.
107
+
108
+ The local backend's `conversation-file-access.ts` admits only a saved or scoped
109
+ active completion belonging to the requested environment, session and request.
110
+ `conversation-file-target.ts` owns the held file and root/containment identity
111
+ checks shared by content reads and native opening. The route revalidates request
112
+ generation and completion before returning bytes or handing off to a Mac app.
113
+ `conversation-file-native-request.ts` limits native opening to same-origin JSON
114
+ POSTs from a local browser on macOS. `conversation-file-native-open.ts` restricts
115
+ file types and invokes the fixed OS opener without a shell. The viewer exposes
116
+ this action only when its preview response includes `nativeOpenAvailable: true`;
117
+ its controller scopes busy/failure feedback to the selected file. The OS app
118
+ resolves the original pathname after handoff; that asynchronous read is outside
119
+ the preview reader's held-descriptor guarantee. The receipt
120
+ is presentation-only: the optional filesystem report callback feeds event
121
+ metadata, never the canonical tool result or model context. No file registry or
122
+ historical content snapshot is created.
123
+
83
124
  ## Styles
84
125
 
85
126
  `styles.css` is the ordered manifest. The modules under `styles/` own:
@@ -97,7 +138,6 @@ Keep responsive overrides last and avoid moving declarations between modules wit
97
138
 
98
139
  Visual components may format or group events, but they never accept transport frames or construct Runtime API payloads. Realtime frame parsing belongs to `realtime-transport.js`; request sequence and terminal-state reduction belong to `realtime-event-controller.js`; endpoint construction and HTTP payload serialization belong to `runtime-web-client.js` and its feature request modules; and feature controllers own when those operations occur. Config remains explicit-save; presentation changes must never introduce autosave.
99
140
 
100
-
101
141
  ## Core schedules
102
142
 
103
143
  `schedules-feature.js` composes the scheduler browser feature from its controller,
@@ -125,3 +165,83 @@ run identity before activating the ordinary realtime request lifecycle. Duplicat
125
165
  trigger delivery cannot add another user message or reactivate a completed run.
126
166
  The scheduler page and chat card are presentation-only consumers; the runtime
127
167
  scheduler remains the sole owner of Job state and dispatch decisions.
168
+
169
+ ## Interactive setup and configuration activation
170
+
171
+ The setup guide composes focused rendering/validation modules and receives
172
+ configuration transport callbacks. Runtime onboarding retains catalog authority
173
+ over chat readiness. Home suppresses its dashboard data and shortcuts while
174
+ setup is required; the guide has one scroll owner in either Home or Chat.
175
+ OpenAI credentials live only in the current password input and one save payload.
176
+ They never enter browser state, HTML attributes, preferences or control logs.
177
+
178
+ The setup sequence is Provider, Connection, Embedding, Plugins and Ready.
179
+ The onboarding feature assembles transport dependencies outside app.js; focused
180
+ step modules own embedding and plugin card selection. Chat connection writes
181
+ defer activation in the wizard, while ordinary setup API callers retain their
182
+ existing immediate-activation behavior. The pending-activation gate keeps the
183
+ catalog unavailable until the explicit final apply, including browser reload in
184
+ the same Web process. Optional choices are read back from canonical saved files.
185
+
186
+ Embedding setup prepares only the requested provider and its private credential,
187
+ then delegates to the existing memory probe-before-save service. Probe dimensions
188
+ and fingerprints come from the provider response; the UI never invents them.
189
+ Provider preparation may survive a later probe failure, which is reported without
190
+ exposing credentials. The memory Web router resolves the current configuration
191
+ path per request so first-time setup uses local/runtime.config.json correctly.
192
+ Plugin cards reuse the existing manifest selection API, preserving sibling tools
193
+ and saved policies. Fresh installations start with all plugins and tools selected.
194
+ The onboarding plugin cards display every tool checkbox directly. Their dedicated
195
+ stylesheet widens only this step and keeps the outer workspace as the scroll owner.
196
+
197
+ Configuration composes a plugin manager using the canonical manifest selection
198
+ projection. The separate activation control explicitly applies saved files.
199
+ The server checks synchronous owner admission, refuses busy or externally owned
200
+ environments, and refreshes its gateway through the owning lifecycle callback.
201
+ Browser reload and saved selection are not evidence of live activation.
202
+
203
+ ### Additive model setup
204
+
205
+ Configuration composes a separate Provider / Model / Ready dialog in
206
+ components/model-setup/. It shares the wizard shell and connection form with
207
+ first setup, while retaining its own additive save/apply lifecycle. The dialog
208
+ is outside the dashboard so refresh and mutation locking cannot detach it.
209
+ An entered API key remains only in the mounted password field until final save;
210
+ review and back navigation do not copy it into state or markup.
211
+
212
+ configuration-feature.js guards opening against existing configuration drafts,
213
+ blocks workspace/environment navigation while the dialog is open, and holds the
214
+ external mutation lock during save, Apply and refresh. Saved model identity
215
+ survives Apply failure; successful Apply survives refresh failure. Completion
216
+ refreshes Memory provider choices and chat models, selects the new profile, and
217
+ focuses it only after closing the modal and releasing the lock.
218
+
219
+ local-runtime/model-setup-\* owns catalog/input/credential/addition behavior.
220
+ It uses the canonical configuration repository and shared CLI merge helper,
221
+ preserving existing profiles, references, defaults and connection settings.
222
+ Only new OpenAI/Ollama connections are created here; existing provider IDs are
223
+ resolved by adapter type. The transport exposes no secret values and requires
224
+ the same-origin JSON mutation guard. This flow does not invoke a model.
225
+
226
+ ## Projects and permission modes
227
+
228
+ `projects-feature.js` composes project UI; `projects-controller.js` owns project
229
+ and folder loading, creation and stale-response rejection. Presentation modules
230
+ render the creation form and sidebar groups, while `runtime-web-client/projects.js`
231
+ owns transport. The folder form occupies the chat canvas without resetting the
232
+ active conversation or draft. It closes the file viewer through its existing
233
+ presentation lifecycle. Creation calls the owner API; a saved project session is
234
+ opened through the canonical conversation controller without a model request.
235
+
236
+ The session controller remains the owner of session row actions and read state.
237
+ Its injected group renderer places project groups above ordinary conversations,
238
+ including projects with no sessions. The session's saved project snapshot also
239
+ provides the visible working-folder label. Neither project presentation nor client
240
+ request payloads overwrite global runtime paths.
241
+
242
+ `tool-permission-mode-controller.js` owns the permission selector and explicit
243
+ per-session preference changes; `lib/tool-permission-mode.js` owns known browser
244
+ values and server compatibility. FULL+ requires advertised server support, and
245
+ transport rejects unsupported requests without a silent downgrade. The existing
246
+ composer queue keeps its captured mode. Project membership never selects FULL+.
247
+ `app-state.js` constructs the same one shared browser state identity for `app.js`.
@@ -8,6 +8,7 @@ export async function bootstrapWebApp({
8
8
  homeComposer,
9
9
  dashboard,
10
10
  schedules,
11
+ projects,
11
12
  selection,
12
13
  client,
13
14
  bindables,
@@ -30,6 +31,7 @@ export async function bootstrapWebApp({
30
31
  renderMessages();
31
32
  state.config = await client.loadWebConfig();
32
33
  schedules.refreshAvailability();
34
+ projects?.refreshAvailability();
33
35
  selection.renderEnvironmentOptions();
34
36
  const options = selection.environmentOptions();
35
37
  const saved = preferences.environmentId();
@@ -42,6 +44,7 @@ export async function bootstrapWebApp({
42
44
  selection.renderAgentPicker();
43
45
  realtime.connect();
44
46
  await Promise.allSettled([
47
+ projects?.load(),
45
48
  selection.loadModels(),
46
49
  selection.loadAgentMode(),
47
50
  operations.loadRuntimeStatus(),
@@ -26,6 +26,8 @@ export function findAppDom(documentRoot = document) {
26
26
  environmentSelect: documentRoot.getElementById("environmentSelect"),
27
27
  agentPickerButton: documentRoot.getElementById("agentPickerButton"),
28
28
  agentPickerMenu: documentRoot.getElementById("agentPickerMenu"),
29
+ newProjectButton: documentRoot.getElementById("newProjectButton"),
30
+ projectCreationRoot: documentRoot.getElementById("projectCreationRoot"),
29
31
  newSessionButton: documentRoot.getElementById("newSessionButton"),
30
32
  refreshSessionsButton: documentRoot.getElementById("refreshSessionsButton"),
31
33
  closeSessionsButton: documentRoot.getElementById("closeSessionsButton"),
@@ -33,6 +35,7 @@ export function findAppDom(documentRoot = document) {
33
35
  sessionSearchInput: documentRoot.getElementById("sessionSearchInput"),
34
36
  sessionsCount: documentRoot.getElementById("sessionsCount"),
35
37
  sessionsList: documentRoot.getElementById("sessionsList"),
38
+ currentProjectContext: documentRoot.getElementById("currentProjectContext"),
36
39
  sessionTitle: documentRoot.getElementById("sessionTitle"),
37
40
  agentModeButton: documentRoot.getElementById("agentModeButton"),
38
41
  agentModeMenu: documentRoot.getElementById("agentModeMenu"),
@@ -0,0 +1,38 @@
1
+ export function createAppState() {
2
+ return {
3
+ config: null,
4
+ connected: false,
5
+ sessions: [],
6
+ pinnedSessionIds: [],
7
+ sessionModes: {},
8
+ sessionModels: {},
9
+ lastModelByEnvironment: {},
10
+ agentMode: "reasoning",
11
+ supportedAgentModes: ["fast", "reasoning", "deep", "auto"],
12
+ agentModeMenuOpen: false,
13
+ permissionModeMenuOpen: false,
14
+ agentPickerOpen: false,
15
+ busySessionIds: new Set(),
16
+ messages: [],
17
+ events: [],
18
+ taskProgressByRequest: new Map(),
19
+ contextWindowByRequest: new Map(),
20
+ submittedToolApprovalIds: new Set(),
21
+ requestMessages: new Map(),
22
+ currentSessionId: "",
23
+ activeRequestId: "",
24
+ sessionViewVersion: 0,
25
+ lastSeqByRequest: new Map(),
26
+ modelProfiles: [],
27
+ defaultModelProfileId: "",
28
+ runtimeAvailability: { status: "loading" },
29
+ pendingAttachments: [],
30
+ pendingAttachmentUploadCounts: new Map(),
31
+ composerAttachmentGeneration: 0,
32
+ composerSending: false,
33
+ composerQueueDrainingScopes: new Set(),
34
+ composerQueueRecoveredReleaseTokens: new Set(),
35
+ activeComposerQueueRecovery: null,
36
+ sessionQuery: "",
37
+ };
38
+ }