@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,213 +1,48 @@
1
- import type { ToolCallAdapter } from "../../../src/plugin-sdk/index.js";
2
-
3
- const INVALID_COMMAND_CHARS =
4
- /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F\uFFFD]/gu;
5
-
6
- const INTERACTIVE_COMMANDS = new Set([
7
- "gio",
8
- "gnome-open",
9
- "htop",
10
- "kde-open",
11
- "less",
12
- "more",
13
- "nano",
14
- "open",
15
- "screen",
16
- "ssh",
17
- "start",
18
- "tmux",
19
- "top",
20
- "vi",
21
- "vim",
22
- "watch",
23
- "xdg-open",
24
- ]);
25
-
26
- export function sanitizeExecCommand(value: string): Readonly<{
27
- command: string;
28
- normalized: boolean;
29
- }> {
30
- const raw = value.trim();
31
- const command = raw
32
- .replace(/\r\n?/gu, "\n")
33
- .replace(INVALID_COMMAND_CHARS, "")
34
- .trim();
35
- return Object.freeze({ command, normalized: command !== raw });
36
- }
37
-
38
- export function isInteractiveCommand(command: string): string | undefined {
39
- const firstToken = command.split(/\s+/u)[0]?.toLowerCase() ?? "";
40
- return INTERACTIVE_COMMANDS.has(firstToken) ? firstToken : undefined;
41
- }
42
-
43
- function isWhitespace(char: string): boolean {
44
- return char === " " || char === "\t" || char === "\r";
45
- }
46
-
47
- function isShellSeparator(char: string): boolean {
48
- return ["\n", ";", "|", "&", "<", ">"].includes(char);
49
- }
50
-
51
- function isShellTokenBoundary(char: string): boolean {
52
- return (
53
- isWhitespace(char) || isShellSeparator(char) || char === "(" || char === ")"
54
- );
55
- }
56
-
57
- function readShellTokenSpan(
58
- command: string,
59
- start: number,
60
- ): Readonly<{ token: string; nextIndex: number }> {
61
- let index = start;
62
- let token = "";
63
- let inSingleQuote = false;
64
- let inDoubleQuote = false;
65
- let substitutionDepth = 0;
66
- while (index < command.length) {
67
- const char = command[index] ?? "";
68
- if (!inSingleQuote && !inDoubleQuote) {
69
- if (substitutionDepth === 0 && isShellTokenBoundary(char)) break;
70
- if (char === "$" && command[index + 1] === "(") {
71
- token += "$(";
72
- substitutionDepth += 1;
73
- index += 2;
74
- continue;
75
- }
76
- if (char === ")" && substitutionDepth > 0) {
77
- token += char;
78
- substitutionDepth -= 1;
79
- index += 1;
80
- continue;
81
- }
82
- if (char === "\\") {
83
- index += 1;
84
- if (index < command.length) {
85
- token += command[index];
86
- index += 1;
87
- }
88
- continue;
89
- }
90
- if (char === "'") {
91
- inSingleQuote = true;
92
- index += 1;
93
- continue;
94
- }
95
- if (char === '"') {
96
- inDoubleQuote = true;
97
- index += 1;
98
- continue;
99
- }
100
- token += char;
101
- index += 1;
102
- continue;
103
- }
104
- index += 1;
105
- if (inSingleQuote) {
106
- if (char === "'") inSingleQuote = false;
107
- else token += char;
108
- continue;
109
- }
110
- if (char === '"') {
111
- inDoubleQuote = false;
112
- continue;
113
- }
114
- if (char === "\\" && index < command.length) {
115
- token += command[index];
116
- index += 1;
117
- continue;
118
- }
119
- token += char;
120
- }
121
- return Object.freeze({ token: token.trim(), nextIndex: index });
122
- }
123
-
124
- function readShellToken(
125
- command: string,
126
- start: number,
127
- ): Readonly<{ token: string; nextIndex: number }> {
128
- let index = start;
129
- while (index < command.length && isWhitespace(command[index] ?? "")) {
130
- index += 1;
1
+ import {
2
+ readRequiredString,
3
+ type ToolCallAdapter,
4
+ } from "../../../src/plugin-sdk/index.js";
5
+ import { ExecPluginError } from "./errors.js";
6
+ import { EXEC_COMMAND_MAX_CHARS } from "./settings.js";
7
+
8
+ function isExecutableCommand(value: string): boolean {
9
+ if (value.trim().length === 0) return false;
10
+ return !value.includes("\0");
11
+ }
12
+
13
+ export function readExecCommand(value: unknown): string {
14
+ const command = readRequiredString(value, {
15
+ name: "command",
16
+ trim: false,
17
+ maxLength: EXEC_COMMAND_MAX_CHARS,
18
+ });
19
+ if (!isExecutableCommand(command)) {
20
+ throw new ExecPluginError(
21
+ "exec_command_invalid",
22
+ "The command must contain nonempty text without NUL characters.",
23
+ );
131
24
  }
132
- return readShellTokenSpan(command, index);
25
+ return command;
133
26
  }
134
27
 
135
- function readHereDocDelimiters(
136
- line: string,
137
- ): readonly Readonly<{ delimiter: string; stripTabs: boolean }>[] {
138
- const delimiters: Array<{ delimiter: string; stripTabs: boolean }> = [];
139
- const pattern = /<<(-)?\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_./-]+))/gu;
140
- for (const match of line.matchAll(pattern)) {
141
- const delimiter = match[2] ?? match[3] ?? match[4] ?? "";
142
- if (delimiter) {
143
- delimiters.push({ delimiter, stripTabs: Boolean(match[1]) });
144
- }
145
- }
146
- return delimiters;
147
- }
148
-
149
- export function stripHereDocBodies(command: string): string {
150
- const pending: Array<{ delimiter: string; stripTabs: boolean }> = [];
151
- return command
152
- .split("\n")
153
- .map((line) => {
154
- const active = pending[0];
155
- if (active) {
156
- const comparable = active.stripTabs ? line.replace(/^\t+/u, "") : line;
157
- if (comparable === active.delimiter) {
158
- pending.shift();
159
- return line;
160
- }
161
- return "";
162
- }
163
- pending.push(...readHereDocDelimiters(line));
164
- return line;
165
- })
166
- .join("\n");
167
- }
168
-
169
- export function scopedPathTokens(command: string): readonly string[] {
170
- const tokens: string[] = [];
171
- let index = 0;
172
- while (index < command.length) {
173
- while (
174
- index < command.length &&
175
- isShellTokenBoundary(command[index] ?? "")
176
- ) {
177
- index += 1;
178
- }
179
- if (index >= command.length) break;
180
- const span = readShellToken(command, index);
181
- index = Math.max(span.nextIndex, index + 1);
182
- const token = span.token;
183
- if (
184
- token === "." ||
185
- token === ".." ||
186
- token.startsWith("./") ||
187
- token.startsWith("../") ||
188
- token === "workspace" ||
189
- token.startsWith("workspace/") ||
190
- token.startsWith("workspace\\") ||
191
- token.startsWith("/")
192
- ) {
193
- tokens.push(token);
194
- }
195
- }
196
- return Object.freeze(tokens);
28
+ function isInvalidExecParameter(name: string, value: unknown): boolean {
29
+ if (typeof value !== "string") return true;
30
+ if (value.length === 0) return true;
31
+ if (name === "command") return !isExecutableCommand(value);
32
+ return value.includes("\0");
197
33
  }
198
34
 
199
35
  export function createExecAdapter(): ToolCallAdapter {
200
36
  return {
201
37
  validateCall(input) {
202
- const invalid = ["command", "cwd"].filter((name) => {
203
- const value = input.params[name];
204
- return typeof value !== "string" || value.trim().length === 0;
205
- });
38
+ const invalid = ["command", "cwd"].filter((name) =>
39
+ isInvalidExecParameter(name, input.params[name]),
40
+ );
206
41
  if (invalid.length === 0) return null;
207
42
  return {
208
43
  error: `invalid params for exec: invalid ${invalid.join(", ")}`,
209
44
  repairHint:
210
- "Provide one non-interactive command and one explicit existing agent-work or workspace cwd.",
45
+ "Provide one command without NUL characters and one explicit existing cwd.",
211
46
  };
212
47
  },
213
48
  };
@@ -498,43 +498,57 @@ function diffExecFilesystemSnapshots(before, after) {
498
498
  // plugins/exec/source/paths.ts
499
499
  var import_promises2 = require("node:fs/promises");
500
500
  var import_node_path2 = require("node:path");
501
- var EXEC_ALLOWED_LOCATIONS = Object.freeze([
502
- "agent_work",
503
- "workspace"
504
- ]);
505
- function resolverContext(pluginContext, executionContext) {
506
- return {
507
- runtimePathResolver: executionContext?.runtimePathResolver ?? pluginContext.runtimePathResolver
508
- };
509
- }
510
- function resolveExecPath(pluginContext, executionContext, rawPath) {
511
- return resolvePluginPath(
512
- resolverContext(pluginContext, executionContext),
513
- rawPath,
501
+ function resolveContextualDirectory(pluginContext, executionContext, requestedPath) {
502
+ if ((0, import_node_path2.isAbsolute)(requestedPath)) return { absolutePath: requestedPath };
503
+ const isWorkspaceAlias = requestedPath === "workspace" || requestedPath.startsWith("workspace/");
504
+ const base = resolvePluginPath(
514
505
  {
515
- requirePath: true,
516
- allowedLocations: EXEC_ALLOWED_LOCATIONS
517
- }
506
+ runtimePathResolver: executionContext?.runtimePathResolver ?? pluginContext.runtimePathResolver
507
+ },
508
+ isWorkspaceAlias ? "workspace" : ".",
509
+ { allowedLocations: [isWorkspaceAlias ? "workspace" : "agent_work"] }
518
510
  );
511
+ const relativePath = isWorkspaceAlias ? requestedPath.slice("workspace".length + 1) || "." : requestedPath;
512
+ return { absolutePath: `${base.absolutePath}${import_node_path2.sep}${relativePath}`, base };
513
+ }
514
+ function isOutsideExecContextBase(relativePath) {
515
+ if (relativePath === "..") return true;
516
+ if (relativePath.startsWith(`..${import_node_path2.sep}`)) return true;
517
+ return (0, import_node_path2.isAbsolute)(relativePath);
518
+ }
519
+ function logicalDirectory(absolutePath, base) {
520
+ if (!base) return absolutePath;
521
+ const fromBase = (0, import_node_path2.relative)(base.absolutePath, absolutePath);
522
+ if (isOutsideExecContextBase(fromBase)) return absolutePath;
523
+ return import_node_path2.posix.join(base.logicalPath, fromBase.split(import_node_path2.sep).join("/") || ".");
519
524
  }
520
525
  async function resolveExecWorkingDirectory(pluginContext, executionContext, rawPath) {
521
526
  const requestedPath = readRequiredString(rawPath, {
522
527
  name: "cwd",
528
+ trim: false,
523
529
  maxLength: 4096
524
530
  });
525
- const target = resolveExecPath(
531
+ if (requestedPath.includes("\0")) {
532
+ throw new ExecPluginError(
533
+ "exec_cwd_invalid",
534
+ "The selected cwd contains NUL characters."
535
+ );
536
+ }
537
+ const target = resolveContextualDirectory(
526
538
  pluginContext,
527
539
  executionContext,
528
540
  requestedPath
529
541
  );
542
+ let absolutePath;
530
543
  let info;
531
544
  try {
532
- info = await (0, import_promises2.stat)(target.absolutePath);
545
+ absolutePath = await (0, import_promises2.realpath)(target.absolutePath);
546
+ info = await (0, import_promises2.stat)(absolutePath);
533
547
  } catch (error) {
534
548
  if (error instanceof Error && "code" in error && error.code === "ENOENT") {
535
549
  throw new ExecPluginError(
536
550
  "exec_cwd_not_found",
537
- "The selected cwd does not exist. Select an existing agent-work or workspace directory."
551
+ "The selected cwd does not exist. Select an existing directory."
538
552
  );
539
553
  }
540
554
  throw new ExecPluginError(
@@ -548,21 +562,42 @@ async function resolveExecWorkingDirectory(pluginContext, executionContext, rawP
548
562
  "The selected cwd is not a directory."
549
563
  );
550
564
  }
551
- return target;
552
- }
553
- function resolveExecScopedPath(pluginContext, executionContext, rawPath, cwd) {
554
- const normalized = rawPath.replaceAll("\\", "/");
555
- const requested = (0, import_node_path2.isAbsolute)(rawPath) || normalized === "workspace" || normalized.startsWith("workspace/") ? rawPath : import_node_path2.posix.join(cwd.logicalPath, normalized || ".");
556
- return resolveExecPath(pluginContext, executionContext, requested);
565
+ return Object.freeze({
566
+ absolutePath,
567
+ logicalPath: logicalDirectory(absolutePath, target.base)
568
+ });
557
569
  }
558
570
 
559
571
  // plugins/exec/source/process-manager.ts
560
572
  var import_node_child_process = require("node:child_process");
561
- var import_node_fs2 = require("node:fs");
562
- var import_promises3 = require("node:fs/promises");
563
573
  var import_node_crypto2 = require("node:crypto");
564
574
  var import_node_string_decoder = require("node:string_decoder");
575
+
576
+ // plugins/exec/source/shell-platform.ts
577
+ var import_node_fs2 = require("node:fs");
578
+ var import_promises3 = require("node:fs/promises");
565
579
  var EXEC_SHELL = "/bin/bash";
580
+ function isSupportedExecPlatform(platform) {
581
+ return platform === "linux" || platform === "darwin";
582
+ }
583
+ async function assertSupportedShell(platform = process.platform) {
584
+ if (!isSupportedExecPlatform(platform)) {
585
+ throw new ExecPluginError(
586
+ "exec_platform_unsupported",
587
+ "The exec plugin requires Linux or macOS and executable /bin/bash."
588
+ );
589
+ }
590
+ try {
591
+ await (0, import_promises3.access)(EXEC_SHELL, import_node_fs2.constants.X_OK);
592
+ } catch {
593
+ throw new ExecPluginError(
594
+ "exec_shell_unavailable",
595
+ "The exec plugin cannot start because executable /bin/bash is unavailable."
596
+ );
597
+ }
598
+ }
599
+
600
+ // plugins/exec/source/process-manager.ts
566
601
  var COMPLETED_PROCESS_RETENTION_MS = 5 * 6e4;
567
602
  var MAX_ACTIVE_PROCESSES_PER_SCOPE = 4;
568
603
  var CappedTextBuffer = class {
@@ -602,22 +637,6 @@ var CappedTextBuffer = class {
602
637
  });
603
638
  }
604
639
  };
605
- async function assertSupportedShell() {
606
- if (process.platform !== "linux") {
607
- throw new ExecPluginError(
608
- "exec_platform_unsupported",
609
- "The exec plugin v1 requires Linux and /bin/bash."
610
- );
611
- }
612
- try {
613
- await (0, import_promises3.access)(EXEC_SHELL, import_node_fs2.constants.X_OK);
614
- } catch {
615
- throw new ExecPluginError(
616
- "exec_shell_unavailable",
617
- "The exec plugin cannot start because executable /bin/bash is unavailable."
618
- );
619
- }
620
- }
621
640
  function createExecProcessManager() {
622
641
  const processes = /* @__PURE__ */ new Map();
623
642
  const unknownProcess = () => new ExecPluginError(
@@ -901,169 +920,40 @@ function readExecSettings(config) {
901
920
  }
902
921
 
903
922
  // plugins/exec/source/validation.ts
904
- var INVALID_COMMAND_CHARS = /[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F\uFFFD]/gu;
905
- var INTERACTIVE_COMMANDS = /* @__PURE__ */ new Set([
906
- "gio",
907
- "gnome-open",
908
- "htop",
909
- "kde-open",
910
- "less",
911
- "more",
912
- "nano",
913
- "open",
914
- "screen",
915
- "ssh",
916
- "start",
917
- "tmux",
918
- "top",
919
- "vi",
920
- "vim",
921
- "watch",
922
- "xdg-open"
923
- ]);
924
- function sanitizeExecCommand(value) {
925
- const raw = value.trim();
926
- const command = raw.replace(/\r\n?/gu, "\n").replace(INVALID_COMMAND_CHARS, "").trim();
927
- return Object.freeze({ command, normalized: command !== raw });
928
- }
929
- function isInteractiveCommand(command) {
930
- const firstToken = command.split(/\s+/u)[0]?.toLowerCase() ?? "";
931
- return INTERACTIVE_COMMANDS.has(firstToken) ? firstToken : void 0;
932
- }
933
- function isWhitespace(char) {
934
- return char === " " || char === " " || char === "\r";
935
- }
936
- function isShellSeparator(char) {
937
- return ["\n", ";", "|", "&", "<", ">"].includes(char);
938
- }
939
- function isShellTokenBoundary(char) {
940
- return isWhitespace(char) || isShellSeparator(char) || char === "(" || char === ")";
941
- }
942
- function readShellTokenSpan(command, start) {
943
- let index = start;
944
- let token = "";
945
- let inSingleQuote = false;
946
- let inDoubleQuote = false;
947
- let substitutionDepth = 0;
948
- while (index < command.length) {
949
- const char = command[index] ?? "";
950
- if (!inSingleQuote && !inDoubleQuote) {
951
- if (substitutionDepth === 0 && isShellTokenBoundary(char)) break;
952
- if (char === "$" && command[index + 1] === "(") {
953
- token += "$(";
954
- substitutionDepth += 1;
955
- index += 2;
956
- continue;
957
- }
958
- if (char === ")" && substitutionDepth > 0) {
959
- token += char;
960
- substitutionDepth -= 1;
961
- index += 1;
962
- continue;
963
- }
964
- if (char === "\\") {
965
- index += 1;
966
- if (index < command.length) {
967
- token += command[index];
968
- index += 1;
969
- }
970
- continue;
971
- }
972
- if (char === "'") {
973
- inSingleQuote = true;
974
- index += 1;
975
- continue;
976
- }
977
- if (char === '"') {
978
- inDoubleQuote = true;
979
- index += 1;
980
- continue;
981
- }
982
- token += char;
983
- index += 1;
984
- continue;
985
- }
986
- index += 1;
987
- if (inSingleQuote) {
988
- if (char === "'") inSingleQuote = false;
989
- else token += char;
990
- continue;
991
- }
992
- if (char === '"') {
993
- inDoubleQuote = false;
994
- continue;
995
- }
996
- if (char === "\\" && index < command.length) {
997
- token += command[index];
998
- index += 1;
999
- continue;
1000
- }
1001
- token += char;
1002
- }
1003
- return Object.freeze({ token: token.trim(), nextIndex: index });
923
+ function isExecutableCommand(value) {
924
+ if (value.trim().length === 0) return false;
925
+ return !value.includes("\0");
1004
926
  }
1005
- function readShellToken(command, start) {
1006
- let index = start;
1007
- while (index < command.length && isWhitespace(command[index] ?? "")) {
1008
- index += 1;
1009
- }
1010
- return readShellTokenSpan(command, index);
1011
- }
1012
- function readHereDocDelimiters(line) {
1013
- const delimiters = [];
1014
- const pattern = /<<(-)?\s*(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_./-]+))/gu;
1015
- for (const match of line.matchAll(pattern)) {
1016
- const delimiter = match[2] ?? match[3] ?? match[4] ?? "";
1017
- if (delimiter) {
1018
- delimiters.push({ delimiter, stripTabs: Boolean(match[1]) });
1019
- }
927
+ function readExecCommand(value) {
928
+ const command = readRequiredString(value, {
929
+ name: "command",
930
+ trim: false,
931
+ maxLength: EXEC_COMMAND_MAX_CHARS
932
+ });
933
+ if (!isExecutableCommand(command)) {
934
+ throw new ExecPluginError(
935
+ "exec_command_invalid",
936
+ "The command must contain nonempty text without NUL characters."
937
+ );
1020
938
  }
1021
- return delimiters;
939
+ return command;
1022
940
  }
1023
- function stripHereDocBodies(command) {
1024
- const pending = [];
1025
- return command.split("\n").map((line) => {
1026
- const active = pending[0];
1027
- if (active) {
1028
- const comparable = active.stripTabs ? line.replace(/^\t+/u, "") : line;
1029
- if (comparable === active.delimiter) {
1030
- pending.shift();
1031
- return line;
1032
- }
1033
- return "";
1034
- }
1035
- pending.push(...readHereDocDelimiters(line));
1036
- return line;
1037
- }).join("\n");
1038
- }
1039
- function scopedPathTokens(command) {
1040
- const tokens = [];
1041
- let index = 0;
1042
- while (index < command.length) {
1043
- while (index < command.length && isShellTokenBoundary(command[index] ?? "")) {
1044
- index += 1;
1045
- }
1046
- if (index >= command.length) break;
1047
- const span = readShellToken(command, index);
1048
- index = Math.max(span.nextIndex, index + 1);
1049
- const token = span.token;
1050
- if (token === "." || token === ".." || token.startsWith("./") || token.startsWith("../") || token === "workspace" || token.startsWith("workspace/") || token.startsWith("workspace\\") || token.startsWith("/")) {
1051
- tokens.push(token);
1052
- }
1053
- }
1054
- return Object.freeze(tokens);
941
+ function isInvalidExecParameter(name, value) {
942
+ if (typeof value !== "string") return true;
943
+ if (value.length === 0) return true;
944
+ if (name === "command") return !isExecutableCommand(value);
945
+ return value.includes("\0");
1055
946
  }
1056
947
  function createExecAdapter() {
1057
948
  return {
1058
949
  validateCall(input) {
1059
- const invalid = ["command", "cwd"].filter((name) => {
1060
- const value = input.params[name];
1061
- return typeof value !== "string" || value.trim().length === 0;
1062
- });
950
+ const invalid = ["command", "cwd"].filter(
951
+ (name) => isInvalidExecParameter(name, input.params[name])
952
+ );
1063
953
  if (invalid.length === 0) return null;
1064
954
  return {
1065
955
  error: `invalid params for exec: invalid ${invalid.join(", ")}`,
1066
- repairHint: "Provide one non-interactive command and one explicit existing agent-work or workspace cwd."
956
+ repairHint: "Provide one command without NUL characters and one explicit existing cwd."
1067
957
  };
1068
958
  }
1069
959
  };
@@ -1099,7 +989,6 @@ function runningResult(snapshot, execution) {
1099
989
  const rendered = renderedOutput(
1100
990
  [
1101
991
  `Command: ${execution.commandPreview}`,
1102
- ...execution.commandWasNormalized ? ["Command normalization: invalid control characters were removed."] : [],
1103
992
  `CWD: ${execution.cwd.logicalPath}`,
1104
993
  "Process status: running",
1105
994
  `Process ID: ${snapshot.processId}`,
@@ -1198,7 +1087,6 @@ async function finalizeExecResult(params) {
1198
1087
  const rendered = renderedOutput(
1199
1088
  [
1200
1089
  `Command: ${execution.commandPreview}`,
1201
- ...execution.commandWasNormalized ? ["Command normalization: invalid control characters were removed."] : [],
1202
1090
  `CWD: ${execution.cwd.logicalPath}`,
1203
1091
  `Process ID: ${snapshot.processId}`,
1204
1092
  `Process status: ${snapshot.terminationReason ?? "completed"}`,
@@ -1265,34 +1153,12 @@ function createExecHandlers(pluginContext, settings) {
1265
1153
  };
1266
1154
  const exec = async (params, context) => {
1267
1155
  try {
1268
- const rawCommand = readRequiredString(params.command, {
1269
- name: "command",
1270
- trim: false,
1271
- maxLength: EXEC_COMMAND_MAX_CHARS
1272
- });
1273
- const { command, normalized } = sanitizeExecCommand(rawCommand);
1274
- if (!command) {
1275
- throw new ExecPluginError(
1276
- "exec_command_invalid",
1277
- "The command is empty after invalid control characters are removed."
1278
- );
1279
- }
1280
- const interactive = isInteractiveCommand(command);
1281
- if (interactive) {
1282
- throw new ExecPluginError(
1283
- "exec_interactive_command_blocked",
1284
- `Interactive command ${interactive} is not supported by the non-interactive exec plugin.`
1285
- );
1286
- }
1156
+ const command = readExecCommand(params.command);
1287
1157
  const cwd = await resolveExecWorkingDirectory(
1288
1158
  pluginContext,
1289
1159
  context,
1290
1160
  params.cwd
1291
1161
  );
1292
- const staticCommand = stripHereDocBodies(command);
1293
- for (const token of scopedPathTokens(staticCommand)) {
1294
- resolveExecScopedPath(pluginContext, context, token, cwd);
1295
- }
1296
1162
  const filesystemStateBefore = await captureExecFilesystemSnapshot(
1297
1163
  cwd.absolutePath,
1298
1164
  cwd.logicalPath
@@ -1303,7 +1169,6 @@ function createExecHandlers(pluginContext, settings) {
1303
1169
  }).text;
1304
1170
  const execution = Object.freeze({
1305
1171
  commandPreview,
1306
- commandWasNormalized: normalized,
1307
1172
  cwd,
1308
1173
  filesystemStateBefore,
1309
1174
  hardTimeoutMs: settings.hardTimeoutMs,
@@ -31,7 +31,7 @@
31
31
  "outputPreview": { "path": "output", "kind": "preview" }
32
32
  }
33
33
  },
34
- "skills": [],
34
+ "skills": ["dev_view_skill"],
35
35
  "operations": {
36
36
  "inspect_target": {
37
37
  "summary": "Inspect one bounded directory sample or bounded file window when unresolved work requires current content. Choose either a locator or numeric lines; locator takes precedence. Truncation metadata distinguishes a complete result from a bounded scan.",
@@ -0,0 +1,7 @@
1
+ # Dev View Skill
2
+
3
+ - `path` identifies one file or directory. For a file, choose numeric `start_line` / `end_line` for a bounded window, or `locator` for one exact literal substring in the bounded scan.
4
+ - A locator is not a keyword or regular-expression search: it must identify one occurrence. It takes precedence over numeric lines. When no unique observed substring is known, use numeric lines without a locator.
5
+ - `context_lines` supplies surrounding lines for a locator. Numeric windows are capped at 240 lines; scan and output truncation are reported separately.
6
+ - `ambiguous_text_locator` is a failed selection. Its bounded candidates contain observed match lines and `nextControls` for numeric reads. Choose a candidate only when it fits the requested operation, and omit `locator` when using its numeric controls. No candidate has been selected or read successfully by that failure.
7
+ - Candidate-list truncation and scan truncation are independent. Missing candidates or unscanned content are unknown; a locator-not-found result supplies no file content.