@songsid/agend 2.3.4-beta.7 → 2.3.5-alpha.3

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 (457) hide show
  1. package/README.md +2 -0
  2. package/README.zh-TW.md +2 -0
  3. package/THIRD_PARTY_NOTICES.md +53 -0
  4. package/dist/agent-endpoint.d.ts +5 -1
  5. package/dist/agent-endpoint.js +12 -2
  6. package/dist/agent-endpoint.js.map +1 -1
  7. package/dist/auth-api.d.ts +21 -0
  8. package/dist/auth-api.js +89 -2
  9. package/dist/auth-api.js.map +1 -1
  10. package/dist/authority/web-authority.d.ts +12 -2
  11. package/dist/authority/web-authority.js +25 -4
  12. package/dist/authority/web-authority.js.map +1 -1
  13. package/dist/backend/claude-code.d.ts +15 -12
  14. package/dist/backend/claude-code.js +152 -133
  15. package/dist/backend/claude-code.js.map +1 -1
  16. package/dist/backend/codex-package.d.ts +5 -2
  17. package/dist/backend/codex-package.js +1 -5
  18. package/dist/backend/codex-package.js.map +1 -1
  19. package/dist/backend/codex.d.ts +136 -113
  20. package/dist/backend/codex.js +1281 -1219
  21. package/dist/backend/codex.js.map +1 -1
  22. package/dist/backend/grok-model-cache.d.ts +7 -0
  23. package/dist/backend/grok-model-cache.js +65 -0
  24. package/dist/backend/grok-model-cache.js.map +1 -0
  25. package/dist/backend/grok.d.ts +2 -0
  26. package/dist/backend/grok.js +22 -0
  27. package/dist/backend/grok.js.map +1 -1
  28. package/dist/backend/native-pane.d.ts +9 -0
  29. package/dist/backend/native-pane.js +59 -0
  30. package/dist/backend/native-pane.js.map +1 -0
  31. package/dist/backend/types.d.ts +7 -0
  32. package/dist/backend/types.js.map +1 -1
  33. package/dist/channel/ipc-bridge.d.ts +2 -0
  34. package/dist/channel/mcp-tools.js +1 -1
  35. package/dist/channel/mcp-tools.js.map +1 -1
  36. package/dist/cli.js +3 -0
  37. package/dist/cli.js.map +1 -1
  38. package/dist/config-validator.js +71 -1
  39. package/dist/config-validator.js.map +1 -1
  40. package/dist/config.js +16 -0
  41. package/dist/config.js.map +1 -1
  42. package/dist/daemon.d.ts +67 -5
  43. package/dist/daemon.js +823 -266
  44. package/dist/daemon.js.map +1 -1
  45. package/dist/delivery-consumed-watch.d.ts +15 -3
  46. package/dist/delivery-consumed-watch.js +23 -1
  47. package/dist/delivery-consumed-watch.js.map +1 -1
  48. package/dist/delivery-outbox.d.ts +5 -0
  49. package/dist/delivery-outbox.js +32 -4
  50. package/dist/delivery-outbox.js.map +1 -1
  51. package/dist/delivery-reconciliation.d.ts +2 -35
  52. package/dist/delivery-reconciliation.js +2 -156
  53. package/dist/delivery-reconciliation.js.map +1 -1
  54. package/dist/fleet-context.d.ts +2 -2
  55. package/dist/fleet-level-config.d.ts +1 -1
  56. package/dist/fleet-level-config.js +2 -0
  57. package/dist/fleet-level-config.js.map +1 -1
  58. package/dist/fleet-manager.d.ts +238 -3
  59. package/dist/fleet-manager.js +1826 -104
  60. package/dist/fleet-manager.js.map +1 -1
  61. package/dist/fleet-windows-runtime.d.ts +92 -0
  62. package/dist/fleet-windows-runtime.js +380 -0
  63. package/dist/fleet-windows-runtime.js.map +1 -0
  64. package/dist/general-binding.d.ts +85 -0
  65. package/dist/general-binding.js +298 -0
  66. package/dist/general-binding.js.map +1 -0
  67. package/dist/general-host-owner.d.ts +8 -0
  68. package/dist/general-host-owner.js +26 -0
  69. package/dist/general-host-owner.js.map +1 -0
  70. package/dist/general-instance.d.ts +7 -0
  71. package/dist/general-instance.js +20 -3
  72. package/dist/general-instance.js.map +1 -1
  73. package/dist/general-role.d.ts +5 -0
  74. package/dist/general-role.js +26 -0
  75. package/dist/general-role.js.map +1 -0
  76. package/dist/instance-config-impact.js +4 -0
  77. package/dist/instance-config-impact.js.map +1 -1
  78. package/dist/instance-lifecycle.d.ts +21 -3
  79. package/dist/instance-lifecycle.js +378 -162
  80. package/dist/instance-lifecycle.js.map +1 -1
  81. package/dist/instructions.d.ts +2 -0
  82. package/dist/instructions.js +6 -0
  83. package/dist/instructions.js.map +1 -1
  84. package/dist/local-pane-endpoint.d.ts +46 -0
  85. package/dist/local-pane-endpoint.js +189 -0
  86. package/dist/local-pane-endpoint.js.map +1 -0
  87. package/dist/local-pane-launcher.d.ts +2 -0
  88. package/dist/local-pane-launcher.js +38 -0
  89. package/dist/local-pane-launcher.js.map +1 -0
  90. package/dist/local-pane-stage.ps1 +101 -0
  91. package/dist/locale.js +85 -0
  92. package/dist/locale.js.map +1 -1
  93. package/dist/model-catalog-defaults.d.ts +14 -0
  94. package/dist/model-catalog-defaults.js +20 -0
  95. package/dist/model-catalog-defaults.js.map +1 -0
  96. package/dist/native-agent-admission.d.ts +7 -0
  97. package/dist/native-agent-admission.js +26 -0
  98. package/dist/native-agent-admission.js.map +1 -0
  99. package/dist/native-daemon-client.d.ts +13 -0
  100. package/dist/native-daemon-client.js +28 -0
  101. package/dist/native-daemon-client.js.map +1 -0
  102. package/dist/native-instance-api.d.ts +14 -0
  103. package/dist/native-instance-api.js +205 -0
  104. package/dist/native-instance-api.js.map +1 -0
  105. package/dist/native-instance-input.d.ts +84 -0
  106. package/dist/native-instance-input.js +54 -0
  107. package/dist/native-instance-input.js.map +1 -0
  108. package/dist/native-instance-registry.d.ts +32 -0
  109. package/dist/native-instance-registry.js +105 -0
  110. package/dist/native-instance-registry.js.map +1 -0
  111. package/dist/native-mcp.d.ts +40 -0
  112. package/dist/native-mcp.js +278 -0
  113. package/dist/native-mcp.js.map +1 -0
  114. package/dist/native-model-catalog.d.ts +5 -0
  115. package/dist/native-model-catalog.js +76 -0
  116. package/dist/native-model-catalog.js.map +1 -0
  117. package/dist/native-pane-crash-budget.d.ts +20 -0
  118. package/dist/native-pane-crash-budget.js +60 -0
  119. package/dist/native-pane-crash-budget.js.map +1 -0
  120. package/dist/native-pane-create.d.ts +26 -0
  121. package/dist/native-pane-create.js +53 -0
  122. package/dist/native-pane-create.js.map +1 -0
  123. package/dist/native-pane-lifecycle.d.ts +65 -0
  124. package/dist/native-pane-lifecycle.js +230 -0
  125. package/dist/native-pane-lifecycle.js.map +1 -0
  126. package/dist/native-pane-manager.d.ts +59 -0
  127. package/dist/native-pane-manager.js +584 -0
  128. package/dist/native-pane-manager.js.map +1 -0
  129. package/dist/native-pane-output-log.d.ts +15 -0
  130. package/dist/native-pane-output-log.js +108 -0
  131. package/dist/native-pane-output-log.js.map +1 -0
  132. package/dist/native-pane-reconciliation.d.ts +4 -0
  133. package/dist/native-pane-reconciliation.js +40 -0
  134. package/dist/native-pane-reconciliation.js.map +1 -0
  135. package/dist/native-pane-recovery.d.ts +12 -0
  136. package/dist/native-pane-recovery.js +10 -0
  137. package/dist/native-pane-recovery.js.map +1 -0
  138. package/dist/native-pane-tools.d.ts +2 -0
  139. package/dist/native-pane-tools.js +14 -0
  140. package/dist/native-pane-tools.js.map +1 -0
  141. package/dist/needs-you-hub.d.ts +2 -0
  142. package/dist/needs-you-hub.js +2 -1
  143. package/dist/needs-you-hub.js.map +1 -1
  144. package/dist/needs-you.d.ts +19 -1
  145. package/dist/needs-you.js +12 -2
  146. package/dist/needs-you.js.map +1 -1
  147. package/dist/outbound-handlers.d.ts +16 -2
  148. package/dist/outbound-handlers.js +67 -3
  149. package/dist/outbound-handlers.js.map +1 -1
  150. package/dist/outbound-schemas.d.ts +38 -0
  151. package/dist/outbound-schemas.js +12 -0
  152. package/dist/outbound-schemas.js.map +1 -1
  153. package/dist/pane-port.d.ts +118 -0
  154. package/dist/pane-port.js +2 -0
  155. package/dist/pane-port.js.map +1 -0
  156. package/dist/public-web-gateway.js +9 -0
  157. package/dist/public-web-gateway.js.map +1 -1
  158. package/dist/public-web-link.d.ts +5 -0
  159. package/dist/public-web-link.js +4 -0
  160. package/dist/public-web-link.js.map +1 -1
  161. package/dist/quickstart-api.js +9 -5
  162. package/dist/quickstart-api.js.map +1 -1
  163. package/dist/quickstart.d.ts +1 -0
  164. package/dist/quickstart.js +4 -1
  165. package/dist/quickstart.js.map +1 -1
  166. package/dist/runtime-api.d.ts +8 -0
  167. package/dist/runtime-api.js +96 -0
  168. package/dist/runtime-api.js.map +1 -0
  169. package/dist/runtime-assets/@xterm/addon-serialize/LICENSE +21 -0
  170. package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.js +2 -0
  171. package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.mjs +19 -0
  172. package/dist/runtime-assets/@xterm/addon-serialize/package.json +29 -0
  173. package/dist/runtime-assets/@xterm/headless/LICENSE +21 -0
  174. package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.js +2 -0
  175. package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
  176. package/dist/runtime-assets/@xterm/headless/package.json +29 -0
  177. package/dist/runtime-assets/node-pty/CONPTY-LICENSE +21 -0
  178. package/dist/runtime-assets/node-pty/CONPTY-NOTICE.md +503 -0
  179. package/dist/runtime-assets/node-pty/LICENSE +69 -0
  180. package/dist/runtime-assets/node-pty/lib/conpty_console_list_agent.js +16 -0
  181. package/dist/runtime-assets/node-pty/lib/eventEmitter2.js +47 -0
  182. package/dist/runtime-assets/node-pty/lib/index.js +52 -0
  183. package/dist/runtime-assets/node-pty/lib/interfaces.js +7 -0
  184. package/dist/runtime-assets/node-pty/lib/shared/conout.js +11 -0
  185. package/dist/runtime-assets/node-pty/lib/terminal.js +190 -0
  186. package/dist/runtime-assets/node-pty/lib/types.js +7 -0
  187. package/dist/runtime-assets/node-pty/lib/unixTerminal.js +346 -0
  188. package/dist/runtime-assets/node-pty/lib/utils.js +39 -0
  189. package/dist/runtime-assets/node-pty/lib/windowsConoutConnection.js +125 -0
  190. package/dist/runtime-assets/node-pty/lib/windowsPtyAgent.js +320 -0
  191. package/dist/runtime-assets/node-pty/lib/windowsTerminal.js +199 -0
  192. package/dist/runtime-assets/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  193. package/dist/runtime-assets/node-pty/package.json +64 -0
  194. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  195. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  196. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  197. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  198. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  199. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  200. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  201. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  202. package/dist/runtime-bundle.d.ts +17 -0
  203. package/dist/runtime-bundle.js +150 -0
  204. package/dist/runtime-bundle.js.map +1 -0
  205. package/dist/runtime-cli.d.ts +2 -0
  206. package/dist/runtime-cli.js +117 -0
  207. package/dist/runtime-cli.js.map +1 -0
  208. package/dist/runtime-client-store.d.ts +49 -0
  209. package/dist/runtime-client-store.js +292 -0
  210. package/dist/runtime-client-store.js.map +1 -0
  211. package/dist/runtime-client.d.ts +100 -0
  212. package/dist/runtime-client.js +700 -0
  213. package/dist/runtime-client.js.map +1 -0
  214. package/dist/runtime-coordinator.d.ts +82 -0
  215. package/dist/runtime-coordinator.js +864 -0
  216. package/dist/runtime-coordinator.js.map +1 -0
  217. package/dist/runtime-general-protocol.d.ts +22 -0
  218. package/dist/runtime-general-protocol.js +57 -0
  219. package/dist/runtime-general-protocol.js.map +1 -0
  220. package/dist/runtime-general-workspace.d.ts +17 -0
  221. package/dist/runtime-general-workspace.js +213 -0
  222. package/dist/runtime-general-workspace.js.map +1 -0
  223. package/dist/runtime-pane-assets.d.ts +17 -0
  224. package/dist/runtime-pane-assets.js +23 -0
  225. package/dist/runtime-pane-assets.js.map +1 -0
  226. package/dist/runtime-pane-boot.d.ts +2 -0
  227. package/dist/runtime-pane-boot.js +24 -0
  228. package/dist/runtime-pane-boot.js.map +1 -0
  229. package/dist/runtime-pane-codex-index.d.ts +1 -0
  230. package/dist/runtime-pane-codex-index.js +47 -0
  231. package/dist/runtime-pane-codex-index.js.map +1 -0
  232. package/dist/runtime-pane-config.d.ts +16 -0
  233. package/dist/runtime-pane-config.js +54 -0
  234. package/dist/runtime-pane-config.js.map +1 -0
  235. package/dist/runtime-pane-host.d.ts +44 -0
  236. package/dist/runtime-pane-host.js +424 -0
  237. package/dist/runtime-pane-host.js.map +1 -0
  238. package/dist/runtime-pane-job-owner.d.ts +1 -0
  239. package/dist/runtime-pane-job-owner.js +29 -0
  240. package/dist/runtime-pane-job-owner.js.map +1 -0
  241. package/dist/runtime-pane-job.ps1 +116 -0
  242. package/dist/runtime-pane-link.d.ts +40 -0
  243. package/dist/runtime-pane-link.js +246 -0
  244. package/dist/runtime-pane-link.js.map +1 -0
  245. package/dist/runtime-pane-mcp-protocol.d.ts +32 -0
  246. package/dist/runtime-pane-mcp-protocol.js +39 -0
  247. package/dist/runtime-pane-mcp-protocol.js.map +1 -0
  248. package/dist/runtime-pane-mcp-relay.d.ts +17 -0
  249. package/dist/runtime-pane-mcp-relay.js +70 -0
  250. package/dist/runtime-pane-mcp-relay.js.map +1 -0
  251. package/dist/runtime-pane-mcp.d.ts +51 -0
  252. package/dist/runtime-pane-mcp.js +150 -0
  253. package/dist/runtime-pane-mcp.js.map +1 -0
  254. package/dist/runtime-pane-native.d.ts +45 -0
  255. package/dist/runtime-pane-native.js +65 -0
  256. package/dist/runtime-pane-native.js.map +1 -0
  257. package/dist/runtime-pane-output.d.ts +19 -0
  258. package/dist/runtime-pane-output.js +53 -0
  259. package/dist/runtime-pane-output.js.map +1 -0
  260. package/dist/runtime-pane-port.d.ts +139 -0
  261. package/dist/runtime-pane-port.js +558 -0
  262. package/dist/runtime-pane-port.js.map +1 -0
  263. package/dist/runtime-pane-private.d.ts +14 -0
  264. package/dist/runtime-pane-private.js +51 -0
  265. package/dist/runtime-pane-private.js.map +1 -0
  266. package/dist/runtime-pane-private.ps1 +14 -0
  267. package/dist/runtime-pane-process.d.ts +4 -0
  268. package/dist/runtime-pane-process.js +108 -0
  269. package/dist/runtime-pane-process.js.map +1 -0
  270. package/dist/runtime-pane-protocol.d.ts +172 -0
  271. package/dist/runtime-pane-protocol.js +195 -0
  272. package/dist/runtime-pane-protocol.js.map +1 -0
  273. package/dist/runtime-pane-screen.d.ts +19 -0
  274. package/dist/runtime-pane-screen.js +76 -0
  275. package/dist/runtime-pane-screen.js.map +1 -0
  276. package/dist/runtime-pane-service.d.ts +11 -0
  277. package/dist/runtime-pane-service.js +221 -0
  278. package/dist/runtime-pane-service.js.map +1 -0
  279. package/dist/runtime-pane-stdio-protocol.d.ts +54 -0
  280. package/dist/runtime-pane-stdio-protocol.js +94 -0
  281. package/dist/runtime-pane-stdio-protocol.js.map +1 -0
  282. package/dist/runtime-pane-stdio.d.ts +3 -0
  283. package/dist/runtime-pane-stdio.js +123 -0
  284. package/dist/runtime-pane-stdio.js.map +1 -0
  285. package/dist/runtime-pane-store.d.ts +33 -0
  286. package/dist/runtime-pane-store.js +164 -0
  287. package/dist/runtime-pane-store.js.map +1 -0
  288. package/dist/runtime-pane-transcript-protocol.d.ts +43 -0
  289. package/dist/runtime-pane-transcript-protocol.js +58 -0
  290. package/dist/runtime-pane-transcript-protocol.js.map +1 -0
  291. package/dist/runtime-pane-transcript.d.ts +45 -0
  292. package/dist/runtime-pane-transcript.js +605 -0
  293. package/dist/runtime-pane-transcript.js.map +1 -0
  294. package/dist/runtime-pane-worker.d.ts +1 -0
  295. package/dist/runtime-pane-worker.js +154 -0
  296. package/dist/runtime-pane-worker.js.map +1 -0
  297. package/dist/runtime-protocol.d.ts +149 -0
  298. package/dist/runtime-protocol.js +19 -0
  299. package/dist/runtime-protocol.js.map +1 -0
  300. package/dist/runtime-switches.d.ts +79 -0
  301. package/dist/runtime-switches.js +90 -0
  302. package/dist/runtime-switches.js.map +1 -0
  303. package/dist/runtime-transcript-delta-reader.d.ts +23 -0
  304. package/dist/runtime-transcript-delta-reader.js +74 -0
  305. package/dist/runtime-transcript-delta-reader.js.map +1 -0
  306. package/dist/runtime-transcript-source.d.ts +36 -0
  307. package/dist/runtime-transcript-source.js +189 -0
  308. package/dist/runtime-transcript-source.js.map +1 -0
  309. package/dist/runtime-windows-bridge.d.ts +41 -0
  310. package/dist/runtime-windows-bridge.js +157 -0
  311. package/dist/runtime-windows-bridge.js.map +1 -0
  312. package/dist/settings-api.d.ts +5 -0
  313. package/dist/settings-api.js +95 -1
  314. package/dist/settings-api.js.map +1 -1
  315. package/dist/settings-baseline.d.ts +1 -0
  316. package/dist/settings-baseline.js +1 -1
  317. package/dist/settings-baseline.js.map +1 -1
  318. package/dist/settings-change.js +28 -0
  319. package/dist/settings-change.js.map +1 -1
  320. package/dist/settings-confirmation.d.ts +16 -1
  321. package/dist/settings-confirmation.js +47 -9
  322. package/dist/settings-confirmation.js.map +1 -1
  323. package/dist/settings-effect.d.ts +4 -0
  324. package/dist/settings-effect.js +58 -1
  325. package/dist/settings-effect.js.map +1 -1
  326. package/dist/settings-http-confirmation.d.ts +1 -0
  327. package/dist/settings-http-confirmation.js +15 -2
  328. package/dist/settings-http-confirmation.js.map +1 -1
  329. package/dist/settings-request-capability.d.ts +2 -0
  330. package/dist/settings-request-capability.js +4 -0
  331. package/dist/settings-request-capability.js.map +1 -1
  332. package/dist/settings-route-lifetime.d.ts +14 -0
  333. package/dist/settings-route-lifetime.js +48 -0
  334. package/dist/settings-route-lifetime.js.map +1 -0
  335. package/dist/settings-transaction.d.ts +4 -0
  336. package/dist/settings-transaction.js +9 -0
  337. package/dist/settings-transaction.js.map +1 -1
  338. package/dist/setup-form.js +6 -3
  339. package/dist/setup-form.js.map +1 -1
  340. package/dist/setup-i18n.js +3 -0
  341. package/dist/setup-i18n.js.map +1 -1
  342. package/dist/tmux-control.d.ts +2 -1
  343. package/dist/tmux-control.js.map +1 -1
  344. package/dist/tmux-manager.d.ts +2 -1
  345. package/dist/tmux-manager.js.map +1 -1
  346. package/dist/tmux-pane-host.d.ts +26 -0
  347. package/dist/tmux-pane-host.js +25 -0
  348. package/dist/tmux-pane-host.js.map +1 -0
  349. package/dist/tool-permissions.js +2 -1
  350. package/dist/tool-permissions.js.map +1 -1
  351. package/dist/topic-commands.js +3 -0
  352. package/dist/topic-commands.js.map +1 -1
  353. package/dist/transcript-delta-reader.d.ts +1 -1
  354. package/dist/transcript-delta-reader.js +1 -1
  355. package/dist/transcript-delta-reader.js.map +1 -1
  356. package/dist/transcript-monitor.d.ts +3 -0
  357. package/dist/transcript-monitor.js +22 -46
  358. package/dist/transcript-monitor.js.map +1 -1
  359. package/dist/transcript-needles.d.ts +35 -0
  360. package/dist/transcript-needles.js +158 -0
  361. package/dist/transcript-needles.js.map +1 -0
  362. package/dist/transcript-records.d.ts +21 -0
  363. package/dist/transcript-records.js +140 -0
  364. package/dist/transcript-records.js.map +1 -0
  365. package/dist/transcript-sources.d.ts +5 -0
  366. package/dist/transcript-sources.js +8 -79
  367. package/dist/transcript-sources.js.map +1 -1
  368. package/dist/types.d.ts +23 -0
  369. package/dist/ui/agent-proposals.js +90 -0
  370. package/dist/ui/agent-runtime.js +106 -0
  371. package/dist/ui/chat-store.js +13 -2
  372. package/dist/ui/chat-strings.js +48 -0
  373. package/dist/ui/cli-picker.js +42 -0
  374. package/dist/ui/general-location.js +71 -0
  375. package/dist/ui/native-instance-settings.js +47 -0
  376. package/dist/ui/native-pane-recovery.js +45 -0
  377. package/dist/ui/panel-chat.js +63 -32
  378. package/dist/ui/panel-details.js +2 -1
  379. package/dist/ui/panel-fleet.js +99 -18
  380. package/dist/ui/panel-needs.js +154 -3
  381. package/dist/ui/panel-runtimes.js +231 -0
  382. package/dist/ui/panel-settings.js +19 -9
  383. package/dist/ui/panel-windows-agent.js +86 -0
  384. package/dist/ui/panel-windows-cli.js +143 -0
  385. package/dist/ui/provider-marks.js +83 -0
  386. package/dist/ui/runtime-catalog.js +55 -0
  387. package/dist/ui/settings-catalog.js +37 -10
  388. package/dist/ui/settings-confirm.js +3 -1
  389. package/dist/ui/settings-dialogs.js +22 -7
  390. package/dist/ui/settings-model.js +2 -1
  391. package/dist/ui/settings-outside.js +176 -0
  392. package/dist/ui/settings-registry.js +6 -0
  393. package/dist/ui/settings-strings.js +16 -0
  394. package/dist/ui/shared/app-i18n.js +2 -2
  395. package/dist/ui/shared/app-route.js +6 -2
  396. package/dist/ui/shared/app-shell.js +3 -2
  397. package/dist/ui/shared/app-store.js +1 -0
  398. package/dist/ui/shared/app-stream.js +3 -1
  399. package/dist/ui/shared/app.css +301 -0
  400. package/dist/ui/shared/app.js +4 -0
  401. package/dist/ui/shared/header-tools.js +6 -4
  402. package/dist/ui/shared/instance-nav.js +33 -7
  403. package/dist/ui/shared/instance-switch.js +4 -3
  404. package/dist/ui/shared/qrcode.module.js +2237 -0
  405. package/dist/ui/shared/signin.js +39 -5
  406. package/dist/ui/shared/ui-menu.js +28 -8
  407. package/dist/ui/shared/vendor/qrcode-generator.LICENSE +27 -0
  408. package/dist/ui/shared/vendor/vendor.json +19 -2
  409. package/dist/ui/shared/view-strings.js +8 -0
  410. package/dist/ui/windows-agents-nav.js +2 -0
  411. package/dist/ui/windows-cli-catalog.js +79 -0
  412. package/dist/web-api.d.ts +37 -0
  413. package/dist/web-api.js +248 -6
  414. package/dist/web-api.js.map +1 -1
  415. package/dist/web-chat-history.d.ts +19 -2
  416. package/dist/web-chat-history.js +72 -3
  417. package/dist/web-chat-history.js.map +1 -1
  418. package/dist/web-only-fleet.d.ts +20 -0
  419. package/dist/web-only-fleet.js +21 -0
  420. package/dist/web-only-fleet.js.map +1 -1
  421. package/dist/web-remote-access.d.ts +152 -0
  422. package/dist/web-remote-access.js +368 -0
  423. package/dist/web-remote-access.js.map +1 -0
  424. package/dist/web-session.d.ts +7 -0
  425. package/dist/web-session.js +2 -0
  426. package/dist/web-session.js.map +1 -1
  427. package/dist/web-shell-routes.d.ts +4 -1
  428. package/dist/web-shell-routes.js +7 -2
  429. package/dist/web-shell-routes.js.map +1 -1
  430. package/dist/windows-agents.d.ts +124 -0
  431. package/dist/windows-agents.js +487 -0
  432. package/dist/windows-agents.js.map +1 -0
  433. package/dist/windows-cli-api.d.ts +23 -0
  434. package/dist/windows-cli-api.js +158 -0
  435. package/dist/windows-cli-api.js.map +1 -0
  436. package/dist/windows-cli-providers.d.ts +115 -0
  437. package/dist/windows-cli-providers.js +429 -0
  438. package/dist/windows-cli-providers.js.map +1 -0
  439. package/dist/windows-cli-worker.d.ts +58 -0
  440. package/dist/windows-cli-worker.js +479 -0
  441. package/dist/windows-cli-worker.js.map +1 -0
  442. package/dist/windows-cli.d.ts +115 -0
  443. package/dist/windows-cli.js +402 -0
  444. package/dist/windows-cli.js.map +1 -0
  445. package/dist/windows-native-mcp.d.ts +19 -0
  446. package/dist/windows-native-mcp.js +143 -0
  447. package/dist/windows-native-mcp.js.map +1 -0
  448. package/dist/windows-pane-mcp.d.ts +26 -0
  449. package/dist/windows-pane-mcp.js +187 -0
  450. package/dist/windows-pane-mcp.js.map +1 -0
  451. package/package.json +9 -3
  452. package/templates/runtime-assets/conpty-LICENSE +21 -0
  453. package/templates/runtime-assets/conpty-NOTICE.md +503 -0
  454. package/templates/runtime-assets/local-pane-stage.ps1 +101 -0
  455. package/templates/runtime-assets/runtime-pane-job.ps1 +116 -0
  456. package/templates/runtime-assets/runtime-pane-private.ps1 +14 -0
  457. package/templates/runtime-assets/xterm-LICENSE +21 -0
@@ -0,0 +1,16 @@
1
+ import type { RuntimePaneLaunch } from "./runtime-pane-protocol.js";
2
+ import type { NativePaneOwner } from "./runtime-pane-native.js";
3
+ export interface NativePaneConfig {
4
+ sessionId?: string;
5
+ instructionsFile?: string;
6
+ mcp?: {
7
+ nodePath: string;
8
+ helperPath: string;
9
+ connectionPath: string;
10
+ configPath: string;
11
+ tools: string[];
12
+ serverName: string;
13
+ };
14
+ cleanup(): void;
15
+ }
16
+ export declare function prepareNativePaneConfig(launch: RuntimePaneLaunch, owner: NativePaneOwner, nodePath: string, helperPath: string): NativePaneConfig;
@@ -0,0 +1,54 @@
1
+ /** Launch-local files only. Provider account configuration and credentials are never copied or rewritten. */
2
+ import { lstatSync, mkdirSync, rmdirSync, unlinkSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { validateNativeMcpConnection } from "./windows-cli-providers.js";
5
+ import { validatePaneMcpOwner } from "./runtime-pane-mcp-protocol.js";
6
+ function realDirectory(path) { const stat = lstatSync(path); if (!stat.isDirectory() || stat.isSymbolicLink())
7
+ throw Error("Pane configuration must stay in its owned directory"); }
8
+ export function prepareNativePaneConfig(launch, owner, nodePath, helperPath) {
9
+ realDirectory(owner.directory);
10
+ const parent = join(owner.directory, "launches");
11
+ mkdirSync(parent, { recursive: true, mode: 0o700 });
12
+ realDirectory(parent);
13
+ const directory = join(parent, owner.launchId);
14
+ mkdirSync(directory, { mode: 0o700 });
15
+ const files = [];
16
+ const config = { ...(launch.cli === "claude-code" ? { sessionId: launch.sessionId ?? owner.launchId } : {}), cleanup: () => {
17
+ for (const file of files) {
18
+ try {
19
+ unlinkSync(file);
20
+ }
21
+ catch { /* Only exact files created by this launch. */ }
22
+ }
23
+ try {
24
+ rmdirSync(directory);
25
+ }
26
+ catch { /* Unknown extra files are never deleted. */ }
27
+ } };
28
+ const write = (name, value) => { const file = join(directory, name); writeFileSync(file, value, { encoding: "utf8", mode: 0o600, flag: "wx" }); files.push(file); return file; };
29
+ try {
30
+ if (launch.mcpTools) {
31
+ if (!owner.mcp)
32
+ throw Error("Persistent pane MCP scope was not prepared");
33
+ const identity = validatePaneMcpOwner(owner.mcp.owner), mcp = validateNativeMcpConnection({ endpoint: owner.mcp.endpoint, token: owner.mcp.token, tools: owner.mcp.tools });
34
+ if (identity.paneId !== launch.paneId || identity.launchId !== owner.launchId || identity.agentId !== launch.agentId || identity.instance !== launch.instance
35
+ || JSON.stringify(mcp.tools) !== JSON.stringify(launch.mcpTools))
36
+ throw Error("Persistent pane MCP scope differs from its launch");
37
+ const connectionPath = write("mcp-connection.json", JSON.stringify({ ...mcp, owner: identity }));
38
+ const serverName = `agend_${launch.agentId.replace(/-/g, "")}`;
39
+ const server = { command: nodePath, args: [helperPath, "--connection-file", connectionPath] };
40
+ const configPath = write("mcp.json", JSON.stringify({ mcpServers: { [serverName]: server } }));
41
+ config.mcp = { nodePath, helperPath, connectionPath, configPath, serverName, tools: mcp.tools };
42
+ }
43
+ else if (owner.mcp)
44
+ throw Error("Unexpected pane MCP scope");
45
+ if (launch.cli === "claude-code" && launch.instructions)
46
+ config.instructionsFile = write("instructions.txt", launch.instructions);
47
+ return config;
48
+ }
49
+ catch (error) {
50
+ config.cleanup();
51
+ throw error;
52
+ }
53
+ }
54
+ //# sourceMappingURL=runtime-pane-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-config.js","sourceRoot":"","sources":["../src/runtime-pane-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { IPty } from "node-pty";
2
+ import { RuntimePaneStore } from "./runtime-pane-store.js";
3
+ import { type RuntimePaneLaunch, type RuntimePaneSnapshot } from "./runtime-pane-protocol.js";
4
+ import type { PaneMcpConnection } from "./windows-pane-mcp.js";
5
+ import type { NativePaneOwner } from "./runtime-pane-native.js";
6
+ import type { PaneMcpOwner } from "./runtime-pane-mcp-protocol.js";
7
+ import { NativePaneTranscriptReader, type NativeClaudeSessionState } from "./runtime-pane-transcript.js";
8
+ export { persistentNativeArguments } from "./runtime-pane-native.js";
9
+ export type RuntimePaneProcess = Pick<IPty, "pid" | "write" | "resize" | "kill" | "pause" | "resume" | "onData" | "onExit"> & {
10
+ onFailure?(listener: () => void): {
11
+ dispose(): void;
12
+ };
13
+ };
14
+ export interface RuntimePaneHostOptions {
15
+ store: RuntimePaneStore;
16
+ bootId: string;
17
+ systemBootId?: string;
18
+ online(): boolean;
19
+ maxAgents(): number;
20
+ /** Internal local launch factory, never a field in the remote request. */
21
+ spawn?(launch: RuntimePaneLaunch, owner: NativePaneOwner): Promise<RuntimePaneProcess>;
22
+ mcpConnection?(owner: PaneMcpOwner, tools: string[]): PaneMcpConnection;
23
+ /** Internal runner seam. A remote request never provides roots or a path. */
24
+ transcript?(launch: RuntimePaneLaunch, sessionId: string): (Pick<NativePaneTranscriptReader, "read" | "close"> & Partial<Pick<NativePaneTranscriptReader, "baseline">>);
25
+ sessionProof?(launch: RuntimePaneLaunch, sessionId: string, current: () => boolean): Promise<NativeClaudeSessionState>;
26
+ output?(snapshot: RuntimePaneSnapshot): void;
27
+ }
28
+ export declare class RuntimePaneHost {
29
+ private readonly options;
30
+ private readonly live;
31
+ private readonly queues;
32
+ private closing;
33
+ private readonly general;
34
+ constructor(options: RuntimePaneHostOptions);
35
+ list(): RuntimePaneSnapshot[];
36
+ /** Exact live reservation; no PID adoption or scans of other panes. */
37
+ owns(owner: PaneMcpOwner): boolean;
38
+ request(raw: unknown, current?: () => boolean): Promise<unknown>;
39
+ private open;
40
+ private recover;
41
+ private operate;
42
+ private readTranscript;
43
+ stop(): Promise<void>;
44
+ }
@@ -0,0 +1,424 @@
1
+ import { RuntimePaneOutputBuffer } from "./runtime-pane-output.js";
2
+ import { RuntimeGeneralWorkspace, loadGeneralKnowledge } from "./runtime-general-workspace.js";
3
+ import { GeneralManagedFileError } from "./runtime-general-protocol.js";
4
+ /** Runner-owned, persistent CLI panes. A coordinator reconnect neither launches nor replays anything. */
5
+ import { randomUUID } from "node:crypto";
6
+ import { RuntimePaneStore } from "./runtime-pane-store.js";
7
+ import { RuntimePaneScreen } from "./runtime-pane-screen.js";
8
+ import { PANE_EDIT_KEYS, validateRuntimePaneRequest } from "./runtime-pane-protocol.js";
9
+ import { spawnNativePane } from "./runtime-pane-process.js";
10
+ import { NativePaneTranscriptReader, nativeClaudeSessionState, nativeCodexSessionState } from "./runtime-pane-transcript.js";
11
+ import { validatePaneTranscriptBaseline, validatePaneTranscriptWireBatch } from "./runtime-pane-transcript-protocol.js";
12
+ export { persistentNativeArguments } from "./runtime-pane-native.js";
13
+ const KEYS = { Enter: "\r", Escape: "\x1b", Up: "\x1b[A", Down: "\x1b[B", Right: "\x1b[C", Left: "\x1b[D", "C-c": "\x03", "C-q": "\x11" };
14
+ export class RuntimePaneHost {
15
+ options;
16
+ live = new Map();
17
+ queues = new Map();
18
+ closing = false;
19
+ general;
20
+ constructor(options) {
21
+ this.options = options;
22
+ this.general = new RuntimeGeneralWorkspace(options.store.directory);
23
+ }
24
+ list() {
25
+ for (const row of this.options.store.list())
26
+ if (!this.live.has(row.launch.paneId))
27
+ this.options.store.reconcileExit(row.launch.paneId);
28
+ return this.options.store.list().map(row => structuredClone(this.live.get(row.launch.paneId)?.record.snapshot ?? row.snapshot));
29
+ }
30
+ /** Exact live reservation; no PID adoption or scans of other panes. */
31
+ owns(owner) {
32
+ if (this.closing || owner.hostBootId !== this.options.bootId)
33
+ return false;
34
+ try {
35
+ const pane = this.live.get(owner.paneId)?.record.snapshot ?? this.options.store.get(owner.paneId)?.snapshot;
36
+ return !!pane && pane.hostBootId === owner.hostBootId && pane.launchId === owner.launchId && pane.agentId === owner.agentId
37
+ && pane.instance === owner.instance && (pane.state === "starting" || pane.state === "running");
38
+ }
39
+ catch {
40
+ return false;
41
+ }
42
+ }
43
+ async request(raw, current = () => true) {
44
+ const request = validateRuntimePaneRequest(raw);
45
+ if (request.action === "list")
46
+ return { hostBootId: this.options.bootId, capabilities: { openDisposition: true, recovery: true, claudeSessionProof: true, codexSessionProof: true, generalWorkspace: true }, panes: this.list() };
47
+ if (this.closing || !this.options.online() || !current())
48
+ throw Error("Pane runtime is disconnected");
49
+ if (request.action === "general-workspace") {
50
+ const installed = loadGeneralKnowledge(request.cli).hash;
51
+ if (installed !== request.packHash)
52
+ return { version: 1, bindingId: request.bindingId, instance: request.instance, cli: request.cli, packHash: installed, upgradeRequired: true };
53
+ try {
54
+ return this.general.prepare(request, current, cwd => !this.list().some(row => row.state !== "exited"
55
+ && this.options.store.get(row.paneId)?.launch.cwd.toLowerCase() === cwd.toLowerCase()));
56
+ }
57
+ catch (err) {
58
+ // Closed, fixed-asset diagnostics cross the transport; raw errors, paths and file contents never do.
59
+ if (!(err instanceof GeneralManagedFileError))
60
+ throw err;
61
+ return { version: 1, bindingId: request.bindingId, instance: request.instance, cli: request.cli, packHash: request.packHash, managedFile: err.file };
62
+ }
63
+ }
64
+ if (request.action === "shutdown") {
65
+ // No await between the inventory, admission fence and reply. An accepted/queued launch or an unknown
66
+ // reservation prevents shutdown; disconnect/lease loss alone never tears down a persistent host.
67
+ if (request.hostBootId !== this.options.bootId || this.queues.size || this.list().some(pane => pane.state !== "exited"))
68
+ throw Error("Pane host still has live or unconfirmed work");
69
+ this.closing = true;
70
+ return { hostBootId: this.options.bootId, shutdown: true };
71
+ }
72
+ const id = request.action === "open" ? request.launch.paneId : request.paneId;
73
+ const queue = this.queues.get(id) ?? { tail: Promise.resolve(), count: 0 };
74
+ if (queue.count >= 16)
75
+ throw Error("Pane operation queue is full");
76
+ queue.count++;
77
+ this.queues.set(id, queue);
78
+ const operation = queue.tail.catch(() => { }).then(async () => {
79
+ if (this.closing || !this.options.online() || !current())
80
+ throw Error("Pane runtime is disconnected");
81
+ return request.action === "open" ? this.open(request) : request.action === "recover" ? this.recover(request) : this.operate(request, current);
82
+ });
83
+ queue.tail = operation;
84
+ try {
85
+ return await operation;
86
+ }
87
+ finally {
88
+ if (--queue.count === 0 && this.queues.get(id) === queue)
89
+ this.queues.delete(id);
90
+ }
91
+ }
92
+ async open(request) {
93
+ const { launch, operationId } = request;
94
+ const digest = RuntimePaneStore.digest(launch);
95
+ const existing = this.options.store.get(launch.paneId);
96
+ if (existing) {
97
+ if (existing.openOperationId !== operationId || existing.openDigest !== digest)
98
+ throw Error("Pane id already belongs to another launch");
99
+ const live = this.live.get(launch.paneId);
100
+ if (!live && existing.snapshot.state !== "exited")
101
+ throw Error("Pane launch outcome is unknown; no replacement was started");
102
+ return { ...structuredClone(live?.record.snapshot ?? existing.snapshot), reattached: true };
103
+ }
104
+ this.list();
105
+ const rows = this.options.store.list();
106
+ const limit = this.options.maxAgents();
107
+ if (!Number.isInteger(limit) || limit < 1 || limit > 16)
108
+ throw Error("Invalid machine pane limit");
109
+ if (launch.launchId && rows.some(row => row.snapshot.launchId === launch.launchId))
110
+ throw Error("Pane launch identity already belongs to another pane");
111
+ const record = {
112
+ ...(this.options.systemBootId ? { systemBootId: this.options.systemBootId } : {}),
113
+ launch, openDigest: digest, openOperationId: operationId, bootId: this.options.bootId,
114
+ snapshot: { hostBootId: this.options.bootId, paneId: launch.paneId, agentId: launch.agentId, instance: launch.instance, launchId: launch.launchId ?? randomUUID(), columns: launch.columns, rows: launch.rows,
115
+ state: "starting", seq: 0, outputAt: 0, commandSequence: 0 },
116
+ };
117
+ const sessionId = launch.sessionId ?? (launch.cli === "claude-code" ? record.snapshot.launchId : undefined);
118
+ if (sessionId)
119
+ record.snapshot.sessionId = sessionId;
120
+ if (rows.some(row => row.launch.agentId === launch.agentId && row.snapshot.state !== "exited")
121
+ || rows.filter(row => row.snapshot.state !== "exited").length >= limit) {
122
+ // A durable tombstone consumes this open identity. Even a lost refusal ACK cannot turn its retry into a launch.
123
+ // Never issue this proof for a spawn exception: the factory may have created a child before throwing.
124
+ record.snapshot.state = "exited";
125
+ record.snapshot.noLaunch = true;
126
+ this.options.store.put(record);
127
+ return { ...structuredClone(record.snapshot), reattached: false };
128
+ }
129
+ if (launch.generalWorkspace)
130
+ this.general.verify({ action: "general-workspace", ...launch.generalWorkspace, instance: launch.instance, cli: launch.cli }, launch.cwd);
131
+ // Synchronous reservation before the first await: parallel opens cannot oversubscribe the machine.
132
+ this.options.store.put(record);
133
+ let process;
134
+ try {
135
+ const owner = { directory: this.options.store.directory, launchId: record.snapshot.launchId };
136
+ if (launch.mcpTools) {
137
+ if (!this.options.mcpConnection)
138
+ throw Error("Persistent pane MCP authority is unavailable");
139
+ owner.mcp = this.options.mcpConnection({ hostBootId: this.options.bootId, paneId: launch.paneId, launchId: record.snapshot.launchId, agentId: launch.agentId, instance: launch.instance }, launch.mcpTools);
140
+ }
141
+ process = await (this.options.spawn ? this.options.spawn(launch, owner) : spawnNativePane(launch, owner));
142
+ let finish;
143
+ const exited = new Promise(resolve => { finish = resolve; });
144
+ const screen = new RuntimePaneScreen(launch.columns, launch.rows, data => {
145
+ if (this.live.get(launch.paneId)?.record === record && record.snapshot.state === "running")
146
+ process.write(data);
147
+ });
148
+ const live = { record, process, screen, parsed: Promise.resolve(), output: new RuntimePaneOutputBuffer(), exited, finish };
149
+ this.live.set(launch.paneId, live);
150
+ record.pid = process.pid;
151
+ record.snapshot.state = "running";
152
+ process.onFailure?.(() => {
153
+ if (record.snapshot.state === "exited")
154
+ return;
155
+ record.snapshot.state = "unknown";
156
+ try {
157
+ this.options.store.put(record);
158
+ }
159
+ catch { /* retained on disk as unfinished */ }
160
+ });
161
+ process.onData(data => {
162
+ if (this.live.get(launch.paneId) !== live)
163
+ return;
164
+ live.output.append(data);
165
+ // Invalidate observations when bytes arrive, not later when the VT parser finishes. A queued repaint
166
+ // already makes an old composer proof unsafe, even while capture or parser completion is awaiting.
167
+ record.snapshot.seq++;
168
+ record.snapshot.outputAt = Date.now();
169
+ live.parsed = screen.write(data).then(() => {
170
+ try {
171
+ this.options.output?.(structuredClone(record.snapshot));
172
+ }
173
+ catch { /* observer backpressure cannot change process ownership */ }
174
+ }).catch(() => {
175
+ record.snapshot.state = "unknown";
176
+ try {
177
+ process.pause();
178
+ this.options.store.put(record);
179
+ }
180
+ catch { /* reserved until exit is proven */ }
181
+ });
182
+ });
183
+ process.onExit(({ exitCode }) => {
184
+ record.snapshot.state = "exited";
185
+ record.snapshot.exitCode = exitCode;
186
+ try {
187
+ this.options.store.put(record);
188
+ }
189
+ catch { /* an old live record stays reserved on restart */ }
190
+ finish();
191
+ try {
192
+ this.options.output?.(structuredClone(record.snapshot));
193
+ }
194
+ catch { /* process exit is independent of its observer */ }
195
+ const retired = [...this.live.values()].filter(row => row.record.snapshot.state === "exited");
196
+ for (const old of retired.slice(0, Math.max(0, retired.length - 16))) {
197
+ void old.transcript?.close().catch(() => { });
198
+ old.screen.dispose();
199
+ this.live.delete(old.record.launch.paneId);
200
+ }
201
+ });
202
+ this.options.store.put(record);
203
+ if (this.closing) {
204
+ process.kill();
205
+ throw Error("Pane host stopped during launch");
206
+ }
207
+ return { ...structuredClone(record.snapshot), reattached: false };
208
+ }
209
+ catch (error) {
210
+ if (process) {
211
+ try {
212
+ process.kill();
213
+ }
214
+ catch { /* retain uncertain reservation */ }
215
+ }
216
+ // A launch factory may fail after creating a native child. Only onExit proves there is no process.
217
+ if (record.snapshot.state !== "exited")
218
+ record.snapshot.state = "unknown";
219
+ this.options.store.put(record);
220
+ throw error;
221
+ }
222
+ }
223
+ recover(request) {
224
+ const record = this.options.store.get(request.paneId);
225
+ if (!record || record.snapshot.launchId !== request.launchId || record.snapshot.hostBootId !== request.hostBootId)
226
+ throw Error("Recovery needs the exact retained pane with no live host owner");
227
+ if (record.snapshot.state === "exited")
228
+ return structuredClone(record.snapshot);
229
+ if (this.live.has(request.paneId) || record.snapshot.state !== "unknown" || record.bootId === this.options.bootId || request.confirmedStopped !== true)
230
+ throw Error("The retained pane is not eligible for stopped-process recovery");
231
+ record.snapshot.state = "exited";
232
+ record.snapshot.exitProof = "admin-confirmed";
233
+ delete record.snapshot.exitCode;
234
+ this.options.store.put(record);
235
+ return structuredClone(record.snapshot);
236
+ }
237
+ async operate(request, current) {
238
+ const live = this.live.get(request.paneId);
239
+ const stored = this.options.store.get(request.paneId);
240
+ if (!stored || stored.snapshot.launchId !== request.launchId)
241
+ throw Error("Pane launch identity is stale");
242
+ if (request.action === "snapshot")
243
+ return structuredClone(live?.record.snapshot ?? stored.snapshot);
244
+ if (request.action === "session-proof") {
245
+ const { launch, snapshot } = live?.record ?? stored;
246
+ if (!["claude-code", "codex"].includes(launch.cli) || snapshot.state !== "exited" || snapshot.noLaunch || !snapshot.sessionId)
247
+ throw Error("Session proof requires an exited supported pane");
248
+ let settled = false, timer;
249
+ const lease = () => !settled && !this.closing && this.options.online() && current();
250
+ const read = this.options.sessionProof
251
+ ? this.options.sessionProof(launch, snapshot.sessionId, lease)
252
+ : (launch.cli === "codex" ? nativeCodexSessionState : nativeClaudeSessionState)(launch.cwd, snapshot.sessionId, lease);
253
+ try {
254
+ const state = await Promise.race([read, new Promise(done => { timer = setTimeout(() => done("unknown"), 1500); })]);
255
+ return { snapshot: structuredClone(snapshot), state: lease() && ["absent", "saved", "unknown"].includes(state) ? state : "unknown" };
256
+ }
257
+ catch {
258
+ return { snapshot: structuredClone(snapshot), state: "unknown" };
259
+ }
260
+ finally {
261
+ settled = true;
262
+ clearTimeout(timer);
263
+ void read.catch(() => { });
264
+ }
265
+ }
266
+ if (!live && request.action === "capture" && stored.snapshot.state === "exited")
267
+ return { snapshot: structuredClone(stored.snapshot), text: "" };
268
+ if (!live)
269
+ throw Error("Pane process is not owned by this runner; its reservation is retained");
270
+ const record = live.record;
271
+ if (request.action === "output")
272
+ return live.output.read(request.offset, record.snapshot.state === "exited");
273
+ await live.parsed;
274
+ if (request.action === "capture") {
275
+ const seq = record.snapshot.seq, text = await live.screen.capture(request);
276
+ if (seq !== record.snapshot.seq)
277
+ throw Error("Pane changed during capture; observe it again");
278
+ return { snapshot: structuredClone(record.snapshot), text };
279
+ }
280
+ if (request.action === "bind-session") {
281
+ const expected = record.snapshot.sessionId ?? record.launch.sessionId ?? (record.launch.cli === "claude-code" ? record.snapshot.launchId : undefined);
282
+ if (expected && expected !== request.sessionId)
283
+ throw Error("Pane conversation identity is already pinned elsewhere");
284
+ if (!expected) {
285
+ if (record.snapshot.state !== "running")
286
+ throw Error("An unowned pane cannot establish a conversation identity");
287
+ const text = await live.screen.capture({ history: 200, joined: true });
288
+ const ids = [...text.matchAll(/\bSession:\s*([a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12})\b/gi)].map(match => match[1]);
289
+ if (ids.length !== 1 || ids[0] !== request.sessionId)
290
+ throw Error("The owned pane has no unique matching status identity");
291
+ }
292
+ if (!current() || !this.options.online() || this.closing)
293
+ throw Error("Pane session binding lease expired");
294
+ if (record.snapshot.sessionId !== request.sessionId) {
295
+ record.snapshot.sessionId = request.sessionId;
296
+ try {
297
+ this.options.store.put(record);
298
+ }
299
+ catch (error) {
300
+ delete record.snapshot.sessionId;
301
+ throw error;
302
+ }
303
+ }
304
+ return structuredClone(record.snapshot);
305
+ }
306
+ if (request.action === "transcript" || request.action === "transcript-baseline")
307
+ return this.readTranscript(live, request.cursor, current, request.action === "transcript-baseline");
308
+ if (request.action === "reconcile") {
309
+ if (record.snapshot.commandSequence !== request.sequence || record.lastCommand?.id !== request.operationId
310
+ || record.lastCommand.digest !== request.digest || record.lastCommand.state !== "applied")
311
+ throw Error("Pane command outcome is unconfirmed");
312
+ return structuredClone(record.snapshot);
313
+ }
314
+ if (!current() || !this.options.online())
315
+ throw Error("Pane input lease expired");
316
+ const digest = RuntimePaneStore.digest(request);
317
+ if (request.sequence === record.snapshot.commandSequence) {
318
+ if (record.lastCommand?.id !== request.operationId || record.lastCommand.digest !== digest)
319
+ throw Error("Pane input sequence belongs to another command");
320
+ if (record.lastCommand.state !== "applied")
321
+ throw Error("Pane input outcome is unknown; it will not be replayed");
322
+ return structuredClone(record.snapshot);
323
+ }
324
+ if (request.sequence !== record.snapshot.commandSequence + 1)
325
+ throw Error("Pane input sequence is stale or has a gap");
326
+ if (record.lastCommand?.state === "prepared" && request.action !== "close")
327
+ throw Error("Previous pane input outcome is unknown");
328
+ if (record.snapshot.state !== "running" && request.action !== "close")
329
+ throw Error("Pane process is not confirmed running");
330
+ record.snapshot.commandSequence = request.sequence;
331
+ record.lastCommand = { id: request.operationId, digest, state: "prepared" };
332
+ delete record.snapshot.inputRefused;
333
+ if ((request.action === "input" || request.action === "key" || request.action === "edit") && request.expectedSeq !== record.snapshot.seq) {
334
+ // Positively no input. Consume this command identity: a lost refusal ACK must never become a later key.
335
+ record.snapshot.inputRefused = true;
336
+ record.lastCommand.state = "applied";
337
+ this.options.store.put(record);
338
+ return structuredClone(record.snapshot);
339
+ }
340
+ // Durable before input: a crash after this write must hold, never duplicate Enter.
341
+ this.options.store.put(record);
342
+ if (request.action === "input")
343
+ live.process.write(request.kind === "paste" ? live.screen.bracketedPaste(request.text) : request.text);
344
+ else if (request.action === "edit")
345
+ live.process.write(request.keys.map(key => PANE_EDIT_KEYS[key]).join("").repeat(request.repeat ?? 1));
346
+ else if (request.action === "key")
347
+ live.process.write(KEYS[request.key]);
348
+ else if (request.action === "resize") {
349
+ live.process.resize(request.columns, request.rows);
350
+ await live.screen.resize(request.columns, request.rows);
351
+ record.snapshot.columns = request.columns;
352
+ record.snapshot.rows = request.rows;
353
+ }
354
+ else {
355
+ live.process.kill();
356
+ let timer;
357
+ const stopped = await Promise.race([live.exited.then(() => true), new Promise(resolve => { timer = setTimeout(() => resolve(false), 10_000); })]);
358
+ clearTimeout(timer);
359
+ if (!stopped)
360
+ record.snapshot.state = "unknown";
361
+ }
362
+ record.lastCommand.state = "applied";
363
+ this.options.store.put(record);
364
+ return structuredClone(record.snapshot);
365
+ }
366
+ async readTranscript(live, cursor, current, baseline = false) {
367
+ const { launch, snapshot } = live.record;
368
+ if (!snapshot.sessionId || cursor.sessionId !== snapshot.sessionId)
369
+ throw Error("Transcript identity differs from its owned pane");
370
+ if (snapshot.state !== "running" && snapshot.state !== "exited")
371
+ throw Error("Transcript pane ownership is unconfirmed");
372
+ live.transcript ??= this.options.transcript?.(launch, snapshot.sessionId) ?? new NativePaneTranscriptReader(launch.cli, launch.cwd, snapshot.sessionId);
373
+ let settled = false, timer;
374
+ const lease = () => !settled && !this.closing && current() && this.options.online();
375
+ const read = baseline ? live.transcript.baseline?.(cursor, lease) ?? Promise.resolve({ state: "pending", cursor, complete: false, turnKnown: false, openTurn: null }) : live.transcript.read(cursor, lease);
376
+ try {
377
+ const batch = await Promise.race([read, new Promise((_resolve, reject) => { timer = setTimeout(() => reject(Error("Pane transcript read deadline exceeded")), 1000); })]);
378
+ if (!lease())
379
+ throw Error("Pane transcript read lease expired");
380
+ if (baseline)
381
+ return validatePaneTranscriptBaseline(batch, snapshot.sessionId);
382
+ if (!("data" in batch))
383
+ throw Error("Pane transcript response has no records");
384
+ return validatePaneTranscriptWireBatch({ state: batch.state, cursor: batch.cursor, data: batch.data, complete: batch.complete, gap: batch.gap }, snapshot.sessionId);
385
+ }
386
+ finally {
387
+ settled = true;
388
+ clearTimeout(timer);
389
+ void read.catch(() => { });
390
+ }
391
+ }
392
+ async stop() {
393
+ this.closing = true;
394
+ for (const live of this.live.values())
395
+ if (live.record.snapshot.state !== "exited") {
396
+ try {
397
+ live.process.kill();
398
+ }
399
+ catch {
400
+ live.record.snapshot.state = "unknown";
401
+ }
402
+ }
403
+ // Pending opens recheck admission and retire their own process; no new request can enter.
404
+ await Promise.allSettled([...this.queues.values()].map(queue => queue.tail));
405
+ // A request to close is not exit evidence. Keep native helpers alive until their job receipt or the bounded hold.
406
+ const remaining = [...this.live.values()].filter(live => live.record.snapshot.state !== "exited");
407
+ let timer;
408
+ if (remaining.length)
409
+ await Promise.race([Promise.all(remaining.map(live => live.exited)), new Promise(done => { timer = setTimeout(done, 10_000); })]);
410
+ clearTimeout(timer);
411
+ for (const live of this.live.values()) {
412
+ if (live.record.snapshot.state !== "exited")
413
+ live.record.snapshot.state = "unknown";
414
+ try {
415
+ this.options.store.put(live.record);
416
+ }
417
+ finally {
418
+ live.screen.dispose();
419
+ void live.transcript?.close().catch(() => { });
420
+ }
421
+ }
422
+ }
423
+ }
424
+ //# sourceMappingURL=runtime-pane-host.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-host.js","sourceRoot":"","sources":["../src/runtime-pane-host.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function runPaneJobOwner(args: string[]): void;
@@ -0,0 +1,29 @@
1
+ /** Detached native Node owner: Windows PowerShell needs an attached launch, even with redirected pipes. */
2
+ import { spawn } from "./child-process.js";
3
+ import { join, resolve } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+ import { validWindowsAgentId, validWindowsDirectory, nativeCliEnvironment } from "./windows-cli-worker.js";
6
+ export function runPaneJobOwner(args) {
7
+ const [directory, launch, pane, agent, owner] = args;
8
+ if (process.platform !== "win32" || args.length !== 5 || !validWindowsDirectory(directory)
9
+ || ![launch, pane, agent].every(validWindowsAgentId) || !/^[1-9]\d{0,9}$/.test(owner))
10
+ throw Error("Invalid local pane owner");
11
+ // Only fixed program paths. The private first stdin frame still controls the validated configured CLI.
12
+ const child = spawn(join(process.env.SystemRoot || "C:\\Windows", "System32", "WindowsPowerShell", "v1.0", "powershell.exe"), [
13
+ "-NoProfile", "-NonInteractive", "-ExecutionPolicy", "Bypass", "-File", fileURLToPath(new URL("./runtime-pane-job.ps1", import.meta.url)),
14
+ "-NodePath", process.execPath, "-WorkerPath", fileURLToPath(new URL("./runtime-pane-worker.js", import.meta.url)),
15
+ "-StateDirectory", directory, "-LaunchId", launch, "-PaneId", pane, "-AgentId", agent,
16
+ "-OwnerPid", owner, "-ReceiptPid", String(process.pid),
17
+ ], { windowsHide: true, shell: false, env: nativeCliEnvironment(), stdio: "inherit" });
18
+ child.on("error", () => { process.exitCode = 1; });
19
+ child.on("close", code => { process.exitCode = code ?? 1; });
20
+ }
21
+ if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
22
+ try {
23
+ runPaneJobOwner(process.argv.slice(2));
24
+ }
25
+ catch {
26
+ process.exitCode = 1;
27
+ }
28
+ }
29
+ //# sourceMappingURL=runtime-pane-job-owner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-job-owner.js","sourceRoot":"","sources":["../src/runtime-pane-job-owner.ts"],"names":[],"mappings":"AAAA,2GAA2G;AAC3G,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE3G,MAAM,UAAU,eAAe,CAAC,IAAc;IAC5C,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;IACrD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;WACrF,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjI,uGAAuG;IACvG,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,aAAa,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,EAAE,gBAAgB,CAAC,EAAE;QAC5H,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,wBAAwB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACzI,WAAW,EAAE,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,aAAa,CAAC,IAAI,GAAG,CAAC,0BAA0B,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACjH,iBAAiB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK;QACrF,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;KACvD,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACvF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC;AACD,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACnF,IAAI,CAAC;QAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IAAC,CAAC;AACjF,CAAC"}