@abot-ai/runtime 1.6.0 → 1.8.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 (750) hide show
  1. package/README.md +2 -0
  2. package/dist/src/bridge/request-steering.js +60 -15
  3. package/dist/src/capabilities/normal-invocation/contracts.d.ts +3 -0
  4. package/dist/src/capabilities/normal-invocation/output-channels.d.ts +10 -0
  5. package/dist/src/capabilities/normal-invocation/output-channels.js +29 -0
  6. package/dist/src/capabilities/normal-invocation/validator.js +4 -2
  7. package/dist/src/capabilities/tool-request-resources.d.ts +3 -0
  8. package/dist/src/capabilities/tool-types.d.ts +1 -1
  9. package/dist/src/cli/abot.js +2 -0
  10. package/dist/src/cli/host-companion-bundle.mjs +8003 -6796
  11. package/dist/src/cli/host-companion-entry.js +5 -22
  12. package/dist/src/cli/host-companion-input.d.ts +3 -0
  13. package/dist/src/cli/host-companion-input.js +21 -0
  14. package/dist/src/cli/host-companion-lifecycle.d.ts +11 -0
  15. package/dist/src/cli/host-companion-lifecycle.js +32 -0
  16. package/dist/src/cli/host-companion-setup-target.d.ts +4 -0
  17. package/dist/src/cli/host-companion-setup-target.js +17 -0
  18. package/dist/src/cli/host-companion-startup.d.ts +2 -0
  19. package/dist/src/cli/host-companion-startup.js +7 -2
  20. package/dist/src/cli/host-companion.d.ts +6 -0
  21. package/dist/src/cli/host-companion.js +30 -27
  22. package/dist/src/cli/windows-companion-store-entry.d.ts +9 -0
  23. package/dist/src/cli/windows-companion-store-entry.js +67 -0
  24. package/dist/src/computer-access/collection-consent.d.ts +9 -0
  25. package/dist/src/computer-access/collection-consent.js +47 -0
  26. package/dist/src/computer-access/command-output-capture.d.ts +48 -0
  27. package/dist/src/computer-access/command-output-capture.js +202 -0
  28. package/dist/src/computer-access/command-output-protection.d.ts +17 -0
  29. package/dist/src/computer-access/command-output-protection.js +59 -0
  30. package/dist/src/computer-access/command-output-retention.d.ts +5 -0
  31. package/dist/src/computer-access/command-output-retention.js +90 -0
  32. package/dist/src/computer-access/command-output.d.ts +7 -0
  33. package/dist/src/computer-access/command-output.js +1 -0
  34. package/dist/src/computer-access/commands.d.ts +1 -0
  35. package/dist/src/computer-access/commands.js +1 -1
  36. package/dist/src/computer-access/companion/command-output-protocol.d.ts +12 -0
  37. package/dist/src/computer-access/companion/command-output-protocol.js +28 -0
  38. package/dist/src/computer-access/companion/command-output.d.ts +14 -0
  39. package/dist/src/computer-access/companion/command-output.js +127 -0
  40. package/dist/src/computer-access/companion/install-link-macos.d.ts +7 -0
  41. package/dist/src/computer-access/companion/install-link-macos.js +49 -0
  42. package/dist/src/computer-access/companion/install-link-registration.d.ts +4 -0
  43. package/dist/src/computer-access/companion/install-link-registration.js +184 -0
  44. package/dist/src/computer-access/companion/install-link-windows.d.ts +4 -0
  45. package/dist/src/computer-access/companion/install-link-windows.js +65 -0
  46. package/dist/src/computer-access/companion/install-link.d.ts +9 -0
  47. package/dist/src/computer-access/companion/install-link.js +54 -0
  48. package/dist/src/computer-access/companion/native-messages.js +3 -0
  49. package/dist/src/computer-access/companion/native-notifications.js +3 -2
  50. package/dist/src/computer-access/companion/native-session.d.ts +1 -0
  51. package/dist/src/computer-access/companion/native-session.js +20 -4
  52. package/dist/src/computer-access/companion/native-supervisor.js +1 -0
  53. package/dist/src/computer-access/companion/notification-windows.d.ts +1 -1
  54. package/dist/src/computer-access/companion/notification-windows.js +8 -3
  55. package/dist/src/computer-access/companion/observation-filter.js +2 -26
  56. package/dist/src/computer-access/companion/observation-process.d.ts +2 -0
  57. package/dist/src/computer-access/companion/observation-process.js +51 -25
  58. package/dist/src/computer-access/companion/observation-redaction.d.ts +2 -7
  59. package/dist/src/computer-access/companion/observation-redaction.js +2 -111
  60. package/dist/src/computer-access/companion/protocol.d.ts +1 -1
  61. package/dist/src/computer-access/companion/protocol.js +6 -0
  62. package/dist/src/computer-access/companion/release-version.d.ts +1 -1
  63. package/dist/src/computer-access/companion/release-version.js +1 -1
  64. package/dist/src/computer-access/companion/secret-protection-protocol.d.ts +6 -0
  65. package/dist/src/computer-access/companion/secret-protection-protocol.js +6 -0
  66. package/dist/src/computer-access/companion/windows-store/connection-error.d.ts +7 -0
  67. package/dist/src/computer-access/companion/windows-store/connection-error.js +19 -0
  68. package/dist/src/computer-access/companion/windows-store/connection-link.d.ts +13 -0
  69. package/dist/src/computer-access/companion/windows-store/connection-link.js +109 -0
  70. package/dist/src/computer-access/companion/windows-store/identity.d.ts +13 -0
  71. package/dist/src/computer-access/companion/windows-store/identity.js +13 -0
  72. package/dist/src/computer-access/companion/windows-store/lifecycle.d.ts +5 -0
  73. package/dist/src/computer-access/companion/windows-store/lifecycle.js +90 -0
  74. package/dist/src/computer-access/computer/companion-sessions.js +7 -6
  75. package/dist/src/computer-access/computer/unix-native-process.js +23 -11
  76. package/dist/src/computer-access/contracts.d.ts +1 -1
  77. package/dist/src/computer-access/handlers.d.ts +3 -1
  78. package/dist/src/computer-access/handlers.js +83 -11
  79. package/dist/src/computer-access/host-observation.d.ts +3 -3
  80. package/dist/src/computer-access/native-observation-connection.d.ts +12 -0
  81. package/dist/src/computer-access/native-observation-connection.js +78 -0
  82. package/dist/src/computer-access/native-observation-ownership.d.ts +6 -0
  83. package/dist/src/computer-access/native-observation-ownership.js +55 -0
  84. package/dist/src/computer-access/native-observation-shutdown.d.ts +7 -0
  85. package/dist/src/computer-access/native-observation-shutdown.js +58 -0
  86. package/dist/src/computer-access/observation-source.d.ts +6 -0
  87. package/dist/src/computer-access/observation-source.js +10 -0
  88. package/dist/src/computer-access/process-capture.d.ts +6 -0
  89. package/dist/src/computer-access/process-capture.js +1 -0
  90. package/dist/src/computer-access/process-result.d.ts +2 -0
  91. package/dist/src/computer-access/process-result.js +14 -6
  92. package/dist/src/computer-access/process-runner.d.ts +2 -1
  93. package/dist/src/computer-access/process-runner.js +21 -13
  94. package/dist/src/computer-access/security/desktop-result.d.ts +8 -0
  95. package/dist/src/computer-access/security/desktop-result.js +146 -0
  96. package/dist/src/computer-access/security/observed-error.d.ts +2 -0
  97. package/dist/src/computer-access/security/observed-error.js +10 -0
  98. package/dist/src/computer-access/security/secret-text.d.ts +7 -0
  99. package/dist/src/computer-access/security/secret-text.js +111 -0
  100. package/dist/src/computer-access/security/system-results.d.ts +2 -0
  101. package/dist/src/computer-access/security/system-results.js +53 -0
  102. package/dist/src/computer-access/system-result-protection.d.ts +11 -0
  103. package/dist/src/computer-access/system-result-protection.js +1 -0
  104. package/dist/src/model-gateway/observability/provider-response-capture.d.ts +60 -0
  105. package/dist/src/model-gateway/observability/provider-response-capture.js +68 -0
  106. package/dist/src/model-gateway/observability/provider-response-prefix.d.ts +7 -0
  107. package/dist/src/model-gateway/observability/provider-response-prefix.js +14 -0
  108. package/dist/src/model-gateway/observability/provider-response-tail.d.ts +8 -0
  109. package/dist/src/model-gateway/observability/provider-response-tail.js +28 -0
  110. package/dist/src/model-gateway/observability/provider-sse-diagnostics.d.ts +30 -0
  111. package/dist/src/model-gateway/observability/provider-sse-diagnostics.js +119 -0
  112. package/dist/src/model-gateway/observability/provider-trace.js +30 -8
  113. package/dist/src/model-gateway/providers/ollama/adapter.js +8 -2
  114. package/dist/src/model-gateway/providers/ollama/stream-normalizer.js +70 -50
  115. package/dist/src/model-gateway/providers/ollama/stream-termination.d.ts +6 -0
  116. package/dist/src/model-gateway/providers/ollama/stream-termination.js +20 -0
  117. package/dist/src/model-gateway/providers/openai/adapter.js +9 -7
  118. package/dist/src/model-gateway/providers/openai/diagnostics.d.ts +0 -1
  119. package/dist/src/model-gateway/providers/openai/diagnostics.js +0 -9
  120. package/dist/src/model-gateway/providers/openai/function-output.d.ts +11 -0
  121. package/dist/src/model-gateway/providers/openai/function-output.js +37 -0
  122. package/dist/src/model-gateway/providers/openai/function-result.d.ts +7 -0
  123. package/dist/src/model-gateway/providers/openai/function-result.js +35 -0
  124. package/dist/src/model-gateway/providers/openai/message-output-policy.d.ts +3 -0
  125. package/dist/src/model-gateway/providers/openai/message-output-policy.js +16 -0
  126. package/dist/src/model-gateway/providers/openai/payload.d.ts +0 -2
  127. package/dist/src/model-gateway/providers/openai/payload.js +6 -23
  128. package/dist/src/model-gateway/providers/openai/response-lifetime.d.ts +2 -0
  129. package/dist/src/model-gateway/providers/openai/response-lifetime.js +64 -0
  130. package/dist/src/model-gateway/providers/openai/sse-data.d.ts +9 -0
  131. package/dist/src/model-gateway/providers/openai/sse-data.js +67 -0
  132. package/dist/src/model-gateway/providers/openai/stream-normalizer.d.ts +10 -22
  133. package/dist/src/model-gateway/providers/openai/stream-normalizer.js +78 -79
  134. package/dist/src/model-gateway/providers/openai/stream.js +13 -41
  135. package/dist/src/model-gateway/providers/openai/structured-message-output.d.ts +42 -0
  136. package/dist/src/model-gateway/providers/openai/structured-message-output.js +175 -0
  137. package/dist/src/model-gateway/server/configuration.d.ts +2 -0
  138. package/dist/src/model-gateway/server/configuration.js +73 -21
  139. package/dist/src/model-gateway/server.js +5 -1
  140. package/dist/src/plugin-contract/index.d.ts +1 -0
  141. package/dist/src/plugin-contract/index.js +1 -0
  142. package/dist/src/plugin-contract/install-source.d.ts +13 -0
  143. package/dist/src/plugin-contract/install-source.js +99 -0
  144. package/dist/src/plugin-contract/manifest.d.ts +4 -1
  145. package/dist/src/plugin-contract/manifest.js +1 -0
  146. package/dist/src/plugin-contract/platform-compatibility.d.ts +16 -0
  147. package/dist/src/plugin-contract/platform-compatibility.js +3 -0
  148. package/dist/src/plugin-sdk/computer-access.d.ts +12 -0
  149. package/dist/src/plugin-sdk/computer-access.js +6 -0
  150. package/dist/src/plugin-sdk/files-windows/process.d.ts +3 -0
  151. package/dist/src/plugin-sdk/files-windows/process.js +93 -0
  152. package/dist/src/plugin-sdk/files-windows/read-script.d.ts +1 -0
  153. package/dist/src/plugin-sdk/files-windows/read-script.js +43 -0
  154. package/dist/src/plugin-sdk/files-windows/read.d.ts +6 -0
  155. package/dist/src/plugin-sdk/files-windows/read.js +56 -0
  156. package/dist/src/plugin-sdk/files-windows/result.d.ts +4 -0
  157. package/dist/src/plugin-sdk/files-windows/result.js +67 -0
  158. package/dist/src/plugin-sdk/files.js +4 -0
  159. package/dist/src/plugin-sdk/index.d.ts +1 -0
  160. package/dist/src/plugin-sdk/index.js +1 -0
  161. package/dist/src/plugin-sdk/mutation-result.d.ts +7 -0
  162. package/dist/src/plugin-sdk/mutation-result.js +11 -0
  163. package/dist/src/runtime/adapters/in-memory-session-store.js +6 -16
  164. package/dist/src/runtime/adapters/long-term-memory/file-lock/acquisition.js +20 -3
  165. package/dist/src/runtime/adapters/long-term-memory/file-lock/owner-record.js +3 -1
  166. package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.d.ts +3 -0
  167. package/dist/src/runtime/adapters/long-term-memory/file-lock/path-observation.js +20 -0
  168. package/dist/src/runtime/adapters/long-term-memory/file-lock/snapshot.js +7 -3
  169. package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +1 -1
  170. package/dist/src/runtime/adapters/passive-learning-runtime.js +3 -3
  171. package/dist/src/runtime/adapters/runtime-observation-connection.d.ts +5 -0
  172. package/dist/src/runtime/adapters/runtime-observation-connection.js +13 -0
  173. package/dist/src/runtime/admin/config-control.js +2 -1
  174. package/dist/src/runtime/automations/catalog.d.ts +3 -0
  175. package/dist/src/runtime/automations/catalog.js +1 -0
  176. package/dist/src/runtime/automations/model-dependency-projection.d.ts +2 -0
  177. package/dist/src/runtime/automations/service.d.ts +2 -0
  178. package/dist/src/runtime/capabilities/automation-builder/authoring-reference.d.ts +10 -5
  179. package/dist/src/runtime/capabilities/automation-builder/authoring-reference.js +8 -7
  180. package/dist/src/runtime/capabilities/automation-builder/payload-instructions.d.ts +2 -2
  181. package/dist/src/runtime/capabilities/automation-builder/payload-instructions.js +2 -2
  182. package/dist/src/runtime/capabilities/automation-builder/tool-contract.d.ts +2 -2
  183. package/dist/src/runtime/capabilities/automations/authoring-catalog.js +1 -1
  184. package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +11 -5
  185. package/dist/src/runtime/capabilities/automations/tool-module.js +1 -1
  186. package/dist/src/runtime/capabilities/request-permission-catalog.d.ts +3 -1
  187. package/dist/src/runtime/capabilities/request-permission-catalog.js +21 -2
  188. package/dist/src/runtime/capabilities/request-permission-tool-registry.d.ts +2 -1
  189. package/dist/src/runtime/capabilities/request-permission-tool-registry.js +18 -10
  190. package/dist/src/runtime/capabilities/request-runtime-tool-registry.d.ts +2 -0
  191. package/dist/src/runtime/capabilities/request-runtime-tool-registry.js +1 -1
  192. package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +6 -0
  193. package/dist/src/runtime/config/builders.js +6 -5
  194. package/dist/src/runtime/config/effective-model-config-validation.js +4 -35
  195. package/dist/src/runtime/config/fields.js +15 -0
  196. package/dist/src/runtime/config/model-context-capacity.d.ts +20 -0
  197. package/dist/src/runtime/config/model-context-capacity.js +55 -0
  198. package/dist/src/runtime/config/model-execution-policy.d.ts +5 -1
  199. package/dist/src/runtime/config/model-execution-policy.js +16 -0
  200. package/dist/src/runtime/config/model-plugin-config.d.ts +8 -0
  201. package/dist/src/runtime/config/model-plugin-config.js +40 -0
  202. package/dist/src/runtime/config/schema.js +5 -1
  203. package/dist/src/runtime/config/validation/model-profile-validation.js +2 -0
  204. package/dist/src/runtime/config/validation/runtime-config-validation-contract.d.ts +3 -1
  205. package/dist/src/runtime/config/validation/runtime-config-validation-contract.js +3 -1
  206. package/dist/src/runtime/config/validation/runtime-root-section-validation.js +11 -4
  207. package/dist/src/runtime/config/validation/web-ui-config-validation.js +3 -2
  208. package/dist/src/runtime/config/web-ui.d.ts +5 -0
  209. package/dist/src/runtime/config/web-ui.js +5 -0
  210. package/dist/src/runtime/config.js +2 -0
  211. package/dist/src/runtime/local-application.d.ts +2 -0
  212. package/dist/src/runtime/local-host/app-owner.js +50 -6
  213. package/dist/src/runtime/local-host/app-request-control.d.ts +3 -1
  214. package/dist/src/runtime/local-host/app-request-control.js +91 -11
  215. package/dist/src/runtime/local-host/client-requests.js +32 -5
  216. package/dist/src/runtime/local-host/client-services.d.ts +2 -0
  217. package/dist/src/runtime/local-host/local-request-diagnostics.d.ts +9 -0
  218. package/dist/src/runtime/local-host/local-request-diagnostics.js +47 -0
  219. package/dist/src/runtime/local-host/saved-approvals.js +23 -2
  220. package/dist/src/runtime/local-host/windows-private-access.js +2 -0
  221. package/dist/src/runtime/model/model-selection.js +4 -1
  222. package/dist/src/runtime/observability/request-control-diagnostics.d.ts +6 -0
  223. package/dist/src/runtime/observability/request-control-diagnostics.js +52 -0
  224. package/dist/src/runtime/passive-learning/application-catalog.js +3 -1
  225. package/dist/src/runtime/passive-learning/collection-source.js +7 -0
  226. package/dist/src/runtime/passive-learning/service.js +2 -3
  227. package/dist/src/runtime/passive-learning/status-projection.d.ts +2 -0
  228. package/dist/src/runtime/passive-learning/status-projection.js +9 -0
  229. package/dist/src/runtime/plugins/configuration-context.d.ts +9 -0
  230. package/dist/src/runtime/plugins/configuration-context.js +42 -0
  231. package/dist/src/runtime/plugins/configuration-settings.d.ts +2 -0
  232. package/dist/src/runtime/plugins/configuration-settings.js +26 -0
  233. package/dist/src/runtime/plugins/configuration-store.d.ts +23 -0
  234. package/dist/src/runtime/plugins/configuration-store.js +100 -0
  235. package/dist/src/runtime/plugins/configuration-write.d.ts +5 -0
  236. package/dist/src/runtime/plugins/configuration-write.js +58 -0
  237. package/dist/src/runtime/plugins/installation/archive.d.ts +2 -0
  238. package/dist/src/runtime/plugins/installation/archive.js +107 -0
  239. package/dist/src/runtime/plugins/installation/github-download.d.ts +9 -0
  240. package/dist/src/runtime/plugins/installation/github-download.js +72 -0
  241. package/dist/src/runtime/plugins/installation/installed-package.d.ts +9 -0
  242. package/dist/src/runtime/plugins/installation/installed-package.js +66 -0
  243. package/dist/src/runtime/plugins/installation/package.d.ts +53 -0
  244. package/dist/src/runtime/plugins/installation/package.js +81 -0
  245. package/dist/src/runtime/plugins/installation/portable-path.d.ts +2 -0
  246. package/dist/src/runtime/plugins/installation/portable-path.js +10 -0
  247. package/dist/src/runtime/plugins/installation/publication.d.ts +10 -0
  248. package/dist/src/runtime/plugins/installation/publication.js +17 -0
  249. package/dist/src/runtime/plugins/installation/service.d.ts +48 -0
  250. package/dist/src/runtime/plugins/installation/service.js +80 -0
  251. package/dist/src/runtime/plugins/loader.js +34 -38
  252. package/dist/src/runtime/plugins/manifest-platform-compatibility.d.ts +2 -0
  253. package/dist/src/runtime/plugins/manifest-platform-compatibility.js +39 -0
  254. package/dist/src/runtime/plugins/manifest-projection.js +1 -0
  255. package/dist/src/runtime/plugins/manifest-validator.js +12 -1
  256. package/dist/src/runtime/plugins/module-cache.d.ts +2 -0
  257. package/dist/src/runtime/plugins/module-cache.js +19 -0
  258. package/dist/src/runtime/plugins/platform-compatibility.d.ts +4 -0
  259. package/dist/src/runtime/plugins/platform-compatibility.js +44 -0
  260. package/dist/src/runtime/plugins/selection.d.ts +2 -0
  261. package/dist/src/runtime/plugins/selection.js +16 -11
  262. package/dist/src/runtime/ports.d.ts +6 -4
  263. package/dist/src/runtime/request/approval-wait/activation-events.js +19 -7
  264. package/dist/src/runtime/request/approval-wait/execution-compaction-restore.d.ts +20 -0
  265. package/dist/src/runtime/request/approval-wait/execution-compaction-restore.js +118 -0
  266. package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +2 -1
  267. package/dist/src/runtime/request/dependencies.d.ts +2 -1
  268. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +1 -1
  269. package/dist/src/runtime/request/handler.js +8 -0
  270. package/dist/src/runtime/request/prepared-execution.js +9 -1
  271. package/dist/src/runtime/request/request-steering.d.ts +4 -0
  272. package/dist/src/runtime/request/request-steering.js +37 -12
  273. package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -0
  274. package/dist/src/runtime/request/worker-capability-composition.js +4 -1
  275. package/dist/src/runtime/scheduler/journal-index-state.d.ts +1 -1
  276. package/dist/src/runtime/steps/execution-agent/capability-result-context.d.ts +6 -0
  277. package/dist/src/runtime/steps/execution-agent/capability-result-context.js +29 -0
  278. package/dist/src/runtime/steps/execution-agent/format.js +2 -3
  279. package/dist/src/runtime/steps/execution-agent/input.js +1 -1
  280. package/dist/src/runtime/steps/execution-agent/prompt.js +5 -5
  281. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -0
  282. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +2 -3
  283. package/dist/src/runtime/steps/execution-agent/state-context.js +26 -35
  284. package/dist/src/runtime/steps/execution-agent/work-plan-contract.d.ts +1 -3
  285. package/dist/src/runtime/steps/execution-agent/work-plan-contract.js +0 -55
  286. package/dist/src/runtime/steps/execution-agent/work-plan-schema.d.ts +3 -0
  287. package/dist/src/runtime/steps/execution-agent/work-plan-schema.js +61 -0
  288. package/dist/src/sessions/assistant-initiative-message.d.ts +3 -0
  289. package/dist/src/sessions/assistant-initiative-message.js +12 -0
  290. package/dist/src/sessions/assistant-initiative.d.ts +2 -2
  291. package/dist/src/sessions/assistant-initiative.js +1 -7
  292. package/dist/src/sessions/durable-session-commit.d.ts +2 -1
  293. package/dist/src/sessions/durable-session-commit.js +9 -4
  294. package/dist/src/sessions/metadata/projection.d.ts +15 -0
  295. package/dist/src/sessions/metadata/projection.js +55 -0
  296. package/dist/src/sessions/metadata/publication.d.ts +12 -0
  297. package/dist/src/sessions/metadata/publication.js +78 -0
  298. package/dist/src/sessions/metadata/source-receipt.d.ts +5 -0
  299. package/dist/src/sessions/metadata/source-receipt.js +42 -0
  300. package/dist/src/sessions/metadata/store.d.ts +7 -0
  301. package/dist/src/sessions/metadata/store.js +119 -0
  302. package/dist/src/sessions/prepared-session-replacement.d.ts +6 -0
  303. package/dist/src/sessions/prepared-session-replacement.js +46 -0
  304. package/dist/src/sessions/record/projection.d.ts +3 -1
  305. package/dist/src/sessions/record/projection.js +26 -18
  306. package/dist/src/sessions/request-lifecycle/service.js +3 -3
  307. package/dist/src/sessions/session-service.d.ts +2 -4
  308. package/dist/src/sessions/session-service.js +4 -16
  309. package/dist/src/sessions/session-store.d.ts +2 -1
  310. package/dist/src/sessions/session-store.js +11 -5
  311. package/dist/src/sessions/snapshot.d.ts +17 -0
  312. package/dist/src/sessions/snapshot.js +105 -0
  313. package/dist/src/sessions/types.d.ts +2 -0
  314. package/dist/src/shared/passive-observation-self-exclusion.d.ts +5 -0
  315. package/dist/src/shared/passive-observation-self-exclusion.js +37 -0
  316. package/dist/src/shared/tool-selection.d.ts +2 -0
  317. package/dist/src/shared/tool-selection.js +7 -0
  318. package/dist/src/shared/windows-file-io/authority-script.d.ts +1 -0
  319. package/dist/src/shared/windows-file-io/authority-script.js +94 -0
  320. package/dist/src/shared/windows-file-io/native-script.d.ts +2 -0
  321. package/dist/src/shared/windows-file-io/native-script.js +120 -0
  322. package/dist/src/shared/windows-file-io/read-bytes-script.d.ts +1 -0
  323. package/dist/src/shared/windows-file-io/read-bytes-script.js +18 -0
  324. package/dist/src/shared/windows-job-object.d.ts +2 -0
  325. package/dist/src/shared/windows-job-object.js +66 -0
  326. package/dist/src/web-ui/app/ARCHITECTURE.md +14 -0
  327. package/dist/src/web-ui/app/app-bootstrap.js +14 -1
  328. package/dist/src/web-ui/app/app-state.js +0 -7
  329. package/dist/src/web-ui/app/app.js +59 -159
  330. package/dist/src/web-ui/app/components/automations/node-inspector.js +3 -2
  331. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +3 -0
  332. package/dist/src/web-ui/app/components/composer-submission-notice.js +50 -0
  333. package/dist/src/web-ui/app/components/config-workspace/config-model.js +2 -0
  334. package/dist/src/web-ui/app/components/config-workspace/model-plugin-permissions.js +136 -0
  335. package/dist/src/web-ui/app/components/config-workspace/model-plugin-selection.js +180 -0
  336. package/dist/src/web-ui/app/components/config-workspace/model-plugin-view-state.js +114 -0
  337. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +3 -0
  338. package/dist/src/web-ui/app/components/config-workspace/model-summary.js +39 -0
  339. package/dist/src/web-ui/app/components/config-workspace/summary-rendering.js +30 -0
  340. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +37 -0
  341. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +24 -2
  342. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +9 -1
  343. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +23 -67
  344. package/dist/src/web-ui/app/components/config-workspace.js +11 -2
  345. package/dist/src/web-ui/app/components/conversation-view.js +36 -5
  346. package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +2 -1
  347. package/dist/src/web-ui/app/components/dashboard/workspace.js +2 -1
  348. package/dist/src/web-ui/app/components/home-guidance/daily-review.js +2 -2
  349. package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +20 -6
  350. package/dist/src/web-ui/app/components/model-setup/context-window-feedback.js +53 -0
  351. package/dist/src/web-ui/app/components/model-setup/save-flow.js +3 -1
  352. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +1 -0
  353. package/dist/src/web-ui/app/components/model-setup/wizard.js +12 -0
  354. package/dist/src/web-ui/app/components/operations-summary.js +105 -0
  355. package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +4 -0
  356. package/dist/src/web-ui/app/components/passive-learning/collection-access.js +35 -0
  357. package/dist/src/web-ui/app/components/passive-learning/collection-consent-dialog.js +59 -0
  358. package/dist/src/web-ui/app/components/passive-learning/collection-consent-gate.js +94 -0
  359. package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +6 -0
  360. package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +1 -0
  361. package/dist/src/web-ui/app/components/passive-learning/home.js +8 -11
  362. package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +1 -0
  363. package/dist/src/web-ui/app/components/passive-learning/memory.js +2 -4
  364. package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +2 -2
  365. package/dist/src/web-ui/app/components/plugins/compatibility.js +13 -0
  366. package/dist/src/web-ui/app/components/plugins/configuration-draft.js +34 -0
  367. package/dist/src/web-ui/app/components/plugins/configuration-editor.js +147 -0
  368. package/dist/src/web-ui/app/components/plugins/configuration-fields.js +103 -0
  369. package/dist/src/web-ui/app/components/plugins/configuration-retained-secrets.js +20 -0
  370. package/dist/src/web-ui/app/components/plugins/configuration-settings.js +108 -0
  371. package/dist/src/web-ui/app/components/plugins/discovery-rendering.js +45 -0
  372. package/dist/src/web-ui/app/components/plugins/installation-compatibility.js +7 -0
  373. package/dist/src/web-ui/app/components/plugins/installation.js +213 -0
  374. package/dist/src/web-ui/app/components/plugins/manager.js +160 -6
  375. package/dist/src/web-ui/app/components/plugins/removal.js +130 -0
  376. package/dist/src/web-ui/app/components/plugins/rendering.js +17 -2
  377. package/dist/src/web-ui/app/components/plugins/summary.js +54 -0
  378. package/dist/src/web-ui/app/components/plugins/tabs.js +31 -0
  379. package/dist/src/web-ui/app/components/plugins/view-state.js +3 -1
  380. package/dist/src/web-ui/app/components/reasoning-override-prompt.js +82 -0
  381. package/dist/src/web-ui/app/components/runtime-config-activation.js +22 -8
  382. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +5 -2
  383. package/dist/src/web-ui/app/components/runtime-setup/connection-state.js +9 -1
  384. package/dist/src/web-ui/app/components/runtime-setup/context-window-feedback.js +71 -0
  385. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +9 -4
  386. package/dist/src/web-ui/app/components/runtime-setup/plugins.js +3 -1
  387. package/dist/src/web-ui/app/components/runtime-setup/rendering.js +6 -4
  388. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +1 -0
  389. package/dist/src/web-ui/app/components/runtime-setup-guide.js +15 -3
  390. package/dist/src/web-ui/app/components/schedules/form.js +10 -8
  391. package/dist/src/web-ui/app/components/schedules/workspace.js +23 -4
  392. package/dist/src/web-ui/app/components/session-sidebar-sections.js +2 -2
  393. package/dist/src/web-ui/app/components/spark-chat/empty-state.js +1 -0
  394. package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +9 -3
  395. package/dist/src/web-ui/app/components/spark-chat/panel.js +1 -0
  396. package/dist/src/web-ui/app/components/spark-chat/placement.js +4 -7
  397. package/dist/src/web-ui/app/components/spark-chat/settings.js +7 -3
  398. package/dist/src/web-ui/app/components/system-host/connection-card.js +35 -0
  399. package/dist/src/web-ui/app/components/system-host/macos-permissions.js +2 -0
  400. package/dist/src/web-ui/app/components/system-host/macos-setup.js +1 -1
  401. package/dist/src/web-ui/app/components/system-host/manager.js +45 -12
  402. package/dist/src/web-ui/app/components/system-host/native-windows-access.js +50 -0
  403. package/dist/src/web-ui/app/components/system-host/rendering.js +114 -106
  404. package/dist/src/web-ui/app/components/system-host/windows-store-setup.js +293 -0
  405. package/dist/src/web-ui/app/components/workspace-shell.js +6 -0
  406. package/dist/src/web-ui/app/components/workspace-storage-notice.js +37 -0
  407. package/dist/src/web-ui/app/computer-access-feature.js +22 -5
  408. package/dist/src/web-ui/app/configuration-environment-refresh.js +27 -34
  409. package/dist/src/web-ui/app/configuration-feature.js +44 -3
  410. package/dist/src/web-ui/app/controllers/app-event-bindings.js +41 -105
  411. package/dist/src/web-ui/app/controllers/chat-request-controller.d.ts +28 -0
  412. package/dist/src/web-ui/app/controllers/chat-request-controller.js +34 -66
  413. package/dist/src/web-ui/app/controllers/composer-attachments-controller.d.ts +15 -40
  414. package/dist/src/web-ui/app/controllers/composer-attachments-controller.js +26 -69
  415. package/dist/src/web-ui/app/controllers/composer-draft-view.d.ts +27 -0
  416. package/dist/src/web-ui/app/controllers/composer-draft-view.js +48 -0
  417. package/dist/src/web-ui/app/controllers/composer-drafts.d.ts +55 -0
  418. package/dist/src/web-ui/app/controllers/composer-drafts.js +120 -0
  419. package/dist/src/web-ui/app/controllers/composer-feature.d.ts +65 -0
  420. package/dist/src/web-ui/app/controllers/composer-feature.js +124 -0
  421. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +33 -94
  422. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +185 -251
  423. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.d.ts +48 -0
  424. package/dist/src/web-ui/app/controllers/composer-submission-lifecycle.js +97 -0
  425. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +30 -61
  426. package/dist/src/web-ui/app/controllers/composer-submit-controller.js +56 -138
  427. package/dist/src/web-ui/app/controllers/composer-surface-controller.js +6 -0
  428. package/dist/src/web-ui/app/controllers/composer-workspace-controller.d.ts +22 -40
  429. package/dist/src/web-ui/app/controllers/composer-workspace-controller.js +49 -165
  430. package/dist/src/web-ui/app/controllers/conversation-navigation-intent.js +15 -0
  431. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.d.ts +1 -0
  432. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +7 -3
  433. package/dist/src/web-ui/app/controllers/conversation-request-hydration.js +91 -0
  434. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +10 -5
  435. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +97 -162
  436. package/dist/src/web-ui/app/controllers/conversation-workspace-activation.js +27 -0
  437. package/dist/src/web-ui/app/controllers/daily-memory-review.js +15 -16
  438. package/dist/src/web-ui/app/controllers/environment-transition.js +126 -0
  439. package/dist/src/web-ui/app/controllers/environment-workspace-preparation.js +18 -0
  440. package/dist/src/web-ui/app/controllers/history-pagination.js +111 -0
  441. package/dist/src/web-ui/app/controllers/home-composer-feature.d.ts +14 -36
  442. package/dist/src/web-ui/app/controllers/home-composer-feature.js +17 -114
  443. package/dist/src/web-ui/app/controllers/home-conversation-activation.js +6 -8
  444. package/dist/src/web-ui/app/controllers/operations-controller.d.ts +12 -0
  445. package/dist/src/web-ui/app/controllers/operations-controller.js +28 -21
  446. package/dist/src/web-ui/app/controllers/passive-learning-controller.js +56 -0
  447. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +1 -1
  448. package/dist/src/web-ui/app/controllers/projects-controller.js +6 -1
  449. package/dist/src/web-ui/app/controllers/reasoning-mode-controller.js +174 -0
  450. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +1 -0
  451. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +11 -0
  452. package/dist/src/web-ui/app/controllers/runtime-selection-controller.d.ts +7 -0
  453. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +20 -155
  454. package/dist/src/web-ui/app/controllers/session-controller.js +43 -19
  455. package/dist/src/web-ui/app/controllers/session-list-pagination.js +71 -0
  456. package/dist/src/web-ui/app/controllers/session-pin-updates.js +14 -0
  457. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +17 -17
  458. package/dist/src/web-ui/app/controllers/spark-chat-reading.js +1 -0
  459. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +26 -7
  460. package/dist/src/web-ui/app/controllers/steer-controller.js +9 -7
  461. package/dist/src/web-ui/app/controllers/tool-permission-mode-controller.js +1 -1
  462. package/dist/src/web-ui/app/controllers/workspace-conversation-opener.js +34 -0
  463. package/dist/src/web-ui/app/controllers/workspace-route-controller.js +21 -19
  464. package/dist/src/web-ui/app/dashboard-feature.js +4 -3
  465. package/dist/src/web-ui/app/index.html +6 -2
  466. package/dist/src/web-ui/app/lib/history-page-messages.js +49 -0
  467. package/dist/src/web-ui/app/lib/reasoning-controls.js +35 -0
  468. package/dist/src/web-ui/app/lib/request-lifecycle-view.js +8 -0
  469. package/dist/src/web-ui/app/lib/session-composer-queue-ownership.js +58 -0
  470. package/dist/src/web-ui/app/lib/session-composer-queue.d.ts +12 -0
  471. package/dist/src/web-ui/app/lib/session-composer-queue.js +25 -6
  472. package/dist/src/web-ui/app/lib/workspace-route.d.ts +3 -0
  473. package/dist/src/web-ui/app/lib/workspace-route.js +4 -0
  474. package/dist/src/web-ui/app/passive-learning-feature.js +16 -4
  475. package/dist/src/web-ui/app/runtime-onboarding-feature.js +3 -0
  476. package/dist/src/web-ui/app/schedules-feature.js +5 -3
  477. package/dist/src/web-ui/app/services/client-preferences.d.ts +18 -10
  478. package/dist/src/web-ui/app/services/client-preferences.js +25 -16
  479. package/dist/src/web-ui/app/services/home-guidance-preferences.js +13 -13
  480. package/dist/src/web-ui/app/services/reasoning-override.js +12 -0
  481. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +10 -2
  482. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +20 -0
  483. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +7 -2
  484. package/dist/src/web-ui/app/services/runtime-web-client/plugin-configuration.js +19 -0
  485. package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.js +4 -4
  486. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +4 -0
  487. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +8 -1
  488. package/dist/src/web-ui/app/services/runtime-web-client.js +14 -3
  489. package/dist/src/web-ui/app/services/server-composer-queue.js +32 -0
  490. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +5 -5
  491. package/dist/src/web-ui/app/services/workspace-state-storage.js +116 -0
  492. package/dist/src/web-ui/app/services/workspace-state.js +27 -0
  493. package/dist/src/web-ui/app/spark-chat-conversation.js +34 -45
  494. package/dist/src/web-ui/app/spark-chat-feature.js +84 -21
  495. package/dist/src/web-ui/app/styles/11-product-links.css +30 -0
  496. package/dist/src/web-ui/app/styles/21-composer-controls.css +16 -0
  497. package/dist/src/web-ui/app/styles/41-plugin-configuration.css +79 -0
  498. package/dist/src/web-ui/app/styles/41-plugin-discovery.css +132 -0
  499. package/dist/src/web-ui/app/styles/41-plugin-management.css +14 -0
  500. package/dist/src/web-ui/app/styles/42-model-plugin-permissions.css +174 -0
  501. package/dist/src/web-ui/app/styles/46-system-host.css +61 -107
  502. package/dist/src/web-ui/app/styles/47-config-controls.css +13 -1
  503. package/dist/src/web-ui/app/styles/49-collection-consent.css +30 -0
  504. package/dist/src/web-ui/app/styles/54-spark-chat.css +33 -1
  505. package/dist/src/web-ui/app/styles/64-workspace-storage.css +23 -0
  506. package/dist/src/web-ui/app/styles.css +6 -0
  507. package/dist/src/web-ui/client-state/contracts.d.ts +15 -0
  508. package/dist/src/web-ui/client-state/contracts.js +13 -0
  509. package/dist/src/web-ui/client-state/preference-shapes.d.ts +2 -0
  510. package/dist/src/web-ui/client-state/preference-shapes.js +80 -0
  511. package/dist/src/web-ui/client-state/preferences.d.ts +3 -0
  512. package/dist/src/web-ui/client-state/preferences.js +84 -0
  513. package/dist/src/web-ui/client-state/queue.d.ts +3 -0
  514. package/dist/src/web-ui/client-state/queue.js +43 -0
  515. package/dist/src/web-ui/client-state/routes.d.ts +7 -0
  516. package/dist/src/web-ui/client-state/routes.js +58 -0
  517. package/dist/src/web-ui/client-state/store.d.ts +14 -0
  518. package/dist/src/web-ui/client-state/store.js +88 -0
  519. package/dist/src/web-ui/local-runtime/api-router.js +11 -6
  520. package/dist/src/web-ui/local-runtime/approval-request-attachment.js +14 -5
  521. package/dist/src/web-ui/local-runtime/configuration-activation-source.d.ts +1 -1
  522. package/dist/src/web-ui/local-runtime/configuration-activation-source.js +11 -3
  523. package/dist/src/web-ui/local-runtime/contracts.d.ts +4 -3
  524. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +5 -1
  525. package/dist/src/web-ui/local-runtime/environment-registry.js +53 -11
  526. package/dist/src/web-ui/local-runtime/history-pagination.d.ts +16 -0
  527. package/dist/src/web-ui/local-runtime/history-pagination.js +20 -0
  528. package/dist/src/web-ui/local-runtime/http.js +11 -2
  529. package/dist/src/web-ui/local-runtime/model-context-capacity-error.d.ts +14 -0
  530. package/dist/src/web-ui/local-runtime/model-context-capacity-error.js +28 -0
  531. package/dist/src/web-ui/local-runtime/model-setup-context-window.d.ts +15 -0
  532. package/dist/src/web-ui/local-runtime/model-setup-context-window.js +25 -0
  533. package/dist/src/web-ui/local-runtime/model-setup-routes.js +2 -0
  534. package/dist/src/web-ui/local-runtime/model-setup-service.js +5 -2
  535. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +1 -0
  536. package/dist/src/web-ui/local-runtime/model-setup-validation.js +14 -7
  537. package/dist/src/web-ui/local-runtime/plugin-configuration-routes.d.ts +16 -0
  538. package/dist/src/web-ui/local-runtime/plugin-configuration-routes.js +68 -0
  539. package/dist/src/web-ui/local-runtime/plugin-installation-routes.d.ts +16 -0
  540. package/dist/src/web-ui/local-runtime/plugin-installation-routes.js +96 -0
  541. package/dist/src/web-ui/local-runtime/plugin-management-routes.d.ts +8 -1
  542. package/dist/src/web-ui/local-runtime/plugin-management-routes.js +17 -0
  543. package/dist/src/web-ui/local-runtime/plugin-mutation-admission.d.ts +7 -0
  544. package/dist/src/web-ui/local-runtime/plugin-mutation-admission.js +17 -0
  545. package/dist/src/web-ui/local-runtime/plugin-removal-routes.d.ts +18 -0
  546. package/dist/src/web-ui/local-runtime/plugin-removal-routes.js +60 -0
  547. package/dist/src/web-ui/local-runtime/realtime-controller.js +41 -2
  548. package/dist/src/web-ui/local-runtime/request-body-error.d.ts +11 -0
  549. package/dist/src/web-ui/local-runtime/request-body-error.js +14 -0
  550. package/dist/src/web-ui/local-runtime/request-cancellation-route.js +28 -1
  551. package/dist/src/web-ui/local-runtime/request-control-observation.d.ts +19 -0
  552. package/dist/src/web-ui/local-runtime/request-control-observation.js +80 -0
  553. package/dist/src/web-ui/local-runtime/request-execution.js +66 -34
  554. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.d.ts +2 -0
  555. package/dist/src/web-ui/local-runtime/runtime-setup-connection-edit.js +35 -22
  556. package/dist/src/web-ui/local-runtime/runtime-setup-context-window.d.ts +13 -0
  557. package/dist/src/web-ui/local-runtime/runtime-setup-context-window.js +21 -0
  558. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.d.ts +15 -1
  559. package/dist/src/web-ui/local-runtime/runtime-setup-credentials.js +30 -11
  560. package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.d.ts +20 -0
  561. package/dist/src/web-ui/local-runtime/runtime-setup-edit-files.js +104 -0
  562. package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.d.ts +29 -0
  563. package/dist/src/web-ui/local-runtime/runtime-setup-edit-journal.js +151 -0
  564. package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.d.ts +7 -0
  565. package/dist/src/web-ui/local-runtime/runtime-setup-edit-recovery.js +87 -0
  566. package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.d.ts +3 -0
  567. package/dist/src/web-ui/local-runtime/runtime-setup-edit-transaction.js +37 -0
  568. package/dist/src/web-ui/local-runtime/runtime-setup-routes.js +2 -0
  569. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +4 -0
  570. package/dist/src/web-ui/local-runtime/runtime-setup-validation.js +9 -2
  571. package/dist/src/web-ui/local-runtime/session-routes.d.ts +1 -0
  572. package/dist/src/web-ui/local-runtime/session-routes.js +16 -4
  573. package/dist/src/web-ui/local-runtime/spark-chat-routes.js +4 -3
  574. package/dist/src/web-ui/local-runtime-backend.js +14 -0
  575. package/dist/src/web-ui/plugin-capability-selection.js +4 -1
  576. package/dist/src/web-ui/plugin-configuration-input.d.ts +12 -0
  577. package/dist/src/web-ui/plugin-configuration-input.js +68 -0
  578. package/dist/src/web-ui/plugin-configuration-retained-secrets.d.ts +9 -0
  579. package/dist/src/web-ui/plugin-configuration-retained-secrets.js +48 -0
  580. package/dist/src/web-ui/plugin-configuration-service.d.ts +52 -0
  581. package/dist/src/web-ui/plugin-configuration-service.js +66 -0
  582. package/dist/src/web-ui/plugin-configuration-view.d.ts +25 -0
  583. package/dist/src/web-ui/plugin-configuration-view.js +45 -0
  584. package/dist/src/web-ui/plugin-disabled-selection.d.ts +7 -0
  585. package/dist/src/web-ui/plugin-disabled-selection.js +17 -0
  586. package/dist/src/web-ui/plugin-management-catalog.d.ts +5 -1
  587. package/dist/src/web-ui/plugin-management-catalog.js +13 -1
  588. package/dist/src/web-ui/plugin-management-selection.js +22 -9
  589. package/dist/src/web-ui/plugin-management-service.d.ts +6 -1
  590. package/dist/src/web-ui/plugin-management-service.js +11 -7
  591. package/dist/src/web-ui/plugin-removal-error.d.ts +7 -0
  592. package/dist/src/web-ui/plugin-removal-error.js +16 -0
  593. package/dist/src/web-ui/plugin-removal-service.d.ts +31 -0
  594. package/dist/src/web-ui/plugin-removal-service.js +109 -0
  595. package/dist/src/web-ui/runtime-setup-gateway.d.ts +6 -2
  596. package/dist/src/web-ui/runtime-setup-gateway.js +30 -10
  597. package/dist/src/web-ui/server-readiness.d.ts +3 -0
  598. package/dist/src/web-ui/server-readiness.js +36 -0
  599. package/dist/src/web-ui/server.d.ts +2 -0
  600. package/dist/src/web-ui/server.js +29 -3
  601. package/dist/src/web-ui/session-read-state/overview.d.ts +42 -0
  602. package/dist/src/web-ui/session-read-state/overview.js +16 -0
  603. package/dist/src/web-ui/session-read-state/pagination.d.ts +15 -0
  604. package/dist/src/web-ui/session-read-state/pagination.js +42 -0
  605. package/dist/src/web-ui/session-read-state/projection.d.ts +4 -3
  606. package/dist/src/web-ui/session-read-state/service.d.ts +213 -20
  607. package/dist/src/web-ui/session-read-state/service.js +25 -23
  608. package/dist/src/web-ui/session-read-state/visible-messages.d.ts +3 -3
  609. package/dist/src/web-ui/system-host-service.js +13 -2
  610. package/dist/src/web-ui/system-host-setup/collection-consent-route.d.ts +3 -0
  611. package/dist/src/web-ui/system-host-setup/collection-consent-route.js +30 -0
  612. package/dist/src/web-ui/system-host-setup/companion-linux.js +1 -1
  613. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +1 -1
  614. package/dist/src/web-ui/system-host-setup/installer-contract.js +2 -2
  615. package/dist/src/web-ui/system-host-setup/installers.js +0 -7
  616. package/dist/src/web-ui/system-host-setup/local-connection.d.ts +4 -1
  617. package/dist/src/web-ui/system-host-setup/local-connection.js +10 -17
  618. package/dist/src/web-ui/system-host-setup/routes.d.ts +2 -0
  619. package/dist/src/web-ui/system-host-setup/routes.js +32 -9
  620. package/dist/src/web-ui/system-host-setup/setup-mutation.d.ts +9 -0
  621. package/dist/src/web-ui/system-host-setup/setup-mutation.js +27 -0
  622. package/dist/src/web-ui/system-host-setup/windows-store-route.d.ts +13 -0
  623. package/dist/src/web-ui/system-host-setup/windows-store-route.js +68 -0
  624. package/docs/configuration.md +46 -0
  625. package/docs/installation.md +88 -28
  626. package/docs/plugins.md +310 -6
  627. package/docs/projects-and-full-plus.md +2 -6
  628. package/docs/runtime-library.md +0 -1
  629. package/docs/tool-execution-result-evidence-contract.md +57 -0
  630. package/docs/windows-companion-store.md +132 -0
  631. package/package.json +6 -4
  632. package/plugins/capability-brief/plugin.json +4 -0
  633. package/plugins/code-outline/README.md +20 -0
  634. package/plugins/code-outline/plugin.json +1 -0
  635. package/plugins/code-outline/source/index.ts +16 -20
  636. package/plugins/code-outline/source/read-failure.ts +40 -0
  637. package/plugins/code-outline/src/index.cjs +614 -29
  638. package/plugins/document-reader/README.md +33 -0
  639. package/plugins/document-reader/plugin.json +2 -0
  640. package/plugins/document-reader/source/pdf-contract.ts +57 -0
  641. package/plugins/document-reader/source/pdf-parser.ts +139 -0
  642. package/plugins/document-reader/source/pdf-process-main.ts +56 -0
  643. package/plugins/document-reader/source/pdf-process.ts +207 -0
  644. package/plugins/document-reader/source/pdf-result.ts +79 -0
  645. package/plugins/document-reader/source/pdf-worker.ts +39 -303
  646. package/plugins/document-reader/source/pdf.ts +4 -1
  647. package/plugins/document-reader/source/read-failure.ts +37 -0
  648. package/plugins/document-reader/source/reader.ts +3 -19
  649. package/plugins/document-reader/src/index.cjs +995 -211
  650. package/plugins/exec/README.md +19 -0
  651. package/plugins/exec/plugin.json +7 -3
  652. package/plugins/exec/skills/exec_skill/SKILL.md +3 -2
  653. package/plugins/exec/source/filesystem-file-observer.ts +98 -0
  654. package/plugins/exec/source/filesystem-observer.ts +8 -79
  655. package/plugins/exec/source/output-files.ts +12 -6
  656. package/plugins/exec/source/paths.ts +3 -1
  657. package/plugins/exec/source/process-manager.ts +8 -24
  658. package/plugins/exec/source/shell-platform.ts +19 -3
  659. package/plugins/exec/source/shell-process.ts +55 -0
  660. package/plugins/exec/source/windows-job-source.ts +1 -0
  661. package/plugins/exec/source/windows-shell-bootstrap.ts +20 -0
  662. package/plugins/exec/src/index.cjs +252 -96
  663. package/plugins/filesystem/README.md +65 -0
  664. package/plugins/filesystem/plugin.json +8 -2
  665. package/plugins/filesystem/source/atomic-write.ts +2 -0
  666. package/plugins/filesystem/source/bounded-io.ts +80 -306
  667. package/plugins/filesystem/source/directory-sample.ts +2 -0
  668. package/plugins/filesystem/source/errors.ts +14 -0
  669. package/plugins/filesystem/source/file-observation.ts +151 -0
  670. package/plugins/filesystem/source/file-version.ts +41 -0
  671. package/plugins/filesystem/source/index.ts +6 -0
  672. package/plugins/filesystem/source/mutation-coordinator.ts +1 -0
  673. package/plugins/filesystem/source/windows/authority-script.ts +1 -0
  674. package/plugins/filesystem/source/windows/native-script.ts +1 -0
  675. package/plugins/filesystem/source/windows/operations.ts +197 -0
  676. package/plugins/filesystem/source/windows/process.ts +214 -0
  677. package/plugins/filesystem/source/windows/publication-script.ts +29 -0
  678. package/plugins/filesystem/source/windows/read-script.ts +63 -0
  679. package/plugins/filesystem/source/windows/request-availability.ts +67 -0
  680. package/plugins/filesystem/source/windows/source.ts +42 -0
  681. package/plugins/filesystem/source/windows/storage-script.ts +11 -0
  682. package/plugins/filesystem/source/windows/streams-script.ts +24 -0
  683. package/plugins/filesystem/source/windows/write-script.ts +86 -0
  684. package/plugins/filesystem/src/index.cjs +1208 -322
  685. package/plugins/json-inspector/README.md +18 -0
  686. package/plugins/json-inspector/plugin.json +1 -0
  687. package/plugins/json-inspector/source/index.ts +16 -19
  688. package/plugins/json-inspector/source/read-failure.ts +42 -0
  689. package/plugins/json-inspector/src/index.cjs +612 -27
  690. package/plugins/local-search/README.md +29 -0
  691. package/plugins/local-search/plugin.json +2 -0
  692. package/plugins/local-search/source/errors.ts +2 -0
  693. package/plugins/local-search/source/paths.ts +3 -0
  694. package/plugins/local-search/source/ripgrep-process.ts +31 -5
  695. package/plugins/local-search/source/ripgrep.ts +3 -3
  696. package/plugins/local-search/source/windows-authority.ts +99 -0
  697. package/plugins/local-search/source/windows-search-lease.ts +49 -0
  698. package/plugins/local-search/source/windows-search-process.ts +91 -0
  699. package/plugins/local-search/source/windows-search-script.ts +52 -0
  700. package/plugins/local-search/src/index.cjs +595 -26
  701. package/plugins/memory/plugin.json +4 -0
  702. package/plugins/memory/source/lock-directory-claim.ts +56 -0
  703. package/plugins/memory/source/lock-owner-file.ts +71 -0
  704. package/plugins/memory/source/lock-path-observation.ts +26 -0
  705. package/plugins/memory/source/prepared-memory-replacement.ts +40 -0
  706. package/plugins/memory/source/store-lock.ts +12 -7
  707. package/plugins/memory/source/store.ts +3 -2
  708. package/plugins/memory/src/index.cjs +174 -25
  709. package/plugins/project-orientation/README.md +23 -0
  710. package/plugins/project-orientation/plugin.json +1 -0
  711. package/plugins/project-orientation/source/index.ts +12 -9
  712. package/plugins/project-orientation/source/inspection-failure.ts +70 -0
  713. package/plugins/project-orientation/source/manifest-summary.ts +9 -2
  714. package/plugins/project-orientation/source/tree.ts +6 -0
  715. package/plugins/project-orientation/src/index.cjs +647 -31
  716. package/plugins/system/README.md +81 -5
  717. package/plugins/system/plugin.json +10 -1
  718. package/plugins/system/skills/system_actions/SKILL.md +1 -1
  719. package/plugins/system/source/command-working-directory.ts +47 -0
  720. package/plugins/system/source/companion-command-output.ts +82 -0
  721. package/plugins/system/source/computer/handlers.ts +13 -9
  722. package/plugins/system/source/computer/observation-result.ts +10 -5
  723. package/plugins/system/source/computer/request-computers.ts +10 -3
  724. package/plugins/system/source/computer/request-modules.ts +3 -6
  725. package/plugins/system/source/computer/runtime-platform.ts +18 -0
  726. package/plugins/system/source/host-dispatch.ts +21 -1
  727. package/plugins/system/source/index.ts +14 -6
  728. package/plugins/system/source/local-command-output-retention.ts +16 -0
  729. package/plugins/system/source/local-command-output.ts +69 -0
  730. package/plugins/system/source/request-system-modules.ts +14 -2
  731. package/plugins/system/source/request-target-snapshot.ts +2 -1
  732. package/plugins/system/source/security/desktop-result.ts +177 -0
  733. package/plugins/system/source/security/observed-error.ts +10 -0
  734. package/plugins/system/source/security/secret-text.ts +118 -0
  735. package/plugins/system/source/security/system-results.ts +62 -0
  736. package/plugins/system/source/security/windows-output-directory.ts +82 -0
  737. package/plugins/system/src/index.cjs +1207 -86
  738. package/plugins/system-probe/plugin.json +8 -2
  739. package/plugins/system-probe/source/disk-path.ts +8 -0
  740. package/plugins/system-probe/source/index.ts +10 -5
  741. package/plugins/system-probe/source/machine-load.ts +33 -0
  742. package/plugins/system-probe/source/metrics.ts +6 -8
  743. package/plugins/system-probe/src/index.cjs +49 -16
  744. package/plugins/web/README.md +2 -2
  745. package/plugins/web/plugin.json +8 -0
  746. package/runtime.config.schema.json +25 -1
  747. package/src/runtime/README.md +12 -2
  748. package/dist/src/web-ui/system-host-setup/companion-windows.d.ts +0 -2
  749. package/dist/src/web-ui/system-host-setup/companion-windows.js +0 -108
  750. package/docs/publishing.md +0 -167
@@ -8,6 +8,14 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __getOwnPropNames = Object.getOwnPropertyNames;
9
9
  var __getProtoOf = Object.getPrototypeOf;
10
10
  var __hasOwnProp = Object.prototype.hasOwnProperty;
11
+ var __esm = (fn, res, err) => function __init() {
12
+ if (err) throw err[0];
13
+ try {
14
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
15
+ } catch (e) {
16
+ throw err = [e], e;
17
+ }
18
+ };
11
19
  var __export = (target, all) => {
12
20
  for (var name in all)
13
21
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -30,13 +38,242 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
38
  ));
31
39
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
40
 
41
+ // src/shared/windows-file-io/native-script.ts
42
+ var WINDOWS_FILESYSTEM_NATIVE;
43
+ var init_native_script = __esm({
44
+ "src/shared/windows-file-io/native-script.ts"() {
45
+ "use strict";
46
+ WINDOWS_FILESYSTEM_NATIVE = String.raw`
47
+ using System;
48
+ using System.IO;
49
+ using System.Text;
50
+ using System.Linq;
51
+ using System.Collections.Generic;
52
+ using System.ComponentModel;
53
+ using System.Runtime.InteropServices;
54
+ using System.Security.AccessControl;
55
+ using System.Security.Principal;
56
+ using System.Web.Script.Serialization;
57
+ using Microsoft.Win32.SafeHandles;
58
+
59
+ public sealed class FsFault : Exception {
60
+ public readonly string Code;
61
+ public FsFault(string code) : base(code) { Code = code; }
62
+ }
63
+ public static partial class AbotFilesystem {
64
+ [StructLayout(LayoutKind.Sequential)] struct UnicodeString { public ushort Length, MaximumLength; public IntPtr Buffer; }
65
+ [StructLayout(LayoutKind.Sequential)] struct ObjectAttributes {
66
+ public int Length; public IntPtr Root, Name; public uint Attributes; public IntPtr Security, Qos;
67
+ }
68
+ [StructLayout(LayoutKind.Sequential)] struct IoStatus { public IntPtr Status, Information; }
69
+ [StructLayout(LayoutKind.Sequential)] struct BasicInfo {
70
+ public long Created, Accessed, Modified, Changed; public uint Attributes;
71
+ }
72
+ [StructLayout(LayoutKind.Sequential)] struct FileInfo {
73
+ public uint Attributes; public System.Runtime.InteropServices.ComTypes.FILETIME Created, Accessed, Modified;
74
+ public uint Volume, SizeHigh, SizeLow, Links, IndexHigh, IndexLow;
75
+ }
76
+ [DllImport("ntdll.dll")] static extern int NtCreateFile(out SafeFileHandle file, uint access,
77
+ ref ObjectAttributes attributes, out IoStatus status, IntPtr allocation, uint fileAttributes,
78
+ uint share, uint disposition, uint options, IntPtr ea, uint eaLength);
79
+ [DllImport("ntdll.dll")] static extern uint RtlNtStatusToDosError(int status);
80
+ [DllImport("ntdll.dll")] static extern int NtSetInformationFile(SafeFileHandle file,
81
+ out IoStatus status, IntPtr info, uint length, int kind);
82
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool GetFileInformationByHandle(SafeFileHandle file, out FileInfo info);
83
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool GetFileInformationByHandleEx(SafeFileHandle file, int kind, IntPtr data, uint length);
84
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool SetFileInformationByHandle(SafeFileHandle file, int kind, ref BasicInfo info, uint length);
85
+ [DllImport("kernel32.dll", CharSet=CharSet.Unicode, SetLastError=true)] static extern uint GetFinalPathNameByHandle(SafeFileHandle file, StringBuilder name, uint length, uint flags);
86
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool SetFilePointerEx(SafeFileHandle file, long position, out long result, uint method);
87
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool ReadFile(SafeFileHandle file, byte[] bytes, uint count, out uint read, IntPtr overlapped);
88
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool WriteFile(SafeFileHandle file, byte[] bytes, uint count, out uint written, IntPtr overlapped);
89
+ [DllImport("kernel32.dll", SetLastError=true)] static extern bool FlushFileBuffers(SafeFileHandle file);
90
+ [DllImport("advapi32.dll")] static extern uint GetSecurityInfo(SafeFileHandle file, int kind, uint information,
91
+ out IntPtr owner, out IntPtr group, out IntPtr dacl, out IntPtr sacl, out IntPtr descriptor);
92
+ [DllImport("advapi32.dll")] static extern uint SetSecurityInfo(SafeFileHandle file, int kind, uint information,
93
+ IntPtr owner, IntPtr group, IntPtr dacl, IntPtr sacl);
94
+ [DllImport("advapi32.dll", SetLastError=true)] static extern bool GetSecurityDescriptorControl(IntPtr descriptor, out ushort control, out uint revision);
95
+ [DllImport("kernel32.dll")] static extern IntPtr LocalFree(IntPtr value);
96
+
97
+ static void Check(bool success) { if (!success) NativeFailure((uint)Marshal.GetLastWin32Error()); }
98
+ static bool IsNotDirectoryError(uint code) { return code == 267; } // ERROR_DIRECTORY
99
+ static void NativeFailure(uint code) {
100
+ if (IsNotDirectoryError(code)) throw new FsFault("not_a_directory");
101
+ if (code == 2 || code == 3) throw new FsFault("file_not_found");
102
+ if (code == 80 || code == 183) throw new FsFault("filesystem_target_changed");
103
+ if (code == 5 || code == 32 || code == 33) throw new FsFault("filesystem_access_denied");
104
+ throw new FsFault("filesystem_native_operation_failed");
105
+ }
106
+ static void CheckNt(int status) { if (status < 0) NativeFailure(RtlNtStatusToDosError(status)); }
107
+ static SafeFileHandle OpenHandle(SafeFileHandle root, string name, bool directory,
108
+ uint disposition, uint access, uint share, byte[] securityDescriptor = null, bool deleteOnClose = false) {
109
+ IntPtr text = Marshal.StringToHGlobalUni(name), unicodePointer = IntPtr.Zero, securityPointer = IntPtr.Zero;
110
+ try {
111
+ int length = Encoding.Unicode.GetByteCount(name);
112
+ if (length > 65532) throw new FsFault("filesystem_invalid_path");
113
+ UnicodeString unicode = new UnicodeString { Length=(ushort)length, MaximumLength=(ushort)(length+2), Buffer=text };
114
+ unicodePointer = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(UnicodeString)));
115
+ Marshal.StructureToPtr(unicode, unicodePointer, false);
116
+ if (securityDescriptor != null) {
117
+ securityPointer = Marshal.AllocHGlobal(securityDescriptor.Length);
118
+ Marshal.Copy(securityDescriptor, 0, securityPointer, securityDescriptor.Length);
119
+ }
120
+ ObjectAttributes attributes = new ObjectAttributes {
121
+ Length=Marshal.SizeOf(typeof(ObjectAttributes)), Root=root == null ? IntPtr.Zero : root.DangerousGetHandle(),
122
+ Name=unicodePointer, Attributes=0x40, Security=securityPointer
123
+ };
124
+ SafeFileHandle file;
125
+ IoStatus status;
126
+ int result = NtCreateFile(out file, access | 0x100000, ref attributes, out status,
127
+ IntPtr.Zero, 0x80, share, disposition, 0x200020u | (directory ? 1u : 0x40u) | (deleteOnClose ? 0x1000u : 0u), IntPtr.Zero, 0);
128
+ if (result < 0) { if (file != null) file.Dispose(); CheckNt(result); }
129
+ try {
130
+ FileInfo info; Check(GetFileInformationByHandle(file, out info));
131
+ if ((info.Attributes & 0x400) != 0) throw new FsFault("filesystem_path_changed");
132
+ if (((info.Attributes & 0x10) != 0) != directory) throw new FsFault("filesystem_path_changed");
133
+ return file;
134
+ } catch { file.Dispose(); throw; }
135
+ } finally {
136
+ if (securityPointer != IntPtr.Zero) Marshal.FreeHGlobal(securityPointer);
137
+ if (unicodePointer != IntPtr.Zero) Marshal.FreeHGlobal(unicodePointer);
138
+ Marshal.FreeHGlobal(text);
139
+ }
140
+ }
141
+ static BasicInfo Basic(SafeFileHandle file) {
142
+ IntPtr buffer = Marshal.AllocHGlobal(40);
143
+ try { Check(GetFileInformationByHandleEx(file, 0, buffer, 40)); return (BasicInfo)Marshal.PtrToStructure(buffer, typeof(BasicInfo)); }
144
+ finally { Marshal.FreeHGlobal(buffer); }
145
+ }
146
+ static Dictionary<string,object> Record(params object[] pairs) {
147
+ var result = new Dictionary<string,object>();
148
+ for (int i=0;i<pairs.Length;i+=2) result.Add((string)pairs[i], pairs[i+1]);
149
+ return result;
150
+ }
151
+ static string Text(Dictionary<string,object> request, string key) {
152
+ object value;
153
+ if (!request.TryGetValue(key, out value) || !(value is string)) throw new FsFault("filesystem_invalid_request");
154
+ return (string)value;
155
+ }
156
+ static int Limit(Dictionary<string,object> request, string key, int maximum) {
157
+ object value;
158
+ if (!request.TryGetValue(key, out value) || !(value is int)) throw new FsFault("filesystem_invalid_request");
159
+ int number = (int)value;
160
+ if (number < 0 || number > maximum) throw new FsFault("filesystem_invalid_request");
161
+ return number;
162
+ }
163
+ }
164
+ `;
165
+ }
166
+ });
167
+
168
+ // src/shared/windows-file-io/authority-script.ts
169
+ var WINDOWS_FILESYSTEM_AUTHORITY;
170
+ var init_authority_script = __esm({
171
+ "src/shared/windows-file-io/authority-script.ts"() {
172
+ "use strict";
173
+ WINDOWS_FILESYSTEM_AUTHORITY = String.raw`
174
+ public static partial class AbotFilesystem {
175
+ static string NativePath(string path) {
176
+ string full = Path.GetFullPath(path);
177
+ if (full.StartsWith(@"\\?\") || full.StartsWith(@"\\.\")) throw new FsFault("filesystem_invalid_path");
178
+ if (full.StartsWith(@"\\")) return @"\??\UNC\" + full.Substring(2);
179
+ if (full.Length < 3 || full[1] != ':' || full[2] != '\\') throw new FsFault("filesystem_invalid_path");
180
+ return @"\??\" + full;
181
+ }
182
+ static string FinalPath(SafeFileHandle handle) {
183
+ var value = new StringBuilder(32768);
184
+ uint length = GetFinalPathNameByHandle(handle, value, (uint)value.Capacity, 0);
185
+ Check(length != 0);
186
+ if (length >= value.Capacity) throw new FsFault("filesystem_invalid_path");
187
+ string path = value.ToString();
188
+ if (path.StartsWith(@"\\?\UNC\")) return @"\\" + path.Substring(8);
189
+ if (path.StartsWith(@"\\?\")) return path.Substring(4);
190
+ throw new FsFault("filesystem_path_changed");
191
+ }
192
+ static SafeFileHandle OpenRoot(Dictionary<string,object> request) {
193
+ string path = Path.GetFullPath(Text(request, "rootPath"));
194
+ SafeFileHandle root = OpenHandle(null, NativePath(path), true, 1, 0x80000000, 7);
195
+ try {
196
+ if (!String.Equals(FinalPath(root).TrimEnd('\\'), path.TrimEnd('\\'), StringComparison.OrdinalIgnoreCase))
197
+ throw new FsFault("filesystem_path_changed");
198
+ var expected = request["rootIdentity"] as Dictionary<string,object>;
199
+ if (expected == null || !MatchesIdentity(Identity(root), expected)) throw new FsFault("filesystem_path_changed");
200
+ return root;
201
+ } catch { root.Dispose(); throw; }
202
+ }
203
+ static string[] Components(Dictionary<string,object> request) {
204
+ string relative = Text(request, "relativePath");
205
+ if (relative == "") return new string[0];
206
+ string[] parts = relative.Split('/');
207
+ foreach (string part in parts) ValidateComponent(part);
208
+ return parts;
209
+ }
210
+ static void ValidateComponent(string name) {
211
+ if (name.Length == 0 || name == "." || name == "..") throw new FsFault("filesystem_invalid_path");
212
+ if (name.EndsWith(".") || name.EndsWith(" ")) throw new FsFault("filesystem_invalid_path");
213
+ foreach (char c in name) {
214
+ if (c < 32 || "\\/:*?\"<>|".IndexOf(c) >= 0) throw new FsFault("filesystem_invalid_path");
215
+ }
216
+ string stem = name.Split('.')[0].ToUpperInvariant();
217
+ if (stem == "CON" || stem == "PRN" || stem == "AUX" || stem == "NUL" ||
218
+ stem == "CONIN$" || stem == "CONOUT$") throw new FsFault("filesystem_invalid_path");
219
+ if (stem.Length == 4 && (stem.StartsWith("COM") || stem.StartsWith("LPT")) &&
220
+ "123456789\u00b9\u00b2\u00b3".IndexOf(stem[3]) >= 0) throw new FsFault("filesystem_invalid_path");
221
+ }
222
+ sealed class DirectoryChain : IDisposable {
223
+ public readonly SafeFileHandle Root;
224
+ readonly List<SafeFileHandle> children = new List<SafeFileHandle>();
225
+ public SafeFileHandle Current { get { return children.Count == 0 ? Root : children[children.Count-1]; } }
226
+ public DirectoryChain(Dictionary<string,object> request) { Root = OpenRoot(request); }
227
+ public void Walk(string[] parts, int count, bool create) {
228
+ for (int i=0;i<count;i++) children.Add(OpenHandle(Current, parts[i], true, create ? 3u : 1u, 0x80000000, 7));
229
+ }
230
+ public void Dispose() { for (int i=children.Count-1;i>=0;i--) children[i].Dispose(); Root.Dispose(); }
231
+ }
232
+ static ulong FileId(FileInfo info) {
233
+ ulong id=((ulong)info.IndexHigh << 32) | info.IndexLow;
234
+ if (id == 0) throw new FsFault("filesystem_safe_io_unsupported");
235
+ return id;
236
+ }
237
+ static Dictionary<string,object> Identity(SafeFileHandle file) {
238
+ FileInfo info; Check(GetFileInformationByHandle(file, out info));
239
+ BasicInfo basic = Basic(file);
240
+ return Record("device", info.Volume.ToString(), "inode", FileId(info).ToString(),
241
+ "birthtimeNs", ((basic.Created - 116444736000000000L) * 100L).ToString());
242
+ }
243
+ static bool MatchesIdentity(Dictionary<string,object> left, Dictionary<string,object> right) {
244
+ foreach (string key in new [] {"device", "inode", "birthtimeNs"}) {
245
+ if (!right.ContainsKey(key) || !Object.Equals(left[key], right[key])) return false;
246
+ }
247
+ return true;
248
+ }
249
+ static Dictionary<string,object> Metadata(SafeFileHandle file) {
250
+ FileInfo info; Check(GetFileInformationByHandle(file, out info));
251
+ BasicInfo basic = Basic(file);
252
+ ulong size = ((ulong)info.SizeHigh << 32) | info.SizeLow;
253
+ if (size > 9007199254740991UL) throw new FsFault("file_too_large");
254
+ return Record("device", info.Volume.ToString(), "inode", FileId(info).ToString(),
255
+ "size", (long)size, "mode", (basic.Attributes & 1) != 0 ? 292 : 438,
256
+ "modifiedNs", ((basic.Modified - 116444736000000000L) * 100L).ToString(),
257
+ "changedNs", ((basic.Changed - 116444736000000000L) * 100L).ToString());
258
+ }
259
+ static bool SameMetadata(Dictionary<string,object> left, Dictionary<string,object> right) {
260
+ foreach (string key in new [] {"device", "inode", "size", "mode", "modifiedNs", "changedNs"}) {
261
+ if (!right.ContainsKey(key) || Convert.ToString(left[key]) != Convert.ToString(right[key])) return false;
262
+ }
263
+ return true;
264
+ }
265
+ }
266
+ `;
267
+ }
268
+ });
269
+
33
270
  // plugins/local-search/source/index.ts
34
271
  var index_exports = {};
35
272
  __export(index_exports, {
36
273
  default: () => index_default
37
274
  });
38
275
  module.exports = __toCommonJS(index_exports);
39
- var import_node_path3 = require("node:path");
276
+ var import_node_path5 = require("node:path");
40
277
 
41
278
  // src/plugin-sdk/bounds.ts
42
279
  function sanitizeJsonText(value) {
@@ -346,8 +583,85 @@ function budgetSearchOutput(query, mode, candidates, sourceTruncated, fitsSerial
346
583
 
347
584
  // plugins/local-search/source/paths.ts
348
585
  var import_node_fs = require("node:fs");
586
+ var import_promises2 = require("node:fs/promises");
587
+ var import_node_path2 = __toESM(require("node:path"), 1);
588
+
589
+ // plugins/local-search/source/windows-authority.ts
349
590
  var import_promises = require("node:fs/promises");
350
- var import_node_path = __toESM(require("node:path"), 1);
591
+ var import_node_path = require("node:path");
592
+ function identity(stats) {
593
+ return {
594
+ device: String(stats.dev),
595
+ inode: String(stats.ino),
596
+ birthtimeNs: String(stats.birthtimeNs)
597
+ };
598
+ }
599
+ function sameWindowsPath(left, right) {
600
+ return import_node_path.win32.resolve(left).toLowerCase() === import_node_path.win32.resolve(right).toLowerCase();
601
+ }
602
+ function windowsSearchAuthorityUnavailable() {
603
+ return new LocalSearchError(
604
+ "local_search_authority_unavailable",
605
+ "Local search could not keep the selected Windows path safely bound to its authorized root. No results were returned. Do not retry or bypass this restriction with another tool; ask the user to check the path and access permissions."
606
+ );
607
+ }
608
+ async function openWindowsSearchAuthority(target) {
609
+ const handles = [];
610
+ try {
611
+ const root = await (0, import_promises.open)(target.rootPath, "r");
612
+ handles.push(root);
613
+ const selected = await (0, import_promises.open)(target.absolutePath, "r");
614
+ handles.push(selected);
615
+ const [rootStats, selectedStats, rootPath, targetPath] = await Promise.all([
616
+ root.stat({ bigint: true }),
617
+ selected.stat({ bigint: true }),
618
+ (0, import_promises.realpath)(target.rootPath),
619
+ (0, import_promises.realpath)(target.absolutePath)
620
+ ]);
621
+ if (!rootStats.isDirectory()) throw windowsSearchAuthorityUnavailable();
622
+ if (!sameWindowsPath(rootPath, target.rootPath))
623
+ throw windowsSearchAuthorityUnavailable();
624
+ if (!sameWindowsPath(targetPath, target.absolutePath))
625
+ throw windowsSearchAuthorityUnavailable();
626
+ if (!selectedStats.isFile() && !selectedStats.isDirectory()) {
627
+ throw new LocalSearchError(
628
+ "local_search_target_invalid",
629
+ "The selected search target must be a regular file or directory."
630
+ );
631
+ }
632
+ const isFile = selectedStats.isFile();
633
+ return Object.freeze({
634
+ target,
635
+ isFile,
636
+ commandDirectory: isFile ? import_node_path.win32.dirname(targetPath) : targetPath,
637
+ commandTarget: isFile ? import_node_path.win32.basename(targetPath) : ".",
638
+ directoryAuthority: {
639
+ platform: "win32",
640
+ rootPath,
641
+ targetPath,
642
+ rootIdentity: identity(rootStats),
643
+ targetIdentity: identity(selectedStats),
644
+ isFile
645
+ },
646
+ close: async () => {
647
+ for (const handle of handles.splice(0)) await handle.close();
648
+ }
649
+ });
650
+ } catch (error) {
651
+ await Promise.all(handles.splice(0).map((handle) => handle.close()));
652
+ if (error instanceof LocalSearchError) throw error;
653
+ const code = error?.code;
654
+ if (code === "ENOENT" || code === "ENOTDIR") {
655
+ throw new LocalSearchError(
656
+ "local_search_root_not_found",
657
+ "The selected logical search root does not exist."
658
+ );
659
+ }
660
+ throw windowsSearchAuthorityUnavailable();
661
+ }
662
+ }
663
+
664
+ // plugins/local-search/source/paths.ts
351
665
  function fsCode(error) {
352
666
  return error && typeof error === "object" && "code" in error ? String(error.code) : void 0;
353
667
  }
@@ -355,8 +669,8 @@ function sameIdentity(left, right) {
355
669
  return left.dev === right.dev && left.ino === right.ino && left.isFile() === right.isFile() && left.isDirectory() === right.isDirectory();
356
670
  }
357
671
  function isWithinRoot(root, target) {
358
- const relative = import_node_path.default.relative(root, target);
359
- return relative === "" || relative !== ".." && !relative.startsWith(`..${import_node_path.default.sep}`) && !import_node_path.default.isAbsolute(relative);
672
+ const relative = import_node_path2.default.relative(root, target);
673
+ return relative === "" || relative !== ".." && !relative.startsWith(`..${import_node_path2.default.sep}`) && !import_node_path2.default.isAbsolute(relative);
360
674
  }
361
675
  function authorityUnavailable() {
362
676
  return new LocalSearchError(
@@ -376,7 +690,7 @@ async function openSearchAuthority(target) {
376
690
  let handle;
377
691
  let targetOpened = false;
378
692
  try {
379
- handle = await (0, import_promises.open)(
693
+ handle = await (0, import_promises2.open)(
380
694
  target.absolutePath,
381
695
  import_node_fs.constants.O_RDONLY | import_node_fs.constants.O_NOFOLLOW | import_node_fs.constants.O_NONBLOCK
382
696
  );
@@ -389,15 +703,15 @@ async function openSearchAuthority(target) {
389
703
  );
390
704
  }
391
705
  const [canonicalRoot, canonicalTarget] = await Promise.all([
392
- (0, import_promises.realpath)(target.rootPath),
393
- (0, import_promises.realpath)(target.absolutePath)
706
+ (0, import_promises2.realpath)(target.rootPath),
707
+ (0, import_promises2.realpath)(target.absolutePath)
394
708
  ]);
395
- if (import_node_path.default.resolve(canonicalRoot) !== import_node_path.default.resolve(target.rootPath) || import_node_path.default.resolve(canonicalTarget) !== import_node_path.default.resolve(target.absolutePath) || !isWithinRoot(canonicalRoot, canonicalTarget)) {
709
+ if (import_node_path2.default.resolve(canonicalRoot) !== import_node_path2.default.resolve(target.rootPath) || import_node_path2.default.resolve(canonicalTarget) !== import_node_path2.default.resolve(target.absolutePath) || !isWithinRoot(canonicalRoot, canonicalTarget)) {
396
710
  throw authorityUnavailable();
397
711
  }
398
712
  const [pathIdentity, descriptorIdentity] = await Promise.all([
399
- (0, import_promises.stat)(canonicalTarget, { bigint: true }),
400
- process.platform === "linux" ? (0, import_promises.stat)(`/proc/self/fd/${handle.fd}`, { bigint: true }) : handle.stat({ bigint: true })
713
+ (0, import_promises2.stat)(canonicalTarget, { bigint: true }),
714
+ process.platform === "linux" ? (0, import_promises2.stat)(`/proc/self/fd/${handle.fd}`, { bigint: true }) : handle.stat({ bigint: true })
401
715
  ]);
402
716
  if (!sameIdentity(observed, pathIdentity) || !sameIdentity(observed, descriptorIdentity)) {
403
717
  throw authorityUnavailable();
@@ -448,11 +762,13 @@ async function resolveSearchRoot(context, rawPath) {
448
762
  requirePath: true,
449
763
  allowedLocations: ["agent_work", "workspace"]
450
764
  });
765
+ const needsWindowsSearchAuthority = process.platform === "win32";
766
+ if (needsWindowsSearchAuthority) return openWindowsSearchAuthority(target);
451
767
  return openSearchAuthority(target);
452
768
  }
453
769
  function normalizeRelativeResult(value) {
454
- const normalized = import_node_path.default.sep === "/" ? value : value.replaceAll(import_node_path.default.sep, "/");
455
- if (!normalized || normalized.includes("\\") || import_node_path.default.isAbsolute(normalized) || /^[A-Za-z]:[\\/]/u.test(normalized) || /^[\\/]{2}/u.test(normalized)) {
770
+ const normalized = import_node_path2.default.sep === "/" ? value : value.replaceAll(import_node_path2.default.sep, "/");
771
+ if (!normalized || normalized.includes("\\") || import_node_path2.default.isAbsolute(normalized) || /^[A-Za-z]:[\\/]/u.test(normalized) || /^[\\/]{2}/u.test(normalized)) {
456
772
  throw new LocalSearchError(
457
773
  "local_search_path_roundtrip_unsafe",
458
774
  "Local search found a path that cannot be reused as a logical path."
@@ -461,7 +777,7 @@ function normalizeRelativeResult(value) {
461
777
  return normalized.replace(/^\.\/+/, "");
462
778
  }
463
779
  function qualifyMatchPath(context, root, rawPath) {
464
- const logical = root.isFile ? root.target.logicalPath : root.target.logicalPath === "." ? normalizeRelativeResult(rawPath) : import_node_path.default.posix.join(
780
+ const logical = root.isFile ? root.target.logicalPath : root.target.logicalPath === "." ? normalizeRelativeResult(rawPath) : import_node_path2.default.posix.join(
465
781
  root.target.logicalPath,
466
782
  normalizeRelativeResult(rawPath)
467
783
  );
@@ -469,8 +785,8 @@ function qualifyMatchPath(context, root, rawPath) {
469
785
  requirePath: true,
470
786
  allowedLocations: ["agent_work", "workspace"]
471
787
  });
472
- const sourceAbsolutePath = root.isFile ? root.target.absolutePath : import_node_path.default.resolve(root.target.absolutePath, rawPath);
473
- if (roundTrip.logicalPath !== logical || import_node_path.default.resolve(roundTrip.absolutePath) !== import_node_path.default.resolve(sourceAbsolutePath)) {
788
+ const sourceAbsolutePath = root.isFile ? root.target.absolutePath : import_node_path2.default.resolve(root.target.absolutePath, rawPath);
789
+ if (roundTrip.logicalPath !== logical || import_node_path2.default.resolve(roundTrip.absolutePath) !== import_node_path2.default.resolve(sourceAbsolutePath)) {
474
790
  throw new LocalSearchError(
475
791
  "local_search_path_roundtrip_unsafe",
476
792
  "Local search found a path that cannot be reused as a logical path."
@@ -483,7 +799,7 @@ function qualifyMatchPath(context, root, rawPath) {
483
799
  var import_node_util = require("node:util");
484
800
 
485
801
  // plugins/local-search/source/ripgrep-process.ts
486
- var import_node_child_process2 = require("node:child_process");
802
+ var import_node_child_process3 = require("node:child_process");
487
803
  var import_ripgrep = require("@vscode/ripgrep");
488
804
 
489
805
  // src/shared/directory-authority/command.ts
@@ -562,9 +878,9 @@ function directoryAuthorityBootstrap(mode, messageLimit, task) {
562
878
  writeResponse(1, encoded);
563
879
  }
564
880
  function runCommand(input) {
565
- const { spawn: spawn3 } = require("node:child_process");
881
+ const { spawn: spawn4 } = require("node:child_process");
566
882
  const command = input;
567
- const child = spawn3(command.command, command.args, {
883
+ const child = spawn4(command.command, command.args, {
568
884
  stdio: ["ignore", "inherit", "inherit"],
569
885
  env: process.env
570
886
  });
@@ -596,7 +912,7 @@ function directoryAuthorityScript(mode, messageLimit, task) {
596
912
  }
597
913
 
598
914
  // src/shared/directory-authority/protocol.ts
599
- var import_node_path2 = require("node:path");
915
+ var import_node_path3 = require("node:path");
600
916
 
601
917
  // src/shared/directory-authority/errors.ts
602
918
  var DirectoryAuthorityError = class extends Error {
@@ -614,7 +930,7 @@ var DirectoryAuthorityError = class extends Error {
614
930
  var AUTHORITY_MESSAGE_LIMIT = 8 * 1024 * 1024;
615
931
  var AUTHORITY_STDERR_LIMIT = 16 * 1024;
616
932
  function assertDirectoryAuthorityLocation(location) {
617
- if (!(0, import_node_path2.isAbsolute)(location.directoryPath)) {
933
+ if (!(0, import_node_path3.isAbsolute)(location.directoryPath)) {
618
934
  throw new DirectoryAuthorityError(
619
935
  "directory_authority_invalid_path",
620
936
  "The directory authority requires an absolute starting path."
@@ -684,7 +1000,252 @@ function spawnDirectoryAuthorityCommand(input) {
684
1000
  return child;
685
1001
  }
686
1002
 
1003
+ // plugins/local-search/source/windows-search-process.ts
1004
+ var import_node_child_process2 = require("node:child_process");
1005
+ var import_node_path4 = require("node:path");
1006
+
1007
+ // src/shared/windows-job-object.ts
1008
+ var WINDOWS_EXEC_JOB_SOURCE = String.raw`
1009
+ using System;
1010
+ using System.ComponentModel;
1011
+ using System.Runtime.InteropServices;
1012
+
1013
+ public static class AbotExecJob {
1014
+ private static IntPtr job = IntPtr.Zero;
1015
+
1016
+ [StructLayout(LayoutKind.Sequential)]
1017
+ private struct BasicLimits {
1018
+ public long PerProcessUserTimeLimit;
1019
+ public long PerJobUserTimeLimit;
1020
+ public uint LimitFlags;
1021
+ public UIntPtr MinimumWorkingSetSize;
1022
+ public UIntPtr MaximumWorkingSetSize;
1023
+ public uint ActiveProcessLimit;
1024
+ public UIntPtr Affinity;
1025
+ public uint PriorityClass;
1026
+ public uint SchedulingClass;
1027
+ }
1028
+ [StructLayout(LayoutKind.Sequential)]
1029
+ private struct IoCounters {
1030
+ public ulong ReadOperationCount, WriteOperationCount, OtherOperationCount;
1031
+ public ulong ReadTransferCount, WriteTransferCount, OtherTransferCount;
1032
+ }
1033
+ [StructLayout(LayoutKind.Sequential)]
1034
+ private struct ExtendedLimits {
1035
+ public BasicLimits BasicLimitInformation;
1036
+ public IoCounters IoInfo;
1037
+ public UIntPtr ProcessMemoryLimit, JobMemoryLimit;
1038
+ public UIntPtr PeakProcessMemoryUsed, PeakJobMemoryUsed;
1039
+ }
1040
+
1041
+ [DllImport("kernel32.dll", CharSet = CharSet.Unicode, SetLastError = true)]
1042
+ private static extern IntPtr CreateJobObject(IntPtr attributes, string name);
1043
+ [DllImport("kernel32.dll", SetLastError = true)]
1044
+ private static extern bool SetInformationJobObject(IntPtr handle, int kind,
1045
+ ref ExtendedLimits limits, uint size);
1046
+ [DllImport("kernel32.dll", SetLastError = true)]
1047
+ private static extern bool AssignProcessToJobObject(IntPtr handle, IntPtr process);
1048
+ [DllImport("kernel32.dll")]
1049
+ private static extern IntPtr GetCurrentProcess();
1050
+ [DllImport("kernel32.dll")]
1051
+ private static extern bool CloseHandle(IntPtr handle);
1052
+
1053
+ public static void Attach() {
1054
+ if (job != IntPtr.Zero) throw new InvalidOperationException("Already attached");
1055
+ IntPtr candidate = CreateJobObject(IntPtr.Zero, null);
1056
+ if (candidate == IntPtr.Zero) throw new Win32Exception(Marshal.GetLastWin32Error());
1057
+ try {
1058
+ ExtendedLimits limits = new ExtendedLimits();
1059
+ limits.BasicLimitInformation.LimitFlags = 0x00002000; // KILL_ON_JOB_CLOSE
1060
+ if (!SetInformationJobObject(candidate, 9, ref limits,
1061
+ (uint)Marshal.SizeOf(typeof(ExtendedLimits))))
1062
+ throw new Win32Exception(Marshal.GetLastWin32Error());
1063
+ if (!AssignProcessToJobObject(candidate, GetCurrentProcess()))
1064
+ throw new Win32Exception(Marshal.GetLastWin32Error());
1065
+ job = candidate;
1066
+ candidate = IntPtr.Zero;
1067
+ } finally {
1068
+ if (candidate != IntPtr.Zero) CloseHandle(candidate);
1069
+ }
1070
+ }
1071
+ }
1072
+ `;
1073
+
1074
+ // plugins/local-search/source/windows-search-script.ts
1075
+ init_native_script();
1076
+ init_authority_script();
1077
+
1078
+ // plugins/local-search/source/windows-search-lease.ts
1079
+ var WINDOWS_SEARCH_LEASE = String.raw`
1080
+ public static partial class AbotFilesystem {
1081
+ sealed class SearchPathLease : IDisposable {
1082
+ readonly List<SafeFileHandle> held = new List<SafeFileHandle>();
1083
+ public readonly string Target;
1084
+ public readonly bool IsFile;
1085
+ public SearchPathLease(Dictionary<string,object> request) {
1086
+ try {
1087
+ Target = Path.GetFullPath(Text(request, "targetPath"));
1088
+ string root = Path.GetFullPath(Text(request, "rootPath")).TrimEnd('\\');
1089
+ if (!String.Equals(Target.TrimEnd('\\'), root, StringComparison.OrdinalIgnoreCase) &&
1090
+ !Target.StartsWith(root + "\\", StringComparison.OrdinalIgnoreCase))
1091
+ throw new FsFault("filesystem_invalid_path");
1092
+ IsFile = (bool)request["isFile"];
1093
+ string current = Path.GetPathRoot(Target);
1094
+ var handle = OpenHandle(null, NativePath(current), true, 1, 0x80000000, 3);
1095
+ held.Add(handle);
1096
+ bool foundRoot = VerifyRoot(current, root, handle, request);
1097
+ string rest = Target.Substring(current.Length).TrimEnd('\\');
1098
+ string[] parts = rest.Length == 0 ? new string[0] : rest.Split('\\');
1099
+ for (int i = 0; i < parts.Length; i++) {
1100
+ ValidateComponent(parts[i]);
1101
+ bool isFile = IsFile && i == parts.Length - 1;
1102
+ handle = OpenHandle(handle, parts[i], !isFile, 1, 0x80000000, isFile ? 1u : 3u);
1103
+ held.Add(handle);
1104
+ current = Path.Combine(current, parts[i]);
1105
+ if (!String.Equals(FinalPath(handle).TrimEnd('\\'), current.TrimEnd('\\'), StringComparison.OrdinalIgnoreCase))
1106
+ throw new FsFault("filesystem_path_changed");
1107
+ foundRoot |= VerifyRoot(current, root, handle, request);
1108
+ }
1109
+ if (!foundRoot || !MatchesIdentity(Identity(handle), request["targetIdentity"] as Dictionary<string,object>))
1110
+ throw new FsFault("filesystem_path_changed");
1111
+ } catch { Dispose(); throw; }
1112
+ }
1113
+ static bool VerifyRoot(string current, string root, SafeFileHandle handle, Dictionary<string,object> request) {
1114
+ if (!String.Equals(current.TrimEnd('\\'), root, StringComparison.OrdinalIgnoreCase)) return false;
1115
+ var expected = request["rootIdentity"] as Dictionary<string,object>;
1116
+ if (expected == null || !MatchesIdentity(Identity(handle), expected)) throw new FsFault("filesystem_path_changed");
1117
+ return true;
1118
+ }
1119
+ public void Dispose() {
1120
+ for (int i = held.Count - 1; i >= 0; i--) held[i].Dispose();
1121
+ held.Clear();
1122
+ }
1123
+ }
1124
+ }
1125
+ `;
1126
+
1127
+ // plugins/local-search/source/windows-search-script.ts
1128
+ var SEARCH_COMMAND = String.raw`
1129
+ public static partial class AbotFilesystem {
1130
+ static string QuoteSearchArgument(string value) {
1131
+ var quoted = new StringBuilder("\"");
1132
+ int slashes = 0;
1133
+ foreach (char c in value) {
1134
+ if (c == '\\') { slashes++; continue; }
1135
+ if (c == '"') { quoted.Append('\\', slashes * 2 + 1); quoted.Append(c); slashes = 0; continue; }
1136
+ quoted.Append('\\', slashes); slashes = 0; quoted.Append(c);
1137
+ }
1138
+ quoted.Append('\\', slashes * 2); quoted.Append('"');
1139
+ return quoted.ToString();
1140
+ }
1141
+ public static int Search(string input) {
1142
+ var json = new JavaScriptSerializer { MaxJsonLength = 2 * 1024 * 1024 };
1143
+ try {
1144
+ var request = json.Deserialize<Dictionary<string,object>>(input);
1145
+ using (var lease = new SearchPathLease(request)) {
1146
+ var args = (System.Collections.IEnumerable)request["args"];
1147
+ var quoted = new List<string>();
1148
+ foreach (object arg in args) quoted.Add(QuoteSearchArgument((string)arg));
1149
+ var start = new System.Diagnostics.ProcessStartInfo {
1150
+ FileName = Text(request, "command"), Arguments = String.Join(" ", quoted),
1151
+ WorkingDirectory = lease.IsFile ? Path.GetDirectoryName(lease.Target) : lease.Target,
1152
+ UseShellExecute = false, CreateNoWindow = true,
1153
+ RedirectStandardInput = true, RedirectStandardOutput = true, RedirectStandardError = true
1154
+ };
1155
+ using (var process = System.Diagnostics.Process.Start(start)) {
1156
+ process.StandardInput.Close();
1157
+ var output = process.StandardOutput.BaseStream.CopyToAsync(Console.OpenStandardOutput());
1158
+ var errors = process.StandardError.BaseStream.CopyToAsync(Console.OpenStandardError());
1159
+ process.WaitForExit();
1160
+ System.Threading.Tasks.Task.WaitAll(output, errors);
1161
+ return process.ExitCode;
1162
+ }
1163
+ }
1164
+ } catch { return 125; }
1165
+ }
1166
+ }
1167
+ `;
1168
+ var WINDOWS_SEARCH_SOURCE = [
1169
+ WINDOWS_FILESYSTEM_NATIVE,
1170
+ WINDOWS_FILESYSTEM_AUTHORITY,
1171
+ WINDOWS_SEARCH_LEASE,
1172
+ SEARCH_COMMAND
1173
+ ].join("\n");
1174
+
1175
+ // plugins/local-search/source/windows-search-process.ts
1176
+ var BOOTSTRAP = [
1177
+ "$ErrorActionPreference='Stop'",
1178
+ "$ProgressPreference='SilentlyContinue'",
1179
+ "if ($ExecutionContext.SessionState.LanguageMode -ne 'FullLanguage') { exit 126 }",
1180
+ "$env:PSModulePath=[IO.Path]::Combine($PSHOME,'Modules')",
1181
+ "try {",
1182
+ "[Console]::InputEncoding=[Text.UTF8Encoding]::new($false)",
1183
+ "$envelope=[Console]::In.ReadToEnd() | ConvertFrom-Json",
1184
+ "Add-Type -TypeDefinition $envelope.jobSource",
1185
+ "[AbotExecJob]::Attach()",
1186
+ "Add-Type -ReferencedAssemblies @('System.Web.Extensions') -TypeDefinition $envelope.source",
1187
+ "$result=[AbotFilesystem]::Search($envelope.request)",
1188
+ "exit $result",
1189
+ "} catch { exit 126 }"
1190
+ ].join(";\n");
1191
+ function windowsSearchUnavailable() {
1192
+ return new LocalSearchError(
1193
+ "local_search_windows_unavailable",
1194
+ "The Windows local-search helper is unavailable or blocked by computer policy. No results were returned. Do not retry or bypass this restriction with another tool; ask the user to check PowerShell/C# availability or contact their administrator."
1195
+ );
1196
+ }
1197
+ function windowsSearchExitFailure(code) {
1198
+ if (code === 125) return windowsSearchAuthorityUnavailable();
1199
+ const helperUnavailable = code === 126 || code === void 0;
1200
+ if (helperUnavailable) return windowsSearchUnavailable();
1201
+ return new LocalSearchError(
1202
+ "local_search_failed",
1203
+ "Local search could not complete under the selected logical root."
1204
+ );
1205
+ }
1206
+ function spawnWindowsSearch(params) {
1207
+ const input = JSON.stringify({
1208
+ source: WINDOWS_SEARCH_SOURCE,
1209
+ jobSource: WINDOWS_EXEC_JOB_SOURCE,
1210
+ request: JSON.stringify({
1211
+ ...params.authority,
1212
+ command: params.command,
1213
+ args: params.args
1214
+ })
1215
+ });
1216
+ if (Buffer.byteLength(input) > 2 * 1024 * 1024)
1217
+ throw windowsSearchUnavailable();
1218
+ const executable = (0, import_node_path4.join)(
1219
+ process.env.SystemRoot ?? "C:\\Windows",
1220
+ "System32",
1221
+ "WindowsPowerShell",
1222
+ "v1.0",
1223
+ "powershell.exe"
1224
+ );
1225
+ const child = (0, import_node_child_process2.spawn)(
1226
+ executable,
1227
+ ["-NoLogo", "-NoProfile", "-NonInteractive", "-Command", BOOTSTRAP],
1228
+ {
1229
+ env: params.env,
1230
+ windowsHide: true,
1231
+ stdio: ["pipe", "pipe", "pipe"]
1232
+ }
1233
+ );
1234
+ child.stdin.on("error", () => void 0);
1235
+ child.stdin.end(input, "utf8");
1236
+ return {
1237
+ child,
1238
+ terminate: () => {
1239
+ child.kill("SIGKILL");
1240
+ },
1241
+ failureForExit: windowsSearchExitFailure
1242
+ };
1243
+ }
1244
+
687
1245
  // plugins/local-search/source/ripgrep-process.ts
1246
+ function isWindowsSearchAuthority(authority) {
1247
+ return authority !== void 0 && "platform" in authority;
1248
+ }
688
1249
  function controlledRipgrepEnvironment() {
689
1250
  const environment = { ...process.env };
690
1251
  for (const name of Object.keys(environment)) {
@@ -710,6 +1271,14 @@ function terminateAuthorityGroup(child) {
710
1271
  function spawnRipgrepProcess(args, cwd, stdinFd, directoryAuthority) {
711
1272
  const commandArgs = ["--no-config", ...args];
712
1273
  const env = controlledRipgrepEnvironment();
1274
+ if (isWindowsSearchAuthority(directoryAuthority)) {
1275
+ return spawnWindowsSearch({
1276
+ authority: directoryAuthority,
1277
+ command: import_ripgrep.rgPath,
1278
+ args: commandArgs,
1279
+ env
1280
+ });
1281
+ }
713
1282
  if (directoryAuthority) {
714
1283
  const child2 = spawnDirectoryAuthorityCommand({
715
1284
  ...directoryAuthority,
@@ -719,7 +1288,7 @@ function spawnRipgrepProcess(args, cwd, stdinFd, directoryAuthority) {
719
1288
  });
720
1289
  return { child: child2, terminate: () => terminateAuthorityGroup(child2) };
721
1290
  }
722
- const child = (0, import_node_child_process2.spawn)(import_ripgrep.rgPath, commandArgs, {
1291
+ const child = (0, import_node_child_process3.spawn)(import_ripgrep.rgPath, commandArgs, {
723
1292
  cwd,
724
1293
  env,
725
1294
  stdio: [stdinFd ?? "ignore", "pipe", "pipe"],
@@ -818,7 +1387,7 @@ async function runRipgrepBounded(args, cwd, maxResults, parser, signal, stdinFd,
818
1387
  let timedOut = false;
819
1388
  let aborted = false;
820
1389
  let parserError;
821
- const { child, terminate } = spawnRipgrepProcess(
1390
+ const { child, terminate, failureForExit } = spawnRipgrepProcess(
822
1391
  args,
823
1392
  cwd,
824
1393
  stdinFd,
@@ -873,7 +1442,7 @@ async function runRipgrepBounded(args, cwd, maxResults, parser, signal, stdinFd,
873
1442
  }
874
1443
  });
875
1444
  child.stderr.on("data", () => void 0);
876
- child.on("error", (error) => settleFailure(error));
1445
+ child.on("error", (error) => settleFailure(failureForExit?.(void 0) ?? error));
877
1446
  child.on("close", (code) => {
878
1447
  if (completed) return;
879
1448
  if (parserError) {
@@ -893,7 +1462,7 @@ async function runRipgrepBounded(args, cwd, maxResults, parser, signal, stdinFd,
893
1462
  }
894
1463
  }
895
1464
  if (!stoppedAfterExtraResult && code !== 0 && code !== 1) {
896
- settleFailure();
1465
+ settleFailure(failureForExit?.(code));
897
1466
  return;
898
1467
  }
899
1468
  completed = true;
@@ -1006,7 +1575,7 @@ function runRipgrepContentSearch(args, cwd, maxResults, signal, stdinFd, directo
1006
1575
  var DEFAULT_MAX_RESULTS = 40;
1007
1576
  var MAX_RESULTS = 200;
1008
1577
  function fileNameMatches(logicalPath, query, caseSensitive) {
1009
- const filename = import_node_path3.posix.basename(logicalPath);
1578
+ const filename = import_node_path5.posix.basename(logicalPath);
1010
1579
  return caseSensitive ? filename.includes(query) : filename.toLowerCase().includes(query.toLowerCase());
1011
1580
  }
1012
1581
  var index_default = defineRuntimePlugin((context) => ({
@@ -1045,7 +1614,7 @@ var index_default = defineRuntimePlugin((context) => ({
1045
1614
  if (mode === "names" || mode === "both") {
1046
1615
  const names = root.isFile ? Object.freeze({
1047
1616
  items: Object.freeze(
1048
- fileNameMatches(root.target.logicalPath, query, caseSensitive) ? [import_node_path3.posix.basename(root.target.logicalPath)] : []
1617
+ fileNameMatches(root.target.logicalPath, query, caseSensitive) ? [import_node_path5.posix.basename(root.target.logicalPath)] : []
1049
1618
  ),
1050
1619
  truncated: false
1051
1620
  }) : await runRipgrepPathSearch(