@abot-ai/runtime 1.3.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (634) hide show
  1. package/dist/plugins/system/source/application-catalog.d.ts +14 -0
  2. package/dist/plugins/system/source/application-catalog.js +185 -0
  3. package/dist/plugins/system/source/application-launch.d.ts +10 -0
  4. package/dist/plugins/system/source/application-launch.js +80 -0
  5. package/dist/plugins/system/source/application-observation.d.ts +25 -0
  6. package/dist/plugins/system/source/application-observation.js +53 -0
  7. package/dist/plugins/system/source/commands.d.ts +7 -0
  8. package/dist/plugins/system/source/commands.js +71 -0
  9. package/dist/plugins/system/source/companion/autostart.d.ts +16 -0
  10. package/dist/plugins/system/source/companion/autostart.js +146 -0
  11. package/dist/plugins/system/source/companion/broker-location.d.ts +11 -0
  12. package/dist/plugins/system/source/companion/broker-location.js +76 -0
  13. package/dist/plugins/system/source/companion/broker-server.d.ts +4 -0
  14. package/dist/plugins/system/source/companion/broker-server.js +147 -0
  15. package/dist/plugins/system/source/companion/connection.d.ts +25 -0
  16. package/dist/plugins/system/source/companion/connection.js +182 -0
  17. package/dist/plugins/system/source/companion/liveness.d.ts +3 -0
  18. package/dist/plugins/system/source/companion/liveness.js +20 -0
  19. package/dist/plugins/system/source/companion/native-address.d.ts +12 -0
  20. package/dist/plugins/system/source/companion/native-address.js +41 -0
  21. package/dist/plugins/system/source/companion/native-identity.d.ts +2 -0
  22. package/dist/plugins/system/source/companion/native-identity.js +23 -0
  23. package/dist/plugins/system/source/companion/native-messages.d.ts +9 -0
  24. package/dist/plugins/system/source/companion/native-messages.js +77 -0
  25. package/dist/plugins/system/source/companion/native-session.d.ts +19 -0
  26. package/dist/plugins/system/source/companion/native-session.js +205 -0
  27. package/dist/plugins/system/source/companion/native-state.d.ts +22 -0
  28. package/dist/plugins/system/source/companion/native-state.js +126 -0
  29. package/dist/plugins/system/source/companion/native-supervisor.d.ts +10 -0
  30. package/dist/plugins/system/source/companion/native-supervisor.js +93 -0
  31. package/dist/plugins/system/source/companion/pairing-store.d.ts +22 -0
  32. package/dist/plugins/system/source/companion/pairing-store.js +102 -0
  33. package/dist/plugins/system/source/companion/private-store.d.ts +4 -0
  34. package/dist/plugins/system/source/companion/private-store.js +59 -0
  35. package/dist/plugins/system/source/companion/process-owner-identity.d.ts +22 -0
  36. package/dist/plugins/system/source/companion/process-owner-identity.js +144 -0
  37. package/dist/plugins/system/source/companion/protocol.d.ts +57 -0
  38. package/dist/plugins/system/source/companion/protocol.js +66 -0
  39. package/dist/plugins/system/source/contracts.d.ts +38 -0
  40. package/dist/plugins/system/source/contracts.js +7 -0
  41. package/dist/plugins/system/source/elevation.d.ts +8 -0
  42. package/dist/plugins/system/source/elevation.js +57 -0
  43. package/dist/plugins/system/source/handlers.d.ts +3 -0
  44. package/dist/plugins/system/source/handlers.js +90 -0
  45. package/dist/plugins/system/source/host-evidence.d.ts +4 -0
  46. package/dist/plugins/system/source/host-evidence.js +52 -0
  47. package/dist/plugins/system/source/host-observation.d.ts +25 -0
  48. package/dist/plugins/system/source/host-observation.js +59 -0
  49. package/dist/plugins/system/source/process-result.d.ts +4 -0
  50. package/dist/plugins/system/source/process-result.js +86 -0
  51. package/dist/plugins/system/source/process-runner.d.ts +3 -0
  52. package/dist/plugins/system/source/process-runner.js +103 -0
  53. package/dist/plugins/system/source/target-observation.d.ts +18 -0
  54. package/dist/plugins/system/source/target-observation.js +29 -0
  55. package/dist/plugins/system/source/targets.d.ts +8 -0
  56. package/dist/plugins/system/source/targets.js +101 -0
  57. package/dist/scripts/add-runtime-model.js +10 -53
  58. package/dist/scripts/runtime-model-addition.d.ts +13 -0
  59. package/dist/scripts/runtime-model-addition.js +53 -0
  60. package/dist/scripts/runtime-setup-files.d.ts +3 -1
  61. package/dist/scripts/runtime-setup-files.js +18 -1
  62. package/dist/src/capabilities/file-output-presentation.d.ts +43 -0
  63. package/dist/src/capabilities/file-output-presentation.js +133 -0
  64. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +2 -0
  65. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.d.ts +5 -0
  66. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +37 -0
  67. package/dist/src/capabilities/tool-definition-validator/event-presentation.js +3 -0
  68. package/dist/src/capabilities/tool-definition-validator/module-registry.js +12 -0
  69. package/dist/src/capabilities/tool-event-input-text.d.ts +9 -0
  70. package/dist/src/capabilities/tool-event-input-text.js +64 -0
  71. package/dist/src/capabilities/tool-event-metadata.js +10 -0
  72. package/dist/src/capabilities/tool-executor.d.ts +1 -0
  73. package/dist/src/capabilities/tool-executor.js +1 -0
  74. package/dist/src/capabilities/tool-permission-mode.d.ts +7 -0
  75. package/dist/src/capabilities/tool-permission-mode.js +27 -0
  76. package/dist/src/capabilities/tool-types.d.ts +18 -2
  77. package/dist/src/cli/abot.js +18 -15
  78. package/dist/src/cli/host-companion-bundle.mjs +5201 -0
  79. package/dist/src/cli/host-companion-entry.d.ts +8 -0
  80. package/dist/src/cli/host-companion-entry.js +70 -0
  81. package/dist/src/cli/host-companion-startup.d.ts +4 -0
  82. package/dist/src/cli/host-companion-startup.js +35 -0
  83. package/dist/src/cli/host-companion.d.ts +5 -0
  84. package/dist/src/cli/host-companion.js +203 -0
  85. package/dist/src/model-gateway/server/configuration.js +4 -1
  86. package/dist/src/model-gateway/server/contracts.d.ts +2 -0
  87. package/dist/src/plugin-contract/entrypoint.d.ts +4 -2
  88. package/dist/src/plugin-contract/manifest.d.ts +1 -0
  89. package/dist/src/runtime/adapters/config-file-transaction.d.ts +46 -0
  90. package/dist/src/runtime/adapters/config-file-transaction.js +158 -0
  91. package/dist/src/runtime/adapters/configured-skill-provider.js +3 -3
  92. package/dist/src/runtime/adapters/in-memory-session-store.js +11 -1
  93. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +7 -3
  94. package/dist/src/runtime/adapters/long-term-memory/file-lock/contracts.d.ts +4 -1
  95. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.d.ts +1 -1
  96. package/dist/src/runtime/adapters/long-term-memory/file-lock/install.js +5 -1
  97. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.d.ts +3 -0
  98. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-identity.js +15 -0
  99. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +2 -0
  100. package/dist/src/runtime/adapters/long-term-memory/onboarding-config-repository.js +17 -43
  101. package/dist/src/runtime/adapters/registered-tool-normal-invocations/catalog/registrations.js +6 -2
  102. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +10 -1
  103. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.d.ts +11 -0
  104. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/execution-binding.js +37 -0
  105. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.d.ts +7 -0
  106. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/file-output-presentation.js +105 -0
  107. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +29 -3
  108. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.d.ts +1 -0
  109. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/action-fingerprint.js +1 -0
  110. package/dist/src/runtime/capabilities/configured-tool-registry.js +9 -1
  111. package/dist/src/runtime/capabilities/file-output-root-identity.d.ts +5 -0
  112. package/dist/src/runtime/capabilities/file-output-root-identity.js +146 -0
  113. package/dist/src/runtime/capabilities/file-output-root-marker-creation.d.ts +5 -0
  114. package/dist/src/runtime/capabilities/file-output-root-marker-creation.js +63 -0
  115. package/dist/src/runtime/capabilities/request-bound-tool-registry.d.ts +1 -0
  116. package/dist/src/runtime/capabilities/request-bound-tool-registry.js +6 -1
  117. package/dist/src/runtime/capabilities/request-module-preparation.d.ts +3 -0
  118. package/dist/src/runtime/capabilities/request-module-preparation.js +102 -0
  119. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +10 -0
  120. package/dist/src/runtime/capabilities/request-permission-catalog.js +50 -0
  121. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +4 -0
  122. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +61 -0
  123. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +3 -0
  124. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +5 -2
  125. package/dist/src/runtime/capabilities/request-working-directory.d.ts +3 -0
  126. package/dist/src/runtime/capabilities/request-working-directory.js +12 -0
  127. package/dist/src/runtime/composition.d.ts +2 -0
  128. package/dist/src/runtime/config/runner/loader.d.ts +4 -0
  129. package/dist/src/runtime/config/runner/loader.js +23 -3
  130. package/dist/src/runtime/context/capability-brief-budget.d.ts +18 -0
  131. package/dist/src/runtime/context/capability-brief-budget.js +38 -0
  132. package/dist/src/runtime/context/capability-brief-readmission.d.ts +21 -0
  133. package/dist/src/runtime/context/capability-brief-readmission.js +47 -0
  134. package/dist/src/runtime/context/capability-brief.d.ts +9 -2
  135. package/dist/src/runtime/context/capability-brief.js +21 -39
  136. package/dist/src/runtime/context/capability-descriptions.d.ts +3 -0
  137. package/dist/src/runtime/context/capability-descriptions.js +23 -0
  138. package/dist/src/runtime/default-environment-adapters.js +3 -4
  139. package/dist/src/runtime/local-application.d.ts +18 -0
  140. package/dist/src/runtime/local-application.js +12 -0
  141. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +1 -0
  142. package/dist/src/runtime/local-host/app-service-dispatch.js +9 -0
  143. package/dist/src/runtime/local-host/client-services.d.ts +16 -0
  144. package/dist/src/runtime/local-host/client-services.js +3 -2
  145. package/dist/src/runtime/local-host/contracts.d.ts +4 -0
  146. package/dist/src/runtime/local-host/startup-connection.js +22 -7
  147. package/dist/src/runtime/local-host/transport.js +14 -2
  148. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +5 -2
  149. package/dist/src/runtime/orchestration/role-calls/command-decoder.js +3 -0
  150. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.d.ts +3 -0
  151. package/dist/src/runtime/orchestration/role-calls/command-dispatch/work-plan-transition.js +46 -0
  152. package/dist/src/runtime/orchestration/role-calls/command-dispatch.js +3 -0
  153. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +8 -4
  154. package/dist/src/runtime/orchestration/role-calls/transactions.js +2 -0
  155. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.d.ts +48 -0
  156. package/dist/src/runtime/orchestration/role-calls/work-plan-contracts.js +9 -0
  157. package/dist/src/runtime/orchestration/role-calls/work-plan-source.d.ts +7 -0
  158. package/dist/src/runtime/orchestration/role-calls/work-plan-source.js +85 -0
  159. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.d.ts +3 -0
  160. package/dist/src/runtime/orchestration/role-calls/work-plan-transactions.js +17 -0
  161. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.d.ts +10 -0
  162. package/dist/src/runtime/orchestration/role-calls/work-plan-validation.js +149 -0
  163. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +1 -1
  164. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  165. package/dist/src/runtime/plugins/compiled-catalog.d.ts +2 -1
  166. package/dist/src/runtime/plugins/configured-manifests.d.ts +3 -0
  167. package/dist/src/runtime/plugins/configured-manifests.js +37 -0
  168. package/dist/src/runtime/plugins/entrypoint-validation.d.ts +6 -0
  169. package/dist/src/runtime/plugins/entrypoint-validation.js +74 -0
  170. package/dist/src/runtime/plugins/loader.js +11 -123
  171. package/dist/src/runtime/plugins/manifest-discovery.d.ts +4 -1
  172. package/dist/src/runtime/plugins/manifest-discovery.js +8 -1
  173. package/dist/src/runtime/plugins/manifest-projection.js +3 -0
  174. package/dist/src/runtime/plugins/manifest-validator.js +7 -1
  175. package/dist/src/runtime/plugins/runtime-capability-plugins.d.ts +4 -0
  176. package/dist/src/runtime/plugins/runtime-capability-plugins.js +7 -0
  177. package/dist/src/runtime/plugins/selection.d.ts +14 -0
  178. package/dist/src/runtime/plugins/selection.js +38 -0
  179. package/dist/src/runtime/ports.d.ts +8 -2
  180. package/dist/src/runtime/projects/contracts.d.ts +40 -0
  181. package/dist/src/runtime/projects/contracts.js +10 -0
  182. package/dist/src/runtime/projects/folders.d.ts +7 -0
  183. package/dist/src/runtime/projects/folders.js +110 -0
  184. package/dist/src/runtime/projects/repository.d.ts +10 -0
  185. package/dist/src/runtime/projects/repository.js +54 -0
  186. package/dist/src/runtime/projects/service.d.ts +3 -0
  187. package/dist/src/runtime/projects/service.js +34 -0
  188. package/dist/src/runtime/projects/session-paths.d.ts +5 -0
  189. package/dist/src/runtime/projects/session-paths.js +13 -0
  190. package/dist/src/runtime/request/execution-agent-plan-update.d.ts +4 -0
  191. package/dist/src/runtime/request/execution-agent-plan-update.js +13 -0
  192. package/dist/src/runtime/request/execution-agent-root-execution.js +9 -1
  193. package/dist/src/runtime/request/handler.js +9 -2
  194. package/dist/src/runtime/request/input.d.ts +2 -1
  195. package/dist/src/runtime/request/input.js +1 -6
  196. package/dist/src/runtime/request/role-call-planner-events.js +4 -0
  197. package/dist/src/runtime/request/role-executor-composition.js +9 -1
  198. package/dist/src/runtime/request/root-contract.d.ts +6 -1
  199. package/dist/src/runtime/request/root-execution-kernel.js +17 -0
  200. package/dist/src/runtime/request/root-plan-event-projection.d.ts +3 -0
  201. package/dist/src/runtime/request/root-plan-event-projection.js +32 -0
  202. package/dist/src/runtime/request/root-plan-update.d.ts +15 -0
  203. package/dist/src/runtime/request/root-plan-update.js +20 -0
  204. package/dist/src/runtime/request/worker-capability-composition.d.ts +1 -0
  205. package/dist/src/runtime/request/worker-capability-composition.js +2 -0
  206. package/dist/src/runtime/runtime-environment.d.ts +1 -0
  207. package/dist/src/runtime/runtime-environment.js +2 -0
  208. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +32 -0
  209. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +106 -0
  210. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.d.ts +5 -0
  211. package/dist/src/runtime/steps/auditor-decision/advisory-result-budget.js +40 -0
  212. package/dist/src/runtime/steps/auditor-decision/audit-input-state.d.ts +12 -0
  213. package/dist/src/runtime/steps/auditor-decision/audit-input-state.js +101 -0
  214. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +31 -16
  215. package/dist/src/runtime/steps/auditor-decision/contracts.js +3 -3
  216. package/dist/src/runtime/steps/auditor-decision/evidence-binding.d.ts +5 -0
  217. package/dist/src/runtime/steps/auditor-decision/evidence-binding.js +43 -0
  218. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.d.ts +2 -0
  219. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +71 -0
  220. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +13 -0
  221. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +89 -0
  222. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +10 -0
  223. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +56 -0
  224. package/dist/src/runtime/steps/auditor-decision/evidence-selection.d.ts +9 -0
  225. package/dist/src/runtime/steps/auditor-decision/evidence-selection.js +71 -0
  226. package/dist/src/runtime/steps/auditor-decision/format.js +44 -2
  227. package/dist/src/runtime/steps/auditor-decision/index.d.ts +3 -0
  228. package/dist/src/runtime/steps/auditor-decision/index.js +3 -0
  229. package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -2
  230. package/dist/src/runtime/steps/auditor-decision/input.js +64 -20
  231. package/dist/src/runtime/steps/auditor-decision/parser.js +38 -23
  232. package/dist/src/runtime/steps/auditor-decision/projection.js +49 -99
  233. package/dist/src/runtime/steps/auditor-decision/prompt.d.ts +1 -1
  234. package/dist/src/runtime/steps/auditor-decision/prompt.js +9 -4
  235. package/dist/src/runtime/steps/auditor-decision/run.js +79 -47
  236. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +8 -1
  237. package/dist/src/runtime/steps/execution-agent/contracts.js +2 -0
  238. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +4 -0
  239. package/dist/src/runtime/steps/execution-agent/format.js +4 -3
  240. package/dist/src/runtime/steps/execution-agent/input.js +10 -11
  241. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  242. package/dist/src/runtime/steps/execution-agent/prompt.js +11 -4
  243. package/dist/src/runtime/steps/execution-agent/state-context.js +10 -0
  244. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +18 -0
  245. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +86 -0
  246. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.d.ts +2 -0
  247. package/dist/src/runtime/steps/execution-agent/work-plan-decision-parsing.js +38 -0
  248. package/dist/src/runtime/steps/execution-agent/work-plan-sources.d.ts +6 -0
  249. package/dist/src/runtime/steps/execution-agent/work-plan-sources.js +54 -0
  250. package/dist/src/runtime/steps/planner-decision/capability-brief.d.ts +40 -0
  251. package/dist/src/runtime/steps/planner-decision/capability-brief.js +47 -0
  252. package/dist/src/runtime/steps/planner-decision/input.d.ts +4 -2
  253. package/dist/src/runtime/steps/planner-decision/input.js +23 -13
  254. package/dist/src/runtime/steps/planner-decision/prompt.js +2 -2
  255. package/dist/src/runtime/steps/planner-decision/run.js +11 -7
  256. package/dist/src/runtime/steps/planner-graph/parser.js +0 -11
  257. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -1
  258. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.d.ts +10 -0
  259. package/dist/src/runtime/steps/supervisor-decision/capability-brief-readmission.js +39 -0
  260. package/dist/src/runtime/steps/supervisor-decision/run.js +2 -1
  261. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.d.ts +3 -1
  262. package/dist/src/runtime/steps/worker-decision/parser/accepted-decision.js +20 -1
  263. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.d.ts +1 -1
  264. package/dist/src/runtime/steps/worker-decision/parser/capability-batch-validation.js +6 -6
  265. package/dist/src/runtime/steps/worker-decision/parser/capability-invocation-validation.js +2 -1
  266. package/dist/src/sessions/project-binding.d.ts +12 -0
  267. package/dist/src/sessions/project-binding.js +49 -0
  268. package/dist/src/sessions/record/projection.d.ts +6 -1
  269. package/dist/src/sessions/record/projection.js +1 -0
  270. package/dist/src/sessions/session-service.d.ts +2 -1
  271. package/dist/src/sessions/session-service.js +11 -1
  272. package/dist/src/sessions/types.d.ts +7 -0
  273. package/dist/src/web-ui/app/ARCHITECTURE.md +121 -1
  274. package/dist/src/web-ui/app/app-bootstrap.js +3 -0
  275. package/dist/src/web-ui/app/app-dom.js +3 -0
  276. package/dist/src/web-ui/app/app-state.js +38 -0
  277. package/dist/src/web-ui/app/app.js +76 -67
  278. package/dist/src/web-ui/app/components/config-workspace/config-model.js +23 -3
  279. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +2 -0
  280. package/dist/src/web-ui/app/components/config-workspace/field-rendering.js +2 -0
  281. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +6 -0
  282. package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +27 -0
  283. package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +28 -0
  284. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +5 -0
  285. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +23 -3
  286. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +26 -8
  287. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +56 -0
  288. package/dist/src/web-ui/app/components/config-workspace.js +11 -0
  289. package/dist/src/web-ui/app/components/conversation-activity.d.ts +6 -0
  290. package/dist/src/web-ui/app/components/conversation-activity.js +10 -2
  291. package/dist/src/web-ui/app/components/conversation-file-action.js +33 -0
  292. package/dist/src/web-ui/app/components/conversation-file-focus.d.ts +12 -0
  293. package/dist/src/web-ui/app/components/conversation-file-focus.js +149 -0
  294. package/dist/src/web-ui/app/components/conversation-file-preview.d.ts +23 -0
  295. package/dist/src/web-ui/app/components/conversation-file-preview.js +247 -0
  296. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +6 -0
  297. package/dist/src/web-ui/app/components/conversation-role-cards.js +10 -2
  298. package/dist/src/web-ui/app/components/conversation-tool-evidence.d.ts +9 -0
  299. package/dist/src/web-ui/app/components/conversation-tool-evidence.js +129 -0
  300. package/dist/src/web-ui/app/components/conversation-tools.d.ts +6 -0
  301. package/dist/src/web-ui/app/components/conversation-tools.js +25 -105
  302. package/dist/src/web-ui/app/components/conversation-view.js +10 -1
  303. package/dist/src/web-ui/app/components/dashboard/workspace.js +19 -7
  304. package/dist/src/web-ui/app/components/model-setup/rendering.js +99 -0
  305. package/dist/src/web-ui/app/components/model-setup/save-flow.js +111 -0
  306. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
  307. package/dist/src/web-ui/app/components/model-setup/validation.js +125 -0
  308. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +44 -0
  309. package/dist/src/web-ui/app/components/model-setup/wizard.js +370 -0
  310. package/dist/src/web-ui/app/components/plugins/manager.js +200 -0
  311. package/dist/src/web-ui/app/components/plugins/rendering.js +124 -0
  312. package/dist/src/web-ui/app/components/plugins/view-state.js +123 -0
  313. package/dist/src/web-ui/app/components/project-creation.js +119 -0
  314. package/dist/src/web-ui/app/components/project-session-groups.js +95 -0
  315. package/dist/src/web-ui/app/components/runtime-config-activation.js +83 -0
  316. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.d.ts +9 -0
  317. package/dist/src/web-ui/app/components/runtime-setup/bridge-guide.js +198 -0
  318. package/dist/src/web-ui/app/components/runtime-setup/bridge-rendering.js +107 -0
  319. package/dist/src/web-ui/app/components/runtime-setup/commands.js +54 -0
  320. package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +25 -0
  321. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +154 -0
  322. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +71 -0
  323. package/dist/src/web-ui/app/components/runtime-setup/context-window.js +18 -0
  324. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.d.ts +15 -0
  325. package/dist/src/web-ui/app/components/runtime-setup/embedding-credential-status.js +87 -0
  326. package/dist/src/web-ui/app/components/runtime-setup/embedding-provider-receipt.js +30 -0
  327. package/dist/src/web-ui/app/components/runtime-setup/embedding-rendering.js +57 -0
  328. package/dist/src/web-ui/app/components/runtime-setup/embedding.js +284 -0
  329. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +117 -0
  330. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +173 -0
  331. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +141 -0
  332. package/dist/src/web-ui/app/components/runtime-setup/validation.js +69 -0
  333. package/dist/src/web-ui/app/components/runtime-setup/view-state.js +58 -0
  334. package/dist/src/web-ui/app/components/runtime-setup/wizard-shell.js +27 -0
  335. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +66 -5
  336. package/dist/src/web-ui/app/components/runtime-setup-guide.js +415 -461
  337. package/dist/src/web-ui/app/components/system-host/download.js +38 -0
  338. package/dist/src/web-ui/app/components/system-host/manager.js +249 -0
  339. package/dist/src/web-ui/app/components/system-host/rendering.js +88 -0
  340. package/dist/src/web-ui/app/components/system-host/setup-notice.js +87 -0
  341. package/dist/src/web-ui/app/components/system-host/visibility.js +35 -0
  342. package/dist/src/web-ui/app/components/tool-approval-card.d.ts +4 -0
  343. package/dist/src/web-ui/app/components/tool-approval-card.js +15 -0
  344. package/dist/src/web-ui/app/configuration-environment-refresh.js +118 -0
  345. package/dist/src/web-ui/app/configuration-feature.js +125 -4
  346. package/dist/src/web-ui/app/controllers/app-event-bindings.js +2 -0
  347. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +1 -0
  348. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +4 -3
  349. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.d.ts +24 -0
  350. package/dist/src/web-ui/app/controllers/conversation-file-preview-controller.js +158 -0
  351. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.d.ts +19 -0
  352. package/dist/src/web-ui/app/controllers/conversation-file-preview-feature.js +63 -0
  353. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +1 -0
  354. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +2 -0
  355. package/dist/src/web-ui/app/controllers/conversation-view-feature.js +28 -0
  356. package/dist/src/web-ui/app/controllers/dashboard-controller.js +17 -0
  357. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +45 -0
  358. package/dist/src/web-ui/app/controllers/projects-controller.js +278 -0
  359. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +3 -0
  360. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +13 -6
  361. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -1
  362. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +11 -95
  363. package/dist/src/web-ui/app/controllers/session-controller.js +64 -57
  364. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.d.ts +20 -0
  365. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +116 -0
  366. package/dist/src/web-ui/app/dashboard-feature.js +32 -10
  367. package/dist/src/web-ui/app/index.html +44 -7
  368. package/dist/src/web-ui/app/lib/conversation-file-preview.d.ts +12 -0
  369. package/dist/src/web-ui/app/lib/conversation-file-reference.d.ts +30 -0
  370. package/dist/src/web-ui/app/lib/conversation-file-reference.js +66 -0
  371. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +2 -0
  372. package/dist/src/web-ui/app/lib/tool-activity-event.js +18 -6
  373. package/dist/src/web-ui/app/lib/tool-activity-model.d.ts +2 -0
  374. package/dist/src/web-ui/app/lib/tool-activity-model.js +4 -2
  375. package/dist/src/web-ui/app/lib/tool-permission-mode.d.ts +16 -0
  376. package/dist/src/web-ui/app/lib/tool-permission-mode.js +60 -0
  377. package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +102 -0
  378. package/dist/src/web-ui/app/projects-feature.js +134 -0
  379. package/dist/src/web-ui/app/runtime-onboarding-feature.d.ts +34 -0
  380. package/dist/src/web-ui/app/runtime-onboarding-feature.js +92 -0
  381. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.d.ts +5 -0
  382. package/dist/src/web-ui/app/runtime-setup-page-lifecycle.js +13 -0
  383. package/dist/src/web-ui/app/services/client-preferences.d.ts +24 -0
  384. package/dist/src/web-ui/app/services/client-preferences.js +32 -19
  385. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +46 -0
  386. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.d.ts +28 -0
  387. package/dist/src/web-ui/app/services/runtime-web-client/conversation-files.js +75 -0
  388. package/dist/src/web-ui/app/services/runtime-web-client/projects.d.ts +19 -0
  389. package/dist/src/web-ui/app/services/runtime-web-client/projects.js +34 -0
  390. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +27 -0
  391. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +52 -0
  392. package/dist/src/web-ui/app/services/runtime-web-client.js +35 -4
  393. package/dist/src/web-ui/app/styles/13-projects.css +272 -0
  394. package/dist/src/web-ui/app/styles/18-dashboard.css +0 -5
  395. package/dist/src/web-ui/app/styles/19-runtime-setup.css +411 -0
  396. package/dist/src/web-ui/app/styles/20-chat-composer.css +0 -384
  397. package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +254 -0
  398. package/dist/src/web-ui/app/styles/37-runtime-activation.css +26 -0
  399. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +1 -10
  400. package/dist/src/web-ui/app/styles/41-plugin-management.css +351 -0
  401. package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +179 -0
  402. package/dist/src/web-ui/app/styles/43-model-setup.css +73 -0
  403. package/dist/src/web-ui/app/styles/44-model-provider-cards.css +63 -0
  404. package/dist/src/web-ui/app/styles/45-bridge-setup.css +44 -0
  405. package/dist/src/web-ui/app/styles/46-system-host.css +132 -0
  406. package/dist/src/web-ui/app/styles.css +10 -0
  407. package/dist/src/web-ui/config-dashboard-backend.d.ts +5 -0
  408. package/dist/src/web-ui/config-dashboard-backend.js +94 -114
  409. package/dist/src/web-ui/config-dashboard-model-identity.d.ts +7 -0
  410. package/dist/src/web-ui/config-dashboard-model-identity.js +45 -0
  411. package/dist/src/web-ui/config-dashboard-save-transaction.d.ts +5 -0
  412. package/dist/src/web-ui/config-dashboard-save-transaction.js +21 -0
  413. package/dist/src/web-ui/environment-config.d.ts +17 -0
  414. package/dist/src/web-ui/environment-config.js +60 -0
  415. package/dist/src/web-ui/forwarded-loopback-policy.d.ts +2 -0
  416. package/dist/src/web-ui/forwarded-loopback-policy.js +14 -0
  417. package/dist/src/web-ui/local-runtime/api-router.d.ts +7 -0
  418. package/dist/src/web-ui/local-runtime/api-router.js +136 -12
  419. package/dist/src/web-ui/local-runtime/config-mutation-request.d.ts +8 -0
  420. package/dist/src/web-ui/local-runtime/config-mutation-request.js +55 -0
  421. package/dist/src/web-ui/local-runtime/configuration-activation-environments.d.ts +22 -0
  422. package/dist/src/web-ui/local-runtime/configuration-activation-environments.js +106 -0
  423. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +7 -0
  424. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +36 -0
  425. package/dist/src/web-ui/local-runtime/configuration-activation.d.ts +20 -0
  426. package/dist/src/web-ui/local-runtime/configuration-activation.js +107 -0
  427. package/dist/src/web-ui/local-runtime/contracts.d.ts +8 -0
  428. package/dist/src/web-ui/local-runtime/conversation-file-access.d.ts +30 -0
  429. package/dist/src/web-ui/local-runtime/conversation-file-access.js +131 -0
  430. package/dist/src/web-ui/local-runtime/conversation-file-content.d.ts +21 -0
  431. package/dist/src/web-ui/local-runtime/conversation-file-content.js +75 -0
  432. package/dist/src/web-ui/local-runtime/conversation-file-format.d.ts +12 -0
  433. package/dist/src/web-ui/local-runtime/conversation-file-format.js +87 -0
  434. package/dist/src/web-ui/local-runtime/conversation-file-native-open.d.ts +10 -0
  435. package/dist/src/web-ui/local-runtime/conversation-file-native-open.js +94 -0
  436. package/dist/src/web-ui/local-runtime/conversation-file-native-request.d.ts +4 -0
  437. package/dist/src/web-ui/local-runtime/conversation-file-native-request.js +72 -0
  438. package/dist/src/web-ui/local-runtime/conversation-file-routes.d.ts +11 -0
  439. package/dist/src/web-ui/local-runtime/conversation-file-routes.js +105 -0
  440. package/dist/src/web-ui/local-runtime/conversation-file-target.d.ts +14 -0
  441. package/dist/src/web-ui/local-runtime/conversation-file-target.js +158 -0
  442. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +14 -0
  443. package/dist/src/web-ui/local-runtime/environment-registry.js +121 -6
  444. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.d.ts +2 -1
  445. package/dist/src/web-ui/local-runtime/memory-onboarding-routes.js +15 -10
  446. package/dist/src/web-ui/local-runtime/model-setup-catalog.d.ts +17 -0
  447. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +45 -0
  448. package/dist/src/web-ui/local-runtime/model-setup-identity.d.ts +16 -0
  449. package/dist/src/web-ui/local-runtime/model-setup-identity.js +20 -0
  450. package/dist/src/web-ui/local-runtime/model-setup-input.d.ts +24 -0
  451. package/dist/src/web-ui/local-runtime/model-setup-input.js +107 -0
  452. package/dist/src/web-ui/local-runtime/model-setup-provider.d.ts +17 -0
  453. package/dist/src/web-ui/local-runtime/model-setup-provider.js +68 -0
  454. package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +14 -0
  455. package/dist/src/web-ui/local-runtime/model-setup-retry.js +47 -0
  456. package/dist/src/web-ui/local-runtime/model-setup-routes.d.ts +12 -0
  457. package/dist/src/web-ui/local-runtime/model-setup-routes.js +50 -0
  458. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +30 -0
  459. package/dist/src/web-ui/local-runtime/model-setup-service.js +93 -0
  460. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +5 -0
  461. package/dist/src/web-ui/local-runtime/model-setup-validation.js +33 -0
  462. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +14 -0
  463. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +50 -0
  464. package/dist/src/web-ui/local-runtime/project-routes.d.ts +17 -0
  465. package/dist/src/web-ui/local-runtime/project-routes.js +93 -0
  466. package/dist/src/web-ui/local-runtime/provider-credential-identity.d.ts +3 -0
  467. package/dist/src/web-ui/local-runtime/provider-credential-identity.js +18 -0
  468. package/dist/src/web-ui/local-runtime/request-execution.d.ts +1 -0
  469. package/dist/src/web-ui/local-runtime/request-execution.js +8 -0
  470. package/dist/src/web-ui/local-runtime/runtime-availability.js +36 -7
  471. package/dist/src/web-ui/local-runtime/runtime-setup-completion.d.ts +13 -0
  472. package/dist/src/web-ui/local-runtime/runtime-setup-completion.js +28 -0
  473. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +13 -0
  474. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +110 -0
  475. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.d.ts +4 -0
  476. package/dist/src/web-ui/local-runtime/runtime-setup-credential-completion.js +21 -0
  477. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +14 -0
  478. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +148 -0
  479. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.d.ts +7 -0
  480. package/dist/src/web-ui/local-runtime/runtime-setup-draft-recovery.js +18 -0
  481. package/dist/src/web-ui/local-runtime/runtime-setup-draft.d.ts +21 -0
  482. package/dist/src/web-ui/local-runtime/runtime-setup-draft.js +105 -0
  483. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.d.ts +8 -0
  484. package/dist/src/web-ui/local-runtime/runtime-setup-embedding-invalidation.js +40 -0
  485. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.d.ts +1 -0
  486. package/dist/src/web-ui/local-runtime/runtime-setup-environment-assignment.js +27 -0
  487. package/dist/src/web-ui/local-runtime/runtime-setup-input.d.ts +19 -0
  488. package/dist/src/web-ui/local-runtime/runtime-setup-input.js +82 -0
  489. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.d.ts +7 -0
  490. package/dist/src/web-ui/local-runtime/runtime-setup-model-file.js +35 -0
  491. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.d.ts +4 -0
  492. package/dist/src/web-ui/local-runtime/runtime-setup-provider-ownership-recovery.js +23 -0
  493. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.d.ts +11 -0
  494. package/dist/src/web-ui/local-runtime/runtime-setup-provider-retention.js +31 -0
  495. package/dist/src/web-ui/local-runtime/runtime-setup-provider.d.ts +11 -0
  496. package/dist/src/web-ui/local-runtime/runtime-setup-provider.js +60 -0
  497. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.d.ts +8 -0
  498. package/dist/src/web-ui/local-runtime/runtime-setup-receipt-file.js +77 -0
  499. package/dist/src/web-ui/local-runtime/runtime-setup-routes.d.ts +35 -0
  500. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +56 -0
  501. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.d.ts +17 -0
  502. package/dist/src/web-ui/local-runtime/runtime-setup-scaffold.js +229 -0
  503. package/dist/src/web-ui/local-runtime/runtime-setup-service.d.ts +65 -0
  504. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +195 -0
  505. package/dist/src/web-ui/local-runtime/runtime-setup-validation.d.ts +8 -0
  506. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +35 -0
  507. package/dist/src/web-ui/local-runtime/saved-model-catalog.d.ts +3 -0
  508. package/dist/src/web-ui/local-runtime/saved-model-catalog.js +20 -0
  509. package/dist/src/web-ui/local-runtime/setup-embedding-input.d.ts +8 -0
  510. package/dist/src/web-ui/local-runtime/setup-embedding-input.js +71 -0
  511. package/dist/src/web-ui/local-runtime/setup-embedding-provider.d.ts +13 -0
  512. package/dist/src/web-ui/local-runtime/setup-embedding-provider.js +114 -0
  513. package/dist/src/web-ui/local-runtime/setup-embedding-routes.d.ts +12 -0
  514. package/dist/src/web-ui/local-runtime/setup-embedding-routes.js +53 -0
  515. package/dist/src/web-ui/local-runtime/setup-embedding-service.d.ts +32 -0
  516. package/dist/src/web-ui/local-runtime/setup-embedding-service.js +59 -0
  517. package/dist/src/web-ui/local-runtime-backend.d.ts +1 -0
  518. package/dist/src/web-ui/local-runtime-backend.js +3 -0
  519. package/dist/src/web-ui/plugin-capability-selection.d.ts +14 -0
  520. package/dist/src/web-ui/plugin-capability-selection.js +48 -0
  521. package/dist/src/web-ui/plugin-management-catalog.d.ts +26 -0
  522. package/dist/src/web-ui/plugin-management-catalog.js +56 -0
  523. package/dist/src/web-ui/plugin-management-selection.d.ts +16 -0
  524. package/dist/src/web-ui/plugin-management-selection.js +71 -0
  525. package/dist/src/web-ui/plugin-management-service.d.ts +29 -0
  526. package/dist/src/web-ui/plugin-management-service.js +150 -0
  527. package/dist/src/web-ui/request-authority.d.ts +8 -0
  528. package/dist/src/web-ui/request-authority.js +129 -0
  529. package/dist/src/web-ui/runtime-setup-gateway-address.d.ts +3 -0
  530. package/dist/src/web-ui/runtime-setup-gateway-address.js +26 -0
  531. package/dist/src/web-ui/runtime-setup-gateway.d.ts +29 -0
  532. package/dist/src/web-ui/runtime-setup-gateway.js +177 -0
  533. package/dist/src/web-ui/runtime-setup-shutdown.d.ts +2 -0
  534. package/dist/src/web-ui/runtime-setup-shutdown.js +20 -0
  535. package/dist/src/web-ui/server.d.ts +7 -14
  536. package/dist/src/web-ui/server.js +53 -63
  537. package/dist/src/web-ui/session-read-state/service.d.ts +12 -2
  538. package/dist/src/web-ui/system-host-service.d.ts +19 -0
  539. package/dist/src/web-ui/system-host-service.js +159 -0
  540. package/dist/src/web-ui/system-host-setup/companion-bundle.d.ts +2 -0
  541. package/dist/src/web-ui/system-host-setup/companion-bundle.js +12 -0
  542. package/dist/src/web-ui/system-host-setup/companion-macos.d.ts +2 -0
  543. package/dist/src/web-ui/system-host-setup/companion-macos.js +74 -0
  544. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +2 -0
  545. package/dist/src/web-ui/system-host-setup/companion-windows.js +105 -0
  546. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +18 -0
  547. package/dist/src/web-ui/system-host-setup/installer-contract.js +51 -0
  548. package/dist/src/web-ui/system-host-setup/installers.d.ts +6 -0
  549. package/dist/src/web-ui/system-host-setup/installers.js +30 -0
  550. package/dist/src/web-ui/system-host-setup/native-authorization.d.ts +3 -0
  551. package/dist/src/web-ui/system-host-setup/native-authorization.js +11 -0
  552. package/dist/src/web-ui/system-host-setup/node-distribution.d.ts +19 -0
  553. package/dist/src/web-ui/system-host-setup/node-distribution.js +9 -0
  554. package/dist/src/web-ui/system-host-setup/readiness.d.ts +18 -0
  555. package/dist/src/web-ui/system-host-setup/readiness.js +70 -0
  556. package/dist/src/web-ui/system-host-setup/routes.d.ts +20 -0
  557. package/dist/src/web-ui/system-host-setup/routes.js +121 -0
  558. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.d.ts +2 -0
  559. package/dist/src/web-ui/system-host-setup/windows-script-wrapper.js +17 -0
  560. package/dist/src/web-ui/system-host-setup/wsl-interop-config.d.ts +3 -0
  561. package/dist/src/web-ui/system-host-setup/wsl-interop-config.js +67 -0
  562. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.d.ts +1 -0
  563. package/dist/src/web-ui/system-host-setup/wsl-interop-windows.js +49 -0
  564. package/dist/src/web-ui/system-host-upgrade-authority.d.ts +5 -0
  565. package/dist/src/web-ui/system-host-upgrade-authority.js +13 -0
  566. package/docs/architecture.md +6 -1
  567. package/docs/installation.md +53 -17
  568. package/docs/known-limitations.md +14 -0
  569. package/docs/plugins.md +124 -19
  570. package/docs/projects-and-full-plus.md +218 -0
  571. package/docs/runtime-invariant-coverage.md +6 -3
  572. package/docs/runtime-prompt-policy-contracts.md +37 -5
  573. package/docs/runtime-public-contracts.md +17 -0
  574. package/package.json +5 -2
  575. package/plugins/exec/plugin.json +30 -9
  576. package/plugins/exec/skills/exec_process_skill/SKILL.md +1 -0
  577. package/plugins/exec/skills/exec_skill/SKILL.md +9 -10
  578. package/plugins/exec/source/handlers.ts +4 -38
  579. package/plugins/exec/source/paths.ts +53 -49
  580. package/plugins/exec/source/types.ts +6 -4
  581. package/plugins/exec/source/validation.ts +33 -198
  582. package/plugins/exec/src/index.cjs +62 -204
  583. package/plugins/filesystem/plugin.json +1 -1
  584. package/plugins/filesystem/skills/dev_view_skill/SKILL.md +7 -0
  585. package/plugins/filesystem/source/atomic-write.ts +6 -3
  586. package/plugins/filesystem/source/dev-view.ts +2 -1
  587. package/plugins/filesystem/source/directory-authority-write.ts +4 -0
  588. package/plugins/filesystem/source/edit-file.ts +3 -0
  589. package/plugins/filesystem/source/file-output-presentation.ts +42 -0
  590. package/plugins/filesystem/source/mutation-parent.ts +18 -9
  591. package/plugins/filesystem/source/view-locator.ts +141 -0
  592. package/plugins/filesystem/source/view-window.ts +12 -25
  593. package/plugins/filesystem/source/write-file.ts +8 -0
  594. package/plugins/filesystem/src/index.cjs +162 -35
  595. package/plugins/system/plugin.json +374 -0
  596. package/plugins/system/skills/system_actions/SKILL.md +31 -0
  597. package/plugins/system/source/application-catalog.ts +237 -0
  598. package/plugins/system/source/application-launch.ts +113 -0
  599. package/plugins/system/source/application-observation.ts +78 -0
  600. package/plugins/system/source/commands.ts +106 -0
  601. package/plugins/system/source/companion/autostart.ts +185 -0
  602. package/plugins/system/source/companion/broker-client.ts +183 -0
  603. package/plugins/system/source/companion/broker-location.ts +89 -0
  604. package/plugins/system/source/companion/broker-server.ts +169 -0
  605. package/plugins/system/source/companion/connection.ts +211 -0
  606. package/plugins/system/source/companion/liveness.ts +23 -0
  607. package/plugins/system/source/companion/native-address.ts +55 -0
  608. package/plugins/system/source/companion/native-identity.ts +26 -0
  609. package/plugins/system/source/companion/native-messages.ts +100 -0
  610. package/plugins/system/source/companion/native-session.ts +268 -0
  611. package/plugins/system/source/companion/native-state.ts +135 -0
  612. package/plugins/system/source/companion/native-supervisor.ts +98 -0
  613. package/plugins/system/source/companion/pairing-store.ts +110 -0
  614. package/plugins/system/source/companion/private-store.ts +58 -0
  615. package/plugins/system/source/companion/process-owner-identity.ts +190 -0
  616. package/plugins/system/source/companion/protocol.ts +108 -0
  617. package/plugins/system/source/contracts.ts +44 -0
  618. package/plugins/system/source/elevation.ts +88 -0
  619. package/plugins/system/source/handlers.ts +120 -0
  620. package/plugins/system/source/host-dispatch.ts +106 -0
  621. package/plugins/system/source/host-evidence.ts +72 -0
  622. package/plugins/system/source/host-observation.ts +66 -0
  623. package/plugins/system/source/index.ts +8 -0
  624. package/plugins/system/source/process-result.ts +111 -0
  625. package/plugins/system/source/process-runner.ts +104 -0
  626. package/plugins/system/source/request-system-modules.ts +117 -0
  627. package/plugins/system/source/request-target-snapshot.ts +163 -0
  628. package/plugins/system/source/target-observation.ts +43 -0
  629. package/plugins/system/source/targets.ts +147 -0
  630. package/plugins/system/src/index.cjs +1730 -0
  631. package/src/runtime/README.md +36 -8
  632. package/src/runtime/local-host/README.md +7 -0
  633. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.d.ts +0 -14
  634. package/dist/src/runtime/steps/planner-decision/capability-catalog-context.js +0 -87
@@ -0,0 +1,27 @@
1
+ import { escapeAttribute, escapeHtml } from "../../lib/text-format.js";
2
+ import { isConfigObject } from "./config-model.js";
3
+
4
+ export function renderModelSetupEntry(runtime, models) {
5
+ const config = runtime?.config?.models?.providers;
6
+ const providers = isConfigObject(config) ? Object.entries(config) : [];
7
+ const cards = providers
8
+ .filter(([, provider]) => isConfigObject(provider))
9
+ .map(([id, provider]) => {
10
+ const count = models.filter(
11
+ (model) => model.config?.provider === id,
12
+ ).length;
13
+ return `<article class="config-provider-card">
14
+ <div><h3>${escapeHtml(id)}</h3><span>${escapeHtml(provider.type || "Provider")}</span></div>
15
+ <footer><span>${count} ${count === 1 ? "model" : "models"}</span>
16
+ <button type="button" data-config-action="add-model" data-provider-id="${escapeAttribute(id)}" aria-label="${escapeAttribute(`Add model to ${id}`)}">Add model</button>
17
+ </footer>
18
+ </article>`;
19
+ })
20
+ .join("");
21
+ return `<div class="config-model-setup-entry">
22
+ <header><div><h2>Models and providers</h2><p>Add a model using a saved connection or connect a new provider.</p></div>
23
+ <button type="button" data-config-action="add-model">Add model</button>
24
+ </header>
25
+ ${cards ? `<div class="config-provider-grid" aria-label="Configured providers">${cards}</div>` : ""}
26
+ </div>`;
27
+ }
@@ -0,0 +1,28 @@
1
+ export function malformedConfigRaw(file) {
2
+ if (file?.kind !== "model" && file?.kind !== "requestRunner") return undefined;
3
+ const raw = file.invalidJson?.raw;
4
+ return typeof raw === "string" ? raw : undefined;
5
+ }
6
+
7
+ export function configRequiresRawRepair(file, appliedRepair = false) {
8
+ if (appliedRepair) return false;
9
+ return malformedConfigRaw(file) !== undefined;
10
+ }
11
+
12
+ export function configRepairGuidance(file) {
13
+ if (malformedConfigRaw(file) === undefined) return "";
14
+ return "This saved file contains invalid JSON. Correct the JSON, then save the file. Reset restores the original text; other configuration files are preserved.";
15
+ }
16
+
17
+ export function selectMalformedConfigForRepair(state, files, configFileKey) {
18
+ const file = files.find((entry) => configRequiresRawRepair(entry));
19
+ if (!file) return;
20
+ state.selectedRawConfigKey = configFileKey(file);
21
+ state.activeCategory = "advanced";
22
+ state.rawPanelOpen = true;
23
+ }
24
+
25
+ export function configRepairSaveIsConfirmed(result) {
26
+ if (!result?.file) return false;
27
+ return !result.file.invalidJson;
28
+ }
@@ -8,6 +8,7 @@ export function createConfigWorkspaceEvents({
8
8
  state,
9
9
  dom,
10
10
  eventTarget,
11
+ onAddModel,
11
12
  activateCategory,
12
13
  applyRawDraft,
13
14
  changeRawFile,
@@ -194,6 +195,10 @@ export function createConfigWorkspaceEvents({
194
195
  activateCategory(element.dataset.configCategory || "memory");
195
196
  return;
196
197
  }
198
+ if (action === "add-model") {
199
+ onAddModel?.({ providerId: element.dataset.providerId || undefined });
200
+ return;
201
+ }
197
202
  if (action === "select-model") {
198
203
  state.selectedConfigModelId = element.dataset.modelId || "";
199
204
  renderConfigDashboard();
@@ -1,3 +1,8 @@
1
+ import {
2
+ malformedConfigRaw,
3
+ configRequiresRawRepair,
4
+ selectMalformedConfigForRepair,
5
+ } from "./raw-config-repair.js";
1
6
  import { textOf } from "../../lib/text-format.js";
2
7
  import {
3
8
  cloneConfig,
@@ -27,6 +32,13 @@ export function createConfigWorkspaceMutations({
27
32
  const file = findConfigFile(kind, id);
28
33
  if (!file) return;
29
34
  const key = configFileKey(file);
35
+ if (configRequiresRawRepair(file, state.appliedJsonRepairKeys.has(key))) {
36
+ setWorkspaceStatus(
37
+ "Repair this file in Advanced → Raw JSON before editing its fields.",
38
+ "error-text",
39
+ );
40
+ return;
41
+ }
30
42
  const shouldFollowStructuredConfig = !hasRawDraftChanges(file);
31
43
  mutator(file.config);
32
44
  state.savedKeys.delete(key);
@@ -47,7 +59,8 @@ export function createConfigWorkspaceMutations({
47
59
  const baseline = state.baselinesByKey.get(key);
48
60
  if (!baseline) return;
49
61
  file.config = cloneConfig(baseline);
50
- state.rawDraftsByKey.set(key, formattedConfig(baseline));
62
+ state.appliedJsonRepairKeys.delete(key);
63
+ state.rawDraftsByKey.set(key, malformedConfigRaw(file) ?? formattedConfig(baseline));
51
64
  state.savedKeys.delete(key);
52
65
  renderConfigDashboard();
53
66
  }
@@ -58,7 +71,8 @@ export function createConfigWorkspaceMutations({
58
71
  const baseline = state.baselinesByKey.get(key);
59
72
  if (!baseline) continue;
60
73
  file.config = cloneConfig(baseline);
61
- state.rawDraftsByKey.set(key, formattedConfig(baseline));
74
+ state.appliedJsonRepairKeys.delete(key);
75
+ state.rawDraftsByKey.set(key, malformedConfigRaw(file) ?? formattedConfig(baseline));
62
76
  }
63
77
  state.savedKeys.clear();
64
78
  renderConfigDashboard();
@@ -105,6 +119,7 @@ export function createConfigWorkspaceMutations({
105
119
  if (!models.some((model) => model.id === state.selectedConfigModelId)) {
106
120
  state.selectedConfigModelId = models[0]?.id || "";
107
121
  }
122
+ selectMalformedConfigForRepair(state, configFileEntries(), configFileKey);
108
123
  ensureRawSelection();
109
124
  renderConfigDashboard();
110
125
  }
@@ -113,6 +128,7 @@ export function createConfigWorkspaceMutations({
113
128
  state.configDashboard = null;
114
129
  state.baselinesByKey.clear();
115
130
  state.rawDraftsByKey.clear();
131
+ state.appliedJsonRepairKeys.clear();
116
132
  state.savedKeys.clear();
117
133
  state.selectedRawConfigKey = "";
118
134
  dom.configDashboard.innerHTML = "";
@@ -146,6 +162,8 @@ export function createConfigWorkspaceMutations({
146
162
  const parsed = parseRawDraft(file);
147
163
  file.config = parsed;
148
164
  const key = configFileKey(file);
165
+ if (malformedConfigRaw(file) !== undefined)
166
+ state.appliedJsonRepairKeys.add(key);
149
167
  state.rawDraftsByKey.set(key, formattedConfig(parsed));
150
168
  state.savedKeys.delete(key);
151
169
  setWorkspaceStatus("");
@@ -170,7 +188,9 @@ export function createConfigWorkspaceMutations({
170
188
  }
171
189
  state.rawDraftsByKey.set(
172
190
  configFileKey(currentFile),
173
- formattedConfig(currentFile.config),
191
+ configRequiresRawRepair(currentFile, state.appliedJsonRepairKeys.has(configFileKey(currentFile)))
192
+ ? malformedConfigRaw(currentFile)
193
+ : formattedConfig(currentFile.config),
174
194
  );
175
195
  return true;
176
196
  }
@@ -1,3 +1,4 @@
1
+ import { configRepairSaveIsConfirmed } from "./raw-config-repair.js";
1
2
  import { textOf } from "../../lib/text-format.js";
2
3
  import {
3
4
  cloneConfig,
@@ -12,6 +13,8 @@ export function createConfigWorkspacePersistence({
12
13
  saveFile,
13
14
  memorySetup,
14
15
  memoryManagement,
16
+ pluginManagement,
17
+ hostConnection,
15
18
  recordControlEvent,
16
19
  applyRawDraft,
17
20
  baselineFor,
@@ -39,12 +42,12 @@ export function createConfigWorkspacePersistence({
39
42
  syncDashboardInteractivity();
40
43
  }
41
44
 
42
- function externalRuntimeMutationBlockReason() {
45
+ function externalRuntimeMutationBlockReason(subject) {
43
46
  if (hasUnsavedChanges()) {
44
- return "Save or reset configuration changes before changing Runtime memory settings.";
47
+ return `Save or reset configuration changes before changing Runtime ${subject}.`;
45
48
  }
46
49
  if (dashboardIsBusy() || state.savingKeys.size > 0) {
47
- return "Wait for the current configuration operation before changing Runtime memory settings.";
50
+ return `Wait for the current configuration operation before changing Runtime ${subject}.`;
48
51
  }
49
52
  return "";
50
53
  }
@@ -89,6 +92,8 @@ export function createConfigWorkspacePersistence({
89
92
  if (configLoadIsStale(loadGeneration)) return false;
90
93
  replaceDashboard(payload);
91
94
  const memoryLoads = [memoryManagement.load()];
95
+ if (pluginManagement) memoryLoads.push(pluginManagement.load());
96
+ if (hostConnection) memoryLoads.push(hostConnection.load());
92
97
  if (options.loadMemorySetup !== false) {
93
98
  memoryLoads.unshift(memorySetup.load());
94
99
  }
@@ -127,8 +132,8 @@ export function createConfigWorkspacePersistence({
127
132
  }
128
133
  }
129
134
 
130
- function beginExternalRuntimeMutation() {
131
- const blockReason = externalRuntimeMutationBlockReason();
135
+ function beginExternalRuntimeMutation(subject = "memory settings") {
136
+ const blockReason = externalRuntimeMutationBlockReason(subject);
132
137
  if (blockReason) {
133
138
  setWorkspaceStatus(blockReason, "error-text");
134
139
  return false;
@@ -138,13 +143,15 @@ export function createConfigWorkspacePersistence({
138
143
  return true;
139
144
  }
140
145
 
141
- async function refreshAfterExternalRuntimeMutation() {
146
+ async function refreshAfterExternalRuntimeMutation(
147
+ failurePrefix = "Memory updated; refresh required",
148
+ ) {
142
149
  if (!state.externalRuntimeMutationInFlight) return false;
143
150
  return loadRuntimeConfig({
144
151
  protectUnsaved: false,
145
152
  clearBeforeLoad: true,
146
153
  loadMemorySetup: false,
147
- failurePrefix: "Memory updated; refresh required",
154
+ failurePrefix,
148
155
  });
149
156
  }
150
157
 
@@ -194,7 +201,18 @@ export function createConfigWorkspacePersistence({
194
201
  syncDashboardInteractivity();
195
202
  syncDirtyPresentation();
196
203
  try {
197
- const result = await saveFile({ kind, id, config: configToSave });
204
+ const result = await saveFile({
205
+ kind,
206
+ id,
207
+ config: configToSave,
208
+ expectedRevision: file.revision,
209
+ });
210
+ if (typeof result?.file?.revision === "string")
211
+ file.revision = result.file.revision;
212
+ if (configRepairSaveIsConfirmed(result)) {
213
+ delete file.invalidJson;
214
+ state.appliedJsonRepairKeys?.delete(key);
215
+ }
198
216
  state.baselinesByKey.set(key, cloneConfig(configToSave));
199
217
  state.savedKeys.add(key);
200
218
  recordControlEvent({
@@ -1,3 +1,8 @@
1
+ import {
2
+ configRepairGuidance,
3
+ configRequiresRawRepair,
4
+ } from "./raw-config-repair.js";
5
+ import { renderModelSetupEntry } from "./model-setup-entry.js";
1
6
  import { escapeHtml, textOf } from "../../lib/text-format.js";
2
7
  import { CONFIG_CATEGORIES } from "./config-model.js";
3
8
 
@@ -7,6 +12,8 @@ export function createConfigWorkspaceView({
7
12
  eventTarget,
8
13
  memorySetup,
9
14
  memoryManagement,
15
+ pluginManagement,
16
+ hostConnection,
10
17
  configFileEntries,
11
18
  configFileKey,
12
19
  countObjectKeys,
@@ -52,6 +59,13 @@ export function createConfigWorkspaceView({
52
59
  if (!requestRunner) {
53
60
  return '<div class="empty-state compact">No request runner config found</div>';
54
61
  }
62
+ if (
63
+ configRequiresRawRepair(
64
+ requestRunner,
65
+ state.appliedJsonRepairKeys.has(configFileKey(requestRunner)),
66
+ )
67
+ )
68
+ return '<p class="error-text">Repair this linked file in Advanced → Raw JSON before editing pipeline settings.</p>';
55
69
  return renderStepsEditor(
56
70
  requestRunner,
57
71
  "Request pipeline",
@@ -141,6 +155,8 @@ export function createConfigWorkspaceView({
141
155
  ${renderCategoryTab("memory", "Memory")}
142
156
  ${renderCategoryTab("pipeline", "Pipeline")}
143
157
  ${renderCategoryTab("models", "Models")}
158
+ ${renderCategoryTab("plugins", "Plugins")}
159
+ ${renderCategoryTab("computer", "Connected computer")}
144
160
  ${renderCategoryTab("advanced", "Advanced")}
145
161
  </nav>
146
162
  <div class="config-category-panels">
@@ -155,12 +171,15 @@ export function createConfigWorkspaceView({
155
171
  ${renderCategoryPanel(
156
172
  "models",
157
173
  `<section class="config-section models-section">
174
+ ${renderModelSetupEntry(runtime, models)}
158
175
  <div class="config-model-layout">
159
176
  ${renderModelList(models)}
160
177
  ${renderSelectedModelEditor(models)}
161
178
  </div>
162
179
  </section>`,
163
180
  )}
181
+ ${renderCategoryPanel("plugins", "<div data-plugin-management></div>")}
182
+ ${renderCategoryPanel("computer", "<div data-system-host-connection></div>")}
164
183
  ${renderCategoryPanel("advanced", renderConfigMap())}
165
184
  </div>
166
185
  `;
@@ -170,6 +189,13 @@ export function createConfigWorkspaceView({
170
189
  memoryManagement.mount(
171
190
  dom.configDashboard.querySelector("[data-long-term-memory-management]"),
172
191
  );
192
+ pluginManagement?.mount(
193
+ dom.configDashboard.querySelector("[data-plugin-management]"),
194
+ );
195
+ hostConnection?.mount(
196
+ dom.configDashboard.querySelector("[data-system-host-connection]"),
197
+ );
198
+ hostConnection?.setActive(state.activeCategory === "computer");
173
199
  syncDirtyPresentation({ syncRawEditor: true });
174
200
  }
175
201
 
@@ -195,6 +221,7 @@ export function createConfigWorkspaceView({
195
221
  if (!CONFIG_CATEGORIES.includes(category)) return;
196
222
  state.activeCategory = category;
197
223
  syncActiveCategory();
224
+ hostConnection?.setActive(category === "computer");
198
225
  if (options.focus) {
199
226
  dom.configDashboard
200
227
  .querySelector(`[data-config-category="${category}"]`)
@@ -202,6 +229,26 @@ export function createConfigWorkspaceView({
202
229
  }
203
230
  }
204
231
 
232
+ function selectModel(profileId) {
233
+ const models = state.configDashboard?.files?.models || [];
234
+ if (!models.some((model) => model.id === profileId)) return false;
235
+ state.selectedConfigModelId = profileId;
236
+ state.activeCategory = "models";
237
+ renderConfigDashboard();
238
+ return true;
239
+ }
240
+
241
+ function focusSelectedModel() {
242
+ const buttons = Array.from(
243
+ dom.configDashboard.querySelectorAll("[data-model-id]"),
244
+ );
245
+ const selected = buttons.find(
246
+ (button) => button.dataset.modelId === state.selectedConfigModelId,
247
+ );
248
+ selected?.focus?.({ preventScroll: true });
249
+ selected?.scrollIntoView?.({ block: "nearest" });
250
+ }
251
+
205
252
  function syncFileControls() {
206
253
  for (const file of configFileEntries()) {
207
254
  const key = configFileKey(file);
@@ -260,6 +307,13 @@ export function createConfigWorkspaceView({
260
307
  const status = dom.configDashboard.querySelector(".config-raw-status");
261
308
  const file = selectedRawConfigFile();
262
309
  if (!file) return;
310
+ const guidance = dom.configDashboard.querySelector(
311
+ "#configRawRepairGuidance",
312
+ );
313
+ if (guidance) {
314
+ guidance.textContent = configRepairGuidance(file);
315
+ guidance.hidden = !guidance.textContent;
316
+ }
263
317
  if (select) select.value = state.selectedRawConfigKey;
264
318
  if (shouldSynchronizeRawEditor(editor, options)) {
265
319
  editor.value = rawDraftFor(file);
@@ -291,6 +345,8 @@ export function createConfigWorkspaceView({
291
345
 
292
346
  return {
293
347
  activateCategory,
348
+ selectModel,
349
+ focusSelectedModel,
294
350
  renderConfigDashboard,
295
351
  setWorkspaceStatus,
296
352
  syncDashboardInteractivity,
@@ -23,6 +23,9 @@ export function createConfigWorkspace({
23
23
  saveFile,
24
24
  memorySetup,
25
25
  memoryManagement,
26
+ pluginManagement,
27
+ hostConnection,
28
+ onAddModel,
26
29
  recordControlEvent,
27
30
  confirmDiscard = (message) => window.confirm(message),
28
31
  eventTarget = window,
@@ -81,6 +84,8 @@ export function createConfigWorkspace({
81
84
  eventTarget,
82
85
  memorySetup,
83
86
  memoryManagement,
87
+ pluginManagement,
88
+ hostConnection,
84
89
  configFileEntries: workspaceModel.configFileEntries,
85
90
  configFileKey: workspaceModel.configFileKey,
86
91
  countObjectKeys: fieldRendering.countObjectKeys,
@@ -127,6 +132,8 @@ export function createConfigWorkspace({
127
132
  saveFile,
128
133
  memorySetup,
129
134
  memoryManagement,
135
+ pluginManagement,
136
+ hostConnection,
130
137
  recordControlEvent,
131
138
  applyRawDraft: workspaceMutations.applyRawDraft,
132
139
  baselineFor: workspaceModel.baselineFor,
@@ -146,6 +153,7 @@ export function createConfigWorkspace({
146
153
  });
147
154
 
148
155
  const workspaceEvents = createConfigWorkspaceEvents({
156
+ onAddModel,
149
157
  state,
150
158
  dom,
151
159
  eventTarget,
@@ -174,6 +182,7 @@ export function createConfigWorkspace({
174
182
  });
175
183
 
176
184
  return {
185
+ activateCategory: workspaceView.activateCategory,
177
186
  beginExternalRuntimeMutation:
178
187
  workspacePersistence.beginExternalRuntimeMutation,
179
188
  bind: workspaceEvents.bind,
@@ -181,6 +190,8 @@ export function createConfigWorkspace({
181
190
  endExternalRuntimeMutation: workspacePersistence.endExternalRuntimeMutation,
182
191
  hasUnsavedChanges: workspaceModel.hasUnsavedChanges,
183
192
  load: workspacePersistence.loadRuntimeConfig,
193
+ selectModel: workspaceView.selectModel,
194
+ focusSelectedModel: workspaceView.focusSelectedModel,
184
195
  prepareDiscardChanges: workspaceMutations.prepareDiscardChanges,
185
196
  refreshAfterExternalRuntimeMutation:
186
197
  workspacePersistence.refreshAfterExternalRuntimeMutation,
@@ -1,3 +1,4 @@
1
+ import type { ConversationFileReference } from "../lib/conversation-file-reference.js";
1
2
  import type { buildConversationRoleCards } from "../lib/conversation-role-model.js";
2
3
  import type { ConversationSourcesGroup } from "../lib/web-sources.js";
3
4
  import type { ConversationToolAction } from "../lib/tool-activity-model.js";
@@ -72,6 +73,11 @@ export declare function pinConversationActivityToLatest(input?: {
72
73
 
73
74
  export declare function createConversationActivity(options?: {
74
75
  documentRoot?: Document;
76
+ canOpenFile?: () => boolean;
77
+ onOpenFile?: (
78
+ reference: ConversationFileReference,
79
+ opener: HTMLElement,
80
+ ) => unknown;
75
81
  }): {
76
82
  createNode(input?: ConversationActivityInput): HTMLElement | null;
77
83
  forget(requestId: unknown): void;
@@ -290,8 +290,16 @@ export function pinConversationActivityToLatest({
290
290
  return true;
291
291
  }
292
292
 
293
- export function createConversationActivity({ documentRoot = document } = {}) {
294
- const roleCards = createConversationRoleCards({ documentRoot });
293
+ export function createConversationActivity({
294
+ documentRoot = document,
295
+ onOpenFile,
296
+ canOpenFile,
297
+ } = {}) {
298
+ const roleCards = createConversationRoleCards({
299
+ documentRoot,
300
+ onOpenFile,
301
+ canOpenFile,
302
+ });
295
303
  const sourceCards = createConversationSources({ documentRoot });
296
304
  const manuallyCollapsedStreamingRequests = new Set();
297
305
  const manuallyExpandedCompletedRequests = new Set();
@@ -0,0 +1,33 @@
1
+ import { canViewConversationFile } from "../lib/conversation-file-reference.js";
2
+
3
+ export function createConversationFileAction({
4
+ documentRoot,
5
+ requestId,
6
+ action,
7
+ onOpenFile,
8
+ isCurrentAction,
9
+ canOpenFile = () => true,
10
+ }) {
11
+ if (typeof onOpenFile !== "function") return null;
12
+ if (!canOpenFile()) return null;
13
+ if (!canViewConversationFile(action, requestId)) return null;
14
+ const button = documentRoot.createElement("button");
15
+ button.type = "button";
16
+ button.className = "conversation-tool-target conversation-tool-file-action";
17
+ button.setAttribute("dir", "auto");
18
+ button.textContent = action.target || action.fileReference.output.logicalPath;
19
+ button.title = button.textContent;
20
+ button.dataset.requestId = requestId;
21
+ button.dataset.executionId = action.fileReference.executionId;
22
+ button.setAttribute(
23
+ "aria-label",
24
+ "View current file " + action.fileReference.output.relativePath,
25
+ );
26
+ button.addEventListener("click", (event) => {
27
+ event.preventDefault();
28
+ event.stopPropagation();
29
+ if (!isCurrentAction()) return;
30
+ void onOpenFile(action.fileReference, button);
31
+ });
32
+ return button;
33
+ }
@@ -0,0 +1,12 @@
1
+ export declare function createConversationFileFocus(options: {
2
+ panel: HTMLElement;
3
+ backdrop: HTMLElement;
4
+ host: HTMLElement;
5
+ closeButton: HTMLButtonElement;
6
+ documentRoot: Document;
7
+ viewport: Window;
8
+ onClose: () => void;
9
+ }): {
10
+ show(opener?: HTMLElement): void;
11
+ hide(restoreFocus: boolean): void;
12
+ };
@@ -0,0 +1,149 @@
1
+ function matchesFileOpener(node, identity) {
2
+ if (node.dataset.requestId !== identity.requestId) return false;
3
+ return node.dataset.executionId === identity.executionId;
4
+ }
5
+
6
+ function isPreviewTabStop(node) {
7
+ if (node.disabled || node.closest("[hidden]")) return false;
8
+ const disclosure = node.closest("details");
9
+ if (!disclosure || disclosure.open) return true;
10
+ return node.tagName.toLowerCase() === "summary";
11
+ }
12
+
13
+ function isClosedDisclosure(node) {
14
+ if (node.tagName.toLowerCase() !== "details") return false;
15
+ return !node.open;
16
+ }
17
+
18
+ function isDisclosureSummary(node) {
19
+ return node.tagName.toLowerCase() === "summary";
20
+ }
21
+
22
+ function visibleFileReturnTarget(node) {
23
+ if (!node?.isConnected) return null;
24
+ let target = node;
25
+ for (let ancestor = node; ancestor; ancestor = ancestor.parentElement) {
26
+ if (ancestor.hidden || ancestor.inert) return null;
27
+ if (!isClosedDisclosure(ancestor)) continue;
28
+ const summary = [...ancestor.children].find(isDisclosureSummary);
29
+ if (!summary) return null;
30
+ if (!summary.contains(target)) target = summary;
31
+ }
32
+ return target;
33
+ }
34
+
35
+ function fileReturnTarget(node) {
36
+ const target = visibleFileReturnTarget(node);
37
+ if (target) return target;
38
+ const activity = node?.closest(".conversation-activity");
39
+ if (!activity) return null;
40
+ const summary = [...activity.children].find(isDisclosureSummary);
41
+ return visibleFileReturnTarget(summary);
42
+ }
43
+
44
+ export function createConversationFileFocus({
45
+ panel,
46
+ backdrop,
47
+ host,
48
+ closeButton,
49
+ documentRoot,
50
+ viewport,
51
+ onClose,
52
+ }) {
53
+ const overlayQuery = viewport.matchMedia?.("(max-width: 1200px)");
54
+ const previewInertNodes = new Set();
55
+ let open = false;
56
+ let opener = null;
57
+ let openerIdentity = null;
58
+
59
+ function restoreBackground() {
60
+ for (const element of previewInertNodes) {
61
+ if (element.inert) element.inert = false;
62
+ }
63
+ previewInertNodes.clear();
64
+ }
65
+
66
+ function makeBackgroundInert() {
67
+ for (let child = panel; child?.parentElement; child = child.parentElement) {
68
+ for (const sibling of child.parentElement.children) {
69
+ if (sibling === child || sibling === backdrop) continue;
70
+ if (sibling.inert) continue;
71
+ previewInertNodes.add(sibling);
72
+ sibling.inert = true;
73
+ }
74
+ if (child.parentElement === documentRoot.body) break;
75
+ }
76
+ }
77
+
78
+ function syncLayout() {
79
+ restoreBackground();
80
+ const modal = open && overlayQuery?.matches === true;
81
+ backdrop.hidden = !modal;
82
+ panel.classList.toggle("is-overlay", modal);
83
+ if (!modal) {
84
+ panel.removeAttribute("role");
85
+ panel.removeAttribute("aria-modal");
86
+ return;
87
+ }
88
+ panel.setAttribute("role", "dialog");
89
+ panel.setAttribute("aria-modal", "true");
90
+ makeBackgroundInert();
91
+ if (!panel.contains(documentRoot.activeElement)) closeButton.focus();
92
+ }
93
+
94
+ function findReturnTarget() {
95
+ if (opener?.isConnected) return fileReturnTarget(opener);
96
+ if (!openerIdentity) return null;
97
+ const replacement = [
98
+ ...host.querySelectorAll(".conversation-tool-file-action"),
99
+ ].find((node) => matchesFileOpener(node, openerIdentity));
100
+ return fileReturnTarget(replacement);
101
+ }
102
+
103
+ function show(nextOpener) {
104
+ const wasOpen = open;
105
+ open = true;
106
+ if (nextOpener) {
107
+ opener = nextOpener;
108
+ openerIdentity = { ...nextOpener.dataset };
109
+ }
110
+ syncLayout();
111
+ if (!wasOpen) closeButton.focus({ preventScroll: true });
112
+ }
113
+
114
+ function hide(restoreFocus) {
115
+ const wasOpen = open;
116
+ open = false;
117
+ syncLayout();
118
+ if (wasOpen && restoreFocus)
119
+ findReturnTarget()?.focus({ preventScroll: true });
120
+ opener = null;
121
+ openerIdentity = null;
122
+ }
123
+
124
+ panel.addEventListener("keydown", (event) => {
125
+ if (!open || event.key !== "Tab" || !overlayQuery?.matches) return;
126
+ const elements = [
127
+ ...panel.querySelectorAll("button, a[href], summary, [tabindex='0']"),
128
+ ].filter(isPreviewTabStop);
129
+ const first = elements[0];
130
+ const last = elements.at(-1);
131
+ const active = documentRoot.activeElement;
132
+ if (event.shiftKey && active === first) {
133
+ event.preventDefault();
134
+ last?.focus();
135
+ return;
136
+ }
137
+ if (!event.shiftKey && active === last) {
138
+ event.preventDefault();
139
+ first?.focus();
140
+ }
141
+ });
142
+ documentRoot.addEventListener("keydown", (event) => {
143
+ if (!open || event.key !== "Escape") return;
144
+ event.preventDefault();
145
+ onClose();
146
+ });
147
+ overlayQuery?.addEventListener("change", syncLayout);
148
+ return { show, hide };
149
+ }
@@ -0,0 +1,23 @@
1
+ import type { ConversationFilePreview } from "../lib/conversation-file-preview.js";
2
+ export interface FilePreviewViewState {
3
+ open: boolean;
4
+ restoreFocus?: boolean;
5
+ status?: "loading" | "ready" | "error" | "native";
6
+ opener?: HTMLElement;
7
+ name?: string;
8
+ file?: ConversationFilePreview;
9
+ nativeStatus?: "opening" | "opened" | "error";
10
+ nativeError?: string;
11
+ imageUrl?: string;
12
+ error?: string;
13
+ }
14
+ export declare function createConversationFilePreview(options: {
15
+ host: HTMLElement;
16
+ documentRoot?: Document;
17
+ viewport?: Window;
18
+ onClose: () => void;
19
+ onOpenNative?: () => void | Promise<void>;
20
+ }): {
21
+ render(state: FilePreviewViewState): void;
22
+ panel: HTMLElement;
23
+ };