@songsid/agend 2.3.4-beta.5 → 2.3.5-alpha.2

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 (386) 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/backend/claude-code.d.ts +18 -12
  8. package/dist/backend/claude-code.js +225 -136
  9. package/dist/backend/claude-code.js.map +1 -1
  10. package/dist/backend/codex-package.d.ts +5 -2
  11. package/dist/backend/codex-package.js +1 -5
  12. package/dist/backend/codex-package.js.map +1 -1
  13. package/dist/backend/codex.d.ts +136 -113
  14. package/dist/backend/codex.js +1271 -1219
  15. package/dist/backend/codex.js.map +1 -1
  16. package/dist/backend/grok-model-cache.d.ts +7 -0
  17. package/dist/backend/grok-model-cache.js +65 -0
  18. package/dist/backend/grok-model-cache.js.map +1 -0
  19. package/dist/backend/grok.d.ts +2 -0
  20. package/dist/backend/grok.js +22 -0
  21. package/dist/backend/grok.js.map +1 -1
  22. package/dist/backend/native-pane.d.ts +9 -0
  23. package/dist/backend/native-pane.js +59 -0
  24. package/dist/backend/native-pane.js.map +1 -0
  25. package/dist/backend/types.d.ts +7 -0
  26. package/dist/backend/types.js.map +1 -1
  27. package/dist/channel/ipc-bridge.d.ts +2 -0
  28. package/dist/channel/mcp-tools.js +1 -1
  29. package/dist/channel/mcp-tools.js.map +1 -1
  30. package/dist/cli.js +6 -2
  31. package/dist/cli.js.map +1 -1
  32. package/dist/config-validator.js +59 -0
  33. package/dist/config-validator.js.map +1 -1
  34. package/dist/config.js +16 -0
  35. package/dist/config.js.map +1 -1
  36. package/dist/daemon.d.ts +62 -5
  37. package/dist/daemon.js +760 -240
  38. package/dist/daemon.js.map +1 -1
  39. package/dist/delivery-consumed-watch.d.ts +15 -3
  40. package/dist/delivery-consumed-watch.js +23 -1
  41. package/dist/delivery-consumed-watch.js.map +1 -1
  42. package/dist/delivery-outbox.d.ts +5 -0
  43. package/dist/delivery-outbox.js +32 -4
  44. package/dist/delivery-outbox.js.map +1 -1
  45. package/dist/delivery-reconciliation.d.ts +2 -35
  46. package/dist/delivery-reconciliation.js +2 -156
  47. package/dist/delivery-reconciliation.js.map +1 -1
  48. package/dist/fleet-context.d.ts +2 -2
  49. package/dist/fleet-level-config.d.ts +1 -1
  50. package/dist/fleet-level-config.js +2 -0
  51. package/dist/fleet-level-config.js.map +1 -1
  52. package/dist/fleet-manager.d.ts +125 -2
  53. package/dist/fleet-manager.js +1157 -27
  54. package/dist/fleet-manager.js.map +1 -1
  55. package/dist/fleet-windows-runtime.d.ts +92 -0
  56. package/dist/fleet-windows-runtime.js +373 -0
  57. package/dist/fleet-windows-runtime.js.map +1 -0
  58. package/dist/instance-config-impact.js +4 -0
  59. package/dist/instance-config-impact.js.map +1 -1
  60. package/dist/instance-lifecycle.d.ts +20 -3
  61. package/dist/instance-lifecycle.js +358 -156
  62. package/dist/instance-lifecycle.js.map +1 -1
  63. package/dist/local-pane-endpoint.d.ts +46 -0
  64. package/dist/local-pane-endpoint.js +189 -0
  65. package/dist/local-pane-endpoint.js.map +1 -0
  66. package/dist/local-pane-launcher.d.ts +2 -0
  67. package/dist/local-pane-launcher.js +38 -0
  68. package/dist/local-pane-launcher.js.map +1 -0
  69. package/dist/local-pane-stage.ps1 +101 -0
  70. package/dist/locale.js +34 -0
  71. package/dist/locale.js.map +1 -1
  72. package/dist/model-catalog-defaults.d.ts +14 -0
  73. package/dist/model-catalog-defaults.js +20 -0
  74. package/dist/model-catalog-defaults.js.map +1 -0
  75. package/dist/native-agent-admission.d.ts +7 -0
  76. package/dist/native-agent-admission.js +26 -0
  77. package/dist/native-agent-admission.js.map +1 -0
  78. package/dist/native-daemon-client.d.ts +13 -0
  79. package/dist/native-daemon-client.js +28 -0
  80. package/dist/native-daemon-client.js.map +1 -0
  81. package/dist/native-instance-api.d.ts +14 -0
  82. package/dist/native-instance-api.js +205 -0
  83. package/dist/native-instance-api.js.map +1 -0
  84. package/dist/native-instance-input.d.ts +84 -0
  85. package/dist/native-instance-input.js +54 -0
  86. package/dist/native-instance-input.js.map +1 -0
  87. package/dist/native-instance-registry.d.ts +32 -0
  88. package/dist/native-instance-registry.js +105 -0
  89. package/dist/native-instance-registry.js.map +1 -0
  90. package/dist/native-mcp.d.ts +40 -0
  91. package/dist/native-mcp.js +278 -0
  92. package/dist/native-mcp.js.map +1 -0
  93. package/dist/native-model-catalog.d.ts +5 -0
  94. package/dist/native-model-catalog.js +76 -0
  95. package/dist/native-model-catalog.js.map +1 -0
  96. package/dist/native-pane-crash-budget.d.ts +20 -0
  97. package/dist/native-pane-crash-budget.js +60 -0
  98. package/dist/native-pane-crash-budget.js.map +1 -0
  99. package/dist/native-pane-create.d.ts +26 -0
  100. package/dist/native-pane-create.js +53 -0
  101. package/dist/native-pane-create.js.map +1 -0
  102. package/dist/native-pane-lifecycle.d.ts +65 -0
  103. package/dist/native-pane-lifecycle.js +227 -0
  104. package/dist/native-pane-lifecycle.js.map +1 -0
  105. package/dist/native-pane-manager.d.ts +58 -0
  106. package/dist/native-pane-manager.js +563 -0
  107. package/dist/native-pane-manager.js.map +1 -0
  108. package/dist/native-pane-output-log.d.ts +15 -0
  109. package/dist/native-pane-output-log.js +108 -0
  110. package/dist/native-pane-output-log.js.map +1 -0
  111. package/dist/native-pane-reconciliation.d.ts +4 -0
  112. package/dist/native-pane-reconciliation.js +40 -0
  113. package/dist/native-pane-reconciliation.js.map +1 -0
  114. package/dist/native-pane-recovery.d.ts +12 -0
  115. package/dist/native-pane-recovery.js +10 -0
  116. package/dist/native-pane-recovery.js.map +1 -0
  117. package/dist/native-pane-tools.d.ts +2 -0
  118. package/dist/native-pane-tools.js +14 -0
  119. package/dist/native-pane-tools.js.map +1 -0
  120. package/dist/needs-you-hub.d.ts +2 -0
  121. package/dist/needs-you-hub.js +1 -0
  122. package/dist/needs-you-hub.js.map +1 -1
  123. package/dist/needs-you.d.ts +12 -1
  124. package/dist/needs-you.js +8 -1
  125. package/dist/needs-you.js.map +1 -1
  126. package/dist/outbound-handlers.d.ts +16 -2
  127. package/dist/outbound-handlers.js +67 -3
  128. package/dist/outbound-handlers.js.map +1 -1
  129. package/dist/outbound-schemas.d.ts +38 -0
  130. package/dist/outbound-schemas.js +12 -0
  131. package/dist/outbound-schemas.js.map +1 -1
  132. package/dist/pane-port.d.ts +107 -0
  133. package/dist/pane-port.js +2 -0
  134. package/dist/pane-port.js.map +1 -0
  135. package/dist/runtime-api.d.ts +8 -0
  136. package/dist/runtime-api.js +96 -0
  137. package/dist/runtime-api.js.map +1 -0
  138. package/dist/runtime-assets/@xterm/addon-serialize/LICENSE +21 -0
  139. package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.js +2 -0
  140. package/dist/runtime-assets/@xterm/addon-serialize/lib/addon-serialize.mjs +19 -0
  141. package/dist/runtime-assets/@xterm/addon-serialize/package.json +29 -0
  142. package/dist/runtime-assets/@xterm/headless/LICENSE +21 -0
  143. package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.js +2 -0
  144. package/dist/runtime-assets/@xterm/headless/lib-headless/xterm-headless.mjs +46 -0
  145. package/dist/runtime-assets/@xterm/headless/package.json +29 -0
  146. package/dist/runtime-assets/node-pty/CONPTY-LICENSE +21 -0
  147. package/dist/runtime-assets/node-pty/CONPTY-NOTICE.md +503 -0
  148. package/dist/runtime-assets/node-pty/LICENSE +69 -0
  149. package/dist/runtime-assets/node-pty/lib/conpty_console_list_agent.js +16 -0
  150. package/dist/runtime-assets/node-pty/lib/eventEmitter2.js +47 -0
  151. package/dist/runtime-assets/node-pty/lib/index.js +52 -0
  152. package/dist/runtime-assets/node-pty/lib/interfaces.js +7 -0
  153. package/dist/runtime-assets/node-pty/lib/shared/conout.js +11 -0
  154. package/dist/runtime-assets/node-pty/lib/terminal.js +190 -0
  155. package/dist/runtime-assets/node-pty/lib/types.js +7 -0
  156. package/dist/runtime-assets/node-pty/lib/unixTerminal.js +346 -0
  157. package/dist/runtime-assets/node-pty/lib/utils.js +39 -0
  158. package/dist/runtime-assets/node-pty/lib/windowsConoutConnection.js +125 -0
  159. package/dist/runtime-assets/node-pty/lib/windowsPtyAgent.js +320 -0
  160. package/dist/runtime-assets/node-pty/lib/windowsTerminal.js +199 -0
  161. package/dist/runtime-assets/node-pty/lib/worker/conoutSocketWorker.js +22 -0
  162. package/dist/runtime-assets/node-pty/package.json +64 -0
  163. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/OpenConsole.exe +0 -0
  164. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty/conpty.dll +0 -0
  165. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty.node +0 -0
  166. package/dist/runtime-assets/node-pty/prebuilds/win32-arm64/conpty_console_list.node +0 -0
  167. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/OpenConsole.exe +0 -0
  168. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty/conpty.dll +0 -0
  169. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty.node +0 -0
  170. package/dist/runtime-assets/node-pty/prebuilds/win32-x64/conpty_console_list.node +0 -0
  171. package/dist/runtime-bundle.d.ts +17 -0
  172. package/dist/runtime-bundle.js +147 -0
  173. package/dist/runtime-bundle.js.map +1 -0
  174. package/dist/runtime-cli.d.ts +2 -0
  175. package/dist/runtime-cli.js +117 -0
  176. package/dist/runtime-cli.js.map +1 -0
  177. package/dist/runtime-client-store.d.ts +49 -0
  178. package/dist/runtime-client-store.js +292 -0
  179. package/dist/runtime-client-store.js.map +1 -0
  180. package/dist/runtime-client.d.ts +100 -0
  181. package/dist/runtime-client.js +700 -0
  182. package/dist/runtime-client.js.map +1 -0
  183. package/dist/runtime-coordinator.d.ts +82 -0
  184. package/dist/runtime-coordinator.js +864 -0
  185. package/dist/runtime-coordinator.js.map +1 -0
  186. package/dist/runtime-pane-assets.d.ts +17 -0
  187. package/dist/runtime-pane-assets.js +23 -0
  188. package/dist/runtime-pane-assets.js.map +1 -0
  189. package/dist/runtime-pane-boot.d.ts +2 -0
  190. package/dist/runtime-pane-boot.js +24 -0
  191. package/dist/runtime-pane-boot.js.map +1 -0
  192. package/dist/runtime-pane-codex-index.d.ts +1 -0
  193. package/dist/runtime-pane-codex-index.js +47 -0
  194. package/dist/runtime-pane-codex-index.js.map +1 -0
  195. package/dist/runtime-pane-config.d.ts +16 -0
  196. package/dist/runtime-pane-config.js +54 -0
  197. package/dist/runtime-pane-config.js.map +1 -0
  198. package/dist/runtime-pane-host.d.ts +43 -0
  199. package/dist/runtime-pane-host.js +403 -0
  200. package/dist/runtime-pane-host.js.map +1 -0
  201. package/dist/runtime-pane-job-owner.d.ts +1 -0
  202. package/dist/runtime-pane-job-owner.js +29 -0
  203. package/dist/runtime-pane-job-owner.js.map +1 -0
  204. package/dist/runtime-pane-job.ps1 +116 -0
  205. package/dist/runtime-pane-link.d.ts +40 -0
  206. package/dist/runtime-pane-link.js +246 -0
  207. package/dist/runtime-pane-link.js.map +1 -0
  208. package/dist/runtime-pane-mcp-protocol.d.ts +32 -0
  209. package/dist/runtime-pane-mcp-protocol.js +39 -0
  210. package/dist/runtime-pane-mcp-protocol.js.map +1 -0
  211. package/dist/runtime-pane-mcp-relay.d.ts +17 -0
  212. package/dist/runtime-pane-mcp-relay.js +70 -0
  213. package/dist/runtime-pane-mcp-relay.js.map +1 -0
  214. package/dist/runtime-pane-mcp.d.ts +43 -0
  215. package/dist/runtime-pane-mcp.js +137 -0
  216. package/dist/runtime-pane-mcp.js.map +1 -0
  217. package/dist/runtime-pane-native.d.ts +45 -0
  218. package/dist/runtime-pane-native.js +65 -0
  219. package/dist/runtime-pane-native.js.map +1 -0
  220. package/dist/runtime-pane-output.d.ts +19 -0
  221. package/dist/runtime-pane-output.js +53 -0
  222. package/dist/runtime-pane-output.js.map +1 -0
  223. package/dist/runtime-pane-port.d.ts +134 -0
  224. package/dist/runtime-pane-port.js +537 -0
  225. package/dist/runtime-pane-port.js.map +1 -0
  226. package/dist/runtime-pane-private.d.ts +14 -0
  227. package/dist/runtime-pane-private.js +51 -0
  228. package/dist/runtime-pane-private.js.map +1 -0
  229. package/dist/runtime-pane-private.ps1 +14 -0
  230. package/dist/runtime-pane-process.d.ts +4 -0
  231. package/dist/runtime-pane-process.js +108 -0
  232. package/dist/runtime-pane-process.js.map +1 -0
  233. package/dist/runtime-pane-protocol.d.ts +169 -0
  234. package/dist/runtime-pane-protocol.js +189 -0
  235. package/dist/runtime-pane-protocol.js.map +1 -0
  236. package/dist/runtime-pane-screen.d.ts +19 -0
  237. package/dist/runtime-pane-screen.js +76 -0
  238. package/dist/runtime-pane-screen.js.map +1 -0
  239. package/dist/runtime-pane-service.d.ts +11 -0
  240. package/dist/runtime-pane-service.js +221 -0
  241. package/dist/runtime-pane-service.js.map +1 -0
  242. package/dist/runtime-pane-stdio-protocol.d.ts +54 -0
  243. package/dist/runtime-pane-stdio-protocol.js +94 -0
  244. package/dist/runtime-pane-stdio-protocol.js.map +1 -0
  245. package/dist/runtime-pane-stdio.d.ts +3 -0
  246. package/dist/runtime-pane-stdio.js +123 -0
  247. package/dist/runtime-pane-stdio.js.map +1 -0
  248. package/dist/runtime-pane-store.d.ts +33 -0
  249. package/dist/runtime-pane-store.js +164 -0
  250. package/dist/runtime-pane-store.js.map +1 -0
  251. package/dist/runtime-pane-transcript-protocol.d.ts +43 -0
  252. package/dist/runtime-pane-transcript-protocol.js +58 -0
  253. package/dist/runtime-pane-transcript-protocol.js.map +1 -0
  254. package/dist/runtime-pane-transcript.d.ts +45 -0
  255. package/dist/runtime-pane-transcript.js +605 -0
  256. package/dist/runtime-pane-transcript.js.map +1 -0
  257. package/dist/runtime-pane-worker.d.ts +1 -0
  258. package/dist/runtime-pane-worker.js +154 -0
  259. package/dist/runtime-pane-worker.js.map +1 -0
  260. package/dist/runtime-protocol.d.ts +149 -0
  261. package/dist/runtime-protocol.js +19 -0
  262. package/dist/runtime-protocol.js.map +1 -0
  263. package/dist/runtime-switches.d.ts +79 -0
  264. package/dist/runtime-switches.js +90 -0
  265. package/dist/runtime-switches.js.map +1 -0
  266. package/dist/runtime-transcript-delta-reader.d.ts +23 -0
  267. package/dist/runtime-transcript-delta-reader.js +74 -0
  268. package/dist/runtime-transcript-delta-reader.js.map +1 -0
  269. package/dist/runtime-transcript-source.d.ts +36 -0
  270. package/dist/runtime-transcript-source.js +189 -0
  271. package/dist/runtime-transcript-source.js.map +1 -0
  272. package/dist/runtime-windows-bridge.d.ts +41 -0
  273. package/dist/runtime-windows-bridge.js +157 -0
  274. package/dist/runtime-windows-bridge.js.map +1 -0
  275. package/dist/settings-api.js +58 -0
  276. package/dist/settings-api.js.map +1 -1
  277. package/dist/settings-change.js +28 -0
  278. package/dist/settings-change.js.map +1 -1
  279. package/dist/settings-confirmation.d.ts +15 -1
  280. package/dist/settings-confirmation.js +46 -9
  281. package/dist/settings-confirmation.js.map +1 -1
  282. package/dist/settings-effect.js +23 -1
  283. package/dist/settings-effect.js.map +1 -1
  284. package/dist/settings-http-confirmation.js +11 -2
  285. package/dist/settings-http-confirmation.js.map +1 -1
  286. package/dist/tmux-control.d.ts +2 -1
  287. package/dist/tmux-control.js.map +1 -1
  288. package/dist/tmux-manager.d.ts +2 -1
  289. package/dist/tmux-manager.js.map +1 -1
  290. package/dist/tmux-pane-host.d.ts +26 -0
  291. package/dist/tmux-pane-host.js +25 -0
  292. package/dist/tmux-pane-host.js.map +1 -0
  293. package/dist/topic-commands.js +3 -0
  294. package/dist/topic-commands.js.map +1 -1
  295. package/dist/transcript-delta-reader.d.ts +1 -1
  296. package/dist/transcript-delta-reader.js +1 -1
  297. package/dist/transcript-delta-reader.js.map +1 -1
  298. package/dist/transcript-monitor.d.ts +3 -0
  299. package/dist/transcript-monitor.js +22 -46
  300. package/dist/transcript-monitor.js.map +1 -1
  301. package/dist/transcript-needles.d.ts +35 -0
  302. package/dist/transcript-needles.js +158 -0
  303. package/dist/transcript-needles.js.map +1 -0
  304. package/dist/transcript-records.d.ts +21 -0
  305. package/dist/transcript-records.js +140 -0
  306. package/dist/transcript-records.js.map +1 -0
  307. package/dist/transcript-sources.d.ts +5 -0
  308. package/dist/transcript-sources.js +8 -79
  309. package/dist/transcript-sources.js.map +1 -1
  310. package/dist/types.d.ts +21 -0
  311. package/dist/ui/agent-proposals.js +90 -0
  312. package/dist/ui/agent-runtime.js +106 -0
  313. package/dist/ui/chat-store.js +13 -2
  314. package/dist/ui/chat-strings.js +48 -0
  315. package/dist/ui/cli-picker.js +42 -0
  316. package/dist/ui/native-instance-settings.js +47 -0
  317. package/dist/ui/native-pane-recovery.js +45 -0
  318. package/dist/ui/panel-chat.js +61 -32
  319. package/dist/ui/panel-details.js +2 -1
  320. package/dist/ui/panel-fleet.js +99 -18
  321. package/dist/ui/panel-needs.js +152 -3
  322. package/dist/ui/panel-runtimes.js +231 -0
  323. package/dist/ui/panel-settings.js +14 -8
  324. package/dist/ui/panel-windows-agent.js +86 -0
  325. package/dist/ui/panel-windows-cli.js +143 -0
  326. package/dist/ui/provider-marks.js +83 -0
  327. package/dist/ui/runtime-catalog.js +55 -0
  328. package/dist/ui/settings-catalog.js +37 -10
  329. package/dist/ui/settings-confirm.js +3 -1
  330. package/dist/ui/settings-dialogs.js +14 -5
  331. package/dist/ui/settings-registry.js +5 -0
  332. package/dist/ui/settings-strings.js +14 -0
  333. package/dist/ui/shared/app-i18n.js +2 -2
  334. package/dist/ui/shared/app-route.js +6 -2
  335. package/dist/ui/shared/app-shell.js +3 -2
  336. package/dist/ui/shared/app-store.js +1 -0
  337. package/dist/ui/shared/app-stream.js +3 -1
  338. package/dist/ui/shared/app.css +301 -0
  339. package/dist/ui/shared/app.js +4 -0
  340. package/dist/ui/shared/header-tools.js +6 -4
  341. package/dist/ui/shared/instance-nav.js +20 -4
  342. package/dist/ui/shared/instance-switch.js +4 -3
  343. package/dist/ui/shared/ui-menu.js +28 -8
  344. package/dist/ui/shared/view-strings.js +6 -0
  345. package/dist/ui/windows-agents-nav.js +2 -0
  346. package/dist/ui/windows-cli-catalog.js +79 -0
  347. package/dist/update-check.d.ts +8 -2
  348. package/dist/update-check.js +5 -2
  349. package/dist/update-check.js.map +1 -1
  350. package/dist/web-api.d.ts +25 -0
  351. package/dist/web-api.js +171 -6
  352. package/dist/web-api.js.map +1 -1
  353. package/dist/web-chat-history.d.ts +19 -2
  354. package/dist/web-chat-history.js +72 -3
  355. package/dist/web-chat-history.js.map +1 -1
  356. package/dist/web-shell-routes.d.ts +4 -1
  357. package/dist/web-shell-routes.js +7 -2
  358. package/dist/web-shell-routes.js.map +1 -1
  359. package/dist/windows-agents.d.ts +112 -0
  360. package/dist/windows-agents.js +463 -0
  361. package/dist/windows-agents.js.map +1 -0
  362. package/dist/windows-cli-api.d.ts +23 -0
  363. package/dist/windows-cli-api.js +158 -0
  364. package/dist/windows-cli-api.js.map +1 -0
  365. package/dist/windows-cli-providers.d.ts +115 -0
  366. package/dist/windows-cli-providers.js +429 -0
  367. package/dist/windows-cli-providers.js.map +1 -0
  368. package/dist/windows-cli-worker.d.ts +58 -0
  369. package/dist/windows-cli-worker.js +479 -0
  370. package/dist/windows-cli-worker.js.map +1 -0
  371. package/dist/windows-cli.d.ts +115 -0
  372. package/dist/windows-cli.js +402 -0
  373. package/dist/windows-cli.js.map +1 -0
  374. package/dist/windows-native-mcp.d.ts +19 -0
  375. package/dist/windows-native-mcp.js +143 -0
  376. package/dist/windows-native-mcp.js.map +1 -0
  377. package/dist/windows-pane-mcp.d.ts +26 -0
  378. package/dist/windows-pane-mcp.js +187 -0
  379. package/dist/windows-pane-mcp.js.map +1 -0
  380. package/package.json +9 -3
  381. package/templates/runtime-assets/conpty-LICENSE +21 -0
  382. package/templates/runtime-assets/conpty-NOTICE.md +503 -0
  383. package/templates/runtime-assets/local-pane-stage.ps1 +101 -0
  384. package/templates/runtime-assets/runtime-pane-job.ps1 +116 -0
  385. package/templates/runtime-assets/runtime-pane-private.ps1 +14 -0
  386. package/templates/runtime-assets/xterm-LICENSE +21 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-stdio.js","sourceRoot":"","sources":["../src/runtime-pane-stdio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type RuntimePaneLaunch, type RuntimePaneSnapshot } from "./runtime-pane-protocol.js";
2
+ import type { NativePaneOwner } from "./runtime-pane-native.js";
3
+ export interface RuntimePaneRecord {
4
+ launch: RuntimePaneLaunch;
5
+ snapshot: RuntimePaneSnapshot;
6
+ openDigest: string;
7
+ openOperationId: string;
8
+ bootId: string;
9
+ /** OS incarnation observed before launch, distinct from a host process boot. */
10
+ systemBootId?: string;
11
+ /** Local process bookkeeping; never returned as a coordinator PID. */
12
+ pid?: number;
13
+ lastCommand?: {
14
+ id: string;
15
+ digest: string;
16
+ state: "prepared" | "applied";
17
+ };
18
+ }
19
+ export declare function writeNativePaneExit(owner: NativePaneOwner, launch: RuntimePaneLaunch, pid: number, code: number): void;
20
+ export declare class RuntimePaneStore {
21
+ readonly directory: string;
22
+ private readonly file;
23
+ private ledger;
24
+ constructor(directory: string);
25
+ list(): RuntimePaneRecord[];
26
+ get(id: string): RuntimePaneRecord | undefined;
27
+ put(record: RuntimePaneRecord): void;
28
+ /** Called under the profile lock. A lost runner never replays an open or assumes a PID is gone. */
29
+ recoverInterrupted(systemBootId?: string): void;
30
+ /** Only an exact helper receipt of CLI exit releases a lost runner's reservation. No PID lookup or signal. */
31
+ reconcileExit(id: string): void;
32
+ static digest(value: unknown): string;
33
+ }
@@ -0,0 +1,164 @@
1
+ /** A separate per-pane ledger: an uncertain pane consumes only its own machine slot. No input text is stored. */
2
+ import { lstatSync, mkdirSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { atomicWriteFileSync } from "./atomic-write.js";
5
+ import { runtimeJobDigest } from "./runtime-client-store.js";
6
+ import { validateRuntimePaneLaunch, validateRuntimePaneSnapshot } from "./runtime-pane-protocol.js";
7
+ const MAX_BYTES = 8 * 1024 * 1024;
8
+ const MAX_PANES = 256;
9
+ const MAX_RETIRED = 65_536;
10
+ function writePaneState(path, text) {
11
+ for (let attempt = 0;; attempt++) {
12
+ try {
13
+ atomicWriteFileSync(path, text, { mode: 0o600 });
14
+ return;
15
+ }
16
+ catch (error) {
17
+ if (process.platform !== "win32" || attempt >= 4 || !["EPERM", "EACCES", "EBUSY"].includes(error.code ?? ""))
18
+ throw error;
19
+ // Windows scanners briefly hold replacement targets. Same bound as RuntimeClientStore, no dropped writes.
20
+ Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, 10 * (attempt + 1));
21
+ }
22
+ }
23
+ }
24
+ export function writeNativePaneExit(owner, launch, pid, code) {
25
+ const directory = join(owner.directory, "exits");
26
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
27
+ if (!lstatSync(directory).isDirectory() || lstatSync(directory).isSymbolicLink())
28
+ throw Error("Unsafe pane exit directory");
29
+ writePaneState(join(directory, `${owner.launchId}.json`), JSON.stringify({ version: 1, launchId: owner.launchId,
30
+ paneId: launch.paneId, agentId: launch.agentId, pid, code }));
31
+ }
32
+ export class RuntimePaneStore {
33
+ directory;
34
+ file;
35
+ ledger;
36
+ constructor(directory) {
37
+ this.directory = directory;
38
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
39
+ const entry = lstatSync(directory);
40
+ if (!entry.isDirectory() || entry.isSymbolicLink())
41
+ throw Error("Pane state must be a private real directory");
42
+ this.file = join(directory, "panes.json");
43
+ this.ledger = { version: 1, panes: {} };
44
+ try {
45
+ const stat = lstatSync(this.file);
46
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > MAX_BYTES)
47
+ throw Error("Invalid pane ledger file");
48
+ const raw = JSON.parse(readFileSync(this.file, "utf8"));
49
+ if (raw?.version !== 1 || !raw.panes || typeof raw.panes !== "object" || Array.isArray(raw.panes) || Object.keys(raw.panes).length > MAX_PANES)
50
+ throw Error("Invalid pane ledger");
51
+ if (raw.retired !== undefined && (!raw.retired || typeof raw.retired !== "object" || Array.isArray(raw.retired)
52
+ || Object.keys(raw.retired).length > MAX_RETIRED || Object.entries(raw.retired).some(([id, digest]) => !/^[a-f0-9-]{36}$/i.test(id) || typeof digest !== "string" || !/^[a-f0-9]{64}$/.test(digest))))
53
+ throw Error("Invalid pane replay ledger");
54
+ for (const [id, row] of Object.entries(raw.panes)) {
55
+ const launch = validateRuntimePaneLaunch(row?.launch);
56
+ validateRuntimePaneSnapshot(row.snapshot);
57
+ if (launch.launchId !== undefined && launch.launchId !== row.snapshot.launchId || id !== launch.paneId || row.snapshot?.paneId !== id || row.snapshot.agentId !== launch.agentId
58
+ || row.snapshot.sessionId !== undefined && (launch.sessionId !== undefined && row.snapshot.sessionId !== launch.sessionId
59
+ || launch.cli === "claude-code" && row.snapshot.sessionId !== (launch.sessionId ?? row.snapshot.launchId))
60
+ || row.snapshot.instance !== launch.instance || !/^[a-f0-9-]{36}$/i.test(row.snapshot.launchId)
61
+ || !["starting", "running", "exited", "unknown"].includes(row.snapshot.state)
62
+ || !Number.isSafeInteger(row.snapshot.commandSequence) || row.snapshot.commandSequence < 0
63
+ || !/^[a-f0-9]{64}$/.test(row.openDigest) || !/^[a-f0-9-]{36}$/i.test(row.openOperationId)
64
+ || row.systemBootId !== undefined && (typeof row.systemBootId !== "string" || !/^[a-f0-9]{64}$/.test(row.systemBootId))
65
+ || typeof row.bootId !== "string" || (row.pid !== undefined && (!Number.isSafeInteger(row.pid) || row.pid < 1))
66
+ || row.snapshot.noLaunch && (row.pid !== undefined || row.lastCommand !== undefined)
67
+ || (row.lastCommand && (!/^[a-f0-9-]{36}$/i.test(row.lastCommand.id) || !/^[a-f0-9]{64}$/.test(row.lastCommand.digest)
68
+ || !["prepared", "applied"].includes(row.lastCommand.state))))
69
+ throw Error("Invalid pane record");
70
+ }
71
+ this.ledger = raw;
72
+ }
73
+ catch (error) {
74
+ if (error.code !== "ENOENT")
75
+ throw error;
76
+ }
77
+ }
78
+ list() { return structuredClone(Object.values(this.ledger.panes)); }
79
+ get(id) { return structuredClone(this.ledger.panes[id]); }
80
+ put(record) {
81
+ if (this.ledger.retired?.[record.launch.paneId])
82
+ throw Error("Pane id was retired; its open must never be replayed");
83
+ const before = structuredClone(this.ledger);
84
+ const previous = this.ledger.panes[record.launch.paneId];
85
+ if (!previous && Object.keys(this.ledger.panes).length >= MAX_PANES) {
86
+ const oldest = Object.values(this.ledger.panes).find(row => row.snapshot.state === "exited");
87
+ if (!oldest || Object.keys(this.ledger.retired ?? {}).length >= MAX_RETIRED)
88
+ throw Error("Pane replay ledger capacity reached");
89
+ (this.ledger.retired ??= {})[oldest.launch.paneId] = oldest.openDigest;
90
+ delete this.ledger.panes[oldest.launch.paneId];
91
+ }
92
+ this.ledger.panes[record.launch.paneId] = structuredClone(record);
93
+ try {
94
+ const text = JSON.stringify(this.ledger);
95
+ if (Buffer.byteLength(text) > MAX_BYTES)
96
+ throw Error("Pane ledger size limit reached");
97
+ writePaneState(this.file, text);
98
+ }
99
+ catch (error) {
100
+ this.ledger = before;
101
+ throw error;
102
+ }
103
+ }
104
+ /** Called under the profile lock. A lost runner never replays an open or assumes a PID is gone. */
105
+ recoverInterrupted(systemBootId) {
106
+ if (systemBootId !== undefined && (typeof systemBootId !== "string" || !/^[a-f0-9]{64}$/.test(systemBootId)))
107
+ throw Error("Invalid current Windows boot proof");
108
+ for (const record of this.list())
109
+ if (record.snapshot.state !== "exited") {
110
+ if (systemBootId && record.systemBootId && systemBootId !== record.systemBootId) {
111
+ record.snapshot.state = "exited";
112
+ record.snapshot.exitProof = "system-reboot";
113
+ delete record.snapshot.exitCode;
114
+ this.put(record);
115
+ continue;
116
+ }
117
+ if (record.snapshot.state !== "unknown") {
118
+ record.snapshot.state = "unknown";
119
+ this.put(record);
120
+ }
121
+ this.reconcileExit(record.launch.paneId);
122
+ }
123
+ }
124
+ /** Only an exact helper receipt of CLI exit releases a lost runner's reservation. No PID lookup or signal. */
125
+ reconcileExit(id) {
126
+ const record = this.get(id);
127
+ if (!record || record.snapshot.state === "exited")
128
+ return;
129
+ const path = join(this.directory, "exits", `${record.snapshot.launchId}.json`);
130
+ try {
131
+ const stat = lstatSync(path);
132
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 4096)
133
+ throw Error("Unsafe pane exit receipt");
134
+ const exit = JSON.parse(readFileSync(path, "utf8"));
135
+ if (exit?.version !== 1 || exit.launchId !== record.snapshot.launchId || exit.paneId !== record.launch.paneId || exit.agentId !== record.launch.agentId
136
+ || !Number.isSafeInteger(exit.pid) || exit.pid <= 0 || record.pid !== undefined && record.pid !== exit.pid || !Number.isSafeInteger(exit.code) || exit.code < 0)
137
+ throw Error("Pane exit receipt identity differs");
138
+ record.snapshot.state = "exited";
139
+ record.snapshot.exitCode = exit.code;
140
+ this.put(record);
141
+ }
142
+ catch (error) {
143
+ if (error.code !== "ENOENT")
144
+ throw error;
145
+ const diagnostic = path.replace(/\.json$/, ".error.json");
146
+ try {
147
+ const stat = lstatSync(diagnostic);
148
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > 4096)
149
+ throw Error("Unsafe pane exit diagnostic");
150
+ const value = JSON.parse(readFileSync(diagnostic, "utf8"));
151
+ if (value.launchId !== record.snapshot.launchId || value.paneId !== record.launch.paneId || value.agentId !== record.launch.agentId
152
+ || !["create", "start-helper", "assign", "running", "helper-exit", "tree-exit", "receipt"].includes(value.stage) || !Number.isSafeInteger(value.code))
153
+ throw Error("Invalid pane exit diagnostic");
154
+ throw Error(`Owned Windows pane exit proof failed at ${value.stage} (win32 ${value.code}); the reservation is held`);
155
+ }
156
+ catch (diagnosticError) {
157
+ if (diagnosticError.code !== "ENOENT")
158
+ throw diagnosticError;
159
+ }
160
+ }
161
+ }
162
+ static digest(value) { return runtimeJobDigest(value); }
163
+ }
164
+ //# sourceMappingURL=runtime-pane-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-store.js","sourceRoot":"","sources":["../src/runtime-pane-store.ts"],"names":[],"mappings":"AAAA,iHAAiH;AACjH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAoD,MAAM,4BAA4B,CAAC;AAgBtJ,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAClC,MAAM,SAAS,GAAG,GAAG,CAAC;AACtB,MAAM,WAAW,GAAG,MAAM,CAAC;AAC3B,SAAS,cAAc,CAAC,IAAY,EAAE,IAAY;IAChD,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACjE,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAE,KAA+B,CAAC,IAAI,IAAI,EAAE,CAAC;gBAAE,MAAM,KAAK,CAAC;YACrJ,0GAA0G;YAC1G,OAAO,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;AACH,CAAC;AACD,MAAM,UAAU,mBAAmB,CAAC,KAAsB,EAAE,MAAyB,EAAE,GAAW,EAAE,IAAY;IAC9G,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACjD,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE;QAAE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAC5H,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,KAAK,CAAC,QAAQ,OAAO,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ;QAC7G,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AAClE,CAAC;AACD,MAAM,OAAO,gBAAgB;IAGN,SAAS;IAFb,IAAI,CAAS;IACtB,MAAM,CAAS;IACvB,YAAqB,SAAiB;yBAAjB,SAAS;QAC5B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,cAAc,EAAE;YAAE,MAAM,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAC/G,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,SAAS;gBAAE,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;YAC9G,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACxD,IAAI,GAAG,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,SAAS;gBAAE,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACnL,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;mBAC1G,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,WAAW,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;gBAAE,MAAM,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACnP,KAAK,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAuC,EAAE,CAAC;gBACxF,MAAM,MAAM,GAAG,yBAAyB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACtD,2BAA2B,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,EAAE,KAAK,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;uBAC3K,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,MAAM,CAAC,SAAS;2BACpH,MAAM,CAAC,GAAG,KAAK,aAAa,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;uBACzG,GAAG,CAAC,QAAQ,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;uBAC5F,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;uBAC1E,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,GAAG,CAAC;uBACvF,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC;uBACvF,GAAG,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;uBACpH,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;uBAC5G,GAAG,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC;uBACjF,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC;2BACjH,CAAC,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;oBAAE,MAAM,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACxG,CAAC;YACD,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QAAC,CAAC;IAC1F,CAAC;IACD,IAAI,KAA0B,OAAO,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,GAAG,CAAC,EAAU,IAAmC,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjG,GAAG,CAAC,MAAyB;QAC3B,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAAE,MAAM,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACrH,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC;YACpE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC;YAC7F,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,MAAM,IAAI,WAAW;gBAAE,MAAM,KAAK,CAAC,qCAAqC,CAAC,CAAC;YAChI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;YACvE,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,SAAS;gBAAE,MAAM,KAAK,CAAC,gCAAgC,CAAC,CAAC;YACvF,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,mGAAmG;IACnG,kBAAkB,CAAC,YAAqB;QACtC,IAAI,YAAY,KAAK,SAAS,IAAI,CAAC,OAAO,YAAY,KAAK,QAAQ,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAAE,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAChK,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACzE,IAAI,YAAY,IAAI,MAAM,CAAC,YAAY,IAAI,YAAY,KAAK,MAAM,CAAC,YAAY,EAAE,CAAC;oBAChF,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;oBAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,eAAe,CAAC;oBAC9E,OAAO,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBAAC,SAAS;gBAC9D,CAAC;gBACD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;oBAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,SAAS,CAAC;oBAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAAC,CAAC;gBACjG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;IACH,CAAC;IACD,8GAA8G;IAC9G,aAAa,CAAC,EAAU;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,QAAQ;YAAE,OAAO;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;gBAAE,MAAM,KAAK,CAAC,0BAA0B,CAAC,CAAC;YACzG,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACpD,IAAI,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO;mBAClJ,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;gBAAE,MAAM,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACrN,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;YAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YAC1D,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI;oBAAE,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;gBAC5G,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC3D,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC,MAAM,CAAC,OAAO;uBAC9H,CAAC,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;oBAAE,MAAM,KAAK,CAAC,8BAA8B,CAAC,CAAC;gBACrM,MAAM,KAAK,CAAC,2CAA2C,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,IAAI,4BAA4B,CAAC,CAAC;YACvH,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBAAC,IAAK,eAAyC,CAAC,IAAI,KAAK,QAAQ;oBAAE,MAAM,eAAe,CAAC;YAAC,CAAC;QACxH,CAAC;IACH,CAAC;IACD,MAAM,CAAC,MAAM,CAAC,KAAc,IAAY,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CAC1E"}
@@ -0,0 +1,43 @@
1
+ export type PaneTranscriptProvider = "codex" | "claude-code";
2
+ export interface PaneTranscriptCursor {
3
+ sessionId: string;
4
+ offset: number;
5
+ fileId: string | null;
6
+ anchor: string;
7
+ skipping?: boolean;
8
+ }
9
+ export interface PaneTranscriptWireBatch {
10
+ state: "pending" | "ready";
11
+ cursor: PaneTranscriptCursor;
12
+ /** Complete record bytes, base64-encoded to stay bounded even for heavily escaped JSON. */
13
+ data: string;
14
+ complete: boolean;
15
+ /** Oversized records were skipped; absence and turn completion across this gap are unproven. */
16
+ gap: boolean;
17
+ }
18
+ export interface RuntimeTranscriptReference {
19
+ version: 1;
20
+ machineId: string;
21
+ hostBootId: string;
22
+ paneId: string;
23
+ launchId: string;
24
+ agentId: string;
25
+ provider: PaneTranscriptProvider;
26
+ cursor: PaneTranscriptCursor;
27
+ }
28
+ export declare const PANE_TRANSCRIPT_MAX_FILE_BYTES: number;
29
+ export declare const PANE_TRANSCRIPT_EMPTY_ANCHOR: string;
30
+ export declare function validatePaneTranscriptCursor(value: unknown, expectedSessionId?: string): PaneTranscriptCursor;
31
+ export declare function validatePaneTranscriptWireBatch(value: unknown, sessionId: string): PaneTranscriptWireBatch;
32
+ export declare function validateRuntimeTranscriptReference(value: unknown): RuntimeTranscriptReference;
33
+ /** A cursor may advance; its machine, process generation and pinned conversation may not. */
34
+ export declare function sameRuntimeTranscriptScope(a: RuntimeTranscriptReference, b: RuntimeTranscriptReference): boolean;
35
+ /** Runner-owned baseline jumps over old content while carrying only a bounded turn-state proof. */
36
+ export interface PaneTranscriptBaseline {
37
+ state: "pending" | "ready";
38
+ cursor: PaneTranscriptCursor;
39
+ complete: boolean;
40
+ turnKnown: boolean;
41
+ openTurn: string | null;
42
+ }
43
+ export declare function validatePaneTranscriptBaseline(value: unknown, sessionId: string): PaneTranscriptBaseline;
@@ -0,0 +1,58 @@
1
+ /** Closed remote transcript identities. Never put a runner path in a coordinator checkpoint. */
2
+ import { createHash } from "node:crypto";
3
+ import { validNativeSessionId } from "./windows-cli-providers.js";
4
+ export const PANE_TRANSCRIPT_MAX_FILE_BYTES = 16 * 1024 * 1024 * 1024;
5
+ export const PANE_TRANSCRIPT_EMPTY_ANCHOR = createHash("sha256").update("").digest("hex");
6
+ const uuid = (value) => typeof value === "string" && /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/i.test(value);
7
+ function closed(value, keys) {
8
+ if (!value || typeof value !== "object" || Array.isArray(value) || Object.keys(value).some(key => !keys.includes(key)))
9
+ throw Error("Invalid runtime transcript identity");
10
+ return value;
11
+ }
12
+ export function validatePaneTranscriptCursor(value, expectedSessionId) {
13
+ const v = closed(value, ["sessionId", "offset", "fileId", "anchor", "skipping"]);
14
+ if (!validNativeSessionId("codex", v.sessionId) || expectedSessionId !== undefined && v.sessionId !== expectedSessionId
15
+ || !Number.isSafeInteger(v.offset) || v.offset < 0 || v.offset > PANE_TRANSCRIPT_MAX_FILE_BYTES
16
+ || v.fileId !== null && (typeof v.fileId !== "string" || !/^[a-f0-9]{64}$/.test(v.fileId))
17
+ || typeof v.anchor !== "string" || !/^[a-f0-9]{64}$/.test(v.anchor)
18
+ || v.skipping !== undefined && typeof v.skipping !== "boolean"
19
+ || v.fileId === null && (v.offset !== 0 || v.anchor !== PANE_TRANSCRIPT_EMPTY_ANCHOR || v.skipping === true))
20
+ throw Error("Invalid pane transcript cursor");
21
+ return { sessionId: v.sessionId, offset: v.offset, fileId: v.fileId, anchor: v.anchor,
22
+ ...(v.skipping ? { skipping: true } : {}) };
23
+ }
24
+ export function validatePaneTranscriptWireBatch(value, sessionId) {
25
+ const v = closed(value, ["state", "cursor", "data", "complete", "gap"]), cursor = validatePaneTranscriptCursor(v.cursor, sessionId);
26
+ if (v.state !== "pending" && v.state !== "ready" || typeof v.data !== "string" || v.data.length > 220_000
27
+ || v.data.length % 4 !== 0 || !/^[A-Za-z0-9+/]*={0,2}$/.test(v.data)
28
+ || Buffer.from(v.data, "base64").toString("base64") !== v.data || typeof v.complete !== "boolean" || typeof v.gap !== "boolean"
29
+ || v.state === "pending" && (v.data !== "" || v.complete || v.gap) || v.state === "ready" && cursor.fileId === null
30
+ || v.state === "ready" && cursor.skipping && (!v.gap || v.complete))
31
+ throw Error("Invalid pane transcript response");
32
+ return { state: v.state, cursor, data: v.data, complete: v.complete, gap: v.gap };
33
+ }
34
+ export function validateRuntimeTranscriptReference(value) {
35
+ const v = closed(value, ["version", "machineId", "hostBootId", "paneId", "launchId", "agentId", "provider", "cursor"]);
36
+ // "local" is the coordinator's own Windows bridge, never a remotely enrolled machine id.
37
+ if (v.version !== 1 || v.machineId !== "local" && !uuid(v.machineId) || !uuid(v.hostBootId) || !uuid(v.paneId) || !uuid(v.launchId)
38
+ || !uuid(v.agentId) || v.provider !== "codex" && v.provider !== "claude-code")
39
+ throw Error("Invalid runtime transcript identity");
40
+ return { version: 1, machineId: v.machineId, hostBootId: v.hostBootId, paneId: v.paneId,
41
+ launchId: v.launchId, agentId: v.agentId, provider: v.provider, cursor: validatePaneTranscriptCursor(v.cursor) };
42
+ }
43
+ /** A cursor may advance; its machine, process generation and pinned conversation may not. */
44
+ export function sameRuntimeTranscriptScope(a, b) {
45
+ return a.version === b.version && a.machineId === b.machineId && a.hostBootId === b.hostBootId
46
+ && a.paneId === b.paneId && a.launchId === b.launchId && a.agentId === b.agentId
47
+ && a.provider === b.provider && a.cursor.sessionId === b.cursor.sessionId;
48
+ }
49
+ export function validatePaneTranscriptBaseline(value, sessionId) {
50
+ const v = closed(value, ["state", "cursor", "complete", "turnKnown", "openTurn"]), cursor = validatePaneTranscriptCursor(v.cursor, sessionId);
51
+ if (v.state !== "pending" && v.state !== "ready" || typeof v.complete !== "boolean" || typeof v.turnKnown !== "boolean"
52
+ || v.openTurn !== null && (typeof v.openTurn !== "string" || !v.openTurn || v.openTurn.length > 256 || /[\r\n\0]/.test(v.openTurn))
53
+ || !v.turnKnown && v.openTurn !== null || v.state === "ready" && cursor.fileId === null
54
+ || v.state === "pending" && (v.complete || v.turnKnown || v.openTurn !== null) || cursor.skipping)
55
+ throw Error("Invalid native transcript baseline");
56
+ return { state: v.state, cursor, complete: v.complete, turnKnown: v.turnKnown, openTurn: v.openTurn };
57
+ }
58
+ //# sourceMappingURL=runtime-pane-transcript-protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-pane-transcript-protocol.js","sourceRoot":"","sources":["../src/runtime-pane-transcript-protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { PaneTranscriptBaseline } from "./runtime-pane-transcript-protocol.js";
2
+ import { type PaneTranscriptCursor, type PaneTranscriptProvider, type PaneTranscriptWireBatch } from "./runtime-pane-transcript-protocol.js";
3
+ export { validatePaneTranscriptCursor, type PaneTranscriptCursor, type PaneTranscriptProvider } from "./runtime-pane-transcript-protocol.js";
4
+ export interface PaneTranscriptBatch extends PaneTranscriptWireBatch {
5
+ /** Complete UTF-8 JSONL records only. A partial/oversized record never becomes a turn boundary. */
6
+ lines: string[];
7
+ }
8
+ export interface PaneTranscriptRoots {
9
+ codex: string;
10
+ claude: string;
11
+ }
12
+ /** Root configuration comes only from the runner's allowed provider environment, never a pane RPC. */
13
+ export declare function nativePaneTranscriptRoots(env?: NodeJS.ProcessEnv, home?: string): PaneTranscriptRoots;
14
+ /** Same algorithm as Claude's project directory, evaluated on the runner's canonical native cwd. */
15
+ export declare function nativeClaudeProjectKey(cwd: string): string;
16
+ export type NativeClaudeSessionState = "absent" | "saved" | "unknown";
17
+ /** Positive absence is a read-only runner proof, never inferred from a failed resume or pending transcript read.
18
+ * Key derivation is tied to the audited Claude launch version; re-check it with each Claude version audit. */
19
+ export declare function nativeClaudeSessionState(cwd: string, sessionId: string, current?: () => boolean, roots?: PaneTranscriptRoots): Promise<NativeClaudeSessionState>;
20
+ /** Complete, bounded absence proof, distinct from the transcript reader's incremental "pending" result.
21
+ * A matching archive, stale metadata, incomplete walk, WAL, unsafe file or lost lease is unknown, never absence. */
22
+ export declare function nativeCodexSessionState(cwd: string, sessionId: string, current?: () => boolean, roots?: PaneTranscriptRoots): Promise<NativeClaudeSessionState>;
23
+ export declare class NativePaneTranscriptReader {
24
+ readonly provider: PaneTranscriptProvider;
25
+ readonly cwd: string;
26
+ readonly sessionId: string;
27
+ private readonly roots;
28
+ private busy;
29
+ private pinnedFile;
30
+ private metadataBytes;
31
+ private discovery;
32
+ private discoveryMatches;
33
+ private canonicalCwd;
34
+ private stopped;
35
+ readonly initial: PaneTranscriptCursor;
36
+ constructor(provider: PaneTranscriptProvider, cwd: string, sessionId: string, roots?: PaneTranscriptRoots);
37
+ /** At most one filesystem operation remains in flight even if a transport deadline abandons its result. */
38
+ read(cursor?: PaneTranscriptCursor, current?: () => boolean): Promise<PaneTranscriptBatch>;
39
+ /** At most 4 MiB of tail content, independent of history size; no historical text leaves the runner. */
40
+ baseline(cursor?: PaneTranscriptCursor, current?: () => boolean): Promise<PaneTranscriptBaseline>;
41
+ close(): Promise<void>;
42
+ private candidates;
43
+ private locate;
44
+ private readOwned;
45
+ }