@abot-ai/runtime 1.4.0 → 1.6.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 (1939) hide show
  1. package/README.md +20 -8
  2. package/dist/scripts/runtime-model-addition.d.ts +1 -1
  3. package/dist/scripts/runtime-model-addition.js +1 -1
  4. package/dist/src/bridge/start-agent-bridge.js +22 -0
  5. package/dist/src/capabilities/normal-invocation/contracts.d.ts +11 -0
  6. package/dist/src/capabilities/normal-invocation/contracts.js +1 -0
  7. package/dist/src/capabilities/normal-invocation/validator.js +40 -4
  8. package/dist/src/capabilities/result-budget.d.ts +17 -0
  9. package/dist/src/capabilities/result-budget.js +21 -0
  10. package/dist/src/capabilities/tool-context-text.d.ts +16 -0
  11. package/dist/src/capabilities/tool-context-text.js +30 -0
  12. package/dist/src/capabilities/tool-definition-validator/definition-parser.js +6 -0
  13. package/dist/src/capabilities/tool-definition-validator/event-input-text-options.js +3 -2
  14. package/dist/src/capabilities/tool-event-input-text.d.ts +1 -0
  15. package/dist/src/capabilities/tool-event-input-text.js +2 -1
  16. package/dist/src/capabilities/tool-executor.d.ts +7 -1
  17. package/dist/src/capabilities/tool-executor.js +33 -46
  18. package/dist/src/capabilities/tool-interruption.d.ts +3 -0
  19. package/dist/src/capabilities/tool-interruption.js +6 -0
  20. package/dist/src/capabilities/tool-media.d.ts +21 -0
  21. package/dist/src/capabilities/tool-media.js +39 -0
  22. package/dist/src/capabilities/tool-request-resources.d.ts +17 -0
  23. package/dist/src/capabilities/tool-request-resources.js +1 -0
  24. package/dist/src/capabilities/tool-result-normalization.d.ts +18 -0
  25. package/dist/src/capabilities/tool-result-normalization.js +68 -0
  26. package/dist/src/capabilities/tool-types.d.ts +34 -3
  27. package/dist/src/cli/host-companion-bundle.mjs +6688 -341
  28. package/dist/src/cli/host-companion-entry.js +14 -4
  29. package/dist/src/cli/host-companion-setup-target.d.ts +3 -0
  30. package/dist/src/cli/host-companion-setup-target.js +23 -0
  31. package/dist/src/cli/host-companion-startup.d.ts +2 -2
  32. package/dist/src/cli/host-companion-startup.js +23 -9
  33. package/dist/src/cli/host-companion.d.ts +1 -0
  34. package/dist/src/cli/host-companion.js +25 -19
  35. package/dist/src/cli/host-permissions.d.ts +7 -0
  36. package/dist/src/cli/host-permissions.js +24 -0
  37. package/dist/{plugins/system/source → src/computer-access}/application-launch.js +1 -1
  38. package/dist/src/computer-access/client.d.ts +19 -0
  39. package/dist/src/computer-access/client.js +1 -0
  40. package/dist/{plugins/system/source → src/computer-access}/commands.js +1 -1
  41. package/dist/{plugins/system/source → src/computer-access}/companion/autostart.d.ts +2 -0
  42. package/dist/{plugins/system/source → src/computer-access}/companion/autostart.js +19 -2
  43. package/dist/src/computer-access/companion/broker-client.d.ts +10 -0
  44. package/dist/src/computer-access/companion/broker-client.js +149 -0
  45. package/dist/{plugins/system/source → src/computer-access}/companion/broker-location.js +11 -3
  46. package/dist/{plugins/system/source → src/computer-access}/companion/broker-server.js +22 -2
  47. package/dist/{plugins/system/source → src/computer-access}/companion/connection.d.ts +8 -2
  48. package/dist/{plugins/system/source → src/computer-access}/companion/connection.js +43 -3
  49. package/dist/src/computer-access/companion/local-installation.d.ts +13 -0
  50. package/dist/src/computer-access/companion/local-installation.js +142 -0
  51. package/dist/src/computer-access/companion/local-setup-process.d.ts +18 -0
  52. package/dist/src/computer-access/companion/local-setup-process.js +127 -0
  53. package/dist/{plugins/system/source → src/computer-access}/companion/native-address.d.ts +2 -2
  54. package/dist/{plugins/system/source → src/computer-access}/companion/native-address.js +24 -7
  55. package/dist/src/computer-access/companion/native-build-identity.d.ts +2 -0
  56. package/dist/src/computer-access/companion/native-build-identity.js +8 -0
  57. package/dist/src/computer-access/companion/native-loopback-lookup.d.ts +7 -0
  58. package/dist/src/computer-access/companion/native-loopback-lookup.js +33 -0
  59. package/dist/{plugins/system/source → src/computer-access}/companion/native-messages.js +10 -2
  60. package/dist/src/computer-access/companion/native-notifications.d.ts +16 -0
  61. package/dist/src/computer-access/companion/native-notifications.js +84 -0
  62. package/dist/src/computer-access/companion/native-observations.d.ts +15 -0
  63. package/dist/src/computer-access/companion/native-observations.js +67 -0
  64. package/dist/src/computer-access/companion/native-permissions.d.ts +14 -0
  65. package/dist/src/computer-access/companion/native-permissions.js +49 -0
  66. package/dist/src/computer-access/companion/native-replacement.d.ts +19 -0
  67. package/dist/src/computer-access/companion/native-replacement.js +120 -0
  68. package/dist/src/computer-access/companion/native-runtime-installation.d.ts +15 -0
  69. package/dist/src/computer-access/companion/native-runtime-installation.js +218 -0
  70. package/dist/{plugins/system/source → src/computer-access}/companion/native-session.d.ts +5 -1
  71. package/dist/{plugins/system/source → src/computer-access}/companion/native-session.js +104 -13
  72. package/dist/{plugins/system/source → src/computer-access}/companion/native-state.d.ts +9 -4
  73. package/dist/{plugins/system/source → src/computer-access}/companion/native-state.js +25 -3
  74. package/dist/{plugins/system/source → src/computer-access}/companion/native-supervisor.d.ts +3 -0
  75. package/dist/src/computer-access/companion/native-supervisor.js +157 -0
  76. package/dist/src/computer-access/companion/notification-directory-ownership.d.ts +13 -0
  77. package/dist/src/computer-access/companion/notification-directory-ownership.js +112 -0
  78. package/dist/src/computer-access/companion/notification-directory-windows.d.ts +3 -0
  79. package/dist/src/computer-access/companion/notification-directory-windows.js +15 -0
  80. package/dist/src/computer-access/companion/notification-directory.d.ts +5 -0
  81. package/dist/src/computer-access/companion/notification-directory.js +72 -0
  82. package/dist/src/computer-access/companion/notification-installation.d.ts +10 -0
  83. package/dist/src/computer-access/companion/notification-installation.js +201 -0
  84. package/dist/src/computer-access/companion/notification-linux.d.ts +20 -0
  85. package/dist/src/computer-access/companion/notification-linux.js +207 -0
  86. package/dist/src/computer-access/companion/notification-locations.d.ts +12 -0
  87. package/dist/src/computer-access/companion/notification-locations.js +20 -0
  88. package/dist/src/computer-access/companion/notification-macos-bundle.d.ts +3 -0
  89. package/dist/src/computer-access/companion/notification-macos-bundle.js +84 -0
  90. package/dist/src/computer-access/companion/notification-macos.d.ts +11 -0
  91. package/dist/src/computer-access/companion/notification-macos.js +143 -0
  92. package/dist/src/computer-access/companion/notification-process.d.ts +10 -0
  93. package/dist/src/computer-access/companion/notification-process.js +49 -0
  94. package/dist/src/computer-access/companion/notification-protocol.d.ts +15 -0
  95. package/dist/src/computer-access/companion/notification-protocol.js +92 -0
  96. package/dist/src/computer-access/companion/notification-readiness-state.d.ts +9 -0
  97. package/dist/src/computer-access/companion/notification-readiness-state.js +32 -0
  98. package/dist/src/computer-access/companion/notification-readiness.d.ts +4 -0
  99. package/dist/src/computer-access/companion/notification-readiness.js +37 -0
  100. package/dist/src/computer-access/companion/notification-windows.d.ts +5 -0
  101. package/dist/src/computer-access/companion/notification-windows.js +137 -0
  102. package/dist/src/computer-access/companion/observation-broker.d.ts +4 -0
  103. package/dist/src/computer-access/companion/observation-broker.js +61 -0
  104. package/dist/src/computer-access/companion/observation-capture-policy.d.ts +7 -0
  105. package/dist/src/computer-access/companion/observation-capture-policy.js +7 -0
  106. package/dist/src/computer-access/companion/observation-client.d.ts +4 -0
  107. package/dist/src/computer-access/companion/observation-client.js +107 -0
  108. package/dist/src/computer-access/companion/observation-connection.d.ts +24 -0
  109. package/dist/src/computer-access/companion/observation-connection.js +120 -0
  110. package/dist/src/computer-access/companion/observation-filter.d.ts +12 -0
  111. package/dist/src/computer-access/companion/observation-filter.js +180 -0
  112. package/dist/src/computer-access/companion/observation-linux.d.ts +1 -0
  113. package/dist/src/computer-access/companion/observation-linux.js +228 -0
  114. package/dist/src/computer-access/companion/observation-macos-permission.d.ts +2 -0
  115. package/dist/src/computer-access/companion/observation-macos-permission.js +26 -0
  116. package/dist/src/computer-access/companion/observation-macos.d.ts +1 -0
  117. package/dist/src/computer-access/companion/observation-macos.js +189 -0
  118. package/dist/src/computer-access/companion/observation-process.d.ts +16 -0
  119. package/dist/src/computer-access/companion/observation-process.js +154 -0
  120. package/dist/src/computer-access/companion/observation-protocol.d.ts +16 -0
  121. package/dist/src/computer-access/companion/observation-protocol.js +95 -0
  122. package/dist/src/computer-access/companion/observation-redaction.d.ts +9 -0
  123. package/dist/src/computer-access/companion/observation-redaction.js +140 -0
  124. package/dist/src/computer-access/companion/observation-windows.d.ts +1 -0
  125. package/dist/src/computer-access/companion/observation-windows.js +173 -0
  126. package/dist/{plugins/system/source → src/computer-access}/companion/pairing-store.d.ts +6 -0
  127. package/dist/{plugins/system/source → src/computer-access}/companion/pairing-store.js +44 -0
  128. package/dist/src/computer-access/companion/permission-protocol.d.ts +22 -0
  129. package/dist/src/computer-access/companion/permission-protocol.js +45 -0
  130. package/dist/{plugins/system/source → src/computer-access}/companion/process-owner-identity.d.ts +1 -0
  131. package/dist/{plugins/system/source → src/computer-access}/companion/process-owner-identity.js +14 -4
  132. package/dist/{plugins/system/source → src/computer-access}/companion/protocol.d.ts +19 -3
  133. package/dist/{plugins/system/source → src/computer-access}/companion/protocol.js +16 -0
  134. package/dist/src/computer-access/companion/release-version.d.ts +7 -0
  135. package/dist/src/computer-access/companion/release-version.js +12 -0
  136. package/dist/src/computer-access/companion/spark-notification-query.d.ts +2 -0
  137. package/dist/src/computer-access/companion/spark-notification-query.js +62 -0
  138. package/dist/src/computer-access/computer/action-input.d.ts +8 -0
  139. package/dist/src/computer-access/computer/action-input.js +107 -0
  140. package/dist/src/computer-access/computer/companion-backend.d.ts +3 -0
  141. package/dist/src/computer-access/computer/companion-backend.js +73 -0
  142. package/dist/src/computer-access/computer/companion-sessions.d.ts +25 -0
  143. package/dist/src/computer-access/computer/companion-sessions.js +189 -0
  144. package/dist/src/computer-access/computer/desktop-action-queue.d.ts +1 -0
  145. package/dist/src/computer-access/computer/desktop-action-queue.js +41 -0
  146. package/dist/src/computer-access/computer/linux-backend.d.ts +3 -0
  147. package/dist/src/computer-access/computer/linux-backend.js +16 -0
  148. package/dist/src/computer-access/computer/linux-desktop.d.ts +1 -0
  149. package/dist/src/computer-access/computer/linux-desktop.js +165 -0
  150. package/dist/src/computer-access/computer/linux-frame.d.ts +2 -0
  151. package/dist/src/computer-access/computer/linux-frame.js +29 -0
  152. package/dist/src/computer-access/computer/linux-helper.d.ts +1 -0
  153. package/dist/src/computer-access/computer/linux-helper.js +161 -0
  154. package/dist/src/computer-access/computer/linux-input.d.ts +2 -0
  155. package/dist/src/computer-access/computer/linux-input.js +174 -0
  156. package/dist/src/computer-access/computer/linux-portal-source.d.ts +2 -0
  157. package/dist/src/computer-access/computer/linux-portal-source.js +62 -0
  158. package/dist/src/computer-access/computer/linux-portal.d.ts +2 -0
  159. package/dist/src/computer-access/computer/linux-portal.js +268 -0
  160. package/dist/src/computer-access/computer/linux-topology.d.ts +2 -0
  161. package/dist/src/computer-access/computer/linux-topology.js +92 -0
  162. package/dist/src/computer-access/computer/linux-x11.d.ts +2 -0
  163. package/dist/src/computer-access/computer/linux-x11.js +217 -0
  164. package/dist/src/computer-access/computer/macos-backend.d.ts +3 -0
  165. package/dist/src/computer-access/computer/macos-backend.js +28 -0
  166. package/dist/src/computer-access/computer/macos-capture.d.ts +1 -0
  167. package/dist/src/computer-access/computer/macos-capture.js +117 -0
  168. package/dist/src/computer-access/computer/macos-desktop.d.ts +1 -0
  169. package/dist/src/computer-access/computer/macos-desktop.js +185 -0
  170. package/dist/src/computer-access/computer/macos-helper.d.ts +1 -0
  171. package/dist/src/computer-access/computer/macos-helper.js +117 -0
  172. package/dist/src/computer-access/computer/macos-input.d.ts +1 -0
  173. package/dist/src/computer-access/computer/macos-input.js +264 -0
  174. package/dist/src/computer-access/computer/macos-permission-helper.d.ts +4 -0
  175. package/dist/src/computer-access/computer/macos-permission-helper.js +38 -0
  176. package/dist/src/computer-access/computer/macos-prerequisites.d.ts +2 -0
  177. package/dist/src/computer-access/computer/macos-prerequisites.js +25 -0
  178. package/dist/src/computer-access/computer/macos-topology.d.ts +2 -0
  179. package/dist/src/computer-access/computer/macos-topology.js +34 -0
  180. package/dist/src/computer-access/computer/native-backend.d.ts +3 -0
  181. package/dist/src/computer-access/computer/native-backend.js +10 -0
  182. package/dist/src/computer-access/computer/native-protocol.d.ts +129 -0
  183. package/dist/src/computer-access/computer/native-protocol.js +1 -0
  184. package/dist/src/computer-access/computer/native-validation.d.ts +7 -0
  185. package/dist/src/computer-access/computer/native-validation.js +152 -0
  186. package/dist/src/computer-access/computer/unix-native-process.d.ts +12 -0
  187. package/dist/src/computer-access/computer/unix-native-process.js +155 -0
  188. package/dist/src/computer-access/computer/unix-native-results.d.ts +7 -0
  189. package/dist/src/computer-access/computer/unix-native-results.js +73 -0
  190. package/dist/src/computer-access/computer/windows-accessibility-script.d.ts +2 -0
  191. package/dist/src/computer-access/computer/windows-accessibility-script.js +87 -0
  192. package/dist/src/computer-access/computer/windows-backend.d.ts +7 -0
  193. package/dist/src/computer-access/computer/windows-backend.js +50 -0
  194. package/dist/src/computer-access/computer/windows-capture-script.d.ts +2 -0
  195. package/dist/src/computer-access/computer/windows-capture-script.js +69 -0
  196. package/dist/src/computer-access/computer/windows-desktop-script.d.ts +2 -0
  197. package/dist/src/computer-access/computer/windows-desktop-script.js +129 -0
  198. package/dist/src/computer-access/computer/windows-helper-process.d.ts +18 -0
  199. package/dist/src/computer-access/computer/windows-helper-process.js +93 -0
  200. package/dist/src/computer-access/computer/windows-helper-script.d.ts +2 -0
  201. package/dist/src/computer-access/computer/windows-helper-script.js +17 -0
  202. package/dist/src/computer-access/computer/windows-input-script.d.ts +2 -0
  203. package/dist/src/computer-access/computer/windows-input-script.js +171 -0
  204. package/dist/src/computer-access/computer/windows-keyboard-script.d.ts +2 -0
  205. package/dist/src/computer-access/computer/windows-keyboard-script.js +81 -0
  206. package/dist/src/computer-access/computer/windows-native-script.d.ts +2 -0
  207. package/dist/src/computer-access/computer/windows-native-script.js +157 -0
  208. package/dist/src/computer-access/computer/windows-result.d.ts +4 -0
  209. package/dist/src/computer-access/computer/windows-result.js +105 -0
  210. package/dist/src/computer-access/computer/windows-topology-script.d.ts +2 -0
  211. package/dist/src/computer-access/computer/windows-topology-script.js +80 -0
  212. package/dist/{plugins/system/source → src/computer-access}/handlers.d.ts +1 -1
  213. package/dist/{plugins/system/source → src/computer-access}/handlers.js +1 -1
  214. package/dist/{plugins/system/source → src/computer-access}/host-evidence.d.ts +1 -1
  215. package/dist/{plugins/system/source → src/computer-access}/host-evidence.js +1 -1
  216. package/dist/{plugins/system/source → src/computer-access}/host-observation.d.ts +3 -3
  217. package/dist/src/computer-access/native-permission-contract.d.ts +23 -0
  218. package/dist/src/computer-access/native-permission-contract.js +38 -0
  219. package/dist/{plugins/system/source → src/computer-access}/process-result.d.ts +1 -1
  220. package/dist/{plugins/system/source → src/computer-access}/process-result.js +1 -1
  221. package/dist/src/model-gateway/client/chat.js +5 -2
  222. package/dist/src/model-gateway/client/input-token-count.js +2 -1
  223. package/dist/src/model-gateway/client/message-projection.js +1 -0
  224. package/dist/src/model-gateway/client/raw.js +5 -3
  225. package/dist/src/model-gateway/observability/content-trace-policy.d.ts +2 -0
  226. package/dist/src/model-gateway/observability/content-trace-policy.js +7 -0
  227. package/dist/src/model-gateway/observability/provider-trace.js +17 -4
  228. package/dist/src/model-gateway/observability/tool-media-privacy.d.ts +6 -0
  229. package/dist/src/model-gateway/observability/tool-media-privacy.js +50 -0
  230. package/dist/src/model-gateway/policy/invocation-policy.js +10 -1
  231. package/dist/src/model-gateway/protocol/message-contract.js +16 -2
  232. package/dist/src/model-gateway/providers/ollama/adapter.js +6 -5
  233. package/dist/src/model-gateway/providers/ollama/message-projection.js +2 -0
  234. package/dist/src/model-gateway/providers/openai/adapter.js +10 -7
  235. package/dist/src/model-gateway/providers/openai/image-content.d.ts +8 -0
  236. package/dist/src/model-gateway/providers/openai/image-content.js +28 -0
  237. package/dist/src/model-gateway/providers/openai/input-token-count.js +3 -2
  238. package/dist/src/model-gateway/providers/openai/payload.js +13 -2
  239. package/dist/src/model-gateway/structured-output/ollama-format.js +5 -0
  240. package/dist/src/model-gateway/structured-output/openai-format.js +5 -0
  241. package/dist/src/model-gateway/types.d.ts +8 -1
  242. package/dist/src/plugin-contract/manifest.d.ts +2 -1
  243. package/dist/src/plugin-sdk/computer-access.d.ts +13 -0
  244. package/dist/src/plugin-sdk/computer-access.js +11 -0
  245. package/dist/src/plugin-sdk/context-text-result.d.ts +10 -0
  246. package/dist/src/plugin-sdk/context-text-result.js +19 -0
  247. package/dist/src/plugin-sdk/index.d.ts +3 -0
  248. package/dist/src/plugin-sdk/index.js +2 -0
  249. package/dist/src/plugin-sdk/results.d.ts +8 -5
  250. package/dist/src/plugin-sdk/results.js +37 -10
  251. package/dist/src/runtime/adapters/co-worker-resources.d.ts +15 -0
  252. package/dist/src/runtime/adapters/co-worker-resources.js +74 -0
  253. package/dist/src/runtime/adapters/config-file-transaction.js +7 -0
  254. package/dist/src/runtime/adapters/default-session-adapters.d.ts +1 -1
  255. package/dist/src/runtime/adapters/file-session-store.js +8 -0
  256. package/dist/src/runtime/adapters/in-memory-session-store.js +14 -1
  257. package/dist/src/runtime/adapters/long-term-memory/file-repository.js +2 -0
  258. package/dist/src/runtime/adapters/long-term-memory/migration-backup.d.ts +3 -0
  259. package/dist/src/runtime/adapters/long-term-memory/migration-backup.js +44 -0
  260. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.d.ts +2 -1
  261. package/dist/src/runtime/adapters/long-term-memory/onboarding-service.js +5 -4
  262. package/dist/src/runtime/adapters/passive-learning-runtime.d.ts +29 -0
  263. package/dist/src/runtime/adapters/passive-learning-runtime.js +28 -0
  264. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.d.ts +4 -1
  265. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/approval.js +25 -16
  266. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.d.ts +16 -0
  267. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-execution.js +203 -0
  268. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.d.ts +28 -0
  269. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/prepared-snapshot.js +118 -0
  270. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/result-budget.d.ts +11 -0
  271. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/result-budget.js +30 -0
  272. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/run.js +13 -86
  273. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/tool-media-execution.d.ts +12 -0
  274. package/dist/src/runtime/adapters/registered-tool-normal-invocations/execution/tool-media-execution.js +30 -0
  275. package/dist/src/runtime/adapters/registered-tool-normal-invocations/executor.js +2 -0
  276. package/dist/src/runtime/adapters/registered-tool-normal-invocations/shared/contracts.d.ts +36 -2
  277. package/dist/src/runtime/adapters/registered-tool-payload-plan.d.ts +3 -3
  278. package/dist/src/runtime/adapters/registered-tool-payload-plan.js +4 -4
  279. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/contracts.d.ts +4 -0
  280. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/execution.js +30 -58
  281. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-authoring-result.js +4 -18
  282. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/payload-observability.js +1 -1
  283. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.d.ts +17 -0
  284. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-execution.js +65 -0
  285. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-snapshot.d.ts +15 -0
  286. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/prepared-snapshot.js +53 -0
  287. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-envelope.d.ts +13 -0
  288. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-envelope.js +15 -0
  289. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-evidence.d.ts +3 -7
  290. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-evidence.js +16 -45
  291. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.d.ts +2 -1
  292. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-observer.js +14 -6
  293. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-references.d.ts +9 -0
  294. package/dist/src/runtime/adapters/registered-tool-worker-capabilities/result-references.js +29 -0
  295. package/dist/src/runtime/adapters/registered-tool-worker-capabilities.js +2 -0
  296. package/dist/src/runtime/adapters/scheduler-executor-dispatch.d.ts +11 -0
  297. package/dist/src/runtime/adapters/scheduler-executor-dispatch.js +10 -0
  298. package/dist/src/runtime/adapters/scheduler-runtime.d.ts +3 -1
  299. package/dist/src/runtime/adapters/scheduler-runtime.js +31 -11
  300. package/dist/src/runtime/attachments/request-tool-media-snapshot.d.ts +23 -0
  301. package/dist/src/runtime/attachments/request-tool-media-snapshot.js +101 -0
  302. package/dist/src/runtime/attachments/request-tool-media.d.ts +36 -0
  303. package/dist/src/runtime/attachments/request-tool-media.js +119 -0
  304. package/dist/src/runtime/attachments/tool-image-validation.d.ts +6 -0
  305. package/dist/src/runtime/attachments/tool-image-validation.js +83 -0
  306. package/dist/src/runtime/automations/agent-assignment.d.ts +8 -0
  307. package/dist/src/runtime/automations/agent-assignment.js +29 -0
  308. package/dist/src/runtime/automations/agent-request-failure.d.ts +2 -0
  309. package/dist/src/runtime/automations/agent-request-failure.js +74 -0
  310. package/dist/src/runtime/automations/agent-session-lifetime.d.ts +11 -0
  311. package/dist/src/runtime/automations/agent-session-lifetime.js +46 -0
  312. package/dist/src/runtime/automations/agent-step-executor.d.ts +35 -0
  313. package/dist/src/runtime/automations/agent-step-executor.js +278 -0
  314. package/dist/src/runtime/automations/agent-tool-scope.d.ts +4 -0
  315. package/dist/src/runtime/automations/agent-tool-scope.js +73 -0
  316. package/dist/src/runtime/automations/archive-management.d.ts +26 -0
  317. package/dist/src/runtime/automations/archive-management.js +50 -0
  318. package/dist/src/runtime/automations/binding-resolution.d.ts +28 -0
  319. package/dist/src/runtime/automations/binding-resolution.js +115 -0
  320. package/dist/src/runtime/automations/branch-result-projection.d.ts +4 -0
  321. package/dist/src/runtime/automations/branch-result-projection.js +15 -0
  322. package/dist/src/runtime/automations/catalog.d.ts +76 -0
  323. package/dist/src/runtime/automations/catalog.js +67 -0
  324. package/dist/src/runtime/automations/definition-contracts.d.ts +128 -0
  325. package/dist/src/runtime/automations/definition-contracts.js +1 -0
  326. package/dist/src/runtime/automations/definition-input.d.ts +3 -0
  327. package/dist/src/runtime/automations/definition-input.js +283 -0
  328. package/dist/src/runtime/automations/dependency-fingerprint.d.ts +9 -0
  329. package/dist/src/runtime/automations/dependency-fingerprint.js +55 -0
  330. package/dist/src/runtime/automations/draft-batch-aliases.d.ts +12 -0
  331. package/dist/src/runtime/automations/draft-batch-aliases.js +94 -0
  332. package/dist/src/runtime/automations/draft-batch.d.ts +29 -0
  333. package/dist/src/runtime/automations/draft-batch.js +147 -0
  334. package/dist/src/runtime/automations/draft-management.d.ts +53 -0
  335. package/dist/src/runtime/automations/draft-management.js +164 -0
  336. package/dist/src/runtime/automations/draft-mutations.d.ts +29 -0
  337. package/dist/src/runtime/automations/draft-mutations.js +219 -0
  338. package/dist/src/runtime/automations/draft-restoration.d.ts +11 -0
  339. package/dist/src/runtime/automations/draft-restoration.js +44 -0
  340. package/dist/src/runtime/automations/effect-admission-lifetime.d.ts +9 -0
  341. package/dist/src/runtime/automations/effect-admission-lifetime.js +31 -0
  342. package/dist/src/runtime/automations/failure-policy.d.ts +8 -0
  343. package/dist/src/runtime/automations/failure-policy.js +9 -0
  344. package/dist/src/runtime/automations/graph-executor.d.ts +23 -0
  345. package/dist/src/runtime/automations/graph-executor.js +227 -0
  346. package/dist/src/runtime/automations/graph-validation.d.ts +29 -0
  347. package/dist/src/runtime/automations/graph-validation.js +271 -0
  348. package/dist/src/runtime/automations/input-batch-selection.d.ts +7 -0
  349. package/dist/src/runtime/automations/input-batch-selection.js +42 -0
  350. package/dist/src/runtime/automations/input-capacity.d.ts +9 -0
  351. package/dist/src/runtime/automations/input-capacity.js +38 -0
  352. package/dist/src/runtime/automations/input-ledger.d.ts +45 -0
  353. package/dist/src/runtime/automations/input-ledger.js +147 -0
  354. package/dist/src/runtime/automations/late-settlement.d.ts +9 -0
  355. package/dist/src/runtime/automations/late-settlement.js +42 -0
  356. package/dist/src/runtime/automations/limits.d.ts +25 -0
  357. package/dist/src/runtime/automations/limits.js +41 -0
  358. package/dist/src/runtime/automations/model-capacity.d.ts +9 -0
  359. package/dist/src/runtime/automations/model-capacity.js +67 -0
  360. package/dist/src/runtime/automations/model-dependency-projection.d.ts +56 -0
  361. package/dist/src/runtime/automations/model-dependency-projection.js +88 -0
  362. package/dist/src/runtime/automations/node-transactions.d.ts +57 -0
  363. package/dist/src/runtime/automations/node-transactions.js +223 -0
  364. package/dist/src/runtime/automations/occurrence-preparation.d.ts +12 -0
  365. package/dist/src/runtime/automations/occurrence-preparation.js +257 -0
  366. package/dist/src/runtime/automations/permission-grants.d.ts +27 -0
  367. package/dist/src/runtime/automations/permission-grants.js +72 -0
  368. package/dist/src/runtime/automations/persistence.d.ts +9 -0
  369. package/dist/src/runtime/automations/persistence.js +13 -0
  370. package/dist/src/runtime/automations/publication-validation.d.ts +16 -0
  371. package/dist/src/runtime/automations/publication-validation.js +162 -0
  372. package/dist/src/runtime/automations/publication.d.ts +33 -0
  373. package/dist/src/runtime/automations/publication.js +97 -0
  374. package/dist/src/runtime/automations/replay-preparation.d.ts +7 -0
  375. package/dist/src/runtime/automations/replay-preparation.js +59 -0
  376. package/dist/src/runtime/automations/result-capacity.d.ts +5 -0
  377. package/dist/src/runtime/automations/result-capacity.js +9 -0
  378. package/dist/src/runtime/automations/result-publication.d.ts +10 -0
  379. package/dist/src/runtime/automations/result-publication.js +21 -0
  380. package/dist/src/runtime/automations/result-store.d.ts +17 -0
  381. package/dist/src/runtime/automations/result-store.js +109 -0
  382. package/dist/src/runtime/automations/retention.d.ts +12 -0
  383. package/dist/src/runtime/automations/retention.js +134 -0
  384. package/dist/src/runtime/automations/run-file-binding.d.ts +3 -0
  385. package/dist/src/runtime/automations/run-file-binding.js +19 -0
  386. package/dist/src/runtime/automations/run-output-summary.d.ts +25 -0
  387. package/dist/src/runtime/automations/run-output-summary.js +54 -0
  388. package/dist/src/runtime/automations/run-report.d.ts +83 -0
  389. package/dist/src/runtime/automations/run-report.js +121 -0
  390. package/dist/src/runtime/automations/runtime-executor.d.ts +16 -0
  391. package/dist/src/runtime/automations/runtime-executor.js +260 -0
  392. package/dist/src/runtime/automations/saved-agent-management.d.ts +16 -0
  393. package/dist/src/runtime/automations/saved-agent-management.js +94 -0
  394. package/dist/src/runtime/automations/service.d.ts +286 -0
  395. package/dist/src/runtime/automations/service.js +330 -0
  396. package/dist/src/runtime/automations/snapshot-staging.d.ts +13 -0
  397. package/dist/src/runtime/automations/snapshot-staging.js +126 -0
  398. package/dist/src/runtime/automations/source-attachment-access.d.ts +23 -0
  399. package/dist/src/runtime/automations/source-attachment-access.js +70 -0
  400. package/dist/src/runtime/automations/source-discovery.d.ts +25 -0
  401. package/dist/src/runtime/automations/source-discovery.js +179 -0
  402. package/dist/src/runtime/automations/starter-template-builder.d.ts +5 -0
  403. package/dist/src/runtime/automations/starter-template-builder.js +78 -0
  404. package/dist/src/runtime/automations/starter-template-contracts.d.ts +42 -0
  405. package/dist/src/runtime/automations/starter-template-contracts.js +1 -0
  406. package/dist/src/runtime/automations/starter-template-definitions.d.ts +3 -0
  407. package/dist/src/runtime/automations/starter-template-definitions.js +100 -0
  408. package/dist/src/runtime/automations/starter-template-showcases.d.ts +3 -0
  409. package/dist/src/runtime/automations/starter-template-showcases.js +154 -0
  410. package/dist/src/runtime/automations/starter-template-structure.d.ts +4 -0
  411. package/dist/src/runtime/automations/starter-template-structure.js +11 -0
  412. package/dist/src/runtime/automations/starter-templates.d.ts +20 -0
  413. package/dist/src/runtime/automations/starter-templates.js +75 -0
  414. package/dist/src/runtime/automations/step-evidence-effects.d.ts +46 -0
  415. package/dist/src/runtime/automations/step-evidence-effects.js +173 -0
  416. package/dist/src/runtime/automations/step-evidence-inputs.d.ts +22 -0
  417. package/dist/src/runtime/automations/step-evidence-inputs.js +105 -0
  418. package/dist/src/runtime/automations/step-evidence-output.d.ts +17 -0
  419. package/dist/src/runtime/automations/step-evidence-output.js +43 -0
  420. package/dist/src/runtime/automations/step-evidence.d.ts +24 -0
  421. package/dist/src/runtime/automations/step-evidence.js +53 -0
  422. package/dist/src/runtime/automations/step-interruption.d.ts +3 -0
  423. package/dist/src/runtime/automations/step-interruption.js +26 -0
  424. package/dist/src/runtime/automations/step-runner.d.ts +57 -0
  425. package/dist/src/runtime/automations/step-runner.js +278 -0
  426. package/dist/src/runtime/automations/storage-records.d.ts +133 -0
  427. package/dist/src/runtime/automations/storage-records.js +286 -0
  428. package/dist/src/runtime/automations/terminal-admission-receipt.d.ts +12 -0
  429. package/dist/src/runtime/automations/terminal-admission-receipt.js +39 -0
  430. package/dist/src/runtime/automations/tool-lifetimes.d.ts +13 -0
  431. package/dist/src/runtime/automations/tool-lifetimes.js +56 -0
  432. package/dist/src/runtime/automations/tool-step-executor.d.ts +32 -0
  433. package/dist/src/runtime/automations/tool-step-executor.js +136 -0
  434. package/dist/src/runtime/automations/tool-step-outcome.d.ts +24 -0
  435. package/dist/src/runtime/automations/tool-step-outcome.js +32 -0
  436. package/dist/src/runtime/automations/trigger-schedule.d.ts +7 -0
  437. package/dist/src/runtime/automations/trigger-schedule.js +19 -0
  438. package/dist/src/runtime/automations/working-directory.d.ts +3 -0
  439. package/dist/src/runtime/automations/working-directory.js +13 -0
  440. package/dist/src/runtime/capabilities/automation-builder/authoring-reference.d.ts +422 -0
  441. package/dist/src/runtime/capabilities/automation-builder/authoring-reference.js +130 -0
  442. package/dist/src/runtime/capabilities/automation-builder/creation-recipe.d.ts +9 -0
  443. package/dist/src/runtime/capabilities/automation-builder/creation-recipe.js +155 -0
  444. package/dist/src/runtime/capabilities/automation-builder/payload-instructions.d.ts +6 -0
  445. package/dist/src/runtime/capabilities/automation-builder/payload-instructions.js +6 -0
  446. package/dist/src/runtime/capabilities/automation-builder/payload-schema.d.ts +3 -0
  447. package/dist/src/runtime/capabilities/automation-builder/payload-schema.js +105 -0
  448. package/dist/src/runtime/capabilities/automation-builder/tool-contract.d.ts +65 -0
  449. package/dist/src/runtime/capabilities/automation-builder/tool-contract.js +27 -0
  450. package/dist/src/runtime/capabilities/automation-builder/tool-module.d.ts +4 -0
  451. package/dist/src/runtime/capabilities/automation-builder/tool-module.js +108 -0
  452. package/dist/src/runtime/capabilities/automations/authoring-catalog-contract.d.ts +78 -0
  453. package/dist/src/runtime/capabilities/automations/authoring-catalog-contract.js +28 -0
  454. package/dist/src/runtime/capabilities/automations/authoring-catalog.d.ts +320 -0
  455. package/dist/src/runtime/capabilities/automations/authoring-catalog.js +158 -0
  456. package/dist/src/runtime/capabilities/automations/authoring-input-contracts.d.ts +140 -0
  457. package/dist/src/runtime/capabilities/automations/authoring-input-contracts.js +36 -0
  458. package/dist/src/runtime/capabilities/automations/authoring-inputs.d.ts +9 -0
  459. package/dist/src/runtime/capabilities/automations/authoring-inputs.js +86 -0
  460. package/dist/src/runtime/capabilities/automations/authoring-preparation-limits.d.ts +5 -0
  461. package/dist/src/runtime/capabilities/automations/authoring-preparation-limits.js +5 -0
  462. package/dist/src/runtime/capabilities/automations/authoring-preparation.d.ts +483 -0
  463. package/dist/src/runtime/capabilities/automations/authoring-preparation.js +51 -0
  464. package/dist/src/runtime/capabilities/automations/draft-index.d.ts +14 -0
  465. package/dist/src/runtime/capabilities/automations/draft-index.js +26 -0
  466. package/dist/src/runtime/capabilities/automations/draft-operation-refs.d.ts +11 -0
  467. package/dist/src/runtime/capabilities/automations/draft-operation-refs.js +37 -0
  468. package/dist/src/runtime/capabilities/automations/draft-receipt-admission.d.ts +24 -0
  469. package/dist/src/runtime/capabilities/automations/draft-receipt-admission.js +36 -0
  470. package/dist/src/runtime/capabilities/automations/event-presentation.d.ts +3 -0
  471. package/dist/src/runtime/capabilities/automations/event-presentation.js +18 -0
  472. package/dist/src/runtime/capabilities/automations/model-tool-contract.d.ts +3 -0
  473. package/dist/src/runtime/capabilities/automations/model-tool-contract.js +34 -0
  474. package/dist/src/runtime/capabilities/automations/tool-contract.d.ts +3 -0
  475. package/dist/src/runtime/capabilities/automations/tool-contract.js +65 -0
  476. package/dist/src/runtime/capabilities/automations/tool-module.d.ts +4 -0
  477. package/dist/src/runtime/capabilities/automations/tool-module.js +286 -0
  478. package/dist/src/runtime/capabilities/configured-tool-registry.js +1 -1
  479. package/dist/src/runtime/capabilities/request-module-preparation.d.ts +2 -1
  480. package/dist/src/runtime/capabilities/request-module-preparation.js +3 -13
  481. package/dist/src/runtime/capabilities/request-property-narrowing.d.ts +3 -0
  482. package/dist/src/runtime/capabilities/request-property-narrowing.js +20 -0
  483. package/dist/src/runtime/capabilities/request-tool-resources.d.ts +33 -0
  484. package/dist/src/runtime/capabilities/request-tool-resources.js +92 -0
  485. package/dist/src/runtime/capabilities/request-tool-state.d.ts +13 -0
  486. package/dist/src/runtime/capabilities/request-tool-state.js +75 -0
  487. package/dist/src/runtime/capabilities/runtime-path-namespace.d.ts +6 -0
  488. package/dist/src/runtime/capabilities/runtime-path-namespace.js +48 -0
  489. package/dist/src/runtime/capabilities/runtime-target-path.d.ts +1 -0
  490. package/dist/src/runtime/capabilities/runtime-target-path.js +16 -8
  491. package/dist/src/runtime/capabilities/scheduling/create-operations.d.ts +6 -0
  492. package/dist/src/runtime/capabilities/scheduling/job-list-page.d.ts +5 -2
  493. package/dist/src/runtime/composition.d.ts +10 -3
  494. package/dist/src/runtime/context/canonical-capability-result.d.ts +4 -0
  495. package/dist/src/runtime/context/canonical-capability-result.js +80 -0
  496. package/dist/src/runtime/context/capability-brief-readmission.js +2 -5
  497. package/dist/src/runtime/context/capability-result-compaction-source.d.ts +12 -0
  498. package/dist/src/runtime/context/capability-result-compaction-source.js +61 -0
  499. package/dist/src/runtime/context/compacted-capability-result-receipt.d.ts +7 -0
  500. package/dist/src/runtime/context/compacted-capability-result-receipt.js +29 -0
  501. package/dist/src/runtime/context/compaction-source-invariant.d.ts +6 -0
  502. package/dist/src/runtime/context/compaction-source-invariant.js +12 -0
  503. package/dist/src/runtime/context/execution-compacted-evidence.d.ts +29 -0
  504. package/dist/src/runtime/context/execution-compacted-evidence.js +87 -0
  505. package/dist/src/runtime/context/execution-compaction-objective.d.ts +11 -0
  506. package/dist/src/runtime/context/execution-compaction-objective.js +12 -0
  507. package/dist/src/runtime/context/model-step-compaction.d.ts +9 -0
  508. package/dist/src/runtime/context/model-step-compaction.js +115 -128
  509. package/dist/src/runtime/context/operation-supervision-compacted-evidence.d.ts +37 -0
  510. package/dist/src/runtime/context/operation-supervision-compacted-evidence.js +69 -0
  511. package/dist/src/runtime/context/operation-supervision-evidence-binding.d.ts +29 -0
  512. package/dist/src/runtime/context/operation-supervision-evidence-binding.js +66 -0
  513. package/dist/src/runtime/context/operation-supervision-evidence-projection.d.ts +5 -0
  514. package/dist/src/runtime/context/operation-supervision-evidence-projection.js +133 -0
  515. package/dist/src/runtime/context/operation-supervision-evidence.d.ts +2 -1
  516. package/dist/src/runtime/context/operation-supervision-evidence.js +38 -37
  517. package/dist/src/runtime/context/request-context-contracts.d.ts +2 -0
  518. package/dist/src/runtime/context/request-context.js +5 -1
  519. package/dist/src/runtime/context/request-tool-results-checkpoint.d.ts +3 -0
  520. package/dist/src/runtime/context/request-tool-results-checkpoint.js +126 -0
  521. package/dist/src/runtime/context/request-tool-results-message-binding.d.ts +1 -0
  522. package/dist/src/runtime/context/request-tool-results-message-binding.js +10 -0
  523. package/dist/src/runtime/context/request-tool-results-supersession.d.ts +9 -0
  524. package/dist/src/runtime/context/request-tool-results-supersession.js +78 -0
  525. package/dist/src/runtime/context/request-tool-results.d.ts +3 -9
  526. package/dist/src/runtime/context/request-tool-results.js +15 -181
  527. package/dist/src/runtime/context/runtime-filesystem-scope.d.ts +21 -0
  528. package/dist/src/runtime/context/runtime-filesystem-scope.js +51 -0
  529. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.d.ts +3 -0
  530. package/dist/src/runtime/context/semantic-compaction/checkpoint-message.js +22 -0
  531. package/dist/src/runtime/context/semantic-compaction/contracts.d.ts +0 -3
  532. package/dist/src/runtime/context/semantic-compaction/contracts.js +9 -20
  533. package/dist/src/runtime/context/semantic-compaction/dependency-results.js +15 -1
  534. package/dist/src/runtime/context/semantic-compaction/evidence-scope.d.ts +7 -0
  535. package/dist/src/runtime/context/semantic-compaction/evidence-scope.js +7 -0
  536. package/dist/src/runtime/context/semantic-compaction/format.d.ts +2 -1
  537. package/dist/src/runtime/context/semantic-compaction/format.js +27 -19
  538. package/dist/src/runtime/context/semantic-compaction/generation-contracts.d.ts +18 -0
  539. package/dist/src/runtime/context/semantic-compaction/generation-contracts.js +1 -0
  540. package/dist/src/runtime/context/semantic-compaction/generation-input.d.ts +11 -0
  541. package/dist/src/runtime/context/semantic-compaction/generation-input.js +74 -0
  542. package/dist/src/runtime/context/semantic-compaction/generation-source-registration.d.ts +3 -0
  543. package/dist/src/runtime/context/semantic-compaction/generation-source-registration.js +12 -0
  544. package/dist/src/runtime/context/semantic-compaction/output-validation.d.ts +10 -0
  545. package/dist/src/runtime/context/semantic-compaction/output-validation.js +75 -0
  546. package/dist/src/runtime/context/semantic-compaction/parser.d.ts +2 -2
  547. package/dist/src/runtime/context/semantic-compaction/parser.js +13 -26
  548. package/dist/src/runtime/context/semantic-compaction/prompt.js +18 -5
  549. package/dist/src/runtime/context/semantic-compaction/repair-headroom.d.ts +4 -3
  550. package/dist/src/runtime/context/semantic-compaction/repair-headroom.js +10 -4
  551. package/dist/src/runtime/context/semantic-compaction/replacement-budget.d.ts +25 -0
  552. package/dist/src/runtime/context/semantic-compaction/replacement-budget.js +55 -0
  553. package/dist/src/runtime/context/semantic-compaction/run.d.ts +3 -14
  554. package/dist/src/runtime/context/semantic-compaction/run.js +27 -186
  555. package/dist/src/runtime/context/semantic-compaction/scope-quarantine.d.ts +17 -0
  556. package/dist/src/runtime/context/semantic-compaction/scope-quarantine.js +37 -0
  557. package/dist/src/runtime/context/semantic-compaction/snapshot.d.ts +13 -0
  558. package/dist/src/runtime/context/semantic-compaction/snapshot.js +28 -0
  559. package/dist/src/runtime/context/semantic-compaction/source-registration.d.ts +3 -0
  560. package/dist/src/runtime/context/semantic-compaction/source-registration.js +34 -0
  561. package/dist/src/runtime/context/semantic-compaction/source-slots.d.ts +5 -0
  562. package/dist/src/runtime/context/semantic-compaction/source-slots.js +4 -0
  563. package/dist/src/runtime/context/semantic-compaction/store.d.ts +8 -1
  564. package/dist/src/runtime/context/semantic-compaction/store.js +60 -8
  565. package/dist/src/runtime/context/semantic-compaction/super-child-result-source.d.ts +8 -0
  566. package/dist/src/runtime/context/semantic-compaction/super-child-result-source.js +50 -0
  567. package/dist/src/runtime/context/semantic-compaction/super-operation-source.d.ts +8 -0
  568. package/dist/src/runtime/context/semantic-compaction/super-operation-source.js +99 -0
  569. package/dist/src/runtime/context/semantic-compaction/super-reviewer-source.d.ts +16 -0
  570. package/dist/src/runtime/context/semantic-compaction/super-reviewer-source.js +37 -0
  571. package/dist/src/runtime/context/semantic-compaction/super-source-integrity.d.ts +21 -0
  572. package/dist/src/runtime/context/semantic-compaction/super-source-integrity.js +169 -0
  573. package/dist/src/runtime/context/semantic-compaction/super-source-message.d.ts +4 -0
  574. package/dist/src/runtime/context/semantic-compaction/super-source-message.js +23 -0
  575. package/dist/src/runtime/context/session-memory/contracts.d.ts +7 -2
  576. package/dist/src/runtime/context/session-memory/controller.js +24 -3
  577. package/dist/src/runtime/context/session-memory/model-step-controller.js +34 -20
  578. package/dist/src/runtime/context/session-memory/selection.js +7 -4
  579. package/dist/src/runtime/context/session-memory/snapshot-state.d.ts +9 -0
  580. package/dist/src/runtime/context/session-memory/snapshot-state.js +21 -0
  581. package/dist/src/runtime/context/session-memory/snapshot.d.ts +5 -0
  582. package/dist/src/runtime/context/session-memory/snapshot.js +9 -0
  583. package/dist/src/runtime/context/spark-conversation-policy.d.ts +4 -0
  584. package/dist/src/runtime/context/spark-conversation-policy.js +16 -0
  585. package/dist/src/runtime/context/super-compaction-failure-owner.d.ts +10 -0
  586. package/dist/src/runtime/context/super-compaction-failure-owner.js +64 -0
  587. package/dist/src/runtime/context/super-context-failure.d.ts +28 -0
  588. package/dist/src/runtime/context/super-context-failure.js +37 -0
  589. package/dist/src/runtime/context/super-context-policy.d.ts +3 -0
  590. package/dist/src/runtime/context/super-context-policy.js +35 -0
  591. package/dist/src/runtime/context/super-request-tool-results-checkpoint.d.ts +6 -0
  592. package/dist/src/runtime/context/super-request-tool-results-checkpoint.js +29 -0
  593. package/dist/src/runtime/context/super-worker-compaction-failure.d.ts +5 -0
  594. package/dist/src/runtime/context/super-worker-compaction-failure.js +19 -0
  595. package/dist/src/runtime/context/super-worker-compaction-projection.d.ts +8 -0
  596. package/dist/src/runtime/context/super-worker-compaction-projection.js +41 -0
  597. package/dist/src/runtime/context/super-worker-compaction-sidecar.d.ts +21 -0
  598. package/dist/src/runtime/context/super-worker-compaction-sidecar.js +67 -0
  599. package/dist/src/runtime/context/tool-media-projection.d.ts +10 -0
  600. package/dist/src/runtime/context/tool-media-projection.js +97 -0
  601. package/dist/src/runtime/context/verified-compaction-projection.d.ts +7 -0
  602. package/dist/src/runtime/context/verified-compaction-projection.js +16 -0
  603. package/dist/src/runtime/default-environment-adapters.d.ts +4 -0
  604. package/dist/src/runtime/default-environment-adapters.js +7 -1
  605. package/dist/src/runtime/lifecycle/request-finalizer.d.ts +4 -0
  606. package/dist/src/runtime/lifecycle/request-finalizer.js +45 -16
  607. package/dist/src/runtime/local-application.d.ts +304 -1
  608. package/dist/src/runtime/local-application.js +38 -3
  609. package/dist/src/runtime/local-host/app-learning-dispatch.d.ts +3 -0
  610. package/dist/src/runtime/local-host/app-learning-dispatch.js +46 -0
  611. package/dist/src/runtime/local-host/app-native-permissions.d.ts +20 -0
  612. package/dist/src/runtime/local-host/app-native-permissions.js +76 -0
  613. package/dist/src/runtime/local-host/app-owner.js +66 -25
  614. package/dist/src/runtime/local-host/app-request-approvals.d.ts +18 -0
  615. package/dist/src/runtime/local-host/app-request-approvals.js +150 -0
  616. package/dist/src/runtime/local-host/app-request-control.d.ts +19 -2
  617. package/dist/src/runtime/local-host/app-request-control.js +158 -62
  618. package/dist/src/runtime/local-host/app-request-delivery.d.ts +16 -0
  619. package/dist/src/runtime/local-host/app-request-delivery.js +59 -0
  620. package/dist/src/runtime/local-host/app-service-dispatch.d.ts +2 -1
  621. package/dist/src/runtime/local-host/app-service-dispatch.js +31 -0
  622. package/dist/src/runtime/local-host/client-learning.d.ts +10 -0
  623. package/dist/src/runtime/local-host/client-learning.js +44 -0
  624. package/dist/src/runtime/local-host/client-native-permissions.d.ts +4 -0
  625. package/dist/src/runtime/local-host/client-native-permissions.js +37 -0
  626. package/dist/src/runtime/local-host/client-requests.d.ts +14 -2
  627. package/dist/src/runtime/local-host/client-requests.js +198 -41
  628. package/dist/src/runtime/local-host/client-services.d.ts +274 -1
  629. package/dist/src/runtime/local-host/client-services.js +3 -2
  630. package/dist/src/runtime/local-host/contracts.d.ts +2 -0
  631. package/dist/src/runtime/local-host/learning-events.d.ts +4 -0
  632. package/dist/src/runtime/local-host/learning-events.js +24 -0
  633. package/dist/src/runtime/local-host/learning-preferences-input.d.ts +3 -0
  634. package/dist/src/runtime/local-host/learning-preferences-input.js +73 -0
  635. package/dist/src/runtime/local-host/pending-client-request.d.ts +40 -0
  636. package/dist/src/runtime/local-host/pending-client-request.js +152 -0
  637. package/dist/src/runtime/local-host/reconnectable-connection.d.ts +4 -0
  638. package/dist/src/runtime/local-host/reconnectable-connection.js +96 -0
  639. package/dist/src/runtime/local-host/request-approval-contracts.d.ts +31 -0
  640. package/dist/src/runtime/local-host/request-approval-contracts.js +1 -0
  641. package/dist/src/runtime/local-host/saved-approvals.d.ts +30 -0
  642. package/dist/src/runtime/local-host/saved-approvals.js +334 -0
  643. package/dist/src/runtime/local-host/startup-connection.d.ts +4 -1
  644. package/dist/src/runtime/local-host/startup-connection.js +1 -1
  645. package/dist/src/runtime/local-host/transport.js +5 -32
  646. package/dist/src/runtime/long-term-memory/automatic-management.d.ts +3 -0
  647. package/dist/src/runtime/long-term-memory/automatic-management.js +6 -0
  648. package/dist/src/runtime/long-term-memory/background-save-queue.js +1 -0
  649. package/dist/src/runtime/long-term-memory/candidate-preparation.d.ts +1 -2
  650. package/dist/src/runtime/long-term-memory/candidate-preparation.js +5 -4
  651. package/dist/src/runtime/long-term-memory/candidate-processing.d.ts +5 -3
  652. package/dist/src/runtime/long-term-memory/candidate-processing.js +78 -31
  653. package/dist/src/runtime/long-term-memory/change-notifications.d.ts +10 -0
  654. package/dist/src/runtime/long-term-memory/change-notifications.js +45 -0
  655. package/dist/src/runtime/long-term-memory/contracts.d.ts +24 -3
  656. package/dist/src/runtime/long-term-memory/conversation-authoring/context.d.ts +14 -0
  657. package/dist/src/runtime/long-term-memory/conversation-authoring/context.js +55 -0
  658. package/dist/src/runtime/long-term-memory/conversation-authoring/contract.d.ts +54 -0
  659. package/dist/src/runtime/long-term-memory/conversation-authoring/contract.js +86 -0
  660. package/dist/src/runtime/long-term-memory/conversation-authoring/prompt.d.ts +4 -0
  661. package/dist/src/runtime/long-term-memory/conversation-authoring/prompt.js +19 -0
  662. package/dist/src/runtime/long-term-memory/conversation-candidates.d.ts +29 -0
  663. package/dist/src/runtime/long-term-memory/conversation-candidates.js +71 -0
  664. package/dist/src/runtime/long-term-memory/diagnostics.js +10 -0
  665. package/dist/src/runtime/long-term-memory/management/contracts.d.ts +5 -0
  666. package/dist/src/runtime/long-term-memory/management/mutations.js +25 -3
  667. package/dist/src/runtime/long-term-memory/management/queries.js +6 -2
  668. package/dist/src/runtime/long-term-memory/management/search.js +5 -1
  669. package/dist/src/runtime/long-term-memory/management/validation.d.ts +2 -0
  670. package/dist/src/runtime/long-term-memory/management/validation.js +8 -0
  671. package/dist/src/runtime/long-term-memory/maturation/apply-diagnostics.d.ts +10 -0
  672. package/dist/src/runtime/long-term-memory/maturation/apply-diagnostics.js +47 -0
  673. package/dist/src/runtime/long-term-memory/maturation/authoring-policy.d.ts +2 -0
  674. package/dist/src/runtime/long-term-memory/maturation/authoring-policy.js +6 -0
  675. package/dist/src/runtime/long-term-memory/maturation/candidate-promotion.d.ts +12 -0
  676. package/dist/src/runtime/long-term-memory/maturation/candidate-promotion.js +51 -0
  677. package/dist/src/runtime/long-term-memory/maturation/context.d.ts +12 -0
  678. package/dist/src/runtime/long-term-memory/maturation/context.js +67 -0
  679. package/dist/src/runtime/long-term-memory/maturation/contracts.d.ts +120 -0
  680. package/dist/src/runtime/long-term-memory/maturation/contracts.js +1 -0
  681. package/dist/src/runtime/long-term-memory/maturation/conversation-evidence.d.ts +3 -0
  682. package/dist/src/runtime/long-term-memory/maturation/conversation-evidence.js +16 -0
  683. package/dist/src/runtime/long-term-memory/maturation/current-bindings.d.ts +4 -0
  684. package/dist/src/runtime/long-term-memory/maturation/current-bindings.js +53 -0
  685. package/dist/src/runtime/long-term-memory/maturation/decision-envelope.d.ts +22 -0
  686. package/dist/src/runtime/long-term-memory/maturation/decision-envelope.js +66 -0
  687. package/dist/src/runtime/long-term-memory/maturation/decisions.d.ts +5 -0
  688. package/dist/src/runtime/long-term-memory/maturation/decisions.js +131 -0
  689. package/dist/src/runtime/long-term-memory/maturation/embedding-binding.d.ts +5 -0
  690. package/dist/src/runtime/long-term-memory/maturation/embedding-binding.js +20 -0
  691. package/dist/src/runtime/long-term-memory/maturation/embedding-reservation.d.ts +3 -0
  692. package/dist/src/runtime/long-term-memory/maturation/embedding-reservation.js +17 -0
  693. package/dist/src/runtime/long-term-memory/maturation/evidence-contracts.d.ts +33 -0
  694. package/dist/src/runtime/long-term-memory/maturation/evidence-contracts.js +1 -0
  695. package/dist/src/runtime/long-term-memory/maturation/evidence.d.ts +7 -0
  696. package/dist/src/runtime/long-term-memory/maturation/evidence.js +42 -0
  697. package/dist/src/runtime/long-term-memory/maturation/maintenance-clock.d.ts +31 -0
  698. package/dist/src/runtime/long-term-memory/maturation/maintenance-clock.js +118 -0
  699. package/dist/src/runtime/long-term-memory/maturation/maintenance.d.ts +5 -0
  700. package/dist/src/runtime/long-term-memory/maturation/maintenance.js +40 -0
  701. package/dist/src/runtime/long-term-memory/maturation/memory-update.d.ts +12 -0
  702. package/dist/src/runtime/long-term-memory/maturation/memory-update.js +43 -0
  703. package/dist/src/runtime/long-term-memory/maturation/overview.d.ts +4 -0
  704. package/dist/src/runtime/long-term-memory/maturation/overview.js +30 -0
  705. package/dist/src/runtime/long-term-memory/maturation/policy.d.ts +5 -0
  706. package/dist/src/runtime/long-term-memory/maturation/policy.js +15 -0
  707. package/dist/src/runtime/long-term-memory/maturation/receipt-capacity.d.ts +8 -0
  708. package/dist/src/runtime/long-term-memory/maturation/receipt-capacity.js +33 -0
  709. package/dist/src/runtime/long-term-memory/maturation/retention-lifecycle.d.ts +13 -0
  710. package/dist/src/runtime/long-term-memory/maturation/retention-lifecycle.js +56 -0
  711. package/dist/src/runtime/long-term-memory/maturation/retention.d.ts +8 -0
  712. package/dist/src/runtime/long-term-memory/maturation/retention.js +42 -0
  713. package/dist/src/runtime/long-term-memory/maturation/scheduled-review.d.ts +11 -0
  714. package/dist/src/runtime/long-term-memory/maturation/scheduled-review.js +97 -0
  715. package/dist/src/runtime/long-term-memory/maturation/service.d.ts +7 -0
  716. package/dist/src/runtime/long-term-memory/maturation/service.js +105 -0
  717. package/dist/src/runtime/long-term-memory/maturation/source-state.d.ts +4 -0
  718. package/dist/src/runtime/long-term-memory/maturation/source-state.js +66 -0
  719. package/dist/src/runtime/long-term-memory/maturation/sources.d.ts +3 -0
  720. package/dist/src/runtime/long-term-memory/maturation/sources.js +12 -0
  721. package/dist/src/runtime/long-term-memory/maturation/state.d.ts +3 -0
  722. package/dist/src/runtime/long-term-memory/maturation/state.js +84 -0
  723. package/dist/src/runtime/long-term-memory/maturation/transition.d.ts +11 -0
  724. package/dist/src/runtime/long-term-memory/maturation/transition.js +126 -0
  725. package/dist/src/runtime/long-term-memory/maturation/write-targets.d.ts +4 -0
  726. package/dist/src/runtime/long-term-memory/maturation/write-targets.js +22 -0
  727. package/dist/src/runtime/long-term-memory/observation-contracts.d.ts +40 -0
  728. package/dist/src/runtime/long-term-memory/observation-contracts.js +1 -0
  729. package/dist/src/runtime/long-term-memory/observation-persistence.d.ts +10 -0
  730. package/dist/src/runtime/long-term-memory/observation-persistence.js +78 -0
  731. package/dist/src/runtime/long-term-memory/observation-receipt-retention.d.ts +3 -0
  732. package/dist/src/runtime/long-term-memory/observation-receipt-retention.js +18 -0
  733. package/dist/src/runtime/long-term-memory/observation-source.d.ts +3 -0
  734. package/dist/src/runtime/long-term-memory/observation-source.js +24 -0
  735. package/dist/src/runtime/long-term-memory/observation-state.d.ts +4 -0
  736. package/dist/src/runtime/long-term-memory/observation-state.js +58 -0
  737. package/dist/src/runtime/long-term-memory/projection.js +17 -1
  738. package/dist/src/runtime/long-term-memory/repository-state.js +105 -4
  739. package/dist/src/runtime/long-term-memory/service.js +32 -3
  740. package/dist/src/runtime/model/context-compaction-admission.d.ts +21 -0
  741. package/dist/src/runtime/model/context-compaction-admission.js +214 -0
  742. package/dist/src/runtime/model/context-compaction-contracts.d.ts +32 -0
  743. package/dist/src/runtime/model/context-compaction-contracts.js +1 -0
  744. package/dist/src/runtime/model/context-compaction-diagnostics.d.ts +33 -0
  745. package/dist/src/runtime/model/context-compaction-diagnostics.js +97 -0
  746. package/dist/src/runtime/model/context-compaction-stage-plan.d.ts +3 -0
  747. package/dist/src/runtime/model/context-compaction-stage-plan.js +28 -0
  748. package/dist/src/runtime/model/input-token-count.d.ts +1 -0
  749. package/dist/src/runtime/model/input-token-count.js +4 -1
  750. package/dist/src/runtime/model/invalid-output-failure.d.ts +13 -0
  751. package/dist/src/runtime/model/invalid-output-failure.js +96 -0
  752. package/dist/src/runtime/model/invocation-identity.d.ts +2 -0
  753. package/dist/src/runtime/model/invocation-identity.js +6 -0
  754. package/dist/src/runtime/model/invoke-raw-step.js +5 -1
  755. package/dist/src/runtime/model/invoke-step.js +99 -127
  756. package/dist/src/runtime/model/invoke-structured-step.d.ts +2 -1
  757. package/dist/src/runtime/model/invoke-structured-step.js +7 -3
  758. package/dist/src/runtime/model/model-context-assessment.d.ts +17 -0
  759. package/dist/src/runtime/model/model-context-assessment.js +51 -0
  760. package/dist/src/runtime/model/model-context-budget.d.ts +5 -0
  761. package/dist/src/runtime/model/model-context-budget.js +9 -0
  762. package/dist/src/runtime/model/model-step-acceptance.d.ts +4 -0
  763. package/dist/src/runtime/model/model-step-acceptance.js +28 -0
  764. package/dist/src/runtime/model/model-step-port.d.ts +8 -15
  765. package/dist/src/runtime/model/model-step-steering.d.ts +14 -1
  766. package/dist/src/runtime/model/model-step-steering.js +23 -0
  767. package/dist/src/runtime/model/provider-completion.d.ts +5 -2
  768. package/dist/src/runtime/model/provider-completion.js +7 -3
  769. package/dist/src/runtime/orchestration/capability-adapters/result.d.ts +6 -1
  770. package/dist/src/runtime/orchestration/capability-adapters/result.js +14 -7
  771. package/dist/src/runtime/orchestration/final-response/authoring-contract.d.ts +3 -1
  772. package/dist/src/runtime/orchestration/final-response/authoring-contract.js +5 -30
  773. package/dist/src/runtime/orchestration/final-response/finalization.d.ts +2 -0
  774. package/dist/src/runtime/orchestration/final-response/finalization.js +8 -2
  775. package/dist/src/runtime/orchestration/final-response/format.js +8 -28
  776. package/dist/src/runtime/orchestration/final-response/invoke.d.ts +2 -0
  777. package/dist/src/runtime/orchestration/final-response/invoke.js +1 -0
  778. package/dist/src/runtime/orchestration/lifecycle/execution-budgets.d.ts +8 -0
  779. package/dist/src/runtime/orchestration/lifecycle/execution-budgets.js +13 -0
  780. package/dist/src/runtime/orchestration/lifecycle/request-lifecycle.d.ts +21 -0
  781. package/dist/src/runtime/orchestration/lifecycle/request-lifecycle.js +121 -14
  782. package/dist/src/runtime/orchestration/role-calls/candidate-validation.js +2 -1
  783. package/dist/src/runtime/orchestration/role-calls/checkpoint-contract.d.ts +8 -0
  784. package/dist/src/runtime/orchestration/role-calls/checkpoint-contract.js +1 -0
  785. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.d.ts +4 -0
  786. package/dist/src/runtime/orchestration/role-calls/checkpoint-state.js +79 -0
  787. package/dist/src/runtime/orchestration/role-calls/checkpoint.d.ts +8 -0
  788. package/dist/src/runtime/orchestration/role-calls/checkpoint.js +15 -0
  789. package/dist/src/runtime/orchestration/role-calls/child-return.d.ts +5 -1
  790. package/dist/src/runtime/orchestration/role-calls/child-return.js +5 -4
  791. package/dist/src/runtime/orchestration/role-calls/command-dispatch/child-transitions.js +4 -3
  792. package/dist/src/runtime/orchestration/role-calls/contracts.d.ts +2 -0
  793. package/dist/src/runtime/orchestration/role-calls/contracts.js +1 -0
  794. package/dist/src/runtime/orchestration/role-calls/index.d.ts +1 -0
  795. package/dist/src/runtime/orchestration/role-calls/index.js +1 -0
  796. package/dist/src/runtime/orchestration/role-calls/ledger.d.ts +2 -0
  797. package/dist/src/runtime/orchestration/role-calls/ledger.js +8 -5
  798. package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.d.ts +2 -0
  799. package/dist/src/runtime/orchestration/role-calls/operation-supervision-issuance.js +5 -0
  800. package/dist/src/runtime/orchestration/role-calls/role-result-text.d.ts +2 -0
  801. package/dist/src/runtime/orchestration/role-calls/role-result-text.js +4 -0
  802. package/dist/src/runtime/orchestration/role-executors/activation/loop.d.ts +6 -6
  803. package/dist/src/runtime/orchestration/role-executors/activation/loop.js +40 -5
  804. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.d.ts +3 -0
  805. package/dist/src/runtime/orchestration/role-executors/activation/model-output-failure.js +98 -0
  806. package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.d.ts +1 -1
  807. package/dist/src/runtime/orchestration/role-executors/activation/result-normalization.js +6 -5
  808. package/dist/src/runtime/orchestration/role-executors/approval-continuation.d.ts +20 -0
  809. package/dist/src/runtime/orchestration/role-executors/approval-continuation.js +34 -0
  810. package/dist/src/runtime/orchestration/role-executors/child-invocation/entered-child.d.ts +19 -0
  811. package/dist/src/runtime/orchestration/role-executors/child-invocation/entered-child.js +55 -0
  812. package/dist/src/runtime/orchestration/role-executors/child-invocation/state-validation.d.ts +5 -5
  813. package/dist/src/runtime/orchestration/role-executors/child-invocation/state-validation.js +2 -2
  814. package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.d.ts +7 -7
  815. package/dist/src/runtime/orchestration/role-executors/child-invocation/transaction.js +47 -15
  816. package/dist/src/runtime/orchestration/role-executors/contracts.d.ts +37 -20
  817. package/dist/src/runtime/orchestration/role-executors/registry.js +13 -6
  818. package/dist/src/runtime/orchestration/state-head-checkpoint.d.ts +4 -0
  819. package/dist/src/runtime/orchestration/state-head-checkpoint.js +10 -0
  820. package/dist/src/runtime/orchestration/state-head-contracts.d.ts +100 -0
  821. package/dist/src/runtime/orchestration/state-head-contracts.js +1 -0
  822. package/dist/src/runtime/orchestration/state-head.d.ts +2 -99
  823. package/dist/src/runtime/orchestration/state-head.js +4 -3
  824. package/dist/src/runtime/orchestration/worker-capabilities/approval-contracts.d.ts +47 -0
  825. package/dist/src/runtime/orchestration/worker-capabilities/approval-contracts.js +6 -0
  826. package/dist/src/runtime/orchestration/worker-capabilities/binding/adapter-normalization.js +3 -0
  827. package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.d.ts +2 -0
  828. package/dist/src/runtime/orchestration/worker-capabilities/binding/bound-capability-session.js +4 -0
  829. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.d.ts +2 -0
  830. package/dist/src/runtime/orchestration/worker-capabilities/binding/create-binding.js +1 -0
  831. package/dist/src/runtime/orchestration/worker-capabilities/binding/invocation-preparation.js +1 -8
  832. package/dist/src/runtime/orchestration/worker-capabilities/contracts.d.ts +22 -6
  833. package/dist/src/runtime/orchestration/worker-capabilities/contracts.js +1 -1
  834. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.d.ts +30 -0
  835. package/dist/src/runtime/orchestration/worker-capabilities/execution/approval-group.js +171 -0
  836. package/dist/src/runtime/orchestration/worker-capabilities/execution/context-projection.js +2 -1
  837. package/dist/src/runtime/orchestration/worker-capabilities/execution/invocation-preparation.js +12 -0
  838. package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.d.ts +3 -0
  839. package/dist/src/runtime/orchestration/worker-capabilities/execution/ledger-transaction.js +37 -52
  840. package/dist/src/runtime/orchestration/worker-capabilities/execution/preparation-rejection.d.ts +66 -0
  841. package/dist/src/runtime/orchestration/worker-capabilities/execution/preparation-rejection.js +37 -0
  842. package/dist/src/runtime/orchestration/worker-capabilities/execution/settle-prepared.d.ts +15 -0
  843. package/dist/src/runtime/orchestration/worker-capabilities/execution/settle-prepared.js +43 -0
  844. package/dist/src/runtime/orchestration/worker-capabilities/execution.d.ts +3 -0
  845. package/dist/src/runtime/orchestration/worker-capabilities/execution.js +4 -1
  846. package/dist/src/runtime/orchestration/worker-capabilities/index.d.ts +2 -0
  847. package/dist/src/runtime/orchestration/worker-capabilities/index.js +2 -0
  848. package/dist/src/runtime/orchestration/worker-capabilities/payload-assignment-validation.js +9 -9
  849. package/dist/src/runtime/orchestration/worker-capabilities/payload-author.js +11 -37
  850. package/dist/src/runtime/orchestration/worker-capabilities/payload-body-normalization.d.ts +12 -0
  851. package/dist/src/runtime/orchestration/worker-capabilities/payload-body-normalization.js +80 -0
  852. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.d.ts +3 -0
  853. package/dist/src/runtime/orchestration/worker-capabilities/payload-compaction-transport.js +14 -0
  854. package/dist/src/runtime/orchestration/worker-capabilities/payload-context-snapshot.d.ts +2 -0
  855. package/dist/src/runtime/orchestration/worker-capabilities/payload-context-snapshot.js +12 -0
  856. package/dist/src/runtime/orchestration/worker-capabilities/payload-contracts.d.ts +5 -1
  857. package/dist/src/runtime/orchestration/worker-capabilities/payload-instructions.js +1 -1
  858. package/dist/src/runtime/passive-learning/active-batches.d.ts +11 -0
  859. package/dist/src/runtime/passive-learning/active-batches.js +29 -0
  860. package/dist/src/runtime/passive-learning/activity-permissions.d.ts +7 -0
  861. package/dist/src/runtime/passive-learning/activity-permissions.js +88 -0
  862. package/dist/src/runtime/passive-learning/analysis-clock.d.ts +14 -0
  863. package/dist/src/runtime/passive-learning/analysis-clock.js +46 -0
  864. package/dist/src/runtime/passive-learning/analysis-schedule.d.ts +6 -0
  865. package/dist/src/runtime/passive-learning/analysis-schedule.js +69 -0
  866. package/dist/src/runtime/passive-learning/application-catalog.d.ts +13 -0
  867. package/dist/src/runtime/passive-learning/application-catalog.js +29 -0
  868. package/dist/src/runtime/passive-learning/application-controls.d.ts +10 -0
  869. package/dist/src/runtime/passive-learning/application-controls.js +14 -0
  870. package/dist/src/runtime/passive-learning/application-pending.d.ts +15 -0
  871. package/dist/src/runtime/passive-learning/application-pending.js +44 -0
  872. package/dist/src/runtime/passive-learning/application-policy.d.ts +7 -0
  873. package/dist/src/runtime/passive-learning/application-policy.js +26 -0
  874. package/dist/src/runtime/passive-learning/background-dependencies.d.ts +37 -0
  875. package/dist/src/runtime/passive-learning/background-dependencies.js +1 -0
  876. package/dist/src/runtime/passive-learning/background-lifecycle.d.ts +22 -0
  877. package/dist/src/runtime/passive-learning/background-lifecycle.js +75 -0
  878. package/dist/src/runtime/passive-learning/batch-lifecycle.d.ts +7 -0
  879. package/dist/src/runtime/passive-learning/batch-lifecycle.js +48 -0
  880. package/dist/src/runtime/passive-learning/batch-partition.d.ts +10 -0
  881. package/dist/src/runtime/passive-learning/batch-partition.js +46 -0
  882. package/dist/src/runtime/passive-learning/batch-receipt.d.ts +15 -0
  883. package/dist/src/runtime/passive-learning/batch-receipt.js +34 -0
  884. package/dist/src/runtime/passive-learning/collection-source.d.ts +24 -0
  885. package/dist/src/runtime/passive-learning/collection-source.js +96 -0
  886. package/dist/src/runtime/passive-learning/collection-window-clock.d.ts +21 -0
  887. package/dist/src/runtime/passive-learning/collection-window-clock.js +55 -0
  888. package/dist/src/runtime/passive-learning/contracts.d.ts +167 -0
  889. package/dist/src/runtime/passive-learning/contracts.js +1 -0
  890. package/dist/src/runtime/passive-learning/control-policy.d.ts +9 -0
  891. package/dist/src/runtime/passive-learning/control-policy.js +52 -0
  892. package/dist/src/runtime/passive-learning/independent-preferences.d.ts +2 -0
  893. package/dist/src/runtime/passive-learning/independent-preferences.js +39 -0
  894. package/dist/src/runtime/passive-learning/journal.d.ts +37 -0
  895. package/dist/src/runtime/passive-learning/journal.js +185 -0
  896. package/dist/src/runtime/passive-learning/maturation-preferences.d.ts +8 -0
  897. package/dist/src/runtime/passive-learning/maturation-preferences.js +40 -0
  898. package/dist/src/runtime/passive-learning/memory-review-format.d.ts +51 -0
  899. package/dist/src/runtime/passive-learning/memory-review-format.js +21 -0
  900. package/dist/src/runtime/passive-learning/model.d.ts +11 -0
  901. package/dist/src/runtime/passive-learning/model.js +230 -0
  902. package/dist/src/runtime/passive-learning/proactive/agent.d.ts +62 -0
  903. package/dist/src/runtime/passive-learning/proactive/agent.js +385 -0
  904. package/dist/src/runtime/passive-learning/proactive/contracts.d.ts +96 -0
  905. package/dist/src/runtime/passive-learning/proactive/contracts.js +143 -0
  906. package/dist/src/runtime/passive-learning/proactive/conversation-style-prompt.d.ts +1 -0
  907. package/dist/src/runtime/passive-learning/proactive/conversation-style-prompt.js +6 -0
  908. package/dist/src/runtime/passive-learning/proactive/conversation-style-reference.d.ts +30 -0
  909. package/dist/src/runtime/passive-learning/proactive/conversation-style-reference.js +61 -0
  910. package/dist/src/runtime/passive-learning/proactive/handoff-brief.d.ts +1 -0
  911. package/dist/src/runtime/passive-learning/proactive/handoff-brief.js +4 -0
  912. package/dist/src/runtime/passive-learning/proactive/model-output.d.ts +3 -0
  913. package/dist/src/runtime/passive-learning/proactive/model-output.js +53 -0
  914. package/dist/src/runtime/passive-learning/proactive/model.d.ts +79 -0
  915. package/dist/src/runtime/passive-learning/proactive/model.js +147 -0
  916. package/dist/src/runtime/passive-learning/proactive/prompt.d.ts +1 -0
  917. package/dist/src/runtime/passive-learning/proactive/prompt.js +10 -0
  918. package/dist/src/runtime/passive-learning/proactive/staged-agent-review.d.ts +16 -0
  919. package/dist/src/runtime/passive-learning/proactive/staged-agent-review.js +54 -0
  920. package/dist/src/runtime/passive-learning/proactive/staged-authoring.d.ts +14 -0
  921. package/dist/src/runtime/passive-learning/proactive/staged-authoring.js +27 -0
  922. package/dist/src/runtime/passive-learning/proactive/staged-context.d.ts +42 -0
  923. package/dist/src/runtime/passive-learning/proactive/staged-context.js +101 -0
  924. package/dist/src/runtime/passive-learning/proactive/staged-contract.d.ts +3 -0
  925. package/dist/src/runtime/passive-learning/proactive/staged-contract.js +4 -0
  926. package/dist/src/runtime/passive-learning/proactive/staged-format.d.ts +9 -0
  927. package/dist/src/runtime/passive-learning/proactive/staged-format.js +20 -0
  928. package/dist/src/runtime/passive-learning/proactive/staged-output.d.ts +15 -0
  929. package/dist/src/runtime/passive-learning/proactive/staged-output.js +93 -0
  930. package/dist/src/runtime/passive-learning/proactive/staged-progress-store.d.ts +17 -0
  931. package/dist/src/runtime/passive-learning/proactive/staged-progress-store.js +57 -0
  932. package/dist/src/runtime/passive-learning/proactive/staged-prompt.d.ts +6 -0
  933. package/dist/src/runtime/passive-learning/proactive/staged-prompt.js +24 -0
  934. package/dist/src/runtime/passive-learning/proactive/staged-review.d.ts +5 -0
  935. package/dist/src/runtime/passive-learning/proactive/staged-review.js +40 -0
  936. package/dist/src/runtime/passive-learning/proactive/store.d.ts +65 -0
  937. package/dist/src/runtime/passive-learning/proactive/store.js +378 -0
  938. package/dist/src/runtime/passive-learning/process-batch.d.ts +16 -0
  939. package/dist/src/runtime/passive-learning/process-batch.js +90 -0
  940. package/dist/src/runtime/passive-learning/processing-budget-policy.d.ts +14 -0
  941. package/dist/src/runtime/passive-learning/processing-budget-policy.js +33 -0
  942. package/dist/src/runtime/passive-learning/processing-cycle.d.ts +42 -0
  943. package/dist/src/runtime/passive-learning/processing-cycle.js +155 -0
  944. package/dist/src/runtime/passive-learning/processing-pass.d.ts +29 -0
  945. package/dist/src/runtime/passive-learning/processing-pass.js +104 -0
  946. package/dist/src/runtime/passive-learning/processing-trigger.d.ts +7 -0
  947. package/dist/src/runtime/passive-learning/processing-trigger.js +31 -0
  948. package/dist/src/runtime/passive-learning/queue.d.ts +29 -0
  949. package/dist/src/runtime/passive-learning/queue.js +182 -0
  950. package/dist/src/runtime/passive-learning/reassessment-receipt.d.ts +20 -0
  951. package/dist/src/runtime/passive-learning/reassessment-receipt.js +18 -0
  952. package/dist/src/runtime/passive-learning/reassessment-state.d.ts +25 -0
  953. package/dist/src/runtime/passive-learning/reassessment-state.js +156 -0
  954. package/dist/src/runtime/passive-learning/resources/admission.d.ts +23 -0
  955. package/dist/src/runtime/passive-learning/resources/admission.js +92 -0
  956. package/dist/src/runtime/passive-learning/resources/budget.d.ts +21 -0
  957. package/dist/src/runtime/passive-learning/resources/budget.js +78 -0
  958. package/dist/src/runtime/passive-learning/resources/contracts.d.ts +29 -0
  959. package/dist/src/runtime/passive-learning/resources/contracts.js +26 -0
  960. package/dist/src/runtime/passive-learning/resources/day-window.d.ts +3 -0
  961. package/dist/src/runtime/passive-learning/resources/day-window.js +39 -0
  962. package/dist/src/runtime/passive-learning/resources/gateway.d.ts +13 -0
  963. package/dist/src/runtime/passive-learning/resources/gateway.js +38 -0
  964. package/dist/src/runtime/passive-learning/resources/store.d.ts +13 -0
  965. package/dist/src/runtime/passive-learning/resources/store.js +96 -0
  966. package/dist/src/runtime/passive-learning/review-batch.d.ts +20 -0
  967. package/dist/src/runtime/passive-learning/review-batch.js +56 -0
  968. package/dist/src/runtime/passive-learning/review-capacity.d.ts +5 -0
  969. package/dist/src/runtime/passive-learning/review-capacity.js +19 -0
  970. package/dist/src/runtime/passive-learning/review-decision-adapter.d.ts +17 -0
  971. package/dist/src/runtime/passive-learning/review-decision-adapter.js +145 -0
  972. package/dist/src/runtime/passive-learning/review-invocation.d.ts +7 -0
  973. package/dist/src/runtime/passive-learning/review-invocation.js +47 -0
  974. package/dist/src/runtime/passive-learning/review-method.d.ts +3 -0
  975. package/dist/src/runtime/passive-learning/review-method.js +11 -0
  976. package/dist/src/runtime/passive-learning/review-output.d.ts +2 -0
  977. package/dist/src/runtime/passive-learning/review-output.js +17 -0
  978. package/dist/src/runtime/passive-learning/review-progress.d.ts +25 -0
  979. package/dist/src/runtime/passive-learning/review-progress.js +59 -0
  980. package/dist/src/runtime/passive-learning/review-references.d.ts +63 -0
  981. package/dist/src/runtime/passive-learning/review-references.js +44 -0
  982. package/dist/src/runtime/passive-learning/review-response-format.d.ts +4 -0
  983. package/dist/src/runtime/passive-learning/review-response-format.js +72 -0
  984. package/dist/src/runtime/passive-learning/scheduled-reassessment.d.ts +52 -0
  985. package/dist/src/runtime/passive-learning/scheduled-reassessment.js +262 -0
  986. package/dist/src/runtime/passive-learning/service-status.d.ts +24 -0
  987. package/dist/src/runtime/passive-learning/service-status.js +61 -0
  988. package/dist/src/runtime/passive-learning/service.d.ts +16 -0
  989. package/dist/src/runtime/passive-learning/service.js +463 -0
  990. package/dist/src/runtime/passive-learning/spark-chat-preferences.d.ts +3 -0
  991. package/dist/src/runtime/passive-learning/spark-chat-preferences.js +8 -0
  992. package/dist/src/runtime/passive-learning/staged-learning-assessment.d.ts +11 -0
  993. package/dist/src/runtime/passive-learning/staged-learning-assessment.js +30 -0
  994. package/dist/src/runtime/passive-learning/staged-learning-authoring.d.ts +11 -0
  995. package/dist/src/runtime/passive-learning/staged-learning-authoring.js +29 -0
  996. package/dist/src/runtime/passive-learning/staged-learning-changes.d.ts +5 -0
  997. package/dist/src/runtime/passive-learning/staged-learning-changes.js +56 -0
  998. package/dist/src/runtime/passive-learning/staged-learning-review.d.ts +5 -0
  999. package/dist/src/runtime/passive-learning/staged-learning-review.js +55 -0
  1000. package/dist/src/runtime/passive-learning/staged-learning-selection.d.ts +18 -0
  1001. package/dist/src/runtime/passive-learning/staged-learning-selection.js +57 -0
  1002. package/dist/src/runtime/passive-learning/staged-learning-stage.d.ts +75 -0
  1003. package/dist/src/runtime/passive-learning/staged-learning-stage.js +60 -0
  1004. package/dist/src/runtime/passive-learning/staged-learning-timing.d.ts +3 -0
  1005. package/dist/src/runtime/passive-learning/staged-learning-timing.js +20 -0
  1006. package/dist/src/runtime/passive-learning/staged-review-call.d.ts +26 -0
  1007. package/dist/src/runtime/passive-learning/staged-review-call.js +141 -0
  1008. package/dist/src/runtime/passive-learning/status-projection.d.ts +10 -0
  1009. package/dist/src/runtime/passive-learning/status-projection.js +148 -0
  1010. package/dist/src/runtime/passive-learning/store.d.ts +14 -0
  1011. package/dist/src/runtime/passive-learning/store.js +159 -0
  1012. package/dist/src/runtime/plugins/manifest-projection.js +4 -0
  1013. package/dist/src/runtime/plugins/manifest-validator.js +7 -0
  1014. package/dist/src/runtime/ports.d.ts +21 -2
  1015. package/dist/src/runtime/request/approval-continuation.d.ts +24 -0
  1016. package/dist/src/runtime/request/approval-continuation.js +62 -0
  1017. package/dist/src/runtime/request/approval-wait/activation-events.d.ts +36 -0
  1018. package/dist/src/runtime/request/approval-wait/activation-events.js +154 -0
  1019. package/dist/src/runtime/request/approval-wait/approval-gate.d.ts +9 -0
  1020. package/dist/src/runtime/request/approval-wait/approval-gate.js +65 -0
  1021. package/dist/src/runtime/request/approval-wait/failure.d.ts +8 -0
  1022. package/dist/src/runtime/request/approval-wait/failure.js +27 -0
  1023. package/dist/src/runtime/request/approval-wait/park.d.ts +15 -0
  1024. package/dist/src/runtime/request/approval-wait/park.js +89 -0
  1025. package/dist/src/runtime/request/approval-wait/preflight.d.ts +5 -0
  1026. package/dist/src/runtime/request/approval-wait/preflight.js +155 -0
  1027. package/dist/src/runtime/request/approval-wait/snapshot-data.d.ts +2 -0
  1028. package/dist/src/runtime/request/approval-wait/snapshot-data.js +31 -0
  1029. package/dist/src/runtime/request/approval-wait/snapshot.d.ts +38 -0
  1030. package/dist/src/runtime/request/approval-wait/snapshot.js +22 -0
  1031. package/dist/src/runtime/request/approval-wait/super-compaction-restore.d.ts +20 -0
  1032. package/dist/src/runtime/request/approval-wait/super-compaction-restore.js +61 -0
  1033. package/dist/src/runtime/request/automation-output-contract.d.ts +6 -0
  1034. package/dist/src/runtime/request/automation-output-contract.js +33 -0
  1035. package/dist/src/runtime/request/bound-runtime-handler.js +10 -4
  1036. package/dist/src/runtime/request/cancellation.d.ts +15 -0
  1037. package/dist/src/runtime/request/cancellation.js +14 -0
  1038. package/dist/src/runtime/request/capability-execution-freshness.d.ts +8 -0
  1039. package/dist/src/runtime/request/capability-execution-freshness.js +28 -0
  1040. package/dist/src/runtime/request/contracts.d.ts +33 -1
  1041. package/dist/src/runtime/request/execution-agent-root-execution.js +2 -0
  1042. package/dist/src/runtime/request/execution-facets.js +20 -0
  1043. package/dist/src/runtime/request/execution-payload-compacted-evidence.d.ts +64 -0
  1044. package/dist/src/runtime/request/execution-payload-compacted-evidence.js +46 -0
  1045. package/dist/src/runtime/request/execution-scope-surfaces.d.ts +2 -0
  1046. package/dist/src/runtime/request/execution-scope-surfaces.js +47 -0
  1047. package/dist/src/runtime/request/execution-scope.d.ts +8 -2
  1048. package/dist/src/runtime/request/execution-scope.js +14 -2
  1049. package/dist/src/runtime/request/handler.d.ts +13 -1
  1050. package/dist/src/runtime/request/handler.js +359 -186
  1051. package/dist/src/runtime/request/interruption.d.ts +5 -0
  1052. package/dist/src/runtime/request/interruption.js +11 -0
  1053. package/dist/src/runtime/request/locked-request-steering.d.ts +3 -0
  1054. package/dist/src/runtime/request/locked-request-steering.js +12 -0
  1055. package/dist/src/runtime/request/plan-event-projection.d.ts +1 -0
  1056. package/dist/src/runtime/request/plan-event-projection.js +1 -1
  1057. package/dist/src/runtime/request/policy-degraded-finalization.d.ts +10 -0
  1058. package/dist/src/runtime/request/policy-degraded-finalization.js +27 -0
  1059. package/dist/src/runtime/request/prepared-execution.d.ts +89 -0
  1060. package/dist/src/runtime/request/prepared-execution.js +245 -0
  1061. package/dist/src/runtime/request/request-steering.d.ts +1 -1
  1062. package/dist/src/runtime/request/result.d.ts +4 -0
  1063. package/dist/src/runtime/request/role-call-policy.d.ts +4 -0
  1064. package/dist/src/runtime/request/role-call-policy.js +16 -0
  1065. package/dist/src/runtime/request/role-executor-composition.js +4 -3
  1066. package/dist/src/runtime/request/root-child-completion.d.ts +17 -0
  1067. package/dist/src/runtime/request/root-child-completion.js +23 -0
  1068. package/dist/src/runtime/request/root-contract.d.ts +2 -0
  1069. package/dist/src/runtime/request/root-execution-contracts.d.ts +45 -0
  1070. package/dist/src/runtime/request/root-execution-contracts.js +1 -0
  1071. package/dist/src/runtime/request/root-execution-kernel.d.ts +6 -4
  1072. package/dist/src/runtime/request/root-execution-kernel.js +99 -54
  1073. package/dist/src/runtime/request/root-invalid-output-progress.d.ts +4 -0
  1074. package/dist/src/runtime/request/root-invalid-output-progress.js +16 -0
  1075. package/dist/src/runtime/request/root-invalid-output.d.ts +21 -0
  1076. package/dist/src/runtime/request/root-invalid-output.js +145 -0
  1077. package/dist/src/runtime/request/root-response-commit.d.ts +7 -0
  1078. package/dist/src/runtime/request/root-response-commit.js +15 -0
  1079. package/dist/src/runtime/request/runner.d.ts +14 -2
  1080. package/dist/src/runtime/request/runner.js +61 -21
  1081. package/dist/src/runtime/request/session-admission.d.ts +10 -2
  1082. package/dist/src/runtime/request/session-admission.js +56 -12
  1083. package/dist/src/runtime/request/session-artifact-path-persistence.d.ts +1 -1
  1084. package/dist/src/runtime/request/session-store.d.ts +1 -1
  1085. package/dist/src/runtime/request/super-checkpoint-quarantine.d.ts +8 -0
  1086. package/dist/src/runtime/request/super-checkpoint-quarantine.js +76 -0
  1087. package/dist/src/runtime/request/super-context-failure-executor.d.ts +4 -0
  1088. package/dist/src/runtime/request/super-context-failure-executor.js +68 -0
  1089. package/dist/src/runtime/request/super-context-failure-integrity.d.ts +16 -0
  1090. package/dist/src/runtime/request/super-context-failure-integrity.js +130 -0
  1091. package/dist/src/runtime/request/super-context-scope.d.ts +9 -0
  1092. package/dist/src/runtime/request/super-context-scope.js +65 -0
  1093. package/dist/src/runtime/request/super-failure-explanation.d.ts +22 -0
  1094. package/dist/src/runtime/request/super-failure-explanation.js +77 -0
  1095. package/dist/src/runtime/request/super-failure-message.d.ts +10 -0
  1096. package/dist/src/runtime/request/super-failure-message.js +40 -0
  1097. package/dist/src/runtime/request/super-payload-context-failure.d.ts +11 -0
  1098. package/dist/src/runtime/request/super-payload-context-failure.js +55 -0
  1099. package/dist/src/runtime/request/super-root-failure-finalization.d.ts +23 -0
  1100. package/dist/src/runtime/request/super-root-failure-finalization.js +112 -0
  1101. package/dist/src/runtime/request/tool-approval-wait.d.ts +4 -0
  1102. package/dist/src/runtime/request/tool-approval-wait.js +14 -0
  1103. package/dist/src/runtime/request/worker-capability-composition.d.ts +2 -0
  1104. package/dist/src/runtime/request/worker-capability-composition.js +5 -1
  1105. package/dist/src/runtime/request/worker-capability-payload.d.ts +2 -1
  1106. package/dist/src/runtime/request/worker-capability-payload.js +74 -48
  1107. package/dist/src/runtime/runtime-environment.d.ts +8 -4
  1108. package/dist/src/runtime/runtime-environment.js +220 -6
  1109. package/dist/src/runtime/runtime-host-scheduler-ownership.js +12 -1
  1110. package/dist/src/runtime/scheduler/automation-job-management.d.ts +12 -0
  1111. package/dist/src/runtime/scheduler/automation-job-management.js +288 -0
  1112. package/dist/src/runtime/scheduler/automation-rerun.d.ts +6 -0
  1113. package/dist/src/runtime/scheduler/automation-rerun.js +95 -0
  1114. package/dist/src/runtime/scheduler/automation-run-budget.d.ts +4 -0
  1115. package/dist/src/runtime/scheduler/automation-run-budget.js +16 -0
  1116. package/dist/src/runtime/scheduler/automation-run-change-events.d.ts +11 -0
  1117. package/dist/src/runtime/scheduler/automation-run-change-events.js +77 -0
  1118. package/dist/src/runtime/scheduler/automation-run-completion.d.ts +11 -0
  1119. package/dist/src/runtime/scheduler/automation-run-completion.js +93 -0
  1120. package/dist/src/runtime/scheduler/automation-run-control.d.ts +3 -0
  1121. package/dist/src/runtime/scheduler/automation-run-control.js +48 -0
  1122. package/dist/src/runtime/scheduler/automation-run-records.d.ts +5 -0
  1123. package/dist/src/runtime/scheduler/automation-run-records.js +37 -0
  1124. package/dist/src/runtime/scheduler/automation-schedule.d.ts +10 -0
  1125. package/dist/src/runtime/scheduler/automation-schedule.js +48 -0
  1126. package/dist/src/runtime/scheduler/automation-scheduler-engine.d.ts +4 -0
  1127. package/dist/src/runtime/scheduler/automation-scheduler-engine.js +188 -0
  1128. package/dist/src/runtime/scheduler/automation-snapshot-validation.d.ts +3 -0
  1129. package/dist/src/runtime/scheduler/automation-snapshot-validation.js +106 -0
  1130. package/dist/src/runtime/scheduler/contracts.d.ts +149 -5
  1131. package/dist/src/runtime/scheduler/file-store.d.ts +1 -1
  1132. package/dist/src/runtime/scheduler/file-store.js +17 -3
  1133. package/dist/src/runtime/scheduler/job-management.js +7 -4
  1134. package/dist/src/runtime/scheduler/journal-automation-index.d.ts +23 -0
  1135. package/dist/src/runtime/scheduler/journal-automation-index.js +205 -0
  1136. package/dist/src/runtime/scheduler/journal-automation-transaction.d.ts +11 -0
  1137. package/dist/src/runtime/scheduler/journal-automation-transaction.js +90 -0
  1138. package/dist/src/runtime/scheduler/journal-checkpoint.js +5 -2
  1139. package/dist/src/runtime/scheduler/journal-head.d.ts +1 -1
  1140. package/dist/src/runtime/scheduler/journal-head.js +2 -2
  1141. package/dist/src/runtime/scheduler/journal-index-state.d.ts +22 -11
  1142. package/dist/src/runtime/scheduler/journal-index-state.js +76 -17
  1143. package/dist/src/runtime/scheduler/journal-index.d.ts +9 -3
  1144. package/dist/src/runtime/scheduler/journal-index.js +84 -9
  1145. package/dist/src/runtime/scheduler/journal-store.d.ts +12 -2
  1146. package/dist/src/runtime/scheduler/journal-store.js +125 -9
  1147. package/dist/src/runtime/scheduler/journal-transaction.d.ts +7 -4
  1148. package/dist/src/runtime/scheduler/journal-transaction.js +13 -2
  1149. package/dist/src/runtime/scheduler/next-occurrence.js +2 -0
  1150. package/dist/src/runtime/scheduler/run-completion.js +2 -1
  1151. package/dist/src/runtime/scheduler/run-records.js +9 -3
  1152. package/dist/src/runtime/scheduler/schedule-update.d.ts +2 -2
  1153. package/dist/src/runtime/scheduler/schedule-validation.d.ts +2 -2
  1154. package/dist/src/runtime/scheduler/schedule-validation.js +4 -0
  1155. package/dist/src/runtime/scheduler/scheduler-engine.js +26 -9
  1156. package/dist/src/runtime/scheduler/scheduler-service.d.ts +4 -1
  1157. package/dist/src/runtime/scheduler/scheduler-service.js +83 -10
  1158. package/dist/src/runtime/scheduler/scheduler-target.d.ts +9 -0
  1159. package/dist/src/runtime/scheduler/scheduler-target.js +41 -0
  1160. package/dist/src/runtime/scheduler/service-context.d.ts +6 -2
  1161. package/dist/src/runtime/scheduler/service-context.js +6 -3
  1162. package/dist/src/runtime/scheduler/snapshot-validation.d.ts +3 -3
  1163. package/dist/src/runtime/scheduler/snapshot-validation.js +24 -2
  1164. package/dist/src/runtime/scheduler/startup-recovery.d.ts +1 -1
  1165. package/dist/src/runtime/scheduler/startup-recovery.js +15 -2
  1166. package/dist/src/runtime/scheduler/tool-permission-mode.d.ts +5 -0
  1167. package/dist/src/runtime/scheduler/tool-permission-mode.js +14 -0
  1168. package/dist/src/runtime/scheduler/working-store.js +8 -0
  1169. package/dist/src/runtime/session/cancelled-response.d.ts +12 -0
  1170. package/dist/src/runtime/session/cancelled-response.js +39 -0
  1171. package/dist/src/runtime/session/request-activation.d.ts +3 -0
  1172. package/dist/src/runtime/session/request-activation.js +43 -0
  1173. package/dist/src/runtime/session/request-history.js +8 -1
  1174. package/dist/src/runtime/session/request-session.d.ts +4 -0
  1175. package/dist/src/runtime/session/request-session.js +16 -0
  1176. package/dist/src/runtime/session/session-deletion-boundary.d.ts +1 -1
  1177. package/dist/src/runtime/session/session-deletion-boundary.js +6 -2
  1178. package/dist/src/runtime/session/session-lifecycle-store.d.ts +4 -1
  1179. package/dist/src/runtime/session/session-lifecycle-store.js +51 -4
  1180. package/dist/src/runtime/session/session-title.js +19 -2
  1181. package/dist/src/runtime/session/spark-session-attachments.d.ts +4 -0
  1182. package/dist/src/runtime/session/spark-session-attachments.js +28 -0
  1183. package/dist/src/runtime/session/spark-session-cleanup-receipt.d.ts +7 -0
  1184. package/dist/src/runtime/session/spark-session-cleanup-receipt.js +61 -0
  1185. package/dist/src/runtime/session/spark-session-clear.d.ts +6 -0
  1186. package/dist/src/runtime/session/spark-session-clear.js +36 -0
  1187. package/dist/src/runtime/session/terminal-response.d.ts +21 -0
  1188. package/dist/src/runtime/session/terminal-response.js +38 -0
  1189. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.d.ts +1 -0
  1190. package/dist/src/runtime/steps/auditor-decision/advisory-receipt.js +12 -0
  1191. package/dist/src/runtime/steps/auditor-decision/contracts.d.ts +4 -0
  1192. package/dist/src/runtime/steps/auditor-decision/evidence-coverage.js +5 -5
  1193. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.d.ts +2 -1
  1194. package/dist/src/runtime/steps/auditor-decision/evidence-inventory.js +12 -1
  1195. package/dist/src/runtime/steps/auditor-decision/evidence-representation.d.ts +8 -2
  1196. package/dist/src/runtime/steps/auditor-decision/evidence-representation.js +14 -1
  1197. package/dist/src/runtime/steps/auditor-decision/input.d.ts +2 -0
  1198. package/dist/src/runtime/steps/auditor-decision/input.js +13 -3
  1199. package/dist/src/runtime/steps/auditor-decision/projection.js +20 -1
  1200. package/dist/src/runtime/steps/auditor-decision/prompt.js +6 -6
  1201. package/dist/src/runtime/steps/auditor-decision/run.js +3 -3
  1202. package/dist/src/runtime/steps/capability-execution-instructions.d.ts +5 -0
  1203. package/dist/src/runtime/steps/capability-execution-instructions.js +5 -0
  1204. package/dist/src/runtime/steps/degraded-finalization/contract.d.ts +3 -0
  1205. package/dist/src/runtime/steps/degraded-finalization/fallback.js +14 -4
  1206. package/dist/src/runtime/steps/degraded-finalization/input.d.ts +1 -0
  1207. package/dist/src/runtime/steps/degraded-finalization/input.js +12 -2
  1208. package/dist/src/runtime/steps/degraded-finalization/model-authored.d.ts +8 -0
  1209. package/dist/src/runtime/steps/degraded-finalization/model-authored.js +81 -0
  1210. package/dist/src/runtime/steps/degraded-finalization/output-limit-cause.d.ts +4 -0
  1211. package/dist/src/runtime/steps/degraded-finalization/output-limit-cause.js +17 -0
  1212. package/dist/src/runtime/steps/degraded-finalization/prompt.js +4 -1
  1213. package/dist/src/runtime/steps/degraded-finalization/render.js +2 -1
  1214. package/dist/src/runtime/steps/degraded-finalization/super.d.ts +20 -0
  1215. package/dist/src/runtime/steps/degraded-finalization/super.js +128 -0
  1216. package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.d.ts +1 -0
  1217. package/dist/src/runtime/steps/execution-agent/capability-decision-parsing.js +21 -3
  1218. package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.d.ts +1 -1
  1219. package/dist/src/runtime/steps/execution-agent/capability-invocation-contract.js +4 -2
  1220. package/dist/src/runtime/steps/execution-agent/capability-selection-schema.d.ts +3 -0
  1221. package/dist/src/runtime/steps/execution-agent/capability-selection-schema.js +72 -0
  1222. package/dist/src/runtime/steps/execution-agent/compaction.d.ts +5 -2
  1223. package/dist/src/runtime/steps/execution-agent/compaction.js +10 -4
  1224. package/dist/src/runtime/steps/execution-agent/contracts.d.ts +14 -2
  1225. package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.d.ts +16 -0
  1226. package/dist/src/runtime/steps/execution-agent/controls-compacted-evidence.js +67 -0
  1227. package/dist/src/runtime/steps/execution-agent/controls-evidence-contract.d.ts +21 -0
  1228. package/dist/src/runtime/steps/execution-agent/controls-evidence-contract.js +64 -0
  1229. package/dist/src/runtime/steps/execution-agent/controls-evidence.d.ts +32 -0
  1230. package/dist/src/runtime/steps/execution-agent/controls-evidence.js +119 -0
  1231. package/dist/src/runtime/steps/execution-agent/decision-parsing.js +1 -0
  1232. package/dist/src/runtime/steps/execution-agent/format.d.ts +2 -0
  1233. package/dist/src/runtime/steps/execution-agent/format.js +9 -68
  1234. package/dist/src/runtime/steps/execution-agent/input.js +36 -15
  1235. package/dist/src/runtime/steps/execution-agent/prompt.d.ts +1 -0
  1236. package/dist/src/runtime/steps/execution-agent/prompt.js +15 -2
  1237. package/dist/src/runtime/steps/execution-agent/refinement-input.d.ts +32 -0
  1238. package/dist/src/runtime/steps/execution-agent/refinement-input.js +146 -0
  1239. package/dist/src/runtime/steps/execution-agent/refinement-prompt.d.ts +1 -0
  1240. package/dist/src/runtime/steps/execution-agent/refinement-prompt.js +11 -0
  1241. package/dist/src/runtime/steps/execution-agent/refinement.d.ts +4 -4
  1242. package/dist/src/runtime/steps/execution-agent/refinement.js +18 -108
  1243. package/dist/src/runtime/steps/execution-agent/response-input.d.ts +1 -0
  1244. package/dist/src/runtime/steps/execution-agent/response-input.js +14 -6
  1245. package/dist/src/runtime/steps/execution-agent/response-prompt.js +1 -1
  1246. package/dist/src/runtime/steps/execution-agent/response-run.js +31 -5
  1247. package/dist/src/runtime/steps/execution-agent/run.js +9 -3
  1248. package/dist/src/runtime/steps/execution-agent/state-context.d.ts +1 -1
  1249. package/dist/src/runtime/steps/execution-agent/state-context.js +20 -5
  1250. package/dist/src/runtime/steps/model-step-timeout.d.ts +9 -0
  1251. package/dist/src/runtime/steps/model-step-timeout.js +13 -1
  1252. package/dist/src/runtime/steps/planner-decision/contracts.d.ts +0 -1
  1253. package/dist/src/runtime/steps/planner-decision/contracts.js +1 -2
  1254. package/dist/src/runtime/steps/planner-decision/format.js +3 -15
  1255. package/dist/src/runtime/steps/planner-decision/input.js +7 -0
  1256. package/dist/src/runtime/steps/planner-decision/parser.js +9 -4
  1257. package/dist/src/runtime/steps/planner-decision/prompt.js +1 -2
  1258. package/dist/src/runtime/steps/planner-decision/resume.d.ts +2 -1
  1259. package/dist/src/runtime/steps/planner-decision/resume.js +3 -3
  1260. package/dist/src/runtime/steps/planner-decision/run.js +13 -0
  1261. package/dist/src/runtime/steps/planner-graph/prompt.js +2 -0
  1262. package/dist/src/runtime/steps/planner-graph/run.js +1 -0
  1263. package/dist/src/runtime/steps/reviewer-decision/projection.js +5 -0
  1264. package/dist/src/runtime/steps/reviewer-decision/run.js +13 -0
  1265. package/dist/src/runtime/steps/supervisor-decision/input.d.ts +1 -1
  1266. package/dist/src/runtime/steps/supervisor-decision/input.js +18 -12
  1267. package/dist/src/runtime/steps/supervisor-decision/resume.js +2 -2
  1268. package/dist/src/runtime/steps/supervisor-decision/run.js +14 -0
  1269. package/dist/src/runtime/steps/supervisor-decision/working-directory.d.ts +2 -0
  1270. package/dist/src/runtime/steps/supervisor-decision/working-directory.js +6 -0
  1271. package/dist/src/runtime/steps/supervisor-response/input.d.ts +4 -1
  1272. package/dist/src/runtime/steps/supervisor-response/input.js +15 -5
  1273. package/dist/src/runtime/steps/supervisor-response/memory-authoring.d.ts +2 -0
  1274. package/dist/src/runtime/steps/supervisor-response/memory-authoring.js +6 -41
  1275. package/dist/src/runtime/steps/supervisor-response/prompt.d.ts +2 -0
  1276. package/dist/src/runtime/steps/supervisor-response/prompt.js +9 -2
  1277. package/dist/src/runtime/steps/supervisor-response/run.js +55 -10
  1278. package/dist/src/runtime/steps/worker-decision/compaction-integrity.d.ts +11 -0
  1279. package/dist/src/runtime/steps/worker-decision/compaction-integrity.js +40 -0
  1280. package/dist/src/runtime/steps/worker-decision/contracts.d.ts +0 -1
  1281. package/dist/src/runtime/steps/worker-decision/contracts.js +0 -2
  1282. package/dist/src/runtime/steps/worker-decision/format.js +2 -11
  1283. package/dist/src/runtime/steps/worker-decision/input/reference-context.js +7 -0
  1284. package/dist/src/runtime/steps/worker-decision/input/types.d.ts +4 -1
  1285. package/dist/src/runtime/steps/worker-decision/parser/action-validation.d.ts +1 -1
  1286. package/dist/src/runtime/steps/worker-decision/parser/action-validation.js +5 -3
  1287. package/dist/src/runtime/steps/worker-decision/prompt.js +18 -18
  1288. package/dist/src/runtime/steps/worker-decision/result-author.js +5 -15
  1289. package/dist/src/runtime/steps/worker-decision/run.js +19 -49
  1290. package/dist/src/runtime/steps/worker-decision/worker-handoff-compaction.d.ts +4 -0
  1291. package/dist/src/runtime/steps/worker-decision/worker-handoff-compaction.js +69 -0
  1292. package/dist/src/runtime/streaming/request-callbacks.d.ts +8 -1
  1293. package/dist/src/runtime/streaming/request-callbacks.js +12 -4
  1294. package/dist/src/sessions/assistant-initiative-append.d.ts +14 -0
  1295. package/dist/src/sessions/assistant-initiative-append.js +64 -0
  1296. package/dist/src/sessions/assistant-initiative.d.ts +30 -0
  1297. package/dist/src/sessions/assistant-initiative.js +66 -0
  1298. package/dist/src/sessions/automation-session-origin.d.ts +34 -0
  1299. package/dist/src/sessions/automation-session-origin.js +78 -0
  1300. package/dist/src/sessions/automation-session-store.d.ts +12 -0
  1301. package/dist/src/sessions/automation-session-store.js +129 -0
  1302. package/dist/src/sessions/context-window.js +2 -0
  1303. package/dist/src/sessions/durable-session-commit.d.ts +9 -0
  1304. package/dist/src/sessions/durable-session-commit.js +51 -0
  1305. package/dist/src/sessions/index.d.ts +1 -0
  1306. package/dist/src/sessions/index.js +3 -0
  1307. package/dist/src/sessions/memory/source.d.ts +2 -0
  1308. package/dist/src/sessions/memory/source.js +11 -1
  1309. package/dist/src/sessions/project-binding.d.ts +1 -0
  1310. package/dist/src/sessions/record/projection.d.ts +1 -0
  1311. package/dist/src/sessions/record/projection.js +13 -0
  1312. package/dist/src/sessions/request-lifecycle/activation-transitions.d.ts +4 -0
  1313. package/dist/src/sessions/request-lifecycle/activation-transitions.js +140 -0
  1314. package/dist/src/sessions/request-lifecycle/approval-decisions.d.ts +3 -0
  1315. package/dist/src/sessions/request-lifecycle/approval-decisions.js +109 -0
  1316. package/dist/src/sessions/request-lifecycle/continuation-blobs.d.ts +13 -0
  1317. package/dist/src/sessions/request-lifecycle/continuation-blobs.js +114 -0
  1318. package/dist/src/sessions/request-lifecycle/continuation-cleanup.d.ts +7 -0
  1319. package/dist/src/sessions/request-lifecycle/continuation-cleanup.js +49 -0
  1320. package/dist/src/sessions/request-lifecycle/contracts.d.ts +169 -0
  1321. package/dist/src/sessions/request-lifecycle/contracts.js +1 -0
  1322. package/dist/src/sessions/request-lifecycle/projection.d.ts +4 -0
  1323. package/dist/src/sessions/request-lifecycle/projection.js +30 -0
  1324. package/dist/src/sessions/request-lifecycle/record-operations.d.ts +27 -0
  1325. package/dist/src/sessions/request-lifecycle/record-operations.js +109 -0
  1326. package/dist/src/sessions/request-lifecycle/service.d.ts +12 -0
  1327. package/dist/src/sessions/request-lifecycle/service.js +95 -0
  1328. package/dist/src/sessions/request-lifecycle/terminal-transitions.d.ts +5 -0
  1329. package/dist/src/sessions/request-lifecycle/terminal-transitions.js +103 -0
  1330. package/dist/src/sessions/request-lifecycle/wait-initial-decisions.d.ts +4 -0
  1331. package/dist/src/sessions/request-lifecycle/wait-initial-decisions.js +34 -0
  1332. package/dist/src/sessions/session-service.d.ts +13 -0
  1333. package/dist/src/sessions/session-service.js +105 -15
  1334. package/dist/src/sessions/session-store.d.ts +1 -1
  1335. package/dist/src/sessions/session-store.js +9 -1
  1336. package/dist/src/sessions/spark-handoff-brief.d.ts +3 -0
  1337. package/dist/src/sessions/spark-handoff-brief.js +9 -0
  1338. package/dist/src/sessions/spark-session.d.ts +13 -0
  1339. package/dist/src/sessions/spark-session.js +25 -0
  1340. package/dist/src/sessions/types.d.ts +17 -2
  1341. package/dist/src/shared/model-step-registry-data.json +9 -0
  1342. package/dist/src/shared/model-step-registry.d.ts +9 -0
  1343. package/dist/src/shared/model-step-registry.generated.d.ts +9 -0
  1344. package/dist/src/shared/model-step-registry.generated.js +9 -0
  1345. package/dist/src/shared/passive-observation.d.ts +46 -0
  1346. package/dist/src/shared/passive-observation.js +2 -0
  1347. package/dist/src/web-ui/app/ARCHITECTURE.md +129 -3
  1348. package/dist/src/web-ui/app/app-bootstrap.js +68 -3
  1349. package/dist/src/web-ui/app/app-dom.js +28 -0
  1350. package/dist/src/web-ui/app/app-page-bindings.js +46 -0
  1351. package/dist/src/web-ui/app/app-realtime-transport.js +67 -0
  1352. package/dist/src/web-ui/app/app-state.js +1 -0
  1353. package/dist/src/web-ui/app/app.js +90 -81
  1354. package/dist/src/web-ui/app/automations-feature.js +103 -0
  1355. package/dist/src/web-ui/app/components/automations/archive-actions.js +20 -0
  1356. package/dist/src/web-ui/app/components/automations/authoring-entry.js +25 -0
  1357. package/dist/src/web-ui/app/components/automations/binding-editor.js +101 -0
  1358. package/dist/src/web-ui/app/components/automations/binding-fields.js +166 -0
  1359. package/dist/src/web-ui/app/components/automations/chat-run-projection.js +280 -0
  1360. package/dist/src/web-ui/app/components/automations/draft-recovery-actions.js +28 -0
  1361. package/dist/src/web-ui/app/components/automations/editor-action-icons.js +18 -0
  1362. package/dist/src/web-ui/app/components/automations/editor-actions.js +57 -0
  1363. package/dist/src/web-ui/app/components/automations/editor.js +218 -0
  1364. package/dist/src/web-ui/app/components/automations/failure-presentation.js +299 -0
  1365. package/dist/src/web-ui/app/components/automations/library-tabs.js +45 -0
  1366. package/dist/src/web-ui/app/components/automations/list.js +58 -0
  1367. package/dist/src/web-ui/app/components/automations/live-view.js +39 -0
  1368. package/dist/src/web-ui/app/components/automations/node-inspector.js +251 -0
  1369. package/dist/src/web-ui/app/components/automations/permission-selection.js +37 -0
  1370. package/dist/src/web-ui/app/components/automations/rerun-confirmation.js +16 -0
  1371. package/dist/src/web-ui/app/components/automations/run-output-view.js +100 -0
  1372. package/dist/src/web-ui/app/components/automations/run-report-view.js +224 -0
  1373. package/dist/src/web-ui/app/components/automations/run-step-selection.js +7 -0
  1374. package/dist/src/web-ui/app/components/automations/run-steps-view.js +33 -0
  1375. package/dist/src/web-ui/app/components/automations/run.js +38 -0
  1376. package/dist/src/web-ui/app/components/automations/schema-literal-inputs.js +212 -0
  1377. package/dist/src/web-ui/app/components/automations/step-editor-dialog.js +243 -0
  1378. package/dist/src/web-ui/app/components/automations/step-preview.js +48 -0
  1379. package/dist/src/web-ui/app/components/automations/template-gallery.js +74 -0
  1380. package/dist/src/web-ui/app/components/automations/timeline-camera.js +219 -0
  1381. package/dist/src/web-ui/app/components/automations/timeline.js +141 -0
  1382. package/dist/src/web-ui/app/components/automations/tool-identity.js +25 -0
  1383. package/dist/src/web-ui/app/components/automations/workspace.js +462 -0
  1384. package/dist/src/web-ui/app/components/composer-actions.d.ts +4 -0
  1385. package/dist/src/web-ui/app/components/composer-actions.js +20 -0
  1386. package/dist/src/web-ui/app/components/composer-context-window.js +24 -13
  1387. package/dist/src/web-ui/app/components/config-workspace/calibration-disclosure.js +39 -0
  1388. package/dist/src/web-ui/app/components/config-workspace/config-model.js +3 -5
  1389. package/dist/src/web-ui/app/components/config-workspace/dashboard-rendering.js +3 -20
  1390. package/dist/src/web-ui/app/components/config-workspace/model-removal.js +105 -0
  1391. package/dist/src/web-ui/app/components/config-workspace/model-rendering.js +68 -39
  1392. package/dist/src/web-ui/app/components/config-workspace/model-setup-entry.js +6 -3
  1393. package/dist/src/web-ui/app/components/config-workspace/raw-config-repair.js +1 -1
  1394. package/dist/src/web-ui/app/components/config-workspace/workspace-events.js +19 -42
  1395. package/dist/src/web-ui/app/components/config-workspace/workspace-mutations.js +1 -1
  1396. package/dist/src/web-ui/app/components/config-workspace/workspace-persistence.js +0 -2
  1397. package/dist/src/web-ui/app/components/config-workspace/workspace-view.js +66 -51
  1398. package/dist/src/web-ui/app/components/config-workspace.js +23 -7
  1399. package/dist/src/web-ui/app/components/conversation-activity.d.ts +2 -28
  1400. package/dist/src/web-ui/app/components/conversation-activity.js +50 -83
  1401. package/dist/src/web-ui/app/components/conversation-file-focus.js +3 -0
  1402. package/dist/src/web-ui/app/components/conversation-reasoning.d.ts +9 -0
  1403. package/dist/src/web-ui/app/components/conversation-reasoning.js +46 -0
  1404. package/dist/src/web-ui/app/components/conversation-role-cards.d.ts +1 -8
  1405. package/dist/src/web-ui/app/components/conversation-role-cards.js +24 -57
  1406. package/dist/src/web-ui/app/components/conversation-sources.js +2 -2
  1407. package/dist/src/web-ui/app/components/conversation-status.js +3 -2
  1408. package/dist/src/web-ui/app/components/conversation-tool-evidence.js +6 -0
  1409. package/dist/src/web-ui/app/components/conversation-tools.js +1 -1
  1410. package/dist/src/web-ui/app/components/conversation-view.js +45 -42
  1411. package/dist/src/web-ui/app/components/dashboard/activity.js +1 -1
  1412. package/dist/src/web-ui/app/components/dashboard/approvals.js +168 -0
  1413. package/dist/src/web-ui/app/components/dashboard/automations.js +28 -0
  1414. package/dist/src/web-ui/app/components/dashboard/recent-conversations.js +16 -22
  1415. package/dist/src/web-ui/app/components/dashboard/workspace.js +62 -58
  1416. package/dist/src/web-ui/app/components/home-guidance/daily-review-entry.js +24 -0
  1417. package/dist/src/web-ui/app/components/home-guidance/daily-review.js +80 -0
  1418. package/dist/src/web-ui/app/components/home-guidance/home-guidance.js +160 -0
  1419. package/dist/src/web-ui/app/components/home-guidance/suggestion-policy.js +35 -0
  1420. package/dist/src/web-ui/app/components/long-term-memory/manager.js +8 -1
  1421. package/dist/src/web-ui/app/components/long-term-memory/record-list.js +7 -0
  1422. package/dist/src/web-ui/app/components/long-term-memory/view-model.js +3 -0
  1423. package/dist/src/web-ui/app/components/long-term-memory/workspace.js +48 -0
  1424. package/dist/src/web-ui/app/components/model-setup/rendering.js +1 -1
  1425. package/dist/src/web-ui/app/components/model-setup/save-flow.js +11 -6
  1426. package/dist/src/web-ui/app/components/model-setup/save-outcome.js +16 -0
  1427. package/dist/src/web-ui/app/components/model-setup/wizard.d.ts +1 -0
  1428. package/dist/src/web-ui/app/components/model-setup/wizard.js +4 -0
  1429. package/dist/src/web-ui/app/components/notifications/dom.js +33 -0
  1430. package/dist/src/web-ui/app/components/notifications/feedback.js +34 -0
  1431. package/dist/src/web-ui/app/components/notifications/focus.js +56 -0
  1432. package/dist/src/web-ui/app/components/notifications/home-entry.js +35 -0
  1433. package/dist/src/web-ui/app/components/notifications/pagination.js +13 -0
  1434. package/dist/src/web-ui/app/components/notifications/presentation.js +144 -0
  1435. package/dist/src/web-ui/app/components/notifications/tabs.js +49 -0
  1436. package/dist/src/web-ui/app/components/notifications/workspace.js +108 -0
  1437. package/dist/src/web-ui/app/components/onboarding-workspace-access.js +53 -0
  1438. package/dist/src/web-ui/app/components/operations-section.js +9 -2
  1439. package/dist/src/web-ui/app/components/passive-learning/activity-controls.js +91 -0
  1440. package/dist/src/web-ui/app/components/passive-learning/agent-motion.js +37 -0
  1441. package/dist/src/web-ui/app/components/passive-learning/agent-state.js +126 -0
  1442. package/dist/src/web-ui/app/components/passive-learning/agent-view.js +40 -0
  1443. package/dist/src/web-ui/app/components/passive-learning/application-actions.js +22 -0
  1444. package/dist/src/web-ui/app/components/passive-learning/applications-view.js +126 -0
  1445. package/dist/src/web-ui/app/components/passive-learning/batch-detail.js +143 -0
  1446. package/dist/src/web-ui/app/components/passive-learning/computer-update-notice.js +13 -0
  1447. package/dist/src/web-ui/app/components/passive-learning/diagnostics-view.js +28 -0
  1448. package/dist/src/web-ui/app/components/passive-learning/failure-copy.js +141 -0
  1449. package/dist/src/web-ui/app/components/passive-learning/home.js +97 -0
  1450. package/dist/src/web-ui/app/components/passive-learning/knowledge-view.js +137 -0
  1451. package/dist/src/web-ui/app/components/passive-learning/macos-collection-consent.js +78 -0
  1452. package/dist/src/web-ui/app/components/passive-learning/macos-collection-restart-notice.js +52 -0
  1453. package/dist/src/web-ui/app/components/passive-learning/memory.js +232 -0
  1454. package/dist/src/web-ui/app/components/passive-learning/presentation.js +183 -0
  1455. package/dist/src/web-ui/app/components/passive-learning/processing-state.js +13 -0
  1456. package/dist/src/web-ui/app/components/passive-learning/settings-view.js +82 -0
  1457. package/dist/src/web-ui/app/components/passive-learning/settings.js +178 -0
  1458. package/dist/src/web-ui/app/components/passive-learning/usage-view.js +60 -0
  1459. package/dist/src/web-ui/app/components/passive-learning/workspace-view.js +67 -0
  1460. package/dist/src/web-ui/app/components/plugins/rendering.js +2 -2
  1461. package/dist/src/web-ui/app/components/project-session-groups.js +66 -10
  1462. package/dist/src/web-ui/app/components/project-session-preview.js +52 -0
  1463. package/dist/src/web-ui/app/components/runtime-config-activation.js +16 -12
  1464. package/dist/src/web-ui/app/components/runtime-setup/configuration-recovery.js +3 -3
  1465. package/dist/src/web-ui/app/components/runtime-setup/connection-form.js +1 -1
  1466. package/dist/src/web-ui/app/components/runtime-setup/optional-steps.js +11 -1
  1467. package/dist/src/web-ui/app/components/runtime-setup-guide.d.ts +8 -2
  1468. package/dist/src/web-ui/app/components/runtime-setup-guide.js +8 -3
  1469. package/dist/src/web-ui/app/components/schedules/details.js +13 -6
  1470. package/dist/src/web-ui/app/components/schedules/form.js +13 -5
  1471. package/dist/src/web-ui/app/components/schedules/workspace-state.js +3 -1
  1472. package/dist/src/web-ui/app/components/schedules/workspace.js +23 -28
  1473. package/dist/src/web-ui/app/components/session-sidebar-drag.js +58 -0
  1474. package/dist/src/web-ui/app/components/session-sidebar-sections.js +43 -0
  1475. package/dist/src/web-ui/app/components/spark-chat/empty-state.js +45 -0
  1476. package/dist/src/web-ui/app/components/spark-chat/handoff-actions.js +59 -0
  1477. package/dist/src/web-ui/app/components/spark-chat/mascot-activity.js +27 -0
  1478. package/dist/src/web-ui/app/components/spark-chat/motion.js +52 -0
  1479. package/dist/src/web-ui/app/components/spark-chat/panel.js +109 -0
  1480. package/dist/src/web-ui/app/components/spark-chat/placement.js +198 -0
  1481. package/dist/src/web-ui/app/components/spark-chat/results.js +44 -0
  1482. package/dist/src/web-ui/app/components/spark-chat/settings.js +84 -0
  1483. package/dist/src/web-ui/app/components/startup-screen.js +30 -0
  1484. package/dist/src/web-ui/app/components/system-host/macos-connection-actions.js +92 -0
  1485. package/dist/src/web-ui/app/components/system-host/macos-permission-dialog.js +95 -0
  1486. package/dist/src/web-ui/app/components/system-host/macos-permission-preparation.js +83 -0
  1487. package/dist/src/web-ui/app/components/system-host/macos-permission-rendering.js +85 -0
  1488. package/dist/src/web-ui/app/components/system-host/macos-permission-scopes.js +51 -0
  1489. package/dist/src/web-ui/app/components/system-host/macos-permissions.js +36 -0
  1490. package/dist/src/web-ui/app/components/system-host/macos-setup.js +91 -0
  1491. package/dist/src/web-ui/app/components/system-host/manager.js +82 -1
  1492. package/dist/src/web-ui/app/components/system-host/rendering.js +87 -23
  1493. package/dist/src/web-ui/app/components/system-host/setup-notice.js +2 -2
  1494. package/dist/src/web-ui/app/components/tool-approval-card.js +8 -6
  1495. package/dist/src/web-ui/app/components/workspace-shell.js +127 -16
  1496. package/dist/src/web-ui/app/computer-access-feature.js +72 -0
  1497. package/dist/src/web-ui/app/configuration-feature.js +85 -27
  1498. package/dist/src/web-ui/app/controllers/app-event-bindings.js +115 -59
  1499. package/dist/src/web-ui/app/controllers/automation-draft-actions.js +153 -0
  1500. package/dist/src/web-ui/app/controllers/automation-management-actions.js +75 -0
  1501. package/dist/src/web-ui/app/controllers/automation-mutation-lifecycle.js +32 -0
  1502. package/dist/src/web-ui/app/controllers/automation-read-projection.js +63 -0
  1503. package/dist/src/web-ui/app/controllers/automation-run-actions.js +54 -0
  1504. package/dist/src/web-ui/app/controllers/automation-view-scope.js +19 -0
  1505. package/dist/src/web-ui/app/controllers/automations-controller.js +395 -0
  1506. package/dist/src/web-ui/app/controllers/chat-request-controller.js +1 -1
  1507. package/dist/src/web-ui/app/controllers/composer-queue-controller.d.ts +3 -2
  1508. package/dist/src/web-ui/app/controllers/composer-queue-controller.js +30 -17
  1509. package/dist/src/web-ui/app/controllers/composer-stop-controller.d.ts +9 -0
  1510. package/dist/src/web-ui/app/controllers/composer-stop-controller.js +64 -0
  1511. package/dist/src/web-ui/app/controllers/composer-submit-controller.d.ts +4 -0
  1512. package/dist/src/web-ui/app/controllers/composer-submit-controller.js +44 -6
  1513. package/dist/src/web-ui/app/controllers/conversation-read-state-controller.js +3 -0
  1514. package/dist/src/web-ui/app/controllers/conversation-session-controller.d.ts +10 -2
  1515. package/dist/src/web-ui/app/controllers/conversation-session-controller.js +99 -33
  1516. package/dist/src/web-ui/app/controllers/conversation-view-feature.js +2 -1
  1517. package/dist/src/web-ui/app/controllers/daily-memory-review.js +151 -0
  1518. package/dist/src/web-ui/app/controllers/dashboard-approvals-controller.js +141 -0
  1519. package/dist/src/web-ui/app/controllers/dashboard-controller.js +100 -17
  1520. package/dist/src/web-ui/app/controllers/long-term-memory/controller.d.ts +3 -0
  1521. package/dist/src/web-ui/app/controllers/long-term-memory/controller.js +11 -1
  1522. package/dist/src/web-ui/app/controllers/long-term-memory/state.js +1 -0
  1523. package/dist/src/web-ui/app/controllers/notification-presence.js +68 -0
  1524. package/dist/src/web-ui/app/controllers/notifications-controller.js +153 -0
  1525. package/dist/src/web-ui/app/controllers/operations-controller.d.ts +4 -2
  1526. package/dist/src/web-ui/app/controllers/operations-controller.js +27 -4
  1527. package/dist/src/web-ui/app/controllers/passive-learning-controller.js +406 -0
  1528. package/dist/src/web-ui/app/controllers/projects-controller.d.ts +2 -0
  1529. package/dist/src/web-ui/app/controllers/projects-controller.js +53 -18
  1530. package/dist/src/web-ui/app/controllers/realtime-event-controller.d.ts +1 -1
  1531. package/dist/src/web-ui/app/controllers/realtime-event-controller.js +95 -166
  1532. package/dist/src/web-ui/app/controllers/request-lifecycle-controller.d.ts +12 -0
  1533. package/dist/src/web-ui/app/controllers/request-lifecycle-controller.js +61 -0
  1534. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.d.ts +4 -1
  1535. package/dist/src/web-ui/app/controllers/runtime-onboarding-controller.js +14 -3
  1536. package/dist/src/web-ui/app/controllers/runtime-selection-controller.js +0 -2
  1537. package/dist/src/web-ui/app/controllers/schedules-controller.js +118 -50
  1538. package/dist/src/web-ui/app/controllers/session-controller.js +16 -42
  1539. package/dist/src/web-ui/app/controllers/session-sidebar-controller.js +159 -0
  1540. package/dist/src/web-ui/app/controllers/spark-chat-notices.js +34 -0
  1541. package/dist/src/web-ui/app/controllers/spark-chat-reading.js +145 -0
  1542. package/dist/src/web-ui/app/controllers/spark-chat-sync.js +151 -0
  1543. package/dist/src/web-ui/app/controllers/spark-handoff-navigation.js +32 -0
  1544. package/dist/src/web-ui/app/controllers/tool-approval-controller.d.ts +3 -0
  1545. package/dist/src/web-ui/app/controllers/tool-approval-controller.js +65 -4
  1546. package/dist/src/web-ui/app/controllers/workspace-route-controller.js +356 -0
  1547. package/dist/src/web-ui/app/dashboard-feature.js +19 -5
  1548. package/dist/src/web-ui/app/favicon.svg +12 -0
  1549. package/dist/src/web-ui/app/index.html +227 -44
  1550. package/dist/src/web-ui/app/lib/approval-decision-command.js +14 -0
  1551. package/dist/src/web-ui/app/lib/automation-binding-producers.js +47 -0
  1552. package/dist/src/web-ui/app/lib/automation-graph-position.js +19 -0
  1553. package/dist/src/web-ui/app/lib/automation-parallel-depth.js +19 -0
  1554. package/dist/src/web-ui/app/lib/configuration-pages.js +29 -0
  1555. package/dist/src/web-ui/app/lib/context-compaction-state.d.ts +41 -0
  1556. package/dist/src/web-ui/app/lib/context-compaction-state.js +172 -0
  1557. package/dist/src/web-ui/app/lib/context-window-measurement.d.ts +33 -0
  1558. package/dist/src/web-ui/app/lib/context-window-measurement.js +99 -0
  1559. package/dist/src/web-ui/app/lib/context-window-replay.d.ts +32 -0
  1560. package/dist/src/web-ui/app/lib/context-window-replay.js +38 -0
  1561. package/dist/src/web-ui/app/lib/context-window-snapshot-order.d.ts +16 -8
  1562. package/dist/src/web-ui/app/lib/context-window-snapshot-order.js +29 -9
  1563. package/dist/src/web-ui/app/lib/context-window-state.d.ts +80 -0
  1564. package/dist/src/web-ui/app/lib/context-window-state.js +341 -0
  1565. package/dist/src/web-ui/app/lib/conversation-role-model.js +4 -1
  1566. package/dist/src/web-ui/app/lib/conversation-status-model.js +15 -3
  1567. package/dist/src/web-ui/app/lib/dashboard-presentation.js +1 -0
  1568. package/dist/src/web-ui/app/lib/event-presentation.d.ts +1 -0
  1569. package/dist/src/web-ui/app/lib/event-presentation.js +25 -4
  1570. package/dist/src/web-ui/app/lib/event-refresh.js +85 -0
  1571. package/dist/src/web-ui/app/lib/live-region.js +96 -0
  1572. package/dist/src/web-ui/app/lib/realtime-message.js +9 -0
  1573. package/dist/src/web-ui/app/lib/request-lifecycle-view.d.ts +23 -0
  1574. package/dist/src/web-ui/app/lib/request-lifecycle-view.js +83 -0
  1575. package/dist/src/web-ui/app/lib/request-stop-state.js +53 -0
  1576. package/dist/src/web-ui/app/lib/schedule-conversation-presentation.js +19 -0
  1577. package/dist/src/web-ui/app/lib/schedule-presentation.js +12 -2
  1578. package/dist/src/web-ui/app/lib/session-archive-visibility.js +4 -0
  1579. package/dist/src/web-ui/app/lib/session-sidebar-order.js +35 -0
  1580. package/dist/src/web-ui/app/lib/spark-chat-address.js +22 -0
  1581. package/dist/src/web-ui/app/lib/spark-chat-presentation.js +16 -0
  1582. package/dist/src/web-ui/app/lib/spark-chat-read-state.js +13 -0
  1583. package/dist/src/web-ui/app/lib/spark-proposal-message.js +13 -0
  1584. package/dist/src/web-ui/app/lib/tool-activity-event.d.ts +1 -0
  1585. package/dist/src/web-ui/app/lib/tool-activity-event.js +8 -3
  1586. package/dist/src/web-ui/app/lib/tool-activity-model.js +31 -7
  1587. package/dist/src/web-ui/app/lib/tool-approval-acknowledgement.js +7 -0
  1588. package/dist/src/web-ui/app/lib/tool-approval-activity.d.ts +4 -0
  1589. package/dist/src/web-ui/app/lib/tool-approval-activity.js +33 -0
  1590. package/dist/src/web-ui/app/lib/tool-automation-activity-fields.js +59 -0
  1591. package/dist/src/web-ui/app/lib/tool-computer-activity-fields.js +74 -0
  1592. package/dist/src/web-ui/app/lib/tool-process-activity-fields.js +1 -1
  1593. package/dist/src/web-ui/app/lib/workspace-change.js +34 -0
  1594. package/dist/src/web-ui/app/lib/workspace-route.d.ts +24 -0
  1595. package/dist/src/web-ui/app/lib/workspace-route.js +71 -0
  1596. package/dist/src/web-ui/app/notifications-feature.js +108 -0
  1597. package/dist/src/web-ui/app/passive-learning-feature.js +73 -0
  1598. package/dist/src/web-ui/app/projects-feature.js +63 -8
  1599. package/dist/src/web-ui/app/runtime-onboarding-feature.js +6 -1
  1600. package/dist/src/web-ui/app/schedules-feature.js +60 -7
  1601. package/dist/src/web-ui/app/services/client-preferences.d.ts +6 -0
  1602. package/dist/src/web-ui/app/services/client-preferences.js +3 -0
  1603. package/dist/src/web-ui/app/services/home-guidance-preferences.js +47 -0
  1604. package/dist/src/web-ui/app/services/runtime-web-client/automations.d.ts +36 -0
  1605. package/dist/src/web-ui/app/services/runtime-web-client/automations.js +63 -0
  1606. package/dist/src/web-ui/app/services/runtime-web-client/configuration.js +6 -0
  1607. package/dist/src/web-ui/app/services/runtime-web-client/learning.js +63 -0
  1608. package/dist/src/web-ui/app/services/runtime-web-client/memory.js +5 -2
  1609. package/dist/src/web-ui/app/services/runtime-web-client/notifications.d.ts +30 -0
  1610. package/dist/src/web-ui/app/services/runtime-web-client/notifications.js +27 -0
  1611. package/dist/src/web-ui/app/services/runtime-web-client/schedules.js +9 -0
  1612. package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.d.ts +22 -0
  1613. package/dist/src/web-ui/app/services/runtime-web-client/spark-chat.js +29 -0
  1614. package/dist/src/web-ui/app/services/runtime-web-client/system-host.js +8 -4
  1615. package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.d.ts +20 -0
  1616. package/dist/src/web-ui/app/services/runtime-web-client/tool-approvals.js +72 -0
  1617. package/dist/src/web-ui/app/services/runtime-web-client.d.ts +88 -5
  1618. package/dist/src/web-ui/app/services/runtime-web-client.js +55 -13
  1619. package/dist/src/web-ui/app/services/session-sidebar-preferences.js +42 -0
  1620. package/dist/src/web-ui/app/spark-chat-conversation.js +217 -0
  1621. package/dist/src/web-ui/app/spark-chat-feature.js +187 -0
  1622. package/dist/src/web-ui/app/spark-mascot.svg +12 -0
  1623. package/dist/src/web-ui/app/styles/00-tokens-base.css +59 -46
  1624. package/dist/src/web-ui/app/styles/10-shell-sessions.css +46 -338
  1625. package/dist/src/web-ui/app/styles/11-workspace-header-width.css +133 -0
  1626. package/dist/src/web-ui/app/styles/11-workspace-rail.css +366 -0
  1627. package/dist/src/web-ui/app/styles/12-conversation-sidebar.css +136 -22
  1628. package/dist/src/web-ui/app/styles/13-projects.css +152 -34
  1629. package/dist/src/web-ui/app/styles/14-startup-screen.css +37 -0
  1630. package/dist/src/web-ui/app/styles/18-dashboard.css +126 -97
  1631. package/dist/src/web-ui/app/styles/19-dashboard-approvals.css +108 -0
  1632. package/dist/src/web-ui/app/styles/19-dashboard-automations.css +32 -0
  1633. package/dist/src/web-ui/app/styles/19-home-guidance.css +110 -0
  1634. package/dist/src/web-ui/app/styles/19-runtime-setup.css +0 -9
  1635. package/dist/src/web-ui/app/styles/20-chat-composer.css +86 -222
  1636. package/dist/src/web-ui/app/styles/21-composer-controls.css +10 -10
  1637. package/dist/src/web-ui/app/styles/22-composer-context-window.css +7 -7
  1638. package/dist/src/web-ui/app/styles/23-composer-plan.css +9 -9
  1639. package/dist/src/web-ui/app/styles/24-composer-stop.css +44 -0
  1640. package/dist/src/web-ui/app/styles/24-conversation-role-cards.css +214 -85
  1641. package/dist/src/web-ui/app/styles/25-conversation-sources.css +5 -5
  1642. package/dist/src/web-ui/app/styles/26-message-content.css +84 -5
  1643. package/dist/src/web-ui/app/styles/27-conversation-tools.css +4 -4
  1644. package/dist/src/web-ui/app/styles/28-conversation-status.css +2 -2
  1645. package/dist/src/web-ui/app/styles/28-tool-approval-card.css +161 -0
  1646. package/dist/src/web-ui/app/styles/29-conversation-file-preview.css +2 -2
  1647. package/dist/src/web-ui/app/styles/30-inspector-config.css +60 -84
  1648. package/dist/src/web-ui/app/styles/35-memory-onboarding.css +10 -10
  1649. package/dist/src/web-ui/app/styles/36-memory-management.css +19 -18
  1650. package/dist/src/web-ui/app/styles/37-config-operations.css +70 -56
  1651. package/dist/src/web-ui/app/styles/37-runtime-activation.css +16 -2
  1652. package/dist/src/web-ui/app/styles/38-schedule-workspace.css +114 -76
  1653. package/dist/src/web-ui/app/styles/38-schedules.css +61 -52
  1654. package/dist/src/web-ui/app/styles/39-memory-workspace.css +80 -0
  1655. package/dist/src/web-ui/app/styles/39-passive-learning.css +226 -0
  1656. package/dist/src/web-ui/app/styles/40-config-workspace.css +65 -96
  1657. package/dist/src/web-ui/app/styles/41-co-worker-agent.css +94 -0
  1658. package/dist/src/web-ui/app/styles/41-plugin-management.css +36 -10
  1659. package/dist/src/web-ui/app/styles/42-co-worker-settings.css +55 -0
  1660. package/dist/src/web-ui/app/styles/42-runtime-setup-plugins.css +6 -6
  1661. package/dist/src/web-ui/app/styles/43-co-worker-applications.css +19 -0
  1662. package/dist/src/web-ui/app/styles/43-model-setup.css +4 -4
  1663. package/dist/src/web-ui/app/styles/44-model-provider-cards.css +36 -17
  1664. package/dist/src/web-ui/app/styles/46-system-host.css +126 -4
  1665. package/dist/src/web-ui/app/styles/47-config-controls.css +178 -0
  1666. package/dist/src/web-ui/app/styles/48-notifications.css +103 -0
  1667. package/dist/src/web-ui/app/styles/49-macos-permission.css +225 -0
  1668. package/dist/src/web-ui/app/styles/50-automations.css +353 -0
  1669. package/dist/src/web-ui/app/styles/51-automation-editor-actions.css +35 -0
  1670. package/dist/src/web-ui/app/styles/51-automation-templates.css +39 -0
  1671. package/dist/src/web-ui/app/styles/52-automation-reports.css +84 -0
  1672. package/dist/src/web-ui/app/styles/52-automation-step-editor.css +73 -0
  1673. package/dist/src/web-ui/app/styles/53-automation-schema-inputs.css +21 -0
  1674. package/dist/src/web-ui/app/styles/54-spark-chat.css +111 -0
  1675. package/dist/src/web-ui/app/styles/90-responsive.css +19 -16
  1676. package/dist/src/web-ui/app/styles/91-schedules-responsive.css +15 -4
  1677. package/dist/src/web-ui/app/styles/92-dashboard-responsive.css +22 -26
  1678. package/dist/src/web-ui/app/styles/93-compact-viewport.css +21 -0
  1679. package/dist/src/web-ui/app/styles/94-automations-responsive.css +35 -0
  1680. package/dist/src/web-ui/app/styles/foundation.css +3 -92
  1681. package/dist/src/web-ui/app/styles.css +25 -0
  1682. package/dist/src/web-ui/app/ui-behavior.d.ts +1 -1
  1683. package/dist/src/web-ui/app/ui-behavior.js +6 -0
  1684. package/dist/src/web-ui/config-dashboard-backend.d.ts +6 -0
  1685. package/dist/src/web-ui/config-dashboard-backend.js +69 -39
  1686. package/dist/src/web-ui/forwarded-loopback-policy.js +1 -1
  1687. package/dist/src/web-ui/local-runtime/api-router.d.ts +6 -1
  1688. package/dist/src/web-ui/local-runtime/api-router.js +58 -4
  1689. package/dist/src/web-ui/local-runtime/approval-request-attachment.d.ts +15 -0
  1690. package/dist/src/web-ui/local-runtime/approval-request-attachment.js +58 -0
  1691. package/dist/src/web-ui/local-runtime/automation-routes.d.ts +27 -0
  1692. package/dist/src/web-ui/local-runtime/automation-routes.js +227 -0
  1693. package/dist/src/web-ui/local-runtime/environment-registry.d.ts +6 -0
  1694. package/dist/src/web-ui/local-runtime/environment-registry.js +6 -0
  1695. package/dist/src/web-ui/local-runtime/learning-notifications.d.ts +2 -0
  1696. package/dist/src/web-ui/local-runtime/learning-notifications.js +20 -0
  1697. package/dist/src/web-ui/local-runtime/learning-routes.d.ts +19 -0
  1698. package/dist/src/web-ui/local-runtime/learning-routes.js +162 -0
  1699. package/dist/src/web-ui/local-runtime/managed-tool-approvals.d.ts +15 -0
  1700. package/dist/src/web-ui/local-runtime/managed-tool-approvals.js +121 -0
  1701. package/dist/src/web-ui/local-runtime/memory-management-input.js +4 -0
  1702. package/dist/src/web-ui/local-runtime/memory-management-response.d.ts +3 -1
  1703. package/dist/src/web-ui/local-runtime/memory-management-response.js +17 -3
  1704. package/dist/src/web-ui/local-runtime/model-removal.d.ts +13 -0
  1705. package/dist/src/web-ui/local-runtime/model-removal.js +74 -0
  1706. package/dist/src/web-ui/local-runtime/model-setup-catalog.js +3 -1
  1707. package/dist/src/web-ui/local-runtime/model-setup-input.js +10 -1
  1708. package/dist/src/web-ui/local-runtime/model-setup-profile-file.d.ts +17 -0
  1709. package/dist/src/web-ui/local-runtime/model-setup-profile-file.js +121 -0
  1710. package/dist/src/web-ui/local-runtime/model-setup-retry.d.ts +1 -1
  1711. package/dist/src/web-ui/local-runtime/model-setup-retry.js +8 -6
  1712. package/dist/src/web-ui/local-runtime/model-setup-routes.js +4 -2
  1713. package/dist/src/web-ui/local-runtime/model-setup-service.d.ts +5 -0
  1714. package/dist/src/web-ui/local-runtime/model-setup-service.js +70 -25
  1715. package/dist/src/web-ui/local-runtime/model-setup-validation.d.ts +2 -1
  1716. package/dist/src/web-ui/local-runtime/model-setup-validation.js +2 -1
  1717. package/dist/src/web-ui/local-runtime/pending-tool-approvals.d.ts +29 -0
  1718. package/dist/src/web-ui/local-runtime/pending-tool-approvals.js +104 -0
  1719. package/dist/src/web-ui/local-runtime/realtime-controller.d.ts +1 -0
  1720. package/dist/src/web-ui/local-runtime/realtime-controller.js +21 -2
  1721. package/dist/src/web-ui/local-runtime/realtime-hub.d.ts +8 -0
  1722. package/dist/src/web-ui/local-runtime/realtime-hub.js +44 -4
  1723. package/dist/src/web-ui/local-runtime/request-cancellation-route.d.ts +8 -0
  1724. package/dist/src/web-ui/local-runtime/request-cancellation-route.js +34 -0
  1725. package/dist/src/web-ui/local-runtime/request-execution.d.ts +4 -2
  1726. package/dist/src/web-ui/local-runtime/request-execution.js +68 -42
  1727. package/dist/src/web-ui/local-runtime/runtime-availability.js +1 -1
  1728. package/dist/src/web-ui/local-runtime/runtime-setup-service.js +1 -1
  1729. package/dist/src/web-ui/local-runtime/session-routes.d.ts +3 -1
  1730. package/dist/src/web-ui/local-runtime/session-routes.js +51 -7
  1731. package/dist/src/web-ui/local-runtime/setup-embedding-config-repository.d.ts +6 -0
  1732. package/dist/src/web-ui/local-runtime/setup-embedding-config-repository.js +25 -0
  1733. package/dist/src/web-ui/local-runtime/setup-embedding-service.js +2 -0
  1734. package/dist/src/web-ui/local-runtime/spark-chat-admission.d.ts +7 -0
  1735. package/dist/src/web-ui/local-runtime/spark-chat-admission.js +37 -0
  1736. package/dist/src/web-ui/local-runtime/spark-chat-configuration.d.ts +8 -0
  1737. package/dist/src/web-ui/local-runtime/spark-chat-configuration.js +16 -0
  1738. package/dist/src/web-ui/local-runtime/spark-chat-handoff.d.ts +4 -0
  1739. package/dist/src/web-ui/local-runtime/spark-chat-handoff.js +84 -0
  1740. package/dist/src/web-ui/local-runtime/spark-chat-routes.d.ts +19 -0
  1741. package/dist/src/web-ui/local-runtime/spark-chat-routes.js +62 -0
  1742. package/dist/src/web-ui/local-runtime/tool-approval-routes.d.ts +21 -0
  1743. package/dist/src/web-ui/local-runtime/tool-approval-routes.js +70 -0
  1744. package/dist/src/web-ui/local-runtime/workspace-notifications.d.ts +4 -0
  1745. package/dist/src/web-ui/local-runtime/workspace-notifications.js +15 -0
  1746. package/dist/src/web-ui/local-runtime-backend.d.ts +8 -0
  1747. package/dist/src/web-ui/local-runtime-backend.js +42 -4
  1748. package/dist/src/web-ui/notifications/automation-event-projection.d.ts +3 -0
  1749. package/dist/src/web-ui/notifications/automation-event-projection.js +57 -0
  1750. package/dist/src/web-ui/notifications/contracts.d.ts +66 -0
  1751. package/dist/src/web-ui/notifications/contracts.js +14 -0
  1752. package/dist/src/web-ui/notifications/conversation-source.d.ts +6 -0
  1753. package/dist/src/web-ui/notifications/conversation-source.js +26 -0
  1754. package/dist/src/web-ui/notifications/delivery-queue.d.ts +6 -0
  1755. package/dist/src/web-ui/notifications/delivery-queue.js +12 -0
  1756. package/dist/src/web-ui/notifications/desktop-delivery.d.ts +14 -0
  1757. package/dist/src/web-ui/notifications/desktop-delivery.js +109 -0
  1758. package/dist/src/web-ui/notifications/event-fields.d.ts +3 -0
  1759. package/dist/src/web-ui/notifications/event-fields.js +12 -0
  1760. package/dist/src/web-ui/notifications/event-projection.d.ts +4 -0
  1761. package/dist/src/web-ui/notifications/event-projection.js +128 -0
  1762. package/dist/src/web-ui/notifications/presence.d.ts +9 -0
  1763. package/dist/src/web-ui/notifications/presence.js +46 -0
  1764. package/dist/src/web-ui/notifications/query.d.ts +14 -0
  1765. package/dist/src/web-ui/notifications/query.js +91 -0
  1766. package/dist/src/web-ui/notifications/request-input.d.ts +11 -0
  1767. package/dist/src/web-ui/notifications/request-input.js +47 -0
  1768. package/dist/src/web-ui/notifications/routes.d.ts +15 -0
  1769. package/dist/src/web-ui/notifications/routes.js +125 -0
  1770. package/dist/src/web-ui/notifications/service.d.ts +42 -0
  1771. package/dist/src/web-ui/notifications/service.js +162 -0
  1772. package/dist/src/web-ui/notifications/storage-schema.d.ts +15 -0
  1773. package/dist/src/web-ui/notifications/storage-schema.js +267 -0
  1774. package/dist/src/web-ui/notifications/store.d.ts +26 -0
  1775. package/dist/src/web-ui/notifications/store.js +185 -0
  1776. package/dist/src/web-ui/server.js +1 -1
  1777. package/dist/src/web-ui/session-read-state/projection.js +3 -0
  1778. package/dist/src/web-ui/session-read-state/service.d.ts +39 -0
  1779. package/dist/src/web-ui/session-read-state/service.js +20 -2
  1780. package/dist/src/web-ui/session-read-state/store.d.ts +2 -0
  1781. package/dist/src/web-ui/session-read-state/store.js +7 -0
  1782. package/dist/src/web-ui/session-read-state/visible-messages.d.ts +30 -0
  1783. package/dist/src/web-ui/session-read-state/visible-messages.js +119 -0
  1784. package/dist/src/web-ui/system-host-service.d.ts +4 -1
  1785. package/dist/src/web-ui/system-host-service.js +32 -12
  1786. package/dist/src/web-ui/system-host-setup/companion-linux.d.ts +3 -0
  1787. package/dist/src/web-ui/system-host-setup/companion-linux.js +50 -0
  1788. package/dist/src/web-ui/system-host-setup/companion-macos.js +11 -2
  1789. package/dist/src/web-ui/system-host-setup/companion-windows.js +5 -2
  1790. package/dist/src/web-ui/system-host-setup/installer-contract.d.ts +2 -1
  1791. package/dist/src/web-ui/system-host-setup/installer-contract.js +18 -5
  1792. package/dist/src/web-ui/system-host-setup/installers.js +15 -2
  1793. package/dist/src/web-ui/system-host-setup/local-connection.d.ts +21 -0
  1794. package/dist/src/web-ui/system-host-setup/local-connection.js +77 -0
  1795. package/dist/src/web-ui/system-host-setup/local-request-authority.d.ts +3 -0
  1796. package/dist/src/web-ui/system-host-setup/local-request-authority.js +15 -0
  1797. package/dist/src/web-ui/system-host-setup/local-setup-availability.d.ts +7 -0
  1798. package/dist/src/web-ui/system-host-setup/local-setup-availability.js +34 -0
  1799. package/dist/src/web-ui/system-host-setup/native-permission-route.d.ts +26 -0
  1800. package/dist/src/web-ui/system-host-setup/native-permission-route.js +96 -0
  1801. package/dist/src/web-ui/system-host-setup/permission-route.d.ts +13 -0
  1802. package/dist/src/web-ui/system-host-setup/permission-route.js +102 -0
  1803. package/dist/src/web-ui/system-host-setup/readiness.d.ts +8 -4
  1804. package/dist/src/web-ui/system-host-setup/readiness.js +72 -43
  1805. package/dist/src/web-ui/system-host-setup/routes.d.ts +4 -1
  1806. package/dist/src/web-ui/system-host-setup/routes.js +48 -15
  1807. package/dist/src/web-ui/system-host-startup-diagnostic.d.ts +2 -0
  1808. package/dist/src/web-ui/system-host-startup-diagnostic.js +53 -0
  1809. package/docs/architecture.md +15 -0
  1810. package/docs/installation.md +128 -19
  1811. package/docs/known-limitations.md +17 -3
  1812. package/docs/long-term-memory.md +210 -2
  1813. package/docs/plugins.md +64 -12
  1814. package/docs/projects-and-full-plus.md +21 -22
  1815. package/docs/runtime-public-contracts.md +7 -2
  1816. package/docs/tool-execution-result-evidence-contract.md +11 -4
  1817. package/package.json +6 -2
  1818. package/plugins/capability-brief/src/index.cjs +88 -35
  1819. package/plugins/code-outline/source/index.ts +7 -2
  1820. package/plugins/code-outline/src/index.cjs +94 -37
  1821. package/plugins/document-reader/plugin.json +18 -3
  1822. package/plugins/document-reader/skills/document_reader_skill/SKILL.md +10 -3
  1823. package/plugins/document-reader/source/handler.ts +5 -3
  1824. package/plugins/document-reader/source/source-resolution.ts +1 -1
  1825. package/plugins/document-reader/src/index.cjs +94 -39
  1826. package/plugins/exec/plugin.json +3 -3
  1827. package/plugins/exec/source/handlers.ts +96 -288
  1828. package/plugins/exec/source/index.ts +12 -0
  1829. package/plugins/exec/source/output-contracts.ts +45 -0
  1830. package/plugins/exec/source/output-files.ts +161 -0
  1831. package/plugins/exec/source/output-maintenance.ts +60 -0
  1832. package/plugins/exec/source/output-range-reader.ts +97 -0
  1833. package/plugins/exec/source/output-retention.ts +34 -0
  1834. package/plugins/exec/source/output-snapshot.ts +54 -0
  1835. package/plugins/exec/source/output-store.ts +182 -0
  1836. package/plugins/exec/source/output-utf8-boundary.ts +14 -0
  1837. package/plugins/exec/source/output-writer.ts +131 -0
  1838. package/plugins/exec/source/process-manager.ts +171 -110
  1839. package/plugins/exec/source/process-output-buffer.ts +39 -0
  1840. package/plugins/exec/source/process-output.ts +158 -0
  1841. package/plugins/exec/source/request-resources.ts +219 -0
  1842. package/plugins/exec/source/result-presentation.ts +275 -0
  1843. package/plugins/exec/source/retained-output-failure.ts +51 -0
  1844. package/plugins/exec/source/settings.ts +9 -10
  1845. package/plugins/exec/source/terminal-delivery.ts +49 -0
  1846. package/plugins/exec/source/types.ts +12 -1
  1847. package/plugins/exec/src/index.cjs +1495 -397
  1848. package/plugins/filesystem/plugin.json +5 -5
  1849. package/plugins/filesystem/skills/read_file_skill/SKILL.md +1 -1
  1850. package/plugins/filesystem/src/index.cjs +88 -35
  1851. package/plugins/json-inspector/source/index.ts +7 -2
  1852. package/plugins/json-inspector/src/index.cjs +94 -37
  1853. package/plugins/local-search/source/index.ts +9 -4
  1854. package/plugins/local-search/src/index.cjs +96 -39
  1855. package/plugins/memory/src/index.cjs +88 -35
  1856. package/plugins/project-orientation/source/index.ts +9 -4
  1857. package/plugins/project-orientation/src/index.cjs +96 -39
  1858. package/plugins/system/README.md +113 -0
  1859. package/plugins/system/plugin.json +560 -2
  1860. package/plugins/system/skills/system_actions/SKILL.md +12 -0
  1861. package/plugins/system/source/computer/desktop-bindings.ts +270 -0
  1862. package/plugins/system/source/computer/handlers.ts +160 -0
  1863. package/plugins/system/source/computer/observation-output.ts +145 -0
  1864. package/plugins/system/source/computer/observation-result.ts +122 -0
  1865. package/plugins/system/source/computer/public-action.ts +53 -0
  1866. package/plugins/system/source/computer/request-computers.ts +154 -0
  1867. package/plugins/system/source/computer/request-modules.ts +90 -0
  1868. package/plugins/system/source/host-dispatch.ts +5 -18
  1869. package/plugins/system/source/index.ts +5 -3
  1870. package/plugins/system/source/request-system-modules.ts +48 -12
  1871. package/plugins/system/source/request-target-snapshot.ts +13 -5
  1872. package/plugins/system/src/index.cjs +5321 -871
  1873. package/plugins/system-probe/source/index.ts +7 -2
  1874. package/plugins/system-probe/src/index.cjs +94 -37
  1875. package/plugins/web/README.md +9 -0
  1876. package/plugins/web/source/plugin.ts +5 -3
  1877. package/plugins/web/source/research.ts +7 -7
  1878. package/plugins/web/src/index.cjs +99 -41
  1879. package/src/runtime/README.md +114 -12
  1880. package/src/runtime/local-host/README.md +66 -4
  1881. package/src/runtime/scheduler/README.md +71 -2
  1882. package/dist/plugins/system/source/companion/native-supervisor.js +0 -93
  1883. package/dist/src/runtime/long-term-memory/candidate-persistence.d.ts +0 -16
  1884. package/dist/src/runtime/long-term-memory/candidate-persistence.js +0 -109
  1885. package/plugins/system/source/application-catalog.ts +0 -237
  1886. package/plugins/system/source/application-launch.ts +0 -113
  1887. package/plugins/system/source/application-observation.ts +0 -78
  1888. package/plugins/system/source/commands.ts +0 -106
  1889. package/plugins/system/source/companion/autostart.ts +0 -185
  1890. package/plugins/system/source/companion/broker-client.ts +0 -183
  1891. package/plugins/system/source/companion/broker-location.ts +0 -89
  1892. package/plugins/system/source/companion/broker-server.ts +0 -169
  1893. package/plugins/system/source/companion/connection.ts +0 -211
  1894. package/plugins/system/source/companion/liveness.ts +0 -23
  1895. package/plugins/system/source/companion/native-address.ts +0 -55
  1896. package/plugins/system/source/companion/native-identity.ts +0 -26
  1897. package/plugins/system/source/companion/native-messages.ts +0 -100
  1898. package/plugins/system/source/companion/native-session.ts +0 -268
  1899. package/plugins/system/source/companion/native-state.ts +0 -135
  1900. package/plugins/system/source/companion/native-supervisor.ts +0 -98
  1901. package/plugins/system/source/companion/pairing-store.ts +0 -110
  1902. package/plugins/system/source/companion/private-store.ts +0 -58
  1903. package/plugins/system/source/companion/process-owner-identity.ts +0 -190
  1904. package/plugins/system/source/companion/protocol.ts +0 -108
  1905. package/plugins/system/source/contracts.ts +0 -44
  1906. package/plugins/system/source/elevation.ts +0 -88
  1907. package/plugins/system/source/handlers.ts +0 -120
  1908. package/plugins/system/source/host-evidence.ts +0 -72
  1909. package/plugins/system/source/host-observation.ts +0 -66
  1910. package/plugins/system/source/process-result.ts +0 -111
  1911. package/plugins/system/source/process-runner.ts +0 -104
  1912. package/plugins/system/source/target-observation.ts +0 -43
  1913. package/plugins/system/source/targets.ts +0 -147
  1914. /package/dist/{plugins/system/source → src/computer-access}/application-catalog.d.ts +0 -0
  1915. /package/dist/{plugins/system/source → src/computer-access}/application-catalog.js +0 -0
  1916. /package/dist/{plugins/system/source → src/computer-access}/application-launch.d.ts +0 -0
  1917. /package/dist/{plugins/system/source → src/computer-access}/application-observation.d.ts +0 -0
  1918. /package/dist/{plugins/system/source → src/computer-access}/application-observation.js +0 -0
  1919. /package/dist/{plugins/system/source → src/computer-access}/commands.d.ts +0 -0
  1920. /package/dist/{plugins/system/source → src/computer-access}/companion/broker-location.d.ts +0 -0
  1921. /package/dist/{plugins/system/source → src/computer-access}/companion/broker-server.d.ts +0 -0
  1922. /package/dist/{plugins/system/source → src/computer-access}/companion/liveness.d.ts +0 -0
  1923. /package/dist/{plugins/system/source → src/computer-access}/companion/liveness.js +0 -0
  1924. /package/dist/{plugins/system/source → src/computer-access}/companion/native-identity.d.ts +0 -0
  1925. /package/dist/{plugins/system/source → src/computer-access}/companion/native-identity.js +0 -0
  1926. /package/dist/{plugins/system/source → src/computer-access}/companion/native-messages.d.ts +0 -0
  1927. /package/dist/{plugins/system/source → src/computer-access}/companion/private-store.d.ts +0 -0
  1928. /package/dist/{plugins/system/source → src/computer-access}/companion/private-store.js +0 -0
  1929. /package/dist/{plugins/system/source → src/computer-access}/contracts.d.ts +0 -0
  1930. /package/dist/{plugins/system/source → src/computer-access}/contracts.js +0 -0
  1931. /package/dist/{plugins/system/source → src/computer-access}/elevation.d.ts +0 -0
  1932. /package/dist/{plugins/system/source → src/computer-access}/elevation.js +0 -0
  1933. /package/dist/{plugins/system/source → src/computer-access}/host-observation.js +0 -0
  1934. /package/dist/{plugins/system/source → src/computer-access}/process-runner.d.ts +0 -0
  1935. /package/dist/{plugins/system/source → src/computer-access}/process-runner.js +0 -0
  1936. /package/dist/{plugins/system/source → src/computer-access}/target-observation.d.ts +0 -0
  1937. /package/dist/{plugins/system/source → src/computer-access}/target-observation.js +0 -0
  1938. /package/dist/{plugins/system/source → src/computer-access}/targets.d.ts +0 -0
  1939. /package/dist/{plugins/system/source → src/computer-access}/targets.js +0 -0
@@ -138,8 +138,28 @@ function defineRuntimePlugin(definition) {
138
138
  return definition;
139
139
  }
140
140
 
141
+ // src/capabilities/tool-context-text.ts
142
+ function hasValidToolContextText(carrier) {
143
+ const fields = carrier.contextTextFields;
144
+ if (fields === void 0) return true;
145
+ if (!Array.isArray(fields) || fields.length === 0 || fields.length > 3)
146
+ return false;
147
+ if (new Set(fields).size !== fields.length) return false;
148
+ for (const field of fields) {
149
+ if (!isContextTextField(field)) return false;
150
+ if (typeof carrier[field] !== "string") return false;
151
+ }
152
+ return true;
153
+ }
154
+ function isContextTextField(value) {
155
+ return value === "output" || value === "stdout" || value === "stderr";
156
+ }
157
+
158
+ // src/capabilities/result-budget.ts
159
+ var CAPABILITY_RESULT_ENVELOPE_MAX_BYTES = 256 * 1024;
160
+
141
161
  // src/plugin-sdk/results.ts
142
- var PLUGIN_RESULT_SERIALIZED_MAX_BYTES = 128 * 1024;
162
+ var PLUGIN_RESULT_SERIALIZED_MAX_BYTES = CAPABILITY_RESULT_ENVELOPE_MAX_BYTES;
143
163
  function resultBoundsFailure(code, message) {
144
164
  return {
145
165
  ok: false,
@@ -149,9 +169,27 @@ function resultBoundsFailure(code, message) {
149
169
  errorCode: code
150
170
  };
151
171
  }
152
- function enforcePluginResultByteBudget(result) {
153
- let serialized;
172
+ function enforcePluginResultByteBudget(result, resultBudget) {
173
+ let requiresContextTextHost = false;
174
+ let serializedBytes;
175
+ let envelopeBytes;
176
+ let maxBytes = PLUGIN_RESULT_SERIALIZED_MAX_BYTES;
177
+ let fitsDeclaredBudget = true;
154
178
  try {
179
+ if (!hasValidToolContextText(result)) {
180
+ return resultBoundsFailure(
181
+ "plugin_context_text_invalid",
182
+ "The plugin declared invalid context text fields."
183
+ );
184
+ }
185
+ requiresContextTextHost = result.contextTextFields !== void 0;
186
+ const lacksContextTextHost = requiresContextTextHost && resultBudget?.acceptsContextText !== true;
187
+ if (lacksContextTextHost) {
188
+ return resultBoundsFailure(
189
+ "plugin_context_text_unavailable",
190
+ "The host does not support context-managed tool text."
191
+ );
192
+ }
155
193
  const candidate = JSON.stringify(result);
156
194
  if (candidate === void 0) {
157
195
  return resultBoundsFailure(
@@ -159,35 +197,43 @@ function enforcePluginResultByteBudget(result) {
159
197
  "The plugin produced a result that is not JSON-safe."
160
198
  );
161
199
  }
162
- serialized = candidate;
200
+ const assessment = resultBudget?.assess(result);
201
+ serializedBytes = assessment?.serializedBytes ?? Buffer.byteLength(candidate, "utf8");
202
+ envelopeBytes = assessment?.envelopeBytes ?? serializedBytes;
203
+ maxBytes = Math.min(assessment?.maxBytes ?? maxBytes, maxBytes);
204
+ fitsDeclaredBudget = assessment?.fits ?? true;
163
205
  } catch {
164
206
  return resultBoundsFailure(
165
207
  "plugin_result_not_json_safe",
166
208
  "The plugin produced a result that is not JSON-safe."
167
209
  );
168
210
  }
169
- if (Buffer.byteLength(serialized, "utf8") > PLUGIN_RESULT_SERIALIZED_MAX_BYTES) {
170
- return resultBoundsFailure(
171
- "plugin_result_too_large",
172
- `The plugin result exceeds the ${PLUGIN_RESULT_SERIALIZED_MAX_BYTES}-byte safety limit.`
173
- );
211
+ const hasResultDeliveryHeadroom = fitsDeclaredBudget && envelopeBytes <= maxBytes;
212
+ if (!hasResultDeliveryHeadroom) {
213
+ const message = requiresContextTextHost ? `The plugin result envelope is ${envelopeBytes} bytes (${serializedBytes} total bytes) and exceeds the ${maxBytes}-byte delivery limit.` : `The plugin result is ${serializedBytes} bytes and exceeds the ${maxBytes}-byte delivery limit.`;
214
+ return resultBoundsFailure("plugin_result_too_large", message);
174
215
  }
175
216
  return result;
176
217
  }
177
- function failureResult(input) {
178
- return enforcePluginResultByteBudget({
179
- ok: false,
180
- output: input.output ?? input.message,
181
- producedNewInformation: false,
182
- ...input.progress !== void 0 ? { progress: input.progress } : {},
183
- ...input.actions !== void 0 ? { actions: input.actions } : {},
184
- ...input.exitCode !== void 0 ? { exitCode: input.exitCode } : {},
185
- ...input.stdout !== void 0 ? { stdout: input.stdout } : {},
186
- ...input.stderr !== void 0 ? { stderr: input.stderr } : {},
187
- ...input.data !== void 0 ? { data: input.data } : {},
188
- error: input.message,
189
- errorCode: input.errorCode
190
- });
218
+ function failureResult(input, resultBudget) {
219
+ return enforcePluginResultByteBudget(
220
+ {
221
+ ok: false,
222
+ ...input.interruption ? { interruption: input.interruption } : {},
223
+ ...input.media !== void 0 ? { media: input.media } : {},
224
+ output: input.output ?? input.message,
225
+ producedNewInformation: false,
226
+ ...input.progress !== void 0 ? { progress: input.progress } : {},
227
+ ...input.actions !== void 0 ? { actions: input.actions } : {},
228
+ ...input.exitCode !== void 0 ? { exitCode: input.exitCode } : {},
229
+ ...input.stdout !== void 0 ? { stdout: input.stdout } : {},
230
+ ...input.stderr !== void 0 ? { stderr: input.stderr } : {},
231
+ ...input.data !== void 0 ? { data: input.data } : {},
232
+ error: input.message,
233
+ errorCode: input.errorCode
234
+ },
235
+ resultBudget
236
+ );
191
237
  }
192
238
  function failureFromError(error, options) {
193
239
  const pathCode = runtimeToolPathErrorCode(error);
@@ -201,29 +247,23 @@ function failureFromError(error, options) {
201
247
  });
202
248
  }
203
249
 
204
- // plugins/exec/source/errors.ts
205
- var ExecPluginError = class extends Error {
206
- code;
207
- constructor(code, message) {
208
- super(message);
209
- this.name = "ExecPluginError";
210
- this.code = code;
211
- }
212
- };
213
- function execFailureFromError(error, operation) {
214
- if (error instanceof ExecPluginError) {
215
- return failureResult({
216
- errorCode: error.code,
217
- message: error.message,
218
- output: `${operation} failed: ${error.message}`
219
- });
220
- }
221
- return failureFromError(error, {
222
- fallbackCode: `${operation}_failed`,
223
- fallbackMessage: `${operation} failed without a safe diagnostic.`,
224
- operation
225
- });
250
+ // src/plugin-sdk/context-text-result.ts
251
+ function deliverPluginTextResult(result, fields, budget) {
252
+ const assessed = enforcePluginResultByteBudget(result, budget);
253
+ if (!canHandOffContextText(result, assessed, budget)) return assessed;
254
+ return enforcePluginResultByteBudget(
255
+ { ...result, contextTextFields: Object.freeze([...fields]) },
256
+ budget
257
+ );
226
258
  }
259
+ function canHandOffContextText(original, assessed, budget) {
260
+ if (budget?.acceptsContextText !== true) return false;
261
+ if (assessed === original) return false;
262
+ return assessed.errorCode === "plugin_result_too_large";
263
+ }
264
+
265
+ // src/capabilities/tool-media.ts
266
+ var TOOL_IMAGE_MAX_BYTES = 10 * 1024 * 1024;
227
267
 
228
268
  // plugins/exec/source/filesystem-observer.ts
229
269
  var import_node_crypto = require("node:crypto");
@@ -495,11 +535,532 @@ function diffExecFilesystemSnapshots(before, after) {
495
535
  });
496
536
  }
497
537
 
498
- // plugins/exec/source/paths.ts
538
+ // plugins/exec/source/result-presentation.ts
539
+ var EXEC_CONTEXT_TEXT_FIELDS = Object.freeze(["stdout", "stderr"]);
540
+ function streamReceipt(snapshot, field) {
541
+ if (snapshot.text) return `See the ${field} field (${snapshot.text.length} characters).`;
542
+ return snapshot.sawOutput ? "(no new output; earlier output was already returned)" : "(empty)";
543
+ }
544
+ function renderedOutput(lines) {
545
+ const output = lines.join("\n");
546
+ return Object.freeze({
547
+ output,
548
+ metadata: Object.freeze({
549
+ truncated: false,
550
+ originalChars: output.length,
551
+ returnedChars: output.length,
552
+ omittedChars: 0
553
+ })
554
+ });
555
+ }
556
+ function outputBoundsData(snapshot, rendered) {
557
+ return Object.freeze({
558
+ maxChars: null,
559
+ stdout: snapshot.stdout.metadata,
560
+ stderr: snapshot.stderr.metadata,
561
+ rendered
562
+ });
563
+ }
564
+ function runningResult(snapshot, execution, resultBudget) {
565
+ const nextCursor = snapshot.nextCursor ?? 1;
566
+ const rendered = renderedOutput(
567
+ [
568
+ `Command: ${execution.commandPreview}`,
569
+ `CWD: ${execution.cwd.logicalPath}`,
570
+ "Process status: running",
571
+ `Process ID: ${snapshot.processId}`,
572
+ `Next cursor: ${nextCursor}`,
573
+ "STDOUT since the previous observation:",
574
+ streamReceipt(snapshot.stdout, "stdout"),
575
+ "STDERR since the previous observation:",
576
+ streamReceipt(snapshot.stderr, "stderr"),
577
+ "Continue this exact process with exec_wait; do not run the command again."
578
+ ]
579
+ );
580
+ return deliverPluginTextResult({
581
+ ok: false,
582
+ producedNewInformation: false,
583
+ errorCode: "exec_process_running",
584
+ error: "The command is still running. Continue it with exec_wait using the returned process ID and cursor.",
585
+ output: rendered.output,
586
+ stdout: snapshot.stdout.text,
587
+ stderr: snapshot.stderr.text,
588
+ data: {
589
+ processId: snapshot.processId,
590
+ processStatus: "running",
591
+ nextCursor,
592
+ outputBounds: outputBoundsData(snapshot, rendered.metadata),
593
+ observationMeta: {
594
+ kind: "volatile_external",
595
+ carryPolicy: "never"
596
+ }
597
+ }
598
+ }, EXEC_CONTEXT_TEXT_FIELDS, resultBudget);
599
+ }
600
+ async function captureFilesystemDelta(execution) {
601
+ if (!execution.filesystemStateBefore) return null;
602
+ try {
603
+ const after = await captureExecFilesystemSnapshot(
604
+ execution.cwd.absolutePath,
605
+ execution.cwd.logicalPath
606
+ );
607
+ return diffExecFilesystemSnapshots(execution.filesystemStateBefore, after);
608
+ } catch {
609
+ return null;
610
+ }
611
+ }
612
+ function projectExecFilesystemEvidence(delta, logicalRoot) {
613
+ const effects = delta.actions.map(renderExecFilesystemEffect);
614
+ const omittedEffectCount = Math.max(
615
+ 0,
616
+ delta.changedEntryCount - effects.length
617
+ );
618
+ const omittedEffectLine = omittedEffectCount > 0 ? `- ${omittedEffectCount} additional changed ${omittedEffectCount === 1 ? "entry" : "entries"} omitted by the ${delta.observation.actionLimit}-effect projection limit.` : void 0;
619
+ const outputLines = Object.freeze([
620
+ `Filesystem changes observed: ${delta.changedEntryCount}${delta.observation.complete ? "" : " (bounded observation)"}`,
621
+ "Filesystem effects observed:",
622
+ ...effects,
623
+ ...omittedEffectLine ? [omittedEffectLine] : []
624
+ ]);
625
+ return Object.freeze({
626
+ outputLines,
627
+ mutationGrounding: [
628
+ "Observed post-command filesystem effects (settled tool evidence; not command intent, semantic verification, or complete artifact content):",
629
+ `- observation root: ${logicalRoot}`,
630
+ `- observation complete: ${delta.observation.complete}`,
631
+ `- changed entries: ${delta.changedEntryCount}`,
632
+ `- listed effects: ${effects.length}`,
633
+ `- effects truncated: ${delta.observation.actionsTruncated}`,
634
+ "Effects:",
635
+ ...effects,
636
+ ...omittedEffectLine ? [omittedEffectLine] : []
637
+ ].join("\n")
638
+ });
639
+ }
640
+ function renderExecFilesystemEffect(action) {
641
+ const target = action.target ? `: ${action.target}` : "";
642
+ const state = action.details === "exec_filesystem_created" ? "created" : action.details === "exec_filesystem_modified" ? "modified" : action.details === "exec_filesystem_removed" ? "removed" : void 0;
643
+ return `- ${action.type}${target}${state ? ` (${state})` : ""}`;
644
+ }
645
+ async function finalizeExecResult(params) {
646
+ const { snapshot, execution } = params;
647
+ const exitCode = snapshot.exitCode ?? -1;
648
+ const cancellationIsSuccess = params.cancellationIsSuccess === true && snapshot.terminationReason === "cancelled";
649
+ const filesystemDelta = await captureFilesystemDelta(execution);
650
+ const observedStateChange = filesystemDelta?.observedStateChange === true;
651
+ const filesystemEvidence = observedStateChange && filesystemDelta ? projectExecFilesystemEvidence(
652
+ filesystemDelta,
653
+ execution.cwd.logicalPath
654
+ ) : null;
655
+ const commandHasData = snapshot.stdout.sawOutput || snapshot.stderr.sawOutput;
656
+ const ok = exitCode === 0 || cancellationIsSuccess;
657
+ const inconclusiveSuccess = exitCode === 0 && !commandHasData && !observedStateChange;
658
+ const producedNewInformation = observedStateChange || cancellationIsSuccess || ok && commandHasData;
659
+ const actions = filesystemDelta?.actions ?? [];
660
+ const resultSummary = cancellationIsSuccess ? "Result summary: the running command was cancelled." : inconclusiveSuccess ? "Result summary: the command completed without observable output or filesystem change. Inspect a concrete target or use a dedicated creation capability." : "";
661
+ const rendered = renderedOutput(
662
+ [
663
+ `Command: ${execution.commandPreview}`,
664
+ `CWD: ${execution.cwd.logicalPath}`,
665
+ `Process ID: ${snapshot.processId}`,
666
+ `Process status: ${snapshot.terminationReason ?? "completed"}`,
667
+ `Exit code: ${exitCode}`,
668
+ ...filesystemEvidence ? filesystemEvidence.outputLines : [],
669
+ "STDOUT:",
670
+ streamReceipt(snapshot.stdout, "stdout"),
671
+ "STDERR:",
672
+ streamReceipt(snapshot.stderr, "stderr"),
673
+ ...resultSummary ? [resultSummary] : []
674
+ ]
675
+ );
676
+ const processStatus = snapshot.terminationReason ?? "completed";
677
+ const data = {
678
+ ...commandHasData ? { hasData: true } : {},
679
+ ...observedStateChange ? { mutationEvidence: true } : {},
680
+ ...filesystemEvidence ? { mutationGrounding: filesystemEvidence.mutationGrounding } : {},
681
+ processId: snapshot.processId,
682
+ processStatus,
683
+ outputBounds: outputBoundsData(snapshot, rendered.metadata),
684
+ ...filesystemDelta ? { filesystemObservation: filesystemDelta.observation } : { filesystemObservation: { available: false } },
685
+ observationMeta: {
686
+ kind: "volatile_external",
687
+ carryPolicy: "never"
688
+ }
689
+ };
690
+ const common = {
691
+ output: rendered.output,
692
+ progress: observedStateChange || cancellationIsSuccess,
693
+ producedNewInformation,
694
+ actions: [...actions],
695
+ exitCode,
696
+ stdout: snapshot.stdout.text,
697
+ stderr: snapshot.stderr.text,
698
+ data
699
+ };
700
+ if (ok && (!inconclusiveSuccess || cancellationIsSuccess)) {
701
+ return deliverPluginTextResult({ ok: true, ...common }, EXEC_CONTEXT_TEXT_FIELDS, params.resultBudget);
702
+ }
703
+ const errorCode = inconclusiveSuccess ? "no_observable_result" : snapshot.terminationReason === "aborted" ? "exec_aborted" : snapshot.terminationReason === "spawn_failed" ? "exec_spawn_failed" : snapshot.terminationReason === "idle_timeout" ? "exec_idle_timeout" : snapshot.terminationReason === "hard_timeout" ? "exec_hard_timeout" : "non_zero_exit";
704
+ const error = inconclusiveSuccess ? resultSummary : errorCode === "exec_aborted" ? "The exec request was aborted." : errorCode === "exec_spawn_failed" ? "The runtime could not start the configured non-interactive shell." : errorCode === "exec_idle_timeout" ? `The command produced no output for ${execution.idleTimeoutMs}ms.` : errorCode === "exec_hard_timeout" ? `The command exceeded the ${execution.hardTimeoutMs}ms hard timeout.` : `The command exited with code ${exitCode}.`;
705
+ return deliverPluginTextResult({
706
+ ok: false,
707
+ ...common,
708
+ error,
709
+ errorCode
710
+ }, EXEC_CONTEXT_TEXT_FIELDS, params.resultBudget);
711
+ }
712
+
713
+ // plugins/exec/source/retained-output-failure.ts
714
+ function retainedOutputFailure(snapshot, context) {
715
+ const expired = hasUnavailableOutput(snapshot);
716
+ return failureResult(
717
+ {
718
+ errorCode: expired ? "exec_output_expired" : snapshot.outputFailure ? "exec_output_storage_failed" : "exec_output_delivery_pending",
719
+ message: expired ? "The retained output expired or is no longer available. The command was already started; it has not been run again." : snapshot.outputFailure ? "Output storage or delivery failed. The command was already started; do not run it again. Any committed bytes are retained for the configured retention period; complete output delivery is not confirmed." : "The output exceeds the delivery envelope and remains retained. The command was already executed; do not run it again.",
720
+ data: {
721
+ processId: snapshot.processId,
722
+ processStatus: snapshot.status,
723
+ nextCursor: snapshot.nextCursor,
724
+ ...snapshot.exitCode !== void 0 ? { exitCode: snapshot.exitCode } : {},
725
+ ...snapshot.terminationReason ? { terminationReason: snapshot.terminationReason } : {},
726
+ outputDelivery: expired ? "expired" : "pending",
727
+ ...snapshot.outputFailure ? { outputStorageFailure: snapshot.outputFailure } : {},
728
+ retainedCharacters: snapshot.stdout.text.length + snapshot.stderr.text.length
729
+ }
730
+ },
731
+ context?.resultBudget
732
+ );
733
+ }
734
+ function hasUnavailableOutput(snapshot) {
735
+ if (snapshot.outputFailure?.code === "exec_output_expired") return true;
736
+ return snapshot.outputFailure?.code === "exec_output_expired_or_unavailable";
737
+ }
738
+
739
+ // plugins/exec/source/errors.ts
740
+ var ExecPluginError = class extends Error {
741
+ code;
742
+ constructor(code, message) {
743
+ super(message);
744
+ this.name = "ExecPluginError";
745
+ this.code = code;
746
+ }
747
+ };
748
+ function execFailureFromError(error, operation) {
749
+ if (error instanceof ExecPluginError) {
750
+ return failureResult({
751
+ errorCode: error.code,
752
+ message: error.message,
753
+ output: `${operation} failed: ${error.message}`
754
+ });
755
+ }
756
+ return failureFromError(error, {
757
+ fallbackCode: `${operation}_failed`,
758
+ fallbackMessage: `${operation} failed without a safe diagnostic.`,
759
+ operation
760
+ });
761
+ }
762
+
763
+ // plugins/exec/source/terminal-delivery.ts
764
+ var import_node_crypto2 = require("node:crypto");
765
+ var ExecTerminalDelivery = class {
766
+ claim;
767
+ accepted = false;
768
+ get isClaimed() {
769
+ return this.claim !== void 0;
770
+ }
771
+ assertAvailable() {
772
+ if (this.isClaimed) throw this.unavailable();
773
+ }
774
+ reserve(snapshot) {
775
+ if (snapshot.status !== "settled") return snapshot;
776
+ this.assertAvailable();
777
+ this.claim = (0, import_node_crypto2.randomUUID)();
778
+ return Object.freeze({ ...snapshot, deliveryId: this.claim });
779
+ }
780
+ assertOwner(snapshot) {
781
+ if (snapshot.status !== "settled") return;
782
+ if (!this.claim || snapshot.deliveryId !== this.claim || this.accepted)
783
+ throw this.unavailable();
784
+ }
785
+ accept(snapshot) {
786
+ if (snapshot.status !== "settled") return;
787
+ this.assertOwner(snapshot);
788
+ this.accepted = true;
789
+ }
790
+ reject(snapshot) {
791
+ if (this.accepted) return;
792
+ if (snapshot.deliveryId !== this.claim) return;
793
+ this.claim = void 0;
794
+ }
795
+ unavailable() {
796
+ return new ExecPluginError(
797
+ "unknown_exec_process",
798
+ "The terminal exec result is already claimed by another observation."
799
+ );
800
+ }
801
+ };
802
+
803
+ // plugins/exec/source/output-files.ts
804
+ var import_node_crypto3 = require("node:crypto");
499
805
  var import_promises2 = require("node:fs/promises");
500
806
  var import_node_path2 = require("node:path");
807
+ var ID = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;
808
+ function outputStorageRoot(stateDir) {
809
+ if (!stateDir.trim()) throw outputFailure("state_dir_invalid");
810
+ return (0, import_node_path2.resolve)(stateDir, "output");
811
+ }
812
+ function outputOwnerDirectory(root, ownerId) {
813
+ if (!ownerId.trim()) throw outputFailure("owner_invalid");
814
+ return (0, import_node_path2.join)(root, (0, import_node_crypto3.createHash)("sha256").update(ownerId).digest("hex"));
815
+ }
816
+ function outputStreamPath(directory, id) {
817
+ assertOutputId(id);
818
+ return (0, import_node_path2.join)(directory, `${id}.bytes`);
819
+ }
820
+ function outputSnapshotPath(directory, id) {
821
+ assertOutputId(id);
822
+ return (0, import_node_path2.join)(directory, `${id}.snapshot.json`);
823
+ }
824
+ function assertOutputId(id) {
825
+ if (typeof id !== "string" || !ID.test(id)) throw outputFailure("id_invalid");
826
+ }
827
+ function outputFailure(code, cause) {
828
+ const error = new ExecPluginError(
829
+ `exec_output_${code}`,
830
+ `Exec output storage failed: ${code}.`
831
+ );
832
+ if (cause !== void 0)
833
+ Object.defineProperty(error, "cause", { value: cause });
834
+ return error;
835
+ }
836
+ async function writeOutputMetadata(path, value) {
837
+ const temporary = `${path}.${(0, import_node_crypto3.randomUUID)()}.tmp`;
838
+ try {
839
+ const file = await (0, import_promises2.open)(temporary, "wx", 384);
840
+ try {
841
+ await file.writeFile(JSON.stringify(value));
842
+ await file.sync();
843
+ } finally {
844
+ await file.close();
845
+ }
846
+ await (0, import_promises2.rename)(temporary, path);
847
+ const directory = await (0, import_promises2.open)((0, import_node_path2.dirname)(path), "r");
848
+ try {
849
+ await directory.sync();
850
+ } finally {
851
+ await directory.close();
852
+ }
853
+ } catch (error) {
854
+ await (0, import_promises2.rm)(temporary, { force: true }).catch(() => void 0);
855
+ throw outputFailure("metadata_write_failed", error);
856
+ }
857
+ }
858
+ async function prepareOutputOwnerDirectory(directory) {
859
+ try {
860
+ await (0, import_promises2.mkdir)(directory, { recursive: true, mode: 448 });
861
+ } catch (error) {
862
+ throw outputFailure("write_failed", error);
863
+ }
864
+ }
865
+ async function readOutputOwner(directory) {
866
+ let value;
867
+ try {
868
+ value = JSON.parse(await (0, import_promises2.readFile)((0, import_node_path2.join)(directory, "owner.json"), "utf8"));
869
+ } catch (error) {
870
+ if (error.code === "ENOENT") return void 0;
871
+ throw outputFailure("owner_read_failed", error);
872
+ }
873
+ if (!isOutputOwnerRecord(value)) throw outputFailure("owner_invalid");
874
+ return value;
875
+ }
876
+ function isOutputOwnerRecord(value) {
877
+ if (!value || typeof value !== "object") return false;
878
+ const owner = value;
879
+ if (owner.kind !== "exec_output_owner_v1") return false;
880
+ if (typeof owner.ownerId !== "string" || !owner.ownerId.trim()) return false;
881
+ return owner.completedAt === null || Number.isSafeInteger(owner.completedAt) && owner.completedAt >= 0;
882
+ }
883
+ async function lookupOutputSnapshot(directory, ownerId, id) {
884
+ let value;
885
+ try {
886
+ value = JSON.parse(
887
+ await (0, import_promises2.readFile)(outputSnapshotPath(directory, id), "utf8")
888
+ );
889
+ } catch (error) {
890
+ throw outputFailure("snapshot_unavailable", error);
891
+ }
892
+ if (!isStoredOutputSnapshot(value, ownerId, id))
893
+ throw outputFailure("snapshot_binding_invalid");
894
+ return value;
895
+ }
896
+ function isStoredOutputSnapshot(value, ownerId, id) {
897
+ if (!value || typeof value !== "object") return false;
898
+ const snapshot = value;
899
+ if (snapshot.kind !== "exec_output_snapshot_v1" || snapshot.ownerId !== ownerId)
900
+ return false;
901
+ if (typeof snapshot.streamId !== "string" || !ID.test(snapshot.streamId))
902
+ return false;
903
+ const body = snapshot.body;
904
+ if (!body || typeof body !== "object" || body.id !== id) return false;
905
+ return isExecOutputBody(body);
906
+ }
907
+ function isExecOutputBody(value) {
908
+ if (!value || typeof value !== "object") return false;
909
+ const body = value;
910
+ if (typeof body.id !== "string" || !ID.test(body.id)) return false;
911
+ if (body.stream !== "stdout" && body.stream !== "stderr") return false;
912
+ if (!Number.isSafeInteger(body.startByte) || body.startByte < 0) return false;
913
+ if (!Number.isSafeInteger(body.endByte) || body.endByte < body.startByte)
914
+ return false;
915
+ if (body.byteLength !== body.endByte - body.startByte) return false;
916
+ return typeof body.sha256 === "string" && /^sha256:[a-f0-9]{64}$/.test(body.sha256);
917
+ }
918
+ async function readOutputSnapshot(directory, ownerId, body) {
919
+ const snapshot = await lookupOutputSnapshot(directory, ownerId, body.id);
920
+ const stored = snapshot.body;
921
+ if (stored.stream !== body.stream || stored.startByte !== body.startByte || stored.endByte !== body.endByte || stored.byteLength !== body.byteLength || stored.sha256 !== body.sha256)
922
+ throw outputFailure("snapshot_binding_invalid");
923
+ return snapshot;
924
+ }
925
+
926
+ // plugins/exec/source/request-resources.ts
927
+ var ExecRequestResources = class {
928
+ constructor(manager, pending, preparation) {
929
+ this.manager = manager;
930
+ this.pending = pending;
931
+ const state = preparation?.requestState;
932
+ if (!state) return;
933
+ const saved = state.read("exec.terminal.v1");
934
+ if (saved !== void 0) this.restore(saved);
935
+ state.register("exec.terminal.v1", {
936
+ snapshot: () => this.snapshot(),
937
+ dispose: () => this.dispose()
938
+ });
939
+ }
940
+ manager;
941
+ pending;
942
+ owned = /* @__PURE__ */ new Map();
943
+ restored = /* @__PURE__ */ new Map();
944
+ deliveries = /* @__PURE__ */ new Map();
945
+ started(processId, scope, settled, context) {
946
+ this.owned.set(processId, scope);
947
+ context?.requestWork?.trackUntil(settled);
948
+ }
949
+ forget(processId) {
950
+ this.owned.delete(processId);
951
+ this.restored.delete(processId);
952
+ this.deliveries.delete(processId);
953
+ }
954
+ isRestored(processId) {
955
+ return this.restored.has(processId);
956
+ }
957
+ terminal(processId, scope, cursor) {
958
+ const entry = this.restored.get(processId);
959
+ if (!entry) return void 0;
960
+ if (entry.scope !== scope)
961
+ throw new ExecPluginError(
962
+ "unknown_exec_process",
963
+ "The exec process belongs to a different session."
964
+ );
965
+ if (cursor !== void 0 && cursor !== entry.cursor)
966
+ throw new ExecPluginError(
967
+ "stale_exec_process_cursor",
968
+ "The saved exec cursor is stale."
969
+ );
970
+ return this.deliveries.get(processId).reserve({
971
+ ...structuredClone(entry.snapshot),
972
+ nextCursor: entry.cursor
973
+ });
974
+ }
975
+ rejectTerminal(snapshot) {
976
+ this.deliveries.get(snapshot.processId)?.reject(snapshot);
977
+ }
978
+ snapshot() {
979
+ for (const delivery of this.deliveries.values()) delivery.assertAvailable();
980
+ const executions = [...this.restored.values()];
981
+ for (const [processId, scope] of this.owned) {
982
+ const execution = this.pending.get(processId);
983
+ if (!execution) continue;
984
+ const terminal = this.manager.snapshotSettled(processId, scope);
985
+ const before = execution.filesystemStateBefore;
986
+ executions.push({
987
+ processId,
988
+ scope,
989
+ ...terminal,
990
+ execution: {
991
+ ...execution,
992
+ filesystemStateBefore: before ? { ...before, entries: [...before.entries] } : null
993
+ }
994
+ });
995
+ }
996
+ return { kind: "exec_terminal_state_v2", executions };
997
+ }
998
+ restore(value) {
999
+ if (!isRecord(value) || value.kind !== "exec_terminal_state_v1" && value.kind !== "exec_terminal_state_v2" || !Array.isArray(value.executions))
1000
+ throw invalid();
1001
+ for (const entry of value.executions) {
1002
+ if (!isSavedExecution(entry) || this.restored.has(entry.processId))
1003
+ throw invalid();
1004
+ const before = entry.execution.filesystemStateBefore;
1005
+ this.restored.set(entry.processId, structuredClone(entry));
1006
+ this.deliveries.set(entry.processId, new ExecTerminalDelivery());
1007
+ this.pending.set(entry.processId, {
1008
+ ...structuredClone(entry.execution),
1009
+ filesystemStateBefore: before ? { ...before, entries: new Map(before.entries) } : null
1010
+ });
1011
+ }
1012
+ }
1013
+ async dispose() {
1014
+ for (const [processId, scope] of this.owned) {
1015
+ try {
1016
+ await this.manager.cancel({ processId, scope });
1017
+ } catch {
1018
+ }
1019
+ try {
1020
+ await this.manager.release(processId, scope);
1021
+ } catch {
1022
+ }
1023
+ this.pending.delete(processId);
1024
+ }
1025
+ for (const id of this.restored.keys()) this.pending.delete(id);
1026
+ this.owned.clear();
1027
+ this.restored.clear();
1028
+ this.deliveries.clear();
1029
+ }
1030
+ };
1031
+ function isSavedExecution(value) {
1032
+ if (!isRecord(value) || typeof value.processId !== "string" || typeof value.scope !== "string" || !Number.isSafeInteger(value.cursor) || value.cursor < 1 || !isRecord(value.snapshot) || value.snapshot.processId !== value.processId || value.snapshot.status !== "settled" || !isStream(value.snapshot.stdout, "stdout") || !isStream(value.snapshot.stderr, "stderr") || !Number.isFinite(value.snapshot.elapsedMs) || !isRecord(value.execution) || typeof value.execution.commandPreview !== "string" || !isRecord(value.execution.cwd) || typeof value.execution.cwd.absolutePath !== "string" || typeof value.execution.cwd.logicalPath !== "string")
1033
+ return false;
1034
+ if (![value.execution.hardTimeoutMs, value.execution.idleTimeoutMs].every(
1035
+ Number.isFinite
1036
+ ))
1037
+ return false;
1038
+ const before = value.execution.filesystemStateBefore;
1039
+ return before === null || isRecord(before) && typeof before.absoluteRoot === "string" && typeof before.logicalRoot === "string" && typeof before.rootExists === "boolean" && typeof before.complete === "boolean" && Array.isArray(before.entries) && before.entries.every(
1040
+ (entry) => Array.isArray(entry) && entry.length === 2 && typeof entry[0] === "string" && isRecord(entry[1]) && typeof entry[1].kind === "string" && [entry[1].mode, entry[1].size, entry[1].mtimeMs].every(
1041
+ Number.isFinite
1042
+ )
1043
+ );
1044
+ }
1045
+ function isStream(value, stream) {
1046
+ return isRecord(value) && typeof value.text === "string" && typeof value.sawOutput === "boolean" && (value.body === void 0 || isExecOutputBody(value.body) && value.body.stream === stream) && isRecord(value.metadata) && typeof value.metadata.truncated === "boolean" && [
1047
+ value.metadata.originalChars,
1048
+ value.metadata.returnedChars,
1049
+ value.metadata.omittedChars
1050
+ ].every(Number.isFinite);
1051
+ }
1052
+ function isRecord(value) {
1053
+ return !!value && typeof value === "object" && !Array.isArray(value);
1054
+ }
1055
+ function invalid() {
1056
+ return new Error("exec_terminal_snapshot_invalid");
1057
+ }
1058
+
1059
+ // plugins/exec/source/paths.ts
1060
+ var import_promises3 = require("node:fs/promises");
1061
+ var import_node_path3 = require("node:path");
501
1062
  function resolveContextualDirectory(pluginContext, executionContext, requestedPath) {
502
- if ((0, import_node_path2.isAbsolute)(requestedPath)) return { absolutePath: requestedPath };
1063
+ if ((0, import_node_path3.isAbsolute)(requestedPath)) return { absolutePath: requestedPath };
503
1064
  const isWorkspaceAlias = requestedPath === "workspace" || requestedPath.startsWith("workspace/");
504
1065
  const base = resolvePluginPath(
505
1066
  {
@@ -509,73 +1070,688 @@ function resolveContextualDirectory(pluginContext, executionContext, requestedPa
509
1070
  { allowedLocations: [isWorkspaceAlias ? "workspace" : "agent_work"] }
510
1071
  );
511
1072
  const relativePath = isWorkspaceAlias ? requestedPath.slice("workspace".length + 1) || "." : requestedPath;
512
- return { absolutePath: `${base.absolutePath}${import_node_path2.sep}${relativePath}`, base };
1073
+ return { absolutePath: `${base.absolutePath}${import_node_path3.sep}${relativePath}`, base };
513
1074
  }
514
1075
  function isOutsideExecContextBase(relativePath) {
515
1076
  if (relativePath === "..") return true;
516
- if (relativePath.startsWith(`..${import_node_path2.sep}`)) return true;
517
- return (0, import_node_path2.isAbsolute)(relativePath);
1077
+ if (relativePath.startsWith(`..${import_node_path3.sep}`)) return true;
1078
+ return (0, import_node_path3.isAbsolute)(relativePath);
518
1079
  }
519
1080
  function logicalDirectory(absolutePath, base) {
520
1081
  if (!base) return absolutePath;
521
- const fromBase = (0, import_node_path2.relative)(base.absolutePath, absolutePath);
1082
+ const fromBase = (0, import_node_path3.relative)(base.absolutePath, absolutePath);
522
1083
  if (isOutsideExecContextBase(fromBase)) return absolutePath;
523
- return import_node_path2.posix.join(base.logicalPath, fromBase.split(import_node_path2.sep).join("/") || ".");
1084
+ return import_node_path3.posix.join(base.logicalPath, fromBase.split(import_node_path3.sep).join("/") || ".");
1085
+ }
1086
+ async function resolveExecWorkingDirectory(pluginContext, executionContext, rawPath) {
1087
+ const requestedPath = readRequiredString(rawPath, {
1088
+ name: "cwd",
1089
+ trim: false,
1090
+ maxLength: 4096
1091
+ });
1092
+ if (requestedPath.includes("\0")) {
1093
+ throw new ExecPluginError(
1094
+ "exec_cwd_invalid",
1095
+ "The selected cwd contains NUL characters."
1096
+ );
1097
+ }
1098
+ const target = resolveContextualDirectory(
1099
+ pluginContext,
1100
+ executionContext,
1101
+ requestedPath
1102
+ );
1103
+ let absolutePath;
1104
+ let info;
1105
+ try {
1106
+ absolutePath = await (0, import_promises3.realpath)(target.absolutePath);
1107
+ info = await (0, import_promises3.stat)(absolutePath);
1108
+ } catch (error) {
1109
+ if (error instanceof Error && "code" in error && error.code === "ENOENT") {
1110
+ throw new ExecPluginError(
1111
+ "exec_cwd_not_found",
1112
+ "The selected cwd does not exist. Select an existing directory."
1113
+ );
1114
+ }
1115
+ throw new ExecPluginError(
1116
+ "exec_cwd_inaccessible",
1117
+ "The selected cwd cannot be accessed by the runtime."
1118
+ );
1119
+ }
1120
+ if (!info.isDirectory()) {
1121
+ throw new ExecPluginError(
1122
+ "exec_cwd_not_directory",
1123
+ "The selected cwd is not a directory."
1124
+ );
1125
+ }
1126
+ return Object.freeze({
1127
+ absolutePath,
1128
+ logicalPath: logicalDirectory(absolutePath, target.base)
1129
+ });
1130
+ }
1131
+
1132
+ // plugins/exec/source/process-manager.ts
1133
+ var import_node_child_process = require("node:child_process");
1134
+ var import_node_crypto6 = require("node:crypto");
1135
+ var import_node_os = require("node:os");
1136
+ var import_node_path6 = require("node:path");
1137
+
1138
+ // plugins/exec/source/process-output.ts
1139
+ function streamReceipt2(body) {
1140
+ return {
1141
+ text: "",
1142
+ sawOutput: (body?.endByte ?? 0) > 0,
1143
+ metadata: {
1144
+ truncated: false,
1145
+ originalChars: 0,
1146
+ returnedChars: 0,
1147
+ omittedChars: 0
1148
+ },
1149
+ ...body ? { body } : {}
1150
+ };
1151
+ }
1152
+ async function createExecProcessOutput(store, ownerId) {
1153
+ const stdout = await store.createWriter({ ownerId, stream: "stdout" });
1154
+ let stderr;
1155
+ try {
1156
+ stderr = await store.createWriter({ ownerId, stream: "stderr" });
1157
+ } catch (error) {
1158
+ await stdout.dispose();
1159
+ throw error;
1160
+ }
1161
+ const offsets = { stdout: 0, stderr: 0 };
1162
+ let settled;
1163
+ let failure;
1164
+ let finished2 = false;
1165
+ let tail = Promise.resolve();
1166
+ const serialize = async (operation) => {
1167
+ const previous = tail;
1168
+ let release = () => {
1169
+ };
1170
+ tail = new Promise((resolve2) => {
1171
+ release = resolve2;
1172
+ });
1173
+ await previous;
1174
+ try {
1175
+ return await operation();
1176
+ } finally {
1177
+ release();
1178
+ }
1179
+ };
1180
+ const recordFailure = (error) => {
1181
+ failure ??= error instanceof Error ? error.message : "exec_output_write_failed";
1182
+ };
1183
+ const capture = async () => {
1184
+ try {
1185
+ const out = await stdout.snapshot({
1186
+ startByte: offsets.stdout,
1187
+ endByte: finished2 ? stdout.byteLength : stdout.utf8ByteLength
1188
+ });
1189
+ const err = await stderr.snapshot({
1190
+ startByte: offsets.stderr,
1191
+ endByte: finished2 ? stderr.byteLength : stderr.utf8ByteLength
1192
+ });
1193
+ return {
1194
+ stdout: streamReceipt2(out),
1195
+ stderr: streamReceipt2(err),
1196
+ ...failureReceipt()
1197
+ };
1198
+ } catch (error) {
1199
+ recordFailure(error);
1200
+ return {
1201
+ stdout: streamReceipt2(),
1202
+ stderr: streamReceipt2(),
1203
+ ...failureReceipt()
1204
+ };
1205
+ }
1206
+ };
1207
+ const failureReceipt = () => failure ? {
1208
+ outputFailure: {
1209
+ code: failure,
1210
+ stdoutBytes: stdout.byteLength,
1211
+ stderrBytes: stderr.byteLength
1212
+ }
1213
+ } : {};
1214
+ return Object.freeze({
1215
+ attach(streams, onActivity, onFailure) {
1216
+ for (const name of ["stdout", "stderr"]) {
1217
+ const source = streams[name];
1218
+ const writer = name === "stdout" ? stdout : stderr;
1219
+ source.on("data", onActivity);
1220
+ const failed = (error) => {
1221
+ recordFailure(error);
1222
+ source.pause();
1223
+ onFailure();
1224
+ };
1225
+ writer.sink.on("error", failed);
1226
+ source.on("error", failed);
1227
+ source.pipe(writer.sink);
1228
+ }
1229
+ },
1230
+ async finish() {
1231
+ if (!stdout.sink.writableEnded) stdout.sink.end();
1232
+ if (!stderr.sink.writableEnded) stderr.sink.end();
1233
+ const outcomes = await Promise.allSettled([
1234
+ stdout.completion,
1235
+ stderr.completion
1236
+ ]);
1237
+ for (const outcome of outcomes)
1238
+ if (outcome.status === "rejected") recordFailure(outcome.reason);
1239
+ await serialize(async () => {
1240
+ finished2 = true;
1241
+ settled = await capture();
1242
+ });
1243
+ },
1244
+ peek() {
1245
+ return serialize(async () => settled ?? await capture());
1246
+ },
1247
+ checkpoint() {
1248
+ if (!settled) throw new Error("exec_snapshot_not_quiescent");
1249
+ return settled;
1250
+ },
1251
+ accept(snapshot) {
1252
+ return serialize(async () => {
1253
+ if (snapshot.outputFailure)
1254
+ throw new Error("exec_output_not_delivered");
1255
+ for (const name of ["stdout", "stderr"]) {
1256
+ const body = snapshot[name].body;
1257
+ const writer = name === "stdout" ? stdout : stderr;
1258
+ if (!body || body.startByte !== offsets[name] || body.endByte > writer.byteLength)
1259
+ throw new Error("exec_output_snapshot_mismatch");
1260
+ }
1261
+ offsets.stdout = snapshot.stdout.body.endByte;
1262
+ offsets.stderr = snapshot.stderr.body.endByte;
1263
+ if (finished2) settled = await capture();
1264
+ });
1265
+ },
1266
+ async dispose() {
1267
+ await Promise.all([stdout.dispose(), stderr.dispose()]);
1268
+ }
1269
+ });
1270
+ }
1271
+
1272
+ // plugins/exec/source/output-store.ts
1273
+ var import_promises9 = require("node:fs/promises");
1274
+ var import_node_path5 = require("node:path");
1275
+
1276
+ // plugins/exec/source/output-contracts.ts
1277
+ var DEFAULT_EXEC_OUTPUT_RETENTION_MS = 7 * 24 * 60 * 6e4;
1278
+ var EXEC_OUTPUT_IO_CHUNK_BYTES = 64 * 1024;
1279
+
1280
+ // plugins/exec/source/output-range-reader.ts
1281
+ var import_node_crypto4 = require("node:crypto");
1282
+ var import_promises4 = require("node:fs/promises");
1283
+ function assertOutputRange(startByte, endByte, availableBytes) {
1284
+ if (!Number.isSafeInteger(startByte) || startByte < 0)
1285
+ throw outputFailure("range_invalid");
1286
+ if (!Number.isSafeInteger(endByte) || endByte < startByte)
1287
+ throw outputFailure("range_invalid");
1288
+ if (endByte > availableBytes) throw outputFailure("range_invalid");
1289
+ }
1290
+ async function* readOutputFileRange(path, range) {
1291
+ assertOutputRange(
1292
+ range.offset,
1293
+ range.offset + range.length,
1294
+ Number.MAX_SAFE_INTEGER
1295
+ );
1296
+ if (!Number.isSafeInteger(range.maxChunkBytes) || range.maxChunkBytes < 1 || range.maxChunkBytes > EXEC_OUTPUT_IO_CHUNK_BYTES)
1297
+ throw outputFailure("chunk_size_invalid");
1298
+ range.signal?.throwIfAborted();
1299
+ const handle = await (0, import_promises4.open)(path, "r").catch((error) => {
1300
+ throw outputFailure("read_failed", error);
1301
+ });
1302
+ try {
1303
+ const end = range.offset + range.length;
1304
+ let position = range.offset;
1305
+ while (position < end) {
1306
+ range.signal?.throwIfAborted();
1307
+ const buffer = Buffer.allocUnsafe(
1308
+ Math.min(range.maxChunkBytes, end - position)
1309
+ );
1310
+ const { bytesRead } = await handle.read(
1311
+ buffer,
1312
+ 0,
1313
+ buffer.length,
1314
+ position
1315
+ );
1316
+ if (bytesRead === 0) throw outputFailure("body_incomplete");
1317
+ position += bytesRead;
1318
+ yield buffer.subarray(0, bytesRead);
1319
+ }
1320
+ range.signal?.throwIfAborted();
1321
+ } catch (error) {
1322
+ if (range.signal?.aborted) throw error;
1323
+ if (error instanceof ExecPluginError) throw error;
1324
+ throw outputFailure("read_failed", error);
1325
+ } finally {
1326
+ await handle.close();
1327
+ }
1328
+ }
1329
+ async function hashOutputRange(path, startByte, endByte, signal) {
1330
+ const hash = (0, import_node_crypto4.createHash)("sha256");
1331
+ for await (const chunk of readOutputFileRange(path, {
1332
+ offset: startByte,
1333
+ length: endByte - startByte,
1334
+ maxChunkBytes: EXEC_OUTPUT_IO_CHUNK_BYTES,
1335
+ ...signal ? { signal } : {}
1336
+ }))
1337
+ hash.update(chunk);
1338
+ return `sha256:${hash.digest("hex")}`;
1339
+ }
1340
+ async function assertOutputBodyHash(path, body, signal) {
1341
+ assertOutputRange(body.startByte, body.endByte, Number.MAX_SAFE_INTEGER);
1342
+ if (body.byteLength !== body.endByte - body.startByte)
1343
+ throw outputFailure("snapshot_binding_invalid");
1344
+ if (await hashOutputRange(path, body.startByte, body.endByte, signal) !== body.sha256)
1345
+ throw outputFailure("body_hash_mismatch");
1346
+ }
1347
+
1348
+ // plugins/exec/source/output-maintenance.ts
1349
+ var import_promises5 = require("node:fs/promises");
1350
+ var MAX_CLEANUP_INTERVAL_MS = 60 * 6e4;
1351
+ var jobs = /* @__PURE__ */ new Map();
1352
+ function scheduleExecOutputCleanup(root, retentionMs, cleanup) {
1353
+ const intervalMs = Math.max(
1354
+ 1,
1355
+ Math.min(retentionMs, MAX_CLEANUP_INTERVAL_MS)
1356
+ );
1357
+ const previous = jobs.get(root);
1358
+ if (previous) {
1359
+ previous.cleanup = cleanup;
1360
+ previous.intervalMs = intervalMs;
1361
+ previous.requested = true;
1362
+ return;
1363
+ }
1364
+ const job = { cleanup, intervalMs, requested: false };
1365
+ jobs.set(root, job);
1366
+ const sweep = async () => {
1367
+ job.requested = false;
1368
+ let empty = false;
1369
+ try {
1370
+ await job.cleanup();
1371
+ empty = (await (0, import_promises5.readdir)(root).catch((error) => {
1372
+ if (error.code === "ENOENT") return [];
1373
+ throw error;
1374
+ })).length === 0;
1375
+ } catch {
1376
+ process.emitWarning(
1377
+ "EXEC output cleanup failed; a later sweep will retry.",
1378
+ {
1379
+ code: "EXEC_OUTPUT_CLEANUP_FAILED"
1380
+ }
1381
+ );
1382
+ }
1383
+ if (empty && !job.requested) {
1384
+ jobs.delete(root);
1385
+ return;
1386
+ }
1387
+ const timer = setTimeout(() => {
1388
+ void sweep();
1389
+ }, job.intervalMs);
1390
+ timer.unref();
1391
+ };
1392
+ void sweep();
1393
+ }
1394
+
1395
+ // plugins/exec/source/output-retention.ts
1396
+ var import_promises6 = require("node:fs/promises");
1397
+ var import_node_path4 = require("node:path");
1398
+ async function outputCaptureCompletedAt(directory, owner) {
1399
+ if (owner?.completedAt !== null && owner?.completedAt !== void 0)
1400
+ return owner.completedAt;
1401
+ const entries = await (0, import_promises6.readdir)(directory, { withFileTypes: true });
1402
+ const captures = entries.filter(
1403
+ (entry) => entry.isFile() && entry.name.endsWith(".bytes")
1404
+ );
1405
+ if (!captures.length) return (await (0, import_promises6.stat)(directory)).mtimeMs;
1406
+ const times = await Promise.all(
1407
+ captures.map(
1408
+ async (entry) => (await (0, import_promises6.stat)((0, import_node_path4.join)(directory, entry.name))).mtimeMs
1409
+ )
1410
+ );
1411
+ return Math.max(...times);
1412
+ }
1413
+ async function hasOutputExpired(directory, owner, now, retentionMs) {
1414
+ return now - await outputCaptureCompletedAt(directory, owner) >= retentionMs;
1415
+ }
1416
+
1417
+ // plugins/exec/source/output-utf8-boundary.ts
1418
+ function incompleteUtf8TailBytes(tail) {
1419
+ if (tail.length === 0) return 0;
1420
+ let lead = tail.length - 1;
1421
+ while (lead >= 0 && (tail[lead] & 192) === 128) lead -= 1;
1422
+ if (lead < 0) return 0;
1423
+ const byte = tail[lead];
1424
+ let expected = 1;
1425
+ if (byte >= 194 && byte <= 223) expected = 2;
1426
+ if (byte >= 224 && byte <= 239) expected = 3;
1427
+ if (byte >= 240 && byte <= 244) expected = 4;
1428
+ const available = tail.length - lead;
1429
+ return available < expected ? available : 0;
1430
+ }
1431
+
1432
+ // plugins/exec/source/output-writer.ts
1433
+ var import_node_crypto5 = require("node:crypto");
1434
+ var import_promises7 = require("node:fs/promises");
1435
+ var import_node_stream = require("node:stream");
1436
+ var import_promises8 = require("node:stream/promises");
1437
+ var OutputFileSink = class extends import_node_stream.Writable {
1438
+ constructor(file) {
1439
+ super({ highWaterMark: EXEC_OUTPUT_IO_CHUNK_BYTES });
1440
+ this.file = file;
1441
+ }
1442
+ file;
1443
+ committedBytes = 0;
1444
+ utf8ByteLength = 0;
1445
+ tail = Buffer.alloc(0);
1446
+ _write(chunk, _encoding, callback) {
1447
+ this.writeChunk(chunk).then(
1448
+ () => callback(),
1449
+ (error) => callback(outputFailure("write_failed", error))
1450
+ );
1451
+ }
1452
+ async writeChunk(chunk) {
1453
+ let offset = 0;
1454
+ while (offset < chunk.length) {
1455
+ const length = Math.min(
1456
+ EXEC_OUTPUT_IO_CHUNK_BYTES,
1457
+ chunk.length - offset
1458
+ );
1459
+ const { bytesWritten } = await this.file.write(
1460
+ chunk,
1461
+ offset,
1462
+ length,
1463
+ this.committedBytes
1464
+ );
1465
+ if (bytesWritten === 0) throw outputFailure("write_zero_progress");
1466
+ const written = chunk.subarray(offset, offset + bytesWritten);
1467
+ this.tail = Buffer.concat([this.tail, written.subarray(-4)]).subarray(-4);
1468
+ offset += bytesWritten;
1469
+ this.committedBytes += bytesWritten;
1470
+ this.utf8ByteLength = this.committedBytes - incompleteUtf8TailBytes(this.tail);
1471
+ }
1472
+ }
1473
+ _final(callback) {
1474
+ this.file.datasync().then(
1475
+ () => callback(),
1476
+ (error) => callback(outputFailure("write_failed", error))
1477
+ );
1478
+ }
1479
+ _destroy(error, callback) {
1480
+ this.file.close().then(
1481
+ () => callback(error),
1482
+ (cause) => callback(error ?? outputFailure("close_failed", cause))
1483
+ );
1484
+ }
1485
+ };
1486
+ async function createOutputWriter(params) {
1487
+ const streamId = (0, import_node_crypto5.randomUUID)();
1488
+ const path = outputStreamPath(params.directory, streamId);
1489
+ const file = await (0, import_promises7.open)(path, "wx+", 384).catch((error) => {
1490
+ throw outputFailure("write_failed", error);
1491
+ });
1492
+ const sink = new OutputFileSink(file);
1493
+ const completion = (0, import_promises8.finished)(sink).finally(params.onClosed);
1494
+ void completion.catch(() => void 0);
1495
+ return Object.freeze({
1496
+ sink,
1497
+ get byteLength() {
1498
+ return sink.committedBytes;
1499
+ },
1500
+ get utf8ByteLength() {
1501
+ return sink.utf8ByteLength;
1502
+ },
1503
+ completion,
1504
+ async snapshot(range = {
1505
+ startByte: 0
1506
+ }) {
1507
+ if (sink.errored) throw sink.errored;
1508
+ const startByte = range.startByte;
1509
+ const endByte = range.endByte ?? sink.committedBytes;
1510
+ assertOutputRange(startByte, endByte, sink.committedBytes);
1511
+ const body = Object.freeze({
1512
+ id: (0, import_node_crypto5.randomUUID)(),
1513
+ stream: params.stream,
1514
+ startByte,
1515
+ endByte,
1516
+ byteLength: endByte - startByte,
1517
+ sha256: await hashOutputRange(path, startByte, endByte)
1518
+ });
1519
+ await writeOutputMetadata(outputSnapshotPath(params.directory, body.id), {
1520
+ kind: "exec_output_snapshot_v1",
1521
+ ownerId: params.ownerId,
1522
+ streamId,
1523
+ body
1524
+ });
1525
+ return body;
1526
+ },
1527
+ async dispose() {
1528
+ if (!sink.destroyed) sink.destroy();
1529
+ await completion.catch(() => void 0);
1530
+ }
1531
+ });
1532
+ }
1533
+
1534
+ // plugins/exec/source/output-store.ts
1535
+ var activeWriters = /* @__PURE__ */ new Map();
1536
+ var activeReaders = /* @__PURE__ */ new Map();
1537
+ var ownerOperations = /* @__PURE__ */ new Map();
1538
+ async function withOutputOwnerLock(directory, operation) {
1539
+ const previous = ownerOperations.get(directory) ?? Promise.resolve();
1540
+ let release = () => {
1541
+ };
1542
+ const current = new Promise((resolve2) => {
1543
+ release = resolve2;
1544
+ });
1545
+ ownerOperations.set(directory, current);
1546
+ await previous;
1547
+ try {
1548
+ return await operation();
1549
+ } finally {
1550
+ release();
1551
+ if (ownerOperations.get(directory) === current)
1552
+ ownerOperations.delete(directory);
1553
+ }
1554
+ }
1555
+ function createExecOutputStore(params) {
1556
+ const root = outputStorageRoot(params.stateDir);
1557
+ const retentionMs = params.retentionMs ?? DEFAULT_EXEC_OUTPUT_RETENTION_MS;
1558
+ if (!Number.isSafeInteger(retentionMs) || retentionMs < 0)
1559
+ throw outputFailure("retention_invalid");
1560
+ const now = params.now ?? Date.now;
1561
+ async function retain(directory, ownerId) {
1562
+ await prepareOutputOwnerDirectory(directory);
1563
+ const previous = await readOutputOwner(directory);
1564
+ if (previous && previous.ownerId !== ownerId)
1565
+ throw outputFailure("owner_binding_invalid");
1566
+ if (previous?.completedAt === null) return;
1567
+ await writeOutputMetadata((0, import_node_path5.join)(directory, "owner.json"), {
1568
+ kind: "exec_output_owner_v1",
1569
+ ownerId,
1570
+ completedAt: null
1571
+ });
1572
+ }
1573
+ const store = Object.freeze({
1574
+ async createWriter(input) {
1575
+ if (input.stream !== "stdout" && input.stream !== "stderr")
1576
+ throw outputFailure("stream_invalid");
1577
+ const directory = outputOwnerDirectory(root, input.ownerId);
1578
+ return withOutputOwnerLock(directory, async () => {
1579
+ await retain(directory, input.ownerId);
1580
+ const writer = await createOutputWriter({
1581
+ directory,
1582
+ ownerId: input.ownerId,
1583
+ stream: input.stream,
1584
+ async onClosed() {
1585
+ await withOutputOwnerLock(directory, async () => {
1586
+ const count = (activeWriters.get(directory) ?? 1) - 1;
1587
+ if (count > 0) activeWriters.set(directory, count);
1588
+ if (count > 0) return;
1589
+ activeWriters.delete(directory);
1590
+ await writeOutputMetadata((0, import_node_path5.join)(directory, "owner.json"), {
1591
+ kind: "exec_output_owner_v1",
1592
+ ownerId: input.ownerId,
1593
+ completedAt: now()
1594
+ });
1595
+ });
1596
+ }
1597
+ });
1598
+ activeWriters.set(directory, (activeWriters.get(directory) ?? 0) + 1);
1599
+ store.startMaintenance();
1600
+ return writer;
1601
+ });
1602
+ },
1603
+ async *readRange(input) {
1604
+ const directory = outputOwnerDirectory(root, input.ownerId);
1605
+ assertOutputRange(
1606
+ input.offset,
1607
+ input.offset + input.length,
1608
+ input.body.byteLength
1609
+ );
1610
+ await withOutputOwnerLock(directory, async () => {
1611
+ const owner = await readOutputOwner(directory);
1612
+ if (!owner) throw outputFailure("expired_or_unavailable");
1613
+ if (owner.ownerId !== input.ownerId)
1614
+ throw outputFailure("owner_binding_invalid");
1615
+ if (!activeWriters.has(directory) && await hasOutputExpired(directory, owner, now(), retentionMs))
1616
+ throw outputFailure("expired");
1617
+ activeReaders.set(directory, (activeReaders.get(directory) ?? 0) + 1);
1618
+ });
1619
+ try {
1620
+ const snapshot = await readOutputSnapshot(
1621
+ directory,
1622
+ input.ownerId,
1623
+ input.body
1624
+ );
1625
+ const path = outputStreamPath(directory, snapshot.streamId);
1626
+ await assertOutputBodyHash(path, input.body, input.signal);
1627
+ yield* readOutputFileRange(path, {
1628
+ offset: input.body.startByte + input.offset,
1629
+ length: input.length,
1630
+ maxChunkBytes: input.maxChunkBytes,
1631
+ ...input.signal ? { signal: input.signal } : {}
1632
+ });
1633
+ } finally {
1634
+ const count = (activeReaders.get(directory) ?? 1) - 1;
1635
+ if (count > 0) activeReaders.set(directory, count);
1636
+ if (count === 0) activeReaders.delete(directory);
1637
+ }
1638
+ },
1639
+ startMaintenance() {
1640
+ scheduleExecOutputCleanup(
1641
+ root,
1642
+ retentionMs,
1643
+ () => store.cleanupExpired()
1644
+ );
1645
+ },
1646
+ async cleanupExpired() {
1647
+ const directories = await (0, import_promises9.readdir)(root, { withFileTypes: true }).catch(
1648
+ (error) => {
1649
+ if (error.code === "ENOENT") return [];
1650
+ throw outputFailure("cleanup_failed", error);
1651
+ }
1652
+ );
1653
+ let removed = 0;
1654
+ for (const entry of directories) {
1655
+ if (!entry.isDirectory() || !/^[a-f0-9]{64}$/.test(entry.name))
1656
+ continue;
1657
+ const directory = (0, import_node_path5.join)(root, entry.name);
1658
+ await withOutputOwnerLock(directory, async () => {
1659
+ if (activeWriters.has(directory)) return;
1660
+ if (activeReaders.has(directory)) return;
1661
+ const owner = await readOutputOwner(directory);
1662
+ if (owner && outputOwnerDirectory(root, owner.ownerId) !== directory)
1663
+ throw outputFailure("owner_binding_invalid");
1664
+ if (!await hasOutputExpired(directory, owner, now(), retentionMs))
1665
+ return;
1666
+ await (0, import_promises9.rm)(directory, { recursive: true });
1667
+ removed += 1;
1668
+ });
1669
+ }
1670
+ return removed;
1671
+ }
1672
+ });
1673
+ return store;
1674
+ }
1675
+
1676
+ // plugins/exec/source/output-snapshot.ts
1677
+ var import_node_string_decoder = require("node:string_decoder");
1678
+
1679
+ // plugins/exec/source/process-output-buffer.ts
1680
+ var ExecOutputBuffer = class {
1681
+ text = "";
1682
+ sawOutput = false;
1683
+ append(chunk) {
1684
+ if (!chunk) return;
1685
+ this.sawOutput = true;
1686
+ this.text += sanitizeJsonText(chunk);
1687
+ }
1688
+ peek() {
1689
+ const text = this.text;
1690
+ return Object.freeze({
1691
+ text,
1692
+ sawOutput: this.sawOutput,
1693
+ metadata: Object.freeze({
1694
+ truncated: false,
1695
+ originalChars: text.length,
1696
+ returnedChars: text.length,
1697
+ omittedChars: 0
1698
+ })
1699
+ });
1700
+ }
1701
+ accept(snapshot) {
1702
+ if (!this.text.startsWith(snapshot.text)) {
1703
+ throw new Error("exec_output_snapshot_mismatch");
1704
+ }
1705
+ this.text = this.text.slice(snapshot.text.length);
1706
+ }
1707
+ consume() {
1708
+ const result = this.peek();
1709
+ this.accept(result);
1710
+ return result;
1711
+ }
1712
+ };
1713
+
1714
+ // plugins/exec/source/output-snapshot.ts
1715
+ function execOutputOwner(scope, processId) {
1716
+ return JSON.stringify([scope, processId]);
524
1717
  }
525
- async function resolveExecWorkingDirectory(pluginContext, executionContext, rawPath) {
526
- const requestedPath = readRequiredString(rawPath, {
527
- name: "cwd",
528
- trim: false,
529
- maxLength: 4096
530
- });
531
- if (requestedPath.includes("\0")) {
532
- throw new ExecPluginError(
533
- "exec_cwd_invalid",
534
- "The selected cwd contains NUL characters."
535
- );
1718
+ async function materializeExecOutput(store, scope, snapshot) {
1719
+ if (snapshot.outputFailure) return snapshot;
1720
+ const ownerId = execOutputOwner(scope, snapshot.processId);
1721
+ async function read(stream) {
1722
+ if (!stream.body) return stream;
1723
+ const decoder = new import_node_string_decoder.StringDecoder("utf8");
1724
+ const buffer = new ExecOutputBuffer();
1725
+ for await (const chunk of store.readRange({
1726
+ ownerId,
1727
+ body: stream.body,
1728
+ offset: 0,
1729
+ length: stream.body.byteLength,
1730
+ maxChunkBytes: EXEC_OUTPUT_IO_CHUNK_BYTES
1731
+ }))
1732
+ buffer.append(decoder.write(Buffer.from(chunk)));
1733
+ buffer.append(decoder.end());
1734
+ return { ...buffer.peek(), sawOutput: stream.sawOutput, body: stream.body };
536
1735
  }
537
- const target = resolveContextualDirectory(
538
- pluginContext,
539
- executionContext,
540
- requestedPath
541
- );
542
- let absolutePath;
543
- let info;
544
1736
  try {
545
- absolutePath = await (0, import_promises2.realpath)(target.absolutePath);
546
- info = await (0, import_promises2.stat)(absolutePath);
1737
+ const stdout = await read(snapshot.stdout);
1738
+ const stderr = await read(snapshot.stderr);
1739
+ return { ...snapshot, stdout, stderr };
547
1740
  } catch (error) {
548
- if (error instanceof Error && "code" in error && error.code === "ENOENT") {
549
- throw new ExecPluginError(
550
- "exec_cwd_not_found",
551
- "The selected cwd does not exist. Select an existing directory."
552
- );
553
- }
554
- throw new ExecPluginError(
555
- "exec_cwd_inaccessible",
556
- "The selected cwd cannot be accessed by the runtime."
557
- );
558
- }
559
- if (!info.isDirectory()) {
560
- throw new ExecPluginError(
561
- "exec_cwd_not_directory",
562
- "The selected cwd is not a directory."
563
- );
1741
+ return {
1742
+ ...snapshot,
1743
+ outputFailure: {
1744
+ code: error instanceof ExecPluginError ? error.code : "exec_output_read_failed",
1745
+ stdoutBytes: snapshot.stdout.body?.byteLength ?? 0,
1746
+ stderrBytes: snapshot.stderr.body?.byteLength ?? 0
1747
+ }
1748
+ };
564
1749
  }
565
- return Object.freeze({
566
- absolutePath,
567
- logicalPath: logicalDirectory(absolutePath, target.base)
568
- });
569
1750
  }
570
1751
 
571
- // plugins/exec/source/process-manager.ts
572
- var import_node_child_process = require("node:child_process");
573
- var import_node_crypto2 = require("node:crypto");
574
- var import_node_string_decoder = require("node:string_decoder");
575
-
576
1752
  // plugins/exec/source/shell-platform.ts
577
1753
  var import_node_fs2 = require("node:fs");
578
- var import_promises3 = require("node:fs/promises");
1754
+ var import_promises10 = require("node:fs/promises");
579
1755
  var EXEC_SHELL = "/bin/bash";
580
1756
  function isSupportedExecPlatform(platform) {
581
1757
  return platform === "linux" || platform === "darwin";
@@ -588,7 +1764,7 @@ async function assertSupportedShell(platform = process.platform) {
588
1764
  );
589
1765
  }
590
1766
  try {
591
- await (0, import_promises3.access)(EXEC_SHELL, import_node_fs2.constants.X_OK);
1767
+ await (0, import_promises10.access)(EXEC_SHELL, import_node_fs2.constants.X_OK);
592
1768
  } catch {
593
1769
  throw new ExecPluginError(
594
1770
  "exec_shell_unavailable",
@@ -598,59 +1774,23 @@ async function assertSupportedShell(platform = process.platform) {
598
1774
  }
599
1775
 
600
1776
  // plugins/exec/source/process-manager.ts
601
- var COMPLETED_PROCESS_RETENTION_MS = 5 * 6e4;
602
1777
  var MAX_ACTIVE_PROCESSES_PER_SCOPE = 4;
603
- var CappedTextBuffer = class {
604
- constructor(maxChars) {
605
- this.maxChars = maxChars;
606
- }
607
- maxChars;
608
- text = "";
609
- originalChars = 0;
610
- omittedChars = 0;
611
- sawOutput = false;
612
- append(chunk) {
613
- if (!chunk) return;
614
- const safeChunk = sanitizeJsonText(chunk);
615
- this.sawOutput = true;
616
- this.originalChars += safeChunk.length;
617
- const available = Math.max(this.maxChars - this.text.length, 0);
618
- this.text += safeChunk.slice(0, available);
619
- this.omittedChars += Math.max(safeChunk.length - available, 0);
620
- }
621
- consume() {
622
- const text = this.text;
623
- const originalChars = this.originalChars;
624
- const omittedChars = this.omittedChars;
625
- this.text = "";
626
- this.originalChars = 0;
627
- this.omittedChars = 0;
628
- return Object.freeze({
629
- text,
630
- sawOutput: this.sawOutput,
631
- metadata: Object.freeze({
632
- truncated: omittedChars > 0,
633
- originalChars,
634
- returnedChars: text.length,
635
- omittedChars
636
- })
637
- });
638
- }
639
- };
640
- function createExecProcessManager() {
1778
+ function createExecProcessManager(store = createExecOutputStore({
1779
+ stateDir: (0, import_node_path6.join)((0, import_node_os.tmpdir)(), "abot-exec")
1780
+ })) {
641
1781
  const processes = /* @__PURE__ */ new Map();
1782
+ const opening = /* @__PURE__ */ new Map();
642
1783
  const unknownProcess = () => new ExecPluginError(
643
1784
  "unknown_exec_process",
644
1785
  "The exec process is unknown to this plugin instance and session."
645
1786
  );
646
1787
  const dispose = (managed) => {
647
- if (managed.retentionTimeout) clearTimeout(managed.retentionTimeout);
648
1788
  processes.delete(managed.processId);
649
1789
  managed.onDisposed?.(managed.processId);
650
1790
  };
651
1791
  const activeProcessCount = (scope) => [...processes.values()].filter(
652
1792
  (managed) => managed.scope === scope && !managed.settled
653
- ).length;
1793
+ ).length + (opening.get(scope) ?? 0);
654
1794
  const killProcessTree = (managed) => {
655
1795
  const pid = managed.child.pid;
656
1796
  if (typeof pid === "number") {
@@ -666,8 +1806,13 @@ function createExecProcessManager() {
666
1806
  if (managed.settled || managed.terminationReason) return;
667
1807
  managed.terminationReason = reason;
668
1808
  killProcessTree(managed);
1809
+ if (reason === "output_storage_failed") {
1810
+ managed.child.stdout.destroy();
1811
+ managed.child.stderr.destroy();
1812
+ }
669
1813
  };
670
1814
  const scheduleIdleTimeout = (managed, idleTimeoutMs) => {
1815
+ if (managed.settling || managed.settled) return;
671
1816
  if (managed.idleTimeout) clearTimeout(managed.idleTimeout);
672
1817
  managed.idleTimeout = setTimeout(
673
1818
  () => requestTermination(managed, "idle_timeout"),
@@ -675,11 +1820,17 @@ function createExecProcessManager() {
675
1820
  );
676
1821
  managed.idleTimeout.unref?.();
677
1822
  };
678
- const settle = (managed, exitCode, fallbackReason) => {
679
- if (managed.settled) return;
1823
+ const settle = async (managed, exitCode, fallbackReason) => {
1824
+ if (managed.settling || managed.settled) return;
1825
+ managed.settling = true;
1826
+ if (managed.hardTimeout) clearTimeout(managed.hardTimeout);
1827
+ if (managed.idleTimeout) clearTimeout(managed.idleTimeout);
1828
+ await managed.output.finish();
680
1829
  managed.settled = true;
1830
+ if (managed.output.checkpoint().outputFailure)
1831
+ managed.terminationReason = "output_storage_failed";
681
1832
  managed.terminationReason ??= fallbackReason;
682
- managed.exitCode = managed.terminationReason === "hard_timeout" || managed.terminationReason === "idle_timeout" ? 124 : managed.terminationReason === "cancelled" || managed.terminationReason === "aborted" ? 130 : exitCode;
1833
+ managed.exitCode = managed.terminationReason === "hard_timeout" || managed.terminationReason === "idle_timeout" ? 124 : managed.terminationReason === "cancelled" || managed.terminationReason === "aborted" ? 130 : managed.terminationReason === "output_storage_failed" ? -1 : exitCode;
683
1834
  if (managed.hardTimeout) clearTimeout(managed.hardTimeout);
684
1835
  if (managed.idleTimeout) clearTimeout(managed.idleTimeout);
685
1836
  if (managed.abortSignal && managed.abortListener) {
@@ -690,35 +1841,43 @@ function createExecProcessManager() {
690
1841
  dispose(managed);
691
1842
  return;
692
1843
  }
693
- managed.retentionTimeout = setTimeout(
694
- () => dispose(managed),
695
- COMPLETED_PROCESS_RETENTION_MS
696
- );
697
- managed.retentionTimeout.unref?.();
698
1844
  };
699
- const consumeSnapshot = (managed) => {
700
- if (managed.settled) {
701
- if (managed.terminalSnapshotClaimed) throw unknownProcess();
702
- managed.terminalSnapshotClaimed = true;
1845
+ const peekSnapshot = async (managed) => {
1846
+ managed.terminalDelivery.assertAvailable();
1847
+ const status = managed.settled ? "settled" : "running";
1848
+ const output = await managed.output.peek();
1849
+ if (output.outputFailure && !managed.settled) {
1850
+ requestTermination(managed, "output_storage_failed");
1851
+ await managed.settlePromise;
1852
+ return peekSnapshot(managed);
703
1853
  }
704
- return Object.freeze({
705
- processId: managed.processId,
706
- status: managed.settled ? "settled" : "running",
707
- ...!managed.settled ? { nextCursor: managed.cursor } : {},
708
- ...managed.exitCode === void 0 ? {} : { exitCode: managed.exitCode },
709
- stdout: managed.stdout.consume(),
710
- stderr: managed.stderr.consume(),
711
- ...managed.terminationReason ? { terminationReason: managed.terminationReason } : {},
712
- elapsedMs: Date.now() - managed.startedAt
713
- });
1854
+ const snapshot = await materializeExecOutput(
1855
+ store,
1856
+ managed.scope,
1857
+ Object.freeze({
1858
+ processId: managed.processId,
1859
+ status,
1860
+ nextCursor: managed.cursor,
1861
+ ...managed.exitCode === void 0 ? {} : { exitCode: managed.exitCode },
1862
+ ...output,
1863
+ ...managed.terminationReason ? { terminationReason: managed.terminationReason } : {},
1864
+ elapsedMs: Date.now() - managed.startedAt
1865
+ })
1866
+ );
1867
+ if (snapshot.outputFailure && !managed.settled) {
1868
+ requestTermination(managed, "output_storage_failed");
1869
+ await managed.settlePromise;
1870
+ return peekSnapshot(managed);
1871
+ }
1872
+ return managed.terminalDelivery.reserve(snapshot);
714
1873
  };
715
1874
  const waitForSettlement = async (managed, waitMs) => {
716
1875
  if (managed.settled) return;
717
1876
  let timeout;
718
1877
  await Promise.race([
719
1878
  managed.settlePromise,
720
- new Promise((resolve) => {
721
- timeout = setTimeout(resolve, waitMs);
1879
+ new Promise((resolve2) => {
1880
+ timeout = setTimeout(resolve2, waitMs);
722
1881
  timeout.unref?.();
723
1882
  })
724
1883
  ]);
@@ -734,8 +1893,8 @@ function createExecProcessManager() {
734
1893
  const withProcessTransition = async (managed, operation) => {
735
1894
  const previous = managed.transitionTail;
736
1895
  let releaseTransition = () => void 0;
737
- managed.transitionTail = new Promise((resolve) => {
738
- releaseTransition = resolve;
1896
+ managed.transitionTail = new Promise((resolve2) => {
1897
+ releaseTransition = resolve2;
739
1898
  });
740
1899
  await previous;
741
1900
  try {
@@ -754,9 +1913,27 @@ function createExecProcessManager() {
754
1913
  `The session already has ${MAX_ACTIVE_PROCESSES_PER_SCOPE} active exec processes.`
755
1914
  );
756
1915
  }
1916
+ opening.set(params.scope, (opening.get(params.scope) ?? 0) + 1);
1917
+ const processId = `exec_${(0, import_node_crypto6.randomUUID)()}`;
1918
+ let output;
1919
+ try {
1920
+ await store.cleanupExpired();
1921
+ output = await createExecProcessOutput(
1922
+ store,
1923
+ execOutputOwner(params.scope, processId)
1924
+ );
1925
+ if (params.abortSignal?.aborted) {
1926
+ await output.dispose();
1927
+ params.abortSignal.throwIfAborted();
1928
+ }
1929
+ } finally {
1930
+ const count = opening.get(params.scope) - 1;
1931
+ if (count) opening.set(params.scope, count);
1932
+ else opening.delete(params.scope);
1933
+ }
757
1934
  let resolveSettled = () => void 0;
758
- const settlePromise = new Promise((resolve) => {
759
- resolveSettled = resolve;
1935
+ const settlePromise = new Promise((resolve2) => {
1936
+ resolveSettled = resolve2;
760
1937
  });
761
1938
  let child;
762
1939
  try {
@@ -766,50 +1943,41 @@ function createExecProcessManager() {
766
1943
  stdio: ["ignore", "pipe", "pipe"]
767
1944
  });
768
1945
  } catch {
1946
+ await output.dispose();
769
1947
  throw new ExecPluginError(
770
1948
  "exec_spawn_failed",
771
1949
  "The runtime could not start the configured non-interactive shell."
772
1950
  );
773
1951
  }
774
1952
  const managed = {
775
- processId: `exec_${(0, import_node_crypto2.randomUUID)()}`,
1953
+ processId,
776
1954
  scope: params.scope,
777
1955
  child,
778
1956
  startedAt: Date.now(),
779
1957
  cursor: 1,
780
- stdout: new CappedTextBuffer(params.outputMaxChars),
781
- stderr: new CappedTextBuffer(params.outputMaxChars),
782
- stdoutDecoder: new import_node_string_decoder.StringDecoder("utf8"),
783
- stderrDecoder: new import_node_string_decoder.StringDecoder("utf8"),
1958
+ output,
1959
+ settling: false,
784
1960
  settled: false,
785
1961
  settlePromise,
786
1962
  resolveSettled,
787
1963
  transitionTail: Promise.resolve(),
788
- terminalSnapshotClaimed: false,
1964
+ terminalDelivery: new ExecTerminalDelivery(),
789
1965
  waitInFlight: false,
790
1966
  ...params.abortSignal ? { abortSignal: params.abortSignal } : {},
791
1967
  ...params.onDisposed ? { onDisposed: params.onDisposed } : {}
792
1968
  };
793
1969
  processes.set(managed.processId, managed);
794
- const observe = (stream, chunk) => {
795
- if (managed.settled || !chunk) return;
796
- if (stream === "stdout") managed.stdout.append(chunk);
797
- else managed.stderr.append(chunk);
798
- scheduleIdleTimeout(managed, params.idleTimeoutMs);
799
- };
800
- child.stdout.on(
801
- "data",
802
- (chunk) => observe("stdout", managed.stdoutDecoder.write(chunk))
803
- );
804
- child.stderr.on(
805
- "data",
806
- (chunk) => observe("stderr", managed.stderrDecoder.write(chunk))
1970
+ params.onStarted?.(managed.processId, managed.settlePromise);
1971
+ output.attach(
1972
+ child,
1973
+ () => scheduleIdleTimeout(managed, params.idleTimeoutMs),
1974
+ () => requestTermination(managed, "output_storage_failed")
807
1975
  );
808
- child.on("error", () => settle(managed, -1, "spawn_failed"));
1976
+ child.on("error", () => {
1977
+ void settle(managed, -1, "spawn_failed");
1978
+ });
809
1979
  child.on("close", (code) => {
810
- observe("stdout", managed.stdoutDecoder.end());
811
- observe("stderr", managed.stderrDecoder.end());
812
- settle(managed, typeof code === "number" ? code : -1, "completed");
1980
+ void settle(managed, typeof code === "number" ? code : -1, "completed");
813
1981
  });
814
1982
  managed.hardTimeout = setTimeout(
815
1983
  () => requestTermination(managed, "hard_timeout"),
@@ -831,12 +1999,12 @@ function createExecProcessManager() {
831
1999
  } else {
832
2000
  await waitForSettlement(managed, params.yieldAfterMs);
833
2001
  }
834
- return consumeSnapshot(managed);
2002
+ return peekSnapshot(managed);
835
2003
  },
836
2004
  async wait(params) {
837
2005
  const managed = getScopedProcess(params.processId, params.scope);
838
2006
  await withProcessTransition(managed, () => {
839
- if (managed.terminalSnapshotClaimed) throw unknownProcess();
2007
+ managed.terminalDelivery.assertAvailable();
840
2008
  if (managed.waitInFlight) {
841
2009
  throw new ExecPluginError(
842
2010
  "exec_wait_in_progress",
@@ -855,19 +2023,59 @@ function createExecProcessManager() {
855
2023
  await waitForSettlement(managed, params.waitMs);
856
2024
  return withProcessTransition(managed, () => {
857
2025
  managed.waitInFlight = false;
858
- if (managed.terminalSnapshotClaimed) throw unknownProcess();
859
- return consumeSnapshot(managed);
2026
+ managed.terminalDelivery.assertAvailable();
2027
+ return peekSnapshot(managed);
860
2028
  });
861
2029
  },
862
2030
  async cancel(params) {
863
2031
  const managed = getScopedProcess(params.processId, params.scope);
864
2032
  return withProcessTransition(managed, async () => {
865
- if (managed.terminalSnapshotClaimed) throw unknownProcess();
2033
+ managed.terminalDelivery.assertAvailable();
866
2034
  if (!managed.settled) {
867
2035
  requestTermination(managed, "cancelled");
868
2036
  await managed.settlePromise;
869
2037
  }
870
- return consumeSnapshot(managed);
2038
+ return peekSnapshot(managed);
2039
+ });
2040
+ },
2041
+ snapshotSettled(processId, scope) {
2042
+ const managed = getScopedProcess(processId, scope);
2043
+ if (!managed.settled || managed.waitInFlight || managed.terminalDelivery.isClaimed)
2044
+ throw new Error("exec_snapshot_not_quiescent");
2045
+ return Object.freeze({
2046
+ cursor: managed.cursor,
2047
+ snapshot: Object.freeze({
2048
+ processId,
2049
+ status: "settled",
2050
+ ...managed.exitCode === void 0 ? {} : { exitCode: managed.exitCode },
2051
+ ...managed.output.checkpoint(),
2052
+ ...managed.terminationReason ? { terminationReason: managed.terminationReason } : {},
2053
+ elapsedMs: Date.now() - managed.startedAt
2054
+ })
2055
+ });
2056
+ },
2057
+ async accept(snapshot, scope) {
2058
+ const wasReleasedAfterAbort = snapshot.terminationReason === "aborted" && !processes.has(snapshot.processId);
2059
+ if (wasReleasedAfterAbort) return;
2060
+ const managed = getScopedProcess(snapshot.processId, scope);
2061
+ await withProcessTransition(managed, async () => {
2062
+ managed.terminalDelivery.assertOwner(snapshot);
2063
+ if (snapshot.nextCursor !== managed.cursor) {
2064
+ throw new ExecPluginError(
2065
+ "stale_exec_process_cursor",
2066
+ "The output receipt no longer matches the current exec cursor."
2067
+ );
2068
+ }
2069
+ await managed.output.accept(snapshot);
2070
+ managed.terminalDelivery.accept(snapshot);
2071
+ });
2072
+ },
2073
+ async reject(snapshot, scope) {
2074
+ const managed = processes.get(snapshot.processId);
2075
+ if (!managed) return;
2076
+ if (managed.scope !== scope) throw unknownProcess();
2077
+ await withProcessTransition(managed, () => {
2078
+ managed.terminalDelivery.reject(snapshot);
871
2079
  });
872
2080
  },
873
2081
  async release(processId, scope) {
@@ -887,11 +2095,15 @@ function createExecProcessManager() {
887
2095
  var DEFAULT_EXEC_HARD_TIMEOUT_MS = 6e5;
888
2096
  var DEFAULT_EXEC_YIELD_AFTER_MS = 15e3;
889
2097
  var DEFAULT_EXEC_IDLE_TIMEOUT_MS = 12e4;
890
- var DEFAULT_EXEC_OUTPUT_MAX_CHARS = 8e3;
891
- var EXEC_OUTPUT_MAX_CHARS = 8e3;
892
- var EXEC_COMMAND_MAX_CHARS = 4096;
2098
+ var EXEC_COMMAND_MAX_CHARS = 8192;
893
2099
  function readExecSettings(config) {
894
2100
  return Object.freeze({
2101
+ outputRetentionMs: readBoundedInteger(config?.outputRetentionMs, {
2102
+ defaultValue: DEFAULT_EXEC_OUTPUT_RETENTION_MS,
2103
+ minimum: 1,
2104
+ maximum: Number.MAX_SAFE_INTEGER,
2105
+ name: "outputRetentionMs"
2106
+ }),
895
2107
  hardTimeoutMs: readBoundedInteger(config?.timeoutMs, {
896
2108
  defaultValue: DEFAULT_EXEC_HARD_TIMEOUT_MS,
897
2109
  minimum: 1,
@@ -909,12 +2121,6 @@ function readExecSettings(config) {
909
2121
  minimum: 1,
910
2122
  maximum: 36e5,
911
2123
  name: "idleTimeoutMs"
912
- }),
913
- outputMaxChars: readBoundedInteger(config?.outputMaxChars, {
914
- defaultValue: DEFAULT_EXEC_OUTPUT_MAX_CHARS,
915
- minimum: 64,
916
- maximum: EXEC_OUTPUT_MAX_CHARS,
917
- name: "outputMaxChars"
918
2124
  })
919
2125
  });
920
2126
  }
@@ -947,12 +2153,12 @@ function isInvalidExecParameter(name, value) {
947
2153
  function createExecAdapter() {
948
2154
  return {
949
2155
  validateCall(input) {
950
- const invalid = ["command", "cwd"].filter(
2156
+ const invalid2 = ["command", "cwd"].filter(
951
2157
  (name) => isInvalidExecParameter(name, input.params[name])
952
2158
  );
953
- if (invalid.length === 0) return null;
2159
+ if (invalid2.length === 0) return null;
954
2160
  return {
955
- error: `invalid params for exec: invalid ${invalid.join(", ")}`,
2161
+ error: `invalid params for exec: invalid ${invalid2.join(", ")}`,
956
2162
  repairHint: "Provide one command without NUL characters and one explicit existing cwd."
957
2163
  };
958
2164
  }
@@ -965,191 +2171,66 @@ function processScope(context) {
965
2171
  const sessionId = context?.sharedState?.currentSessionId?.trim();
966
2172
  return sessionId || "anonymous";
967
2173
  }
968
- function streamDisplay(snapshot) {
969
- if (snapshot.text) return snapshot.text;
970
- return snapshot.sawOutput ? "(no new output; earlier output was already returned)" : "(empty)";
971
- }
972
- function renderedOutput(lines, outputMaxChars) {
973
- const bounded = boundText(lines.join("\n"), {
974
- maxChars: outputMaxChars,
975
- marker: "\n[exec output truncated]"
976
- });
977
- return Object.freeze({ output: bounded.text, metadata: bounded.metadata });
978
- }
979
- function outputBoundsData(snapshot, rendered, maxChars) {
980
- return Object.freeze({
981
- maxChars,
982
- stdout: snapshot.stdout.metadata,
983
- stderr: snapshot.stderr.metadata,
984
- rendered
985
- });
986
- }
987
- function runningResult(snapshot, execution) {
988
- const nextCursor = snapshot.nextCursor ?? 1;
989
- const rendered = renderedOutput(
990
- [
991
- `Command: ${execution.commandPreview}`,
992
- `CWD: ${execution.cwd.logicalPath}`,
993
- "Process status: running",
994
- `Process ID: ${snapshot.processId}`,
995
- `Next cursor: ${nextCursor}`,
996
- "STDOUT since the previous observation:",
997
- streamDisplay(snapshot.stdout),
998
- "STDERR since the previous observation:",
999
- streamDisplay(snapshot.stderr),
1000
- "Continue this exact process with exec_wait; do not run the command again."
1001
- ],
1002
- execution.outputMaxChars
1003
- );
1004
- return failureResult({
1005
- errorCode: "exec_process_running",
1006
- message: "The command is still running. Continue it with exec_wait using the returned process ID and cursor.",
1007
- output: rendered.output,
1008
- stdout: snapshot.stdout.text,
1009
- stderr: snapshot.stderr.text,
1010
- data: {
1011
- processId: snapshot.processId,
1012
- processStatus: "running",
1013
- nextCursor,
1014
- outputBounds: outputBoundsData(
1015
- snapshot,
1016
- rendered.metadata,
1017
- execution.outputMaxChars
1018
- ),
1019
- observationMeta: {
1020
- kind: "volatile_external",
1021
- carryPolicy: "never"
1022
- }
1023
- }
1024
- });
1025
- }
1026
- async function captureFilesystemDelta(execution) {
1027
- if (!execution.filesystemStateBefore) return null;
1028
- try {
1029
- const after = await captureExecFilesystemSnapshot(
1030
- execution.cwd.absolutePath,
1031
- execution.cwd.logicalPath
1032
- );
1033
- return diffExecFilesystemSnapshots(execution.filesystemStateBefore, after);
1034
- } catch {
1035
- return null;
1036
- }
1037
- }
1038
- function projectExecFilesystemEvidence(delta, logicalRoot) {
1039
- const effects = delta.actions.map(renderExecFilesystemEffect);
1040
- const omittedEffectCount = Math.max(
1041
- 0,
1042
- delta.changedEntryCount - effects.length
1043
- );
1044
- const omittedEffectLine = omittedEffectCount > 0 ? `- ${omittedEffectCount} additional changed ${omittedEffectCount === 1 ? "entry" : "entries"} omitted by the ${delta.observation.actionLimit}-effect projection limit.` : void 0;
1045
- const outputLines = Object.freeze([
1046
- `Filesystem changes observed: ${delta.changedEntryCount}${delta.observation.complete ? "" : " (bounded observation)"}`,
1047
- "Filesystem effects observed:",
1048
- ...effects,
1049
- ...omittedEffectLine ? [omittedEffectLine] : []
1050
- ]);
1051
- return Object.freeze({
1052
- outputLines,
1053
- mutationGrounding: [
1054
- "Observed post-command filesystem effects (settled tool evidence; not command intent, semantic verification, or complete artifact content):",
1055
- `- observation root: ${logicalRoot}`,
1056
- `- observation complete: ${delta.observation.complete}`,
1057
- `- changed entries: ${delta.changedEntryCount}`,
1058
- `- listed effects: ${effects.length}`,
1059
- `- effects truncated: ${delta.observation.actionsTruncated}`,
1060
- "Effects:",
1061
- ...effects,
1062
- ...omittedEffectLine ? [omittedEffectLine] : []
1063
- ].join("\n")
1064
- });
1065
- }
1066
- function renderExecFilesystemEffect(action) {
1067
- const target = action.target ? `: ${action.target}` : "";
1068
- const state = action.details === "exec_filesystem_created" ? "created" : action.details === "exec_filesystem_modified" ? "modified" : action.details === "exec_filesystem_removed" ? "removed" : void 0;
1069
- return `- ${action.type}${target}${state ? ` (${state})` : ""}`;
1070
- }
1071
- async function finalizeExecResult(params) {
1072
- const { snapshot, execution } = params;
1073
- const exitCode = snapshot.exitCode ?? -1;
1074
- const cancellationIsSuccess = params.cancellationIsSuccess === true && snapshot.terminationReason === "cancelled";
1075
- const filesystemDelta = await captureFilesystemDelta(execution);
1076
- const observedStateChange = filesystemDelta?.observedStateChange === true;
1077
- const filesystemEvidence = observedStateChange && filesystemDelta ? projectExecFilesystemEvidence(
1078
- filesystemDelta,
1079
- execution.cwd.logicalPath
1080
- ) : null;
1081
- const commandHasData = snapshot.stdout.sawOutput || snapshot.stderr.sawOutput;
1082
- const ok = exitCode === 0 || cancellationIsSuccess;
1083
- const inconclusiveSuccess = exitCode === 0 && !commandHasData && !observedStateChange;
1084
- const producedNewInformation = observedStateChange || cancellationIsSuccess || ok && commandHasData;
1085
- const actions = filesystemDelta?.actions ?? [];
1086
- const resultSummary = cancellationIsSuccess ? "Result summary: the running command was cancelled." : inconclusiveSuccess ? "Result summary: the command completed without observable output or filesystem change. Inspect a concrete target or use a dedicated creation capability." : "";
1087
- const rendered = renderedOutput(
1088
- [
1089
- `Command: ${execution.commandPreview}`,
1090
- `CWD: ${execution.cwd.logicalPath}`,
1091
- `Process ID: ${snapshot.processId}`,
1092
- `Process status: ${snapshot.terminationReason ?? "completed"}`,
1093
- `Exit code: ${exitCode}`,
1094
- ...filesystemEvidence ? filesystemEvidence.outputLines : [],
1095
- "STDOUT:",
1096
- streamDisplay(snapshot.stdout),
1097
- "STDERR:",
1098
- streamDisplay(snapshot.stderr),
1099
- ...resultSummary ? [resultSummary] : []
1100
- ],
1101
- execution.outputMaxChars
1102
- );
1103
- const processStatus = snapshot.terminationReason ?? "completed";
1104
- const data = {
1105
- ...commandHasData ? { hasData: true } : {},
1106
- ...observedStateChange ? { mutationEvidence: true } : {},
1107
- ...filesystemEvidence ? { mutationGrounding: filesystemEvidence.mutationGrounding } : {},
1108
- processId: snapshot.processId,
1109
- processStatus,
1110
- outputBounds: outputBoundsData(
1111
- snapshot,
1112
- rendered.metadata,
1113
- execution.outputMaxChars
1114
- ),
1115
- ...filesystemDelta ? { filesystemObservation: filesystemDelta.observation } : { filesystemObservation: { available: false } },
1116
- observationMeta: {
1117
- kind: "volatile_external",
1118
- carryPolicy: "never"
1119
- }
1120
- };
1121
- const common = {
1122
- output: rendered.output,
1123
- progress: observedStateChange || cancellationIsSuccess,
1124
- producedNewInformation,
1125
- actions: [...actions],
1126
- exitCode,
1127
- stdout: snapshot.stdout.text,
1128
- stderr: snapshot.stderr.text,
1129
- data
1130
- };
1131
- if (ok && (!inconclusiveSuccess || cancellationIsSuccess)) {
1132
- return enforcePluginResultByteBudget({ ok: true, ...common });
1133
- }
1134
- const errorCode = inconclusiveSuccess ? "no_observable_result" : snapshot.terminationReason === "aborted" ? "exec_aborted" : snapshot.terminationReason === "spawn_failed" ? "exec_spawn_failed" : snapshot.terminationReason === "idle_timeout" ? "exec_idle_timeout" : snapshot.terminationReason === "hard_timeout" ? "exec_hard_timeout" : "non_zero_exit";
1135
- const error = inconclusiveSuccess ? resultSummary : errorCode === "exec_aborted" ? "The exec request was aborted." : errorCode === "exec_spawn_failed" ? "The runtime could not start the configured non-interactive shell." : errorCode === "exec_idle_timeout" ? `The command produced no output for ${execution.idleTimeoutMs}ms.` : errorCode === "exec_hard_timeout" ? `The command exceeded the ${execution.hardTimeoutMs}ms hard timeout.` : `The command exited with code ${exitCode}.`;
1136
- return enforcePluginResultByteBudget({
1137
- ok: false,
1138
- ...common,
1139
- error,
1140
- errorCode
2174
+ function createExecHandlers(pluginContext, settings, preparation) {
2175
+ const outputStore = createExecOutputStore({
2176
+ stateDir: pluginContext.stateDir,
2177
+ retentionMs: settings.outputRetentionMs
1141
2178
  });
1142
- }
1143
- function createExecHandlers(pluginContext, settings) {
1144
- const processManager = createExecProcessManager();
2179
+ outputStore.startMaintenance();
2180
+ const processManager = createExecProcessManager(outputStore);
1145
2181
  const pendingExecutions = /* @__PURE__ */ new Map();
2182
+ const requestResources = new ExecRequestResources(
2183
+ processManager,
2184
+ pendingExecutions,
2185
+ preparation
2186
+ );
1146
2187
  const finalizeAndRelease = async (params) => {
2188
+ pendingExecutions.set(params.snapshot.processId, params.execution);
1147
2189
  try {
1148
- return await finalizeExecResult(params);
1149
- } finally {
2190
+ if (params.snapshot.outputFailure) {
2191
+ return retainedOutputFailure(params.snapshot, params.context);
2192
+ }
2193
+ const result = await finalizeExecResult({
2194
+ ...params,
2195
+ resultBudget: params.context?.resultBudget
2196
+ });
2197
+ if (result.errorCode === "plugin_result_too_large") {
2198
+ return retainedOutputFailure(params.snapshot, params.context);
2199
+ }
2200
+ try {
2201
+ if (!requestResources.isRestored(params.snapshot.processId)) {
2202
+ await processManager.accept(params.snapshot, params.scope);
2203
+ }
2204
+ } catch (error) {
2205
+ return retainedOutputFailure(
2206
+ {
2207
+ ...params.snapshot,
2208
+ outputFailure: {
2209
+ code: error instanceof Error ? error.message : "exec_output_acknowledgement_failed",
2210
+ stdoutBytes: params.snapshot.stdout.body?.byteLength ?? 0,
2211
+ stderrBytes: params.snapshot.stderr.body?.byteLength ?? 0
2212
+ }
2213
+ },
2214
+ params.context
2215
+ );
2216
+ }
1150
2217
  pendingExecutions.delete(params.snapshot.processId);
2218
+ requestResources.forget(params.snapshot.processId);
1151
2219
  await processManager.release(params.snapshot.processId, params.scope);
2220
+ return result;
2221
+ } finally {
2222
+ requestResources.rejectTerminal(params.snapshot);
2223
+ await processManager.reject(params.snapshot, params.scope);
2224
+ }
2225
+ };
2226
+ const deliverRunning = async (snapshot, execution, scope, context) => {
2227
+ if (snapshot.outputFailure) return retainedOutputFailure(snapshot, context);
2228
+ const result = runningResult(snapshot, execution, context?.resultBudget);
2229
+ if (result.errorCode === "plugin_result_too_large") {
2230
+ return retainedOutputFailure(snapshot, context);
1152
2231
  }
2232
+ await processManager.accept(snapshot, scope);
2233
+ return result;
1153
2234
  };
1154
2235
  const exec = async (params, context) => {
1155
2236
  try {
@@ -1172,26 +2253,28 @@ function createExecHandlers(pluginContext, settings) {
1172
2253
  cwd,
1173
2254
  filesystemStateBefore,
1174
2255
  hardTimeoutMs: settings.hardTimeoutMs,
1175
- idleTimeoutMs: Math.min(settings.idleTimeoutMs, settings.hardTimeoutMs),
1176
- outputMaxChars: settings.outputMaxChars
2256
+ idleTimeoutMs: Math.min(settings.idleTimeoutMs, settings.hardTimeoutMs)
1177
2257
  });
1178
2258
  const scope = processScope(context);
1179
2259
  const snapshot = await processManager.start({
1180
2260
  scope,
1181
2261
  shellCommand: command,
1182
2262
  cwd: cwd.absolutePath,
1183
- outputMaxChars: settings.outputMaxChars,
1184
2263
  yieldAfterMs: Math.min(settings.yieldAfterMs, settings.hardTimeoutMs),
1185
2264
  idleTimeoutMs: execution.idleTimeoutMs,
1186
2265
  hardTimeoutMs: execution.hardTimeoutMs,
1187
2266
  ...context?.abortSignal ? { abortSignal: context.abortSignal } : {},
1188
- onDisposed: (processId) => pendingExecutions.delete(processId)
2267
+ onDisposed: (processId) => {
2268
+ pendingExecutions.delete(processId);
2269
+ requestResources.forget(processId);
2270
+ },
2271
+ onStarted: (processId, settled) => requestResources.started(processId, scope, settled, context)
1189
2272
  });
1190
2273
  if (snapshot.status === "running") {
1191
2274
  pendingExecutions.set(snapshot.processId, execution);
1192
- return runningResult(snapshot, execution);
2275
+ return deliverRunning(snapshot, execution, scope, context);
1193
2276
  }
1194
- return finalizeAndRelease({ snapshot, execution, scope });
2277
+ return finalizeAndRelease({ snapshot, execution, scope, context });
1195
2278
  } catch (error) {
1196
2279
  return execFailureFromError(error, "exec");
1197
2280
  }
@@ -1215,13 +2298,14 @@ function createExecHandlers(pluginContext, settings) {
1215
2298
  );
1216
2299
  }
1217
2300
  const scope = processScope(context);
1218
- const snapshot = await processManager.wait({
2301
+ const restored = requestResources.terminal(processId, scope, cursor);
2302
+ const snapshot = restored ? await materializeExecOutput(outputStore, scope, restored) : await processManager.wait({
1219
2303
  processId,
1220
2304
  scope,
1221
2305
  cursor,
1222
2306
  waitMs: settings.yieldAfterMs
1223
2307
  });
1224
- return snapshot.status === "running" ? runningResult(snapshot, execution) : finalizeAndRelease({ snapshot, execution, scope });
2308
+ return snapshot.status === "running" ? deliverRunning(snapshot, execution, scope, context) : finalizeAndRelease({ snapshot, execution, scope, context });
1225
2309
  } catch (error) {
1226
2310
  return execFailureFromError(error, "exec_wait");
1227
2311
  }
@@ -1240,12 +2324,14 @@ function createExecHandlers(pluginContext, settings) {
1240
2324
  );
1241
2325
  }
1242
2326
  const scope = processScope(context);
1243
- const snapshot = await processManager.cancel({ processId, scope });
2327
+ const restored = requestResources.terminal(processId, scope);
2328
+ const snapshot = restored ? await materializeExecOutput(outputStore, scope, restored) : await processManager.cancel({ processId, scope });
1244
2329
  return finalizeAndRelease({
1245
2330
  snapshot,
1246
2331
  execution,
1247
2332
  scope,
1248
- cancellationIsSuccess: true
2333
+ cancellationIsSuccess: true,
2334
+ context
1249
2335
  });
1250
2336
  } catch (error) {
1251
2337
  return execFailureFromError(error, "exec_cancel");
@@ -1257,6 +2343,18 @@ function createExecHandlers(pluginContext, settings) {
1257
2343
  // plugins/exec/source/index.ts
1258
2344
  var index_default = defineRuntimePlugin((context) => ({
1259
2345
  handlers: createExecHandlers(context, readExecSettings(context.config)),
2346
+ prepareRequest: async (modules, preparation) => {
2347
+ if (!preparation?.requestState) return modules;
2348
+ const handlers = createExecHandlers(
2349
+ context,
2350
+ readExecSettings(context.config),
2351
+ preparation
2352
+ );
2353
+ return modules.map((module2) => ({
2354
+ ...module2,
2355
+ implementation: handlers[module2.definition.name]
2356
+ }));
2357
+ },
1260
2358
  adapters: {
1261
2359
  exec: createExecAdapter()
1262
2360
  }