@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,558 @@
1
+ import { NativePaneOutputLog } from "./native-pane-output-log.js";
2
+ import { validatePaneOutputBatch } from "./runtime-pane-output.js";
3
+ /** Coordinator-side pane handle. Remote PIDs are never exposed as local supervision targets. */
4
+ import { EventEmitter } from "node:events";
5
+ import { randomUUID } from "node:crypto";
6
+ import { lstatSync, readFileSync } from "node:fs";
7
+ import { atomicWriteFileSync } from "./atomic-write.js";
8
+ import { runtimeJobDigest } from "./runtime-client-store.js";
9
+ import { PANE_EDIT_KEYS, validateRuntimePaneRequest, validateRuntimePaneSnapshot, validateRuntimePaneOpenResult } from "./runtime-pane-protocol.js";
10
+ import { validateRuntimeTranscriptReference, validatePaneTranscriptBaseline, validatePaneTranscriptWireBatch, sameRuntimeTranscriptScope } from "./runtime-pane-transcript-protocol.js";
11
+ export class RuntimePanePort {
12
+ endpoint;
13
+ file;
14
+ inputIsComposer;
15
+ record;
16
+ tail = Promise.resolve();
17
+ error = null;
18
+ closing;
19
+ outputLog;
20
+ lastObservation;
21
+ inputCapture;
22
+ inputNotSent = false;
23
+ inputDiagnostic = null;
24
+ consecutiveRefusals = 0;
25
+ refusalLogger;
26
+ setInputRefusalLogger(log) { this.refusalLogger = log; }
27
+ getLastInputDiagnostic() { return this.inputDiagnostic ? { ...this.inputDiagnostic } : null; }
28
+ constructor(endpoint, file, launch, inputIsComposer = () => false) {
29
+ this.endpoint = endpoint;
30
+ this.file = file;
31
+ this.inputIsComposer = inputIsComposer;
32
+ this.record = { version: 1, machineId: endpoint.machineId, launch, openId: randomUUID() };
33
+ try {
34
+ const stat = lstatSync(file);
35
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 128 * 1024)
36
+ throw Error("Unsafe coordinator pane receipt");
37
+ const stored = JSON.parse(readFileSync(file, "utf8"));
38
+ if (stored?.version !== 1 || stored.machineId !== endpoint.machineId || stored.launch?.agentId !== launch.agentId
39
+ || stored.launch.instance !== launch.instance || runtimeJobDigest(stored.launch) !== runtimeJobDigest(launch)
40
+ || !/^[a-f0-9-]{36}$/i.test(stored.openId) || stored.statusRequested !== undefined && typeof stored.statusRequested !== "boolean")
41
+ throw Error("Coordinator pane receipt scope differs");
42
+ if (stored.snapshot)
43
+ validateRuntimePaneSnapshot(stored.snapshot);
44
+ if (stored.pending) {
45
+ const pending = validateRuntimePaneRequest(stored.pending);
46
+ if (pending.action !== "reconcile" || !stored.snapshot || pending.paneId !== stored.snapshot.paneId
47
+ || pending.launchId !== stored.snapshot.launchId || pending.sequence !== stored.snapshot.commandSequence + 1)
48
+ throw Error("Pane command receipt scope differs");
49
+ }
50
+ if (stored.pendingClose) {
51
+ const close = validateRuntimePaneRequest(stored.pendingClose);
52
+ if (close.action !== "close" || !stored.snapshot || close.paneId !== stored.snapshot.paneId || close.launchId !== stored.snapshot.launchId)
53
+ throw Error("Pane close receipt scope differs");
54
+ }
55
+ this.record = stored;
56
+ }
57
+ catch (error) {
58
+ if (error.code !== "ENOENT")
59
+ throw error;
60
+ }
61
+ }
62
+ save() { atomicWriteFileSync(this.file, JSON.stringify(this.record), { mode: 0o600 }); }
63
+ serialize(operation) {
64
+ const result = this.tail.catch(() => { }).then(operation);
65
+ this.tail = result;
66
+ return result;
67
+ }
68
+ accept(value) {
69
+ const snapshot = validateRuntimePaneSnapshot(value);
70
+ const launch = this.record.launch;
71
+ if (launch.launchId !== undefined && snapshot.launchId !== launch.launchId || snapshot.paneId !== launch.paneId || snapshot.agentId !== launch.agentId || snapshot.instance !== launch.instance
72
+ || launch.sessionId !== undefined && snapshot.sessionId !== launch.sessionId
73
+ || launch.cli === "claude-code" && snapshot.sessionId !== (launch.sessionId ?? snapshot.launchId)
74
+ || this.record.snapshot && (snapshot.launchId !== this.record.snapshot.launchId || snapshot.hostBootId !== this.record.snapshot.hostBootId)
75
+ || this.record.snapshot?.sessionId && snapshot.sessionId !== this.record.snapshot.sessionId
76
+ || this.record.snapshot && snapshot.commandSequence < this.record.snapshot.commandSequence)
77
+ throw Error("Pane ownership proof differs");
78
+ return snapshot;
79
+ }
80
+ async open() {
81
+ return this.serialize(async () => {
82
+ if (this.closing || this.record.pendingClose)
83
+ throw Error("Pane close outcome is retained; inspect its exit before starting again");
84
+ this.save(); // The open identity exists before the runtime may spawn.
85
+ const { reattached, ...raw } = validateRuntimePaneOpenResult(await this.endpoint.call({ action: "open", operationId: this.record.openId, launch: this.record.launch }));
86
+ if (this.record.snapshot && !reattached)
87
+ throw Error("Retained pane was not reattached by its host");
88
+ const snapshot = this.accept(raw);
89
+ this.record.snapshot = snapshot;
90
+ this.save();
91
+ // Exit/no-launch proof settles even an interrupted input or close. It is never permission to replay either.
92
+ if (snapshot.state === "exited") {
93
+ delete this.record.pending;
94
+ delete this.record.pendingClose;
95
+ this.save();
96
+ throw Error(snapshot.noLaunch ? "Pane admission refused before launch" : "Retained pane has exited");
97
+ }
98
+ if (this.record.pending) {
99
+ // Exact identity only. The host returns a prior applied result or holds an uncertain input; never resubmits it.
100
+ const result = this.accept(await this.endpoint.call(this.record.pending));
101
+ this.record.snapshot = result;
102
+ delete this.record.pending;
103
+ this.save();
104
+ }
105
+ if (snapshot.state !== "running")
106
+ throw Error("Pane is not confirmed running");
107
+ return { windowId: snapshot.paneId, reattached };
108
+ });
109
+ }
110
+ /** Read-only recovery of an open whose ACK was lost. Never sends open or starts a process. */
111
+ async inspectRetained() {
112
+ return this.serialize(async () => {
113
+ const launch = this.record.launch;
114
+ if (!this.endpoint.online() || !launch.launchId)
115
+ throw Error("Retained native owner is unavailable");
116
+ const result = await this.endpoint.call({ action: "snapshot", paneId: launch.paneId, launchId: launch.launchId });
117
+ const snapshot = this.accept(result);
118
+ if (!this.endpoint.online())
119
+ throw Error("Retained native observation became disconnected");
120
+ this.record.snapshot = snapshot;
121
+ this.save();
122
+ return structuredClone(snapshot);
123
+ });
124
+ }
125
+ /** Idempotent metadata binding; it never types into the CLI or replays an input. */
126
+ async bindConversation(sessionId) {
127
+ return this.serialize(async () => {
128
+ const before = this.record.snapshot;
129
+ if (!before || !this.endpoint.online() || this.closing || this.record.pending || this.record.pendingClose)
130
+ throw Error("Pane session owner is unavailable or its input needs reconciliation");
131
+ const request = validateRuntimePaneRequest({ action: "bind-session", paneId: before.paneId, launchId: before.launchId, sessionId });
132
+ const snapshot = this.accept(await this.endpoint.call(request));
133
+ if (!this.endpoint.online() || snapshot.sessionId !== sessionId)
134
+ throw Error("Pane conversation binding is unconfirmed");
135
+ this.record.snapshot = snapshot;
136
+ this.save();
137
+ return structuredClone(snapshot);
138
+ });
139
+ }
140
+ /** Intent before the one automatic /status. A lost coordinator must inspect its result, never type it twice. */
141
+ beginStatusRequest() {
142
+ return this.serialize(async () => {
143
+ if (!this.endpoint.online() || this.closing || this.record.pending || this.record.pendingClose || this.record.snapshot?.state !== "running")
144
+ throw Error("Status request owner is unconfirmed");
145
+ if (this.record.statusRequested)
146
+ return false;
147
+ this.record.statusRequested = true;
148
+ this.save();
149
+ return true;
150
+ });
151
+ }
152
+ runtimeTranscriptReference(cursor) {
153
+ const pane = this.record.snapshot;
154
+ if (!pane?.sessionId || pane.sessionId !== cursor.sessionId)
155
+ throw Error("Pane transcript conversation is not pinned");
156
+ return validateRuntimeTranscriptReference({ version: 1, machineId: this.endpoint.machineId, hostBootId: pane.hostBootId,
157
+ paneId: pane.paneId, launchId: pane.launchId, agentId: pane.agentId, provider: this.record.launch.cli, cursor });
158
+ }
159
+ async readTranscript(cursor, current = () => true) {
160
+ const ref = this.runtimeTranscriptReference(cursor);
161
+ if (!this.isTranscriptObservationCurrent(ref) || !current())
162
+ throw Error("Pane transcript observation is disconnected");
163
+ const result = await this.endpoint.call({ action: "transcript", paneId: ref.paneId, launchId: ref.launchId, cursor: ref.cursor });
164
+ if (!this.isTranscriptObservationCurrent(ref) || !current())
165
+ throw Error("Pane transcript observation became stale");
166
+ return validatePaneTranscriptWireBatch(result, ref.cursor.sessionId);
167
+ }
168
+ async readTranscriptBaseline(cursor, current = () => true) {
169
+ const ref = this.runtimeTranscriptReference(cursor);
170
+ if (!this.isTranscriptObservationCurrent(ref) || !current())
171
+ throw Error("Pane baseline observation is disconnected");
172
+ const result = await this.endpoint.call({ action: "transcript-baseline", paneId: ref.paneId, launchId: ref.launchId, cursor: ref.cursor });
173
+ if (!this.isTranscriptObservationCurrent(ref) || !current())
174
+ throw Error("Pane baseline observation became stale");
175
+ return validatePaneTranscriptBaseline(result, ref.cursor.sessionId);
176
+ }
177
+ isTranscriptObservationCurrent(ref) {
178
+ try {
179
+ const pane = this.record.snapshot;
180
+ return this.endpoint.online() && !this.closing && !this.record.pendingClose && !!pane && (pane.state === "running" || pane.state === "exited")
181
+ && sameRuntimeTranscriptScope(ref, this.runtimeTranscriptReference(ref.cursor));
182
+ }
183
+ catch {
184
+ return false;
185
+ }
186
+ }
187
+ async mutate(make, proof, input = true) {
188
+ return this.serialize(async () => {
189
+ this.inputNotSent = false;
190
+ try {
191
+ if (!this.endpoint.online() || this.closing || this.record.snapshot?.state !== "running" || this.record.pending || this.record.pendingClose)
192
+ throw Error("Pane input needs reconciliation");
193
+ let expectedSeq = this.record.snapshot.seq;
194
+ if (input) {
195
+ // Internal delivery proof comes from the daemon's recognised runtime-dialog veto (#2990 policy).
196
+ // Human dialog proof remains identity/cursor-bound. Composer-only and unproved callers keep the reader check.
197
+ // Every policy still needs the exact last capture and carries its output seq to the host.
198
+ let capture = proof ? this.inputCapture : undefined;
199
+ if (!proof) {
200
+ // A read refused during repaint precedes every mutation identity/write. Retry READS only, never input.
201
+ const deadline = performance.now() + 2000;
202
+ for (let attempt = 0; attempt < 5; attempt++) {
203
+ if (!this.endpoint.online() || this.closing || this.record.pendingClose || this.record.snapshot?.state !== "running")
204
+ break;
205
+ try {
206
+ capture = await this.captureCurrent();
207
+ }
208
+ catch { /* No input request has been built or sent. */ }
209
+ if (performance.now() >= deadline) {
210
+ capture = undefined;
211
+ break;
212
+ }
213
+ if (capture)
214
+ break;
215
+ if (attempt < 4)
216
+ await new Promise(done => setTimeout(done, 100));
217
+ }
218
+ if (!capture) {
219
+ this.inputNotSent = true;
220
+ this.error = "Pane observation unavailable; no input was sent";
221
+ return false;
222
+ }
223
+ }
224
+ if (!capture || (!capture.text.trim() && proof?.kind !== "delivery") || proof && capture.text !== proof.screen
225
+ || (proof?.kind !== "dialog" && proof?.kind !== "delivery" && !this.inputIsComposer(capture.text))) {
226
+ this.inputNotSent = true;
227
+ this.error = "Pane input withheld: the intended composer or dialog is not verified";
228
+ return false;
229
+ }
230
+ expectedSeq = capture.snapshot.seq;
231
+ if (!this.endpoint.online() || this.closing || this.record.pendingClose || this.record.snapshot?.state !== "running")
232
+ return false;
233
+ }
234
+ const request = validateRuntimePaneRequest(make(this.record.snapshot, expectedSeq));
235
+ if (proof?.kind === "delivery" && (request.action !== "key" || request.key !== "Enter"))
236
+ throw Error("Delivery proof is only valid for Enter");
237
+ if (!("operationId" in request) || !("sequence" in request) || !("paneId" in request))
238
+ throw Error("Expected pane mutation");
239
+ this.record.pending = { action: "reconcile", paneId: request.paneId, launchId: request.launchId,
240
+ operationId: request.operationId, sequence: request.sequence, digest: runtimeJobDigest(request) };
241
+ this.save();
242
+ if (request.action === "input" || request.action === "key" || request.action === "edit") {
243
+ this.inputDiagnostic = { expectedSeq: request.expectedSeq, observedSeq: null, operationId: request.operationId,
244
+ commandSequence: request.sequence, action: request.action, retryCount: proof?.retryCount ?? this.consecutiveRefusals };
245
+ }
246
+ const snapshot = this.accept(await this.endpoint.call(request));
247
+ this.record.snapshot = snapshot;
248
+ delete this.record.pending;
249
+ this.save();
250
+ this.error = null;
251
+ if (this.inputDiagnostic?.operationId === request.operationId)
252
+ this.inputDiagnostic.observedSeq = snapshot.seq;
253
+ if (snapshot.inputRefused) {
254
+ this.inputNotSent = true;
255
+ this.error = "Pane changed after observation; input was not sent";
256
+ if (request.action === "input" || request.action === "key" || request.action === "edit") {
257
+ this.inputDiagnostic = { expectedSeq: request.expectedSeq, observedSeq: snapshot.seq, operationId: request.operationId,
258
+ commandSequence: request.sequence, action: request.action, retryCount: proof?.retryCount ?? this.consecutiveRefusals };
259
+ this.consecutiveRefusals++;
260
+ try {
261
+ this.refusalLogger?.({ ...this.inputDiagnostic });
262
+ }
263
+ catch { /* Diagnostics never change a positive zero-input ACK. */ }
264
+ }
265
+ return false;
266
+ }
267
+ this.consecutiveRefusals = 0;
268
+ return true;
269
+ }
270
+ catch {
271
+ this.error = "Pane input outcome is unconfirmed; reconnect and inspect before retrying";
272
+ return false;
273
+ }
274
+ });
275
+ }
276
+ target(snapshot) {
277
+ return { paneId: snapshot.paneId, launchId: snapshot.launchId, operationId: randomUUID(), sequence: snapshot.commandSequence + 1 };
278
+ }
279
+ async createWindow() { throw Error("Native panes require a typed configured launch, never a shell command"); }
280
+ async respawnWindow() { throw Error("Native pane replacement requires confirmed owned exit and a new launch receipt"); }
281
+ async killWindow() { if (!await this.killWindowConfirmed())
282
+ throw Error("Native pane exit is unconfirmed"); }
283
+ async killWindowConfirmed() {
284
+ if (this.closing)
285
+ return this.closing;
286
+ this.closing = this.closeOwned().finally(() => { this.closing = undefined; });
287
+ return this.closing;
288
+ }
289
+ async closeOwned() {
290
+ try {
291
+ const before = this.record.snapshot;
292
+ if (!before)
293
+ return false;
294
+ // A prior exact host exit receipt remains positive proof after disconnect. It is never inferred from a lost link.
295
+ if (this.lastObservation?.state === "exited") {
296
+ const exited = this.accept(this.lastObservation);
297
+ this.record.snapshot = exited;
298
+ delete this.record.pending;
299
+ delete this.record.pendingClose;
300
+ this.save();
301
+ return true;
302
+ }
303
+ if (!this.endpoint.online())
304
+ return false;
305
+ const snapshot = this.accept(await this.endpoint.call({ action: "snapshot", paneId: before.paneId, launchId: before.launchId }));
306
+ if (snapshot.state === "exited") {
307
+ this.record.snapshot = snapshot;
308
+ delete this.record.pending;
309
+ delete this.record.pendingClose;
310
+ this.save();
311
+ return true;
312
+ }
313
+ if (!this.record.pendingClose) {
314
+ // Independent of an uncertain input RPC. Capture runs behind any accepted write on the host's pane queue.
315
+ this.record.pendingClose = { action: "close", ...this.target(snapshot) };
316
+ this.save();
317
+ }
318
+ const result = this.accept(await this.endpoint.call(this.record.pendingClose));
319
+ if (result.state !== "exited")
320
+ return false;
321
+ this.record.snapshot = result;
322
+ delete this.record.pending;
323
+ delete this.record.pendingClose;
324
+ this.save();
325
+ return true;
326
+ }
327
+ catch {
328
+ this.error = "Pane close outcome is unconfirmed; its reservation is retained";
329
+ return false;
330
+ }
331
+ }
332
+ async isWindowAlive() { const status = await this.getPaneStatus(); if (!status)
333
+ throw Error("Native pane observation is unconfirmed"); return status.alive; }
334
+ async setRemainOnExit() { }
335
+ async getPaneStatus() {
336
+ try {
337
+ const before = this.record.snapshot;
338
+ if (!before || !this.endpoint.online())
339
+ return null;
340
+ const snapshot = this.accept(await this.endpoint.call({ action: "snapshot", paneId: before.paneId, launchId: before.launchId }));
341
+ if (!this.endpoint.online())
342
+ return null;
343
+ this.lastObservation = snapshot;
344
+ return snapshot.state === "running" || snapshot.state === "exited" ? { alive: snapshot.state === "running", ...(snapshot.exitCode !== undefined ? { exitCode: snapshot.exitCode } : {}) } : null;
345
+ }
346
+ catch {
347
+ return null;
348
+ }
349
+ }
350
+ async getWindowGeometry() {
351
+ await this.capture({});
352
+ const snapshot = this.record.snapshot;
353
+ return { columns: snapshot.columns, rows: snapshot.rows, mode: "native-pane" };
354
+ }
355
+ async getPaneInputMode() { return "unknown"; }
356
+ sendKeys(text, proof) { return this.mutate((snapshot, expectedSeq) => ({ action: "input", ...this.target(snapshot), expectedSeq, kind: "literal", text }), proof); }
357
+ async sendKeySequence(keys) {
358
+ if (!keys.length || keys.length > 64 || keys.some(key => !Object.hasOwn(PANE_EDIT_KEYS, key)))
359
+ return false;
360
+ return this.mutate((snapshot, expectedSeq) => ({ action: "edit", ...this.target(snapshot), expectedSeq, keys: [...keys] }));
361
+ }
362
+ sendSpecialKey(key, _timeoutMs, proof) { return this.mutate((snapshot, expectedSeq) => ({ action: "key", ...this.target(snapshot), expectedSeq, key }), proof); }
363
+ async deleteBackward(count) {
364
+ if (!Number.isInteger(count) || count <= 0)
365
+ return true;
366
+ if (count > 8192)
367
+ return false;
368
+ return this.mutate((snapshot, expectedSeq) => ({ action: "edit", ...this.target(snapshot), expectedSeq, keys: ["BSpace"], repeat: count }));
369
+ }
370
+ lastInputWasNotSent() { return this.inputNotSent && !this.record.pending; }
371
+ getLastSendSpecialKeyError() { return this.error; }
372
+ getLastPasteError() { return this.error; }
373
+ isLastPasteFailureRecoverable() { return false; }
374
+ async pasteText(text) {
375
+ if (!await this.pasteBuffer(text))
376
+ return false;
377
+ // Same settle margin as TmuxManager: Codex otherwise keeps the Enter inside its input/paste burst.
378
+ // Exactly one Enter; an uncertain submission must never be "fixed" with a second bare Enter.
379
+ await new Promise(resolve => setTimeout(resolve, 500));
380
+ return this.sendSpecialKey("Enter");
381
+ }
382
+ async pasteBuffer(text, opts = {}) {
383
+ if (opts.guard && !opts.guard())
384
+ return false;
385
+ return this.mutate((snapshot, expectedSeq) => {
386
+ if (opts.guard && !opts.guard())
387
+ throw Error("Delivery admission expired");
388
+ return { action: "input", ...this.target(snapshot), expectedSeq, kind: "paste", text };
389
+ }, opts.proof);
390
+ }
391
+ async pipeOutput(logPath) {
392
+ this.closeOutput();
393
+ const snapshot = this.record.snapshot;
394
+ if (!snapshot)
395
+ throw Error("Native output owner is missing");
396
+ const owner = runtimeJobDigest({ machine: this.endpoint.machineId, host: snapshot.hostBootId, pane: snapshot.paneId, launch: snapshot.launchId });
397
+ const feed = new NativePaneOutputLog(logPath, owner, () => this.outputLog === feed && this.endpoint.online() && this.record.snapshot?.hostBootId === snapshot.hostBootId && this.record.snapshot?.launchId === snapshot.launchId, async (offset) => validatePaneOutputBatch(await this.endpoint.call({ action: "output", paneId: snapshot.paneId, launchId: snapshot.launchId, offset }), offset));
398
+ this.outputLog = feed;
399
+ try {
400
+ await feed.start();
401
+ }
402
+ catch (error) {
403
+ this.closeOutput();
404
+ throw error;
405
+ }
406
+ }
407
+ closeOutput() { this.outputLog?.stop(); this.outputLog = undefined; }
408
+ async captureCurrent(options = {}) {
409
+ if (!this.endpoint.online() || !this.record.snapshot)
410
+ throw Error("Pane observation is disconnected");
411
+ const result = await this.endpoint.call({ action: "capture", paneId: this.record.launch.paneId, launchId: this.record.snapshot.launchId, ...options });
412
+ const snapshot = this.accept(result?.snapshot);
413
+ if (!this.endpoint.online() || typeof result.text !== "string")
414
+ throw Error("Invalid or disconnected pane capture");
415
+ // Capturing while an input awaits its response must never erase that input's durable identity.
416
+ if (!this.record.pending)
417
+ this.record.snapshot = snapshot;
418
+ const capture = { snapshot, text: result.text };
419
+ if (!options.history && !options.joined && !options.ansi)
420
+ this.inputCapture = capture;
421
+ return capture;
422
+ }
423
+ async capture(options) {
424
+ return (await this.captureCurrent(options)).text;
425
+ }
426
+ // Match TmuxManager's ordinary capture-pane -p. VT replay serialization is not detector-ready text.
427
+ capturePane() { return this.capture({}); }
428
+ capturePaneWithHistory(lines = 50) { return this.capture({ history: lines }); }
429
+ capturePaneJoined(lines = 0) { return this.capture({ history: lines, joined: true }); }
430
+ getWindowId() { return this.record.snapshot?.paneId ?? ""; }
431
+ /** A fresh authenticated endpoint proved the exact retained exit; retire an obsolete local relay without IO. */
432
+ async recordConfirmedExit(raw, current) {
433
+ await this.serialize(async () => {
434
+ current();
435
+ const snapshot = this.accept(raw);
436
+ if (snapshot.state !== "exited")
437
+ throw Error("Native exit evidence is not positive");
438
+ this.record.snapshot = snapshot;
439
+ this.lastObservation = snapshot;
440
+ this.save();
441
+ });
442
+ }
443
+ observedSnapshot() { return this.lastObservation ? structuredClone(this.lastObservation) : this.ownedSnapshot(); }
444
+ ownedSnapshot() { return this.record.snapshot ? structuredClone(this.record.snapshot) : null; }
445
+ }
446
+ /** Passive output source. A disconnected link never proves idle; a reconnect resets all observation fences. */
447
+ export class RuntimePaneObservation extends EventEmitter {
448
+ endpoint;
449
+ owned;
450
+ idleMs;
451
+ remove;
452
+ resetAt = Date.now();
453
+ last = new Map();
454
+ windows = new Set();
455
+ wasOnline = false;
456
+ sweep;
457
+ constructor(endpoint, owned, idleMs = 300) {
458
+ super();
459
+ this.endpoint = endpoint;
460
+ this.owned = owned;
461
+ this.idleMs = idleMs;
462
+ }
463
+ start() {
464
+ if (this.remove)
465
+ return;
466
+ this.wasOnline = this.endpoint.online();
467
+ this.remove = this.endpoint.subscribe(event => {
468
+ if (event.machineId !== this.endpoint.machineId)
469
+ return;
470
+ if (event.type === "machine") {
471
+ const online = this.endpoint.online();
472
+ if (online !== this.wasOnline) {
473
+ this.wasOnline = online;
474
+ this.resetAt = Date.now();
475
+ this.last.clear();
476
+ }
477
+ return;
478
+ }
479
+ if (event.type !== "pane" || !event.pane || !this.windows.has(event.pane.paneId))
480
+ return;
481
+ const expected = this.owned(event.pane.paneId);
482
+ if (!expected || expected.launchId !== event.pane.launchId || expected.hostBootId !== event.pane.hostBootId || expected.agentId !== event.pane.agentId)
483
+ return;
484
+ const at = Date.now();
485
+ this.last.set(event.pane.paneId, at);
486
+ this.emit(`output:${event.pane.paneId}`, { paneId: event.pane.paneId, windowId: event.pane.paneId, at });
487
+ });
488
+ // The ordinary daemon needs a second quiet capture (and recovery after a transient failed capture), even if
489
+ // the CLI emits no further output. Like the tmux control client's sweep, this requests reads only: it is not
490
+ // output or positive idle evidence, and a disconnected endpoint must remain blind.
491
+ this.sweep = setInterval(() => { if (!this.isObservationBlind())
492
+ this.emit("safety_sweep"); }, 5_000);
493
+ this.sweep.unref?.();
494
+ }
495
+ stop() { if (this.sweep)
496
+ clearInterval(this.sweep); this.sweep = undefined; this.remove?.(); this.remove = undefined; this.last.clear(); this.windows.clear(); }
497
+ async registerWindow(id) { this.windows.add(id); this.resetAt = Date.now(); }
498
+ unregisterWindow(id) { this.windows.delete(id); this.last.delete(id); }
499
+ getObservationResetAt() { return this.resetAt; }
500
+ isObservationBlind() { return !this.remove || !this.endpoint.online(); }
501
+ isIdle(id) { const last = this.last.get(id); return !this.isObservationBlind() && last !== undefined && Date.now() - last >= this.idleMs; }
502
+ getLastOutputAt(id) { return this.isObservationBlind() ? undefined : this.last.get(id); }
503
+ hasOutputSince(id, ts) { return !this.isObservationBlind() && (this.last.get(id) ?? 0) > ts; }
504
+ async wait(predicate, timeout = 10_000, abandoned) {
505
+ const end = performance.now() + timeout;
506
+ while (performance.now() < end) {
507
+ if (abandoned?.() || this.isObservationBlind())
508
+ return false;
509
+ if (predicate())
510
+ return true;
511
+ await new Promise(done => setTimeout(done, 25));
512
+ }
513
+ return false;
514
+ }
515
+ waitForIdle(id, timeout) { return this.wait(() => this.isIdle(id), timeout); }
516
+ waitUntilIdle(id, timeout, abandoned) { return this.wait(() => this.isIdle(id), timeout, abandoned); }
517
+ waitForOutput(id, timeout) { const start = Date.now(); return this.wait(() => this.hasOutputSince(id, start), timeout); }
518
+ }
519
+ /** One configured agent's host facade. Session/PID APIs never cross the machine boundary as local process evidence. */
520
+ export class RuntimePaneHostPort {
521
+ pane;
522
+ endpoint;
523
+ executionHost = "remote";
524
+ constructor(pane, endpoint) {
525
+ this.pane = pane;
526
+ this.endpoint = endpoint;
527
+ }
528
+ bind(_session, id) {
529
+ if (id && id !== this.pane.getWindowId())
530
+ throw Error("Pane selector is outside this agent's launch");
531
+ return this.pane;
532
+ }
533
+ async ensureSession() { if (!this.endpoint.online())
534
+ throw Error("Native pane machine is offline"); }
535
+ async sessionExists() { return this.endpoint.online(); }
536
+ async sessionExistsStrict() { if (!this.endpoint.online())
537
+ throw Error("Native pane machine observation is unknown"); return true; }
538
+ async killSession() { await this.pane.killWindow(); }
539
+ async getServerPid() { return null; }
540
+ async listWindows() {
541
+ const owned = this.pane.ownedSnapshot();
542
+ if (!owned)
543
+ return [];
544
+ const result = await this.endpoint.call({ action: "list" });
545
+ if (!Array.isArray(result?.panes))
546
+ throw Error("Invalid pane list");
547
+ const matched = result.panes.map(validateRuntimePaneSnapshot).find(row => row.paneId === owned.paneId);
548
+ if (!matched)
549
+ throw Error("Owned pane is missing; replacement requires reconciliation");
550
+ if (matched.agentId !== owned.agentId || matched.launchId !== owned.launchId || matched.hostBootId !== owned.hostBootId || matched.state === "unknown")
551
+ throw Error("Owned pane identity is unconfirmed");
552
+ return matched.state === "exited" ? [] : [{ id: matched.paneId, name: matched.instance }];
553
+ }
554
+ listWindowsStrict() { return this.listWindows(); }
555
+ async getPanePid() { return null; }
556
+ async listPanePids() { return []; }
557
+ }
558
+ //# sourceMappingURL=runtime-pane-port.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-port.js","sourceRoot":"","sources":["../src/runtime-pane-port.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface PaneHostDescriptor {
2
+ version: 1;
3
+ scope: string;
4
+ hostBootId: string;
5
+ pid: number;
6
+ port: number;
7
+ token: string;
8
+ systemBootId?: string;
9
+ }
10
+ export declare function protectPaneDirectory(directory: string): Promise<void>;
11
+ export declare function readPaneHostDescriptor(directory: string, scope: string): PaneHostDescriptor | null;
12
+ export declare function savePaneHostDescriptor(directory: string, value: PaneHostDescriptor): void;
13
+ /** Called under the host's profile lock, after its listener has closed. Never remove another boot's discovery. */
14
+ export declare function removePaneHostDescriptor(directory: string, value: PaneHostDescriptor): void;