aicodeman 1.48.0 → 1.49.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/README.md +12 -3
  2. package/dist/config/cli-registry/schema.d.ts +1 -0
  3. package/dist/config/cli-registry/schema.d.ts.map +1 -1
  4. package/dist/config/cli-registry/schema.js +5 -1
  5. package/dist/config/cli-registry/schema.js.map +1 -1
  6. package/dist/config/cli-registry/stock.d.ts.map +1 -1
  7. package/dist/config/cli-registry/stock.js +71 -5
  8. package/dist/config/cli-registry/stock.js.map +1 -1
  9. package/dist/config/cli-registry/types.d.ts +4 -4
  10. package/dist/config/cli-registry/types.d.ts.map +1 -1
  11. package/dist/config/foreign-tmux.d.ts +48 -0
  12. package/dist/config/foreign-tmux.d.ts.map +1 -0
  13. package/dist/config/foreign-tmux.js +48 -0
  14. package/dist/config/foreign-tmux.js.map +1 -0
  15. package/dist/custom-model-injection-apply.d.ts +4 -2
  16. package/dist/custom-model-injection-apply.d.ts.map +1 -1
  17. package/dist/custom-model-injection-apply.js +35 -21
  18. package/dist/custom-model-injection-apply.js.map +1 -1
  19. package/dist/docker-hosts.d.ts +8 -1
  20. package/dist/docker-hosts.d.ts.map +1 -1
  21. package/dist/docker-hosts.js +5 -5
  22. package/dist/docker-hosts.js.map +1 -1
  23. package/dist/foreign-tmux-discovery.d.ts +140 -0
  24. package/dist/foreign-tmux-discovery.d.ts.map +1 -0
  25. package/dist/foreign-tmux-discovery.js +366 -0
  26. package/dist/foreign-tmux-discovery.js.map +1 -0
  27. package/dist/foreign-tmux.d.ts +381 -0
  28. package/dist/foreign-tmux.d.ts.map +1 -0
  29. package/dist/foreign-tmux.js +775 -0
  30. package/dist/foreign-tmux.js.map +1 -0
  31. package/dist/git-fetch-scheduler.d.ts +2 -0
  32. package/dist/git-fetch-scheduler.d.ts.map +1 -1
  33. package/dist/git-fetch-scheduler.js +1 -1
  34. package/dist/git-fetch-scheduler.js.map +1 -1
  35. package/dist/git-fetch.d.ts +1 -1
  36. package/dist/git-fetch.d.ts.map +1 -1
  37. package/dist/git-workspace-status.d.ts +2 -2
  38. package/dist/git-workspace-status.d.ts.map +1 -1
  39. package/dist/hooks-config.d.ts +2 -1
  40. package/dist/hooks-config.d.ts.map +1 -1
  41. package/dist/hooks-config.js +2 -1
  42. package/dist/hooks-config.js.map +1 -1
  43. package/dist/live-worktree.d.ts +53 -0
  44. package/dist/live-worktree.d.ts.map +1 -0
  45. package/dist/live-worktree.js +97 -0
  46. package/dist/live-worktree.js.map +1 -0
  47. package/dist/mux-interface.d.ts +12 -1
  48. package/dist/mux-interface.d.ts.map +1 -1
  49. package/dist/reboot-restore.d.ts +1 -1
  50. package/dist/reboot-restore.d.ts.map +1 -1
  51. package/dist/reboot-restore.js +9 -0
  52. package/dist/reboot-restore.js.map +1 -1
  53. package/dist/remote-files.d.ts +150 -5
  54. package/dist/remote-files.d.ts.map +1 -1
  55. package/dist/remote-files.js +505 -7
  56. package/dist/remote-files.js.map +1 -1
  57. package/dist/remote-hosts.d.ts +15 -9
  58. package/dist/remote-hosts.d.ts.map +1 -1
  59. package/dist/remote-hosts.js +42 -20
  60. package/dist/remote-hosts.js.map +1 -1
  61. package/dist/session-cli-registry-bridge.d.ts.map +1 -1
  62. package/dist/session-cli-registry-bridge.js +19 -8
  63. package/dist/session-cli-registry-bridge.js.map +1 -1
  64. package/dist/session-env-clamp.d.ts +1 -1
  65. package/dist/session-env-clamp.d.ts.map +1 -1
  66. package/dist/session-env-clamp.js +4 -3
  67. package/dist/session-env-clamp.js.map +1 -1
  68. package/dist/session.d.ts +91 -21
  69. package/dist/session.d.ts.map +1 -1
  70. package/dist/session.js +190 -33
  71. package/dist/session.js.map +1 -1
  72. package/dist/tmux-manager.d.ts +74 -12
  73. package/dist/tmux-manager.d.ts.map +1 -1
  74. package/dist/tmux-manager.js +256 -41
  75. package/dist/tmux-manager.js.map +1 -1
  76. package/dist/types/foreign-tmux.d.ts +101 -0
  77. package/dist/types/foreign-tmux.d.ts.map +1 -0
  78. package/dist/types/foreign-tmux.js +27 -0
  79. package/dist/types/foreign-tmux.js.map +1 -0
  80. package/dist/types/index.d.ts +1 -0
  81. package/dist/types/index.d.ts.map +1 -1
  82. package/dist/types/index.js +1 -0
  83. package/dist/types/index.js.map +1 -1
  84. package/dist/types/session.d.ts +106 -2
  85. package/dist/types/session.d.ts.map +1 -1
  86. package/dist/types/session.js.map +1 -1
  87. package/dist/types/update.d.ts +4 -1
  88. package/dist/types/update.d.ts.map +1 -1
  89. package/dist/web/edit-history-sync.d.ts +27 -7
  90. package/dist/web/edit-history-sync.d.ts.map +1 -1
  91. package/dist/web/edit-history-sync.js +35 -19
  92. package/dist/web/edit-history-sync.js.map +1 -1
  93. package/dist/web/launch-defaults.d.ts +1 -1
  94. package/dist/web/launch-defaults.js +2 -2
  95. package/dist/web/launch-defaults.js.map +1 -1
  96. package/dist/web/linked-cases-writer.d.ts +43 -0
  97. package/dist/web/linked-cases-writer.d.ts.map +1 -0
  98. package/dist/web/linked-cases-writer.js +107 -0
  99. package/dist/web/linked-cases-writer.js.map +1 -0
  100. package/dist/web/paste-image-gc.d.ts +4 -1
  101. package/dist/web/paste-image-gc.d.ts.map +1 -1
  102. package/dist/web/paste-image-gc.js +4 -2
  103. package/dist/web/paste-image-gc.js.map +1 -1
  104. package/dist/web/public/admin-ui.js.gz +0 -0
  105. package/dist/web/public/api-client.c9b1cddc.js.gz +0 -0
  106. package/dist/web/public/{app.963b5ba8.js → app.9ea37070.js} +6 -6
  107. package/dist/web/public/app.9ea37070.js.br +0 -0
  108. package/dist/web/public/app.9ea37070.js.gz +0 -0
  109. package/dist/web/public/approvals-ui.js.gz +0 -0
  110. package/dist/web/public/constants.782170e1.js.gz +0 -0
  111. package/dist/web/public/cron-ui.js.gz +0 -0
  112. package/dist/web/public/edit-history-ui.js +27 -14
  113. package/dist/web/public/edit-history-ui.js.br +0 -0
  114. package/dist/web/public/edit-history-ui.js.gz +0 -0
  115. package/dist/web/public/entrance-animations.js.gz +0 -0
  116. package/dist/web/public/foreign-sessions.js +476 -0
  117. package/dist/web/public/foreign-sessions.js.br +0 -0
  118. package/dist/web/public/foreign-sessions.js.gz +0 -0
  119. package/dist/web/public/git-status-ui.js +5 -3
  120. package/dist/web/public/git-status-ui.js.br +0 -0
  121. package/dist/web/public/git-status-ui.js.gz +0 -0
  122. package/dist/web/public/header-divider.eb2d2463.js.gz +0 -0
  123. package/dist/web/public/home-sessions.js.gz +0 -0
  124. package/dist/web/public/host-wake-ui.js.gz +0 -0
  125. package/dist/web/public/i18n.a5e82c95.js +2 -0
  126. package/dist/web/public/i18n.a5e82c95.js.br +0 -0
  127. package/dist/web/public/i18n.a5e82c95.js.gz +0 -0
  128. package/dist/web/public/image-input.a5d0f8f3.js.gz +0 -0
  129. package/dist/web/public/index.html +36 -17
  130. package/dist/web/public/index.html.br +0 -0
  131. package/dist/web/public/index.html.gz +0 -0
  132. package/dist/web/public/input-cjk.8bc46081.js.gz +0 -0
  133. package/dist/web/public/{keyboard-accessory.d4ec5957.js → keyboard-accessory.b941676c.js} +3 -1
  134. package/dist/web/public/keyboard-accessory.b941676c.js.br +0 -0
  135. package/dist/web/public/{keyboard-accessory.d4ec5957.js.gz → keyboard-accessory.b941676c.js.gz} +0 -0
  136. package/dist/web/public/mobile-handlers.f7c3f692.js.gz +0 -0
  137. package/dist/web/public/mobile-ime-preview.2dbaf262.js.gz +0 -0
  138. package/dist/web/public/mobile-overview.js +10 -0
  139. package/dist/web/public/mobile-overview.js.br +0 -0
  140. package/dist/web/public/mobile-overview.js.gz +0 -0
  141. package/dist/web/public/{mobile.5ef2ce85.css → mobile.67c8eb5b.css} +1 -1
  142. package/dist/web/public/mobile.67c8eb5b.css.br +0 -0
  143. package/dist/web/public/{mobile.5ef2ce85.css.gz → mobile.67c8eb5b.css.gz} +0 -0
  144. package/dist/web/public/notification-manager.feb82c04.js.gz +0 -0
  145. package/dist/web/public/orchestrator-panel.js.gz +0 -0
  146. package/dist/web/public/{panels-ui.b100727d.js → panels-ui.8bcd4473.js} +4 -4
  147. package/dist/web/public/panels-ui.8bcd4473.js.br +0 -0
  148. package/dist/web/public/panels-ui.8bcd4473.js.gz +0 -0
  149. package/dist/web/public/ralph-panel.b350e2ef.js.gz +0 -0
  150. package/dist/web/public/ralph-wizard.b6c0dd19.js.gz +0 -0
  151. package/dist/web/public/readmymind-ui.js.gz +0 -0
  152. package/dist/web/public/reboot-restore-ui.js.gz +0 -0
  153. package/dist/web/public/respawn-ui.304ba0d4.js.gz +0 -0
  154. package/dist/web/public/sanitize-html.e7147e76.js.gz +0 -0
  155. package/dist/web/public/session-lineage.js.gz +0 -0
  156. package/dist/web/public/{session-ui.5ac82f2c.js → session-ui.a7c8c095.js} +11 -11
  157. package/dist/web/public/session-ui.a7c8c095.js.br +0 -0
  158. package/dist/web/public/session-ui.a7c8c095.js.gz +0 -0
  159. package/dist/web/public/{settings-ui.d1d4fb99.js → settings-ui.18f92052.js} +3 -3
  160. package/dist/web/public/settings-ui.18f92052.js.br +0 -0
  161. package/dist/web/public/settings-ui.18f92052.js.gz +0 -0
  162. package/dist/web/public/spreadsheet-preview-worker.js.gz +0 -0
  163. package/dist/web/public/spreadsheet-preview.75c751de.js.gz +0 -0
  164. package/dist/web/public/spreadsheet-xlsx-core.js.gz +0 -0
  165. package/dist/web/public/{styles.77dc538f.css → styles.6a718331.css} +1 -1
  166. package/dist/web/public/styles.6a718331.css.br +0 -0
  167. package/dist/web/public/{styles.77dc538f.css.gz → styles.6a718331.css.gz} +0 -0
  168. package/dist/web/public/subagent-windows.07277a58.js.gz +0 -0
  169. package/dist/web/public/sw.js +2 -2
  170. package/dist/web/public/sw.js.br +0 -0
  171. package/dist/web/public/sw.js.gz +0 -0
  172. package/dist/web/public/tab-layout-browser.2d6189f7.js.gz +0 -0
  173. package/dist/web/public/tab-rail-resize.b5cdceaf.js.gz +0 -0
  174. package/dist/web/public/terminal-keycode229-recovery.98843069.js.gz +0 -0
  175. package/dist/web/public/terminal-split.js.gz +0 -0
  176. package/dist/web/public/terminal-tile.js +2 -2
  177. package/dist/web/public/terminal-tile.js.br +0 -0
  178. package/dist/web/public/terminal-tile.js.gz +0 -0
  179. package/dist/web/public/{terminal-ui.d7c75ce8.js → terminal-ui.a7883640.js} +2 -2
  180. package/dist/web/public/terminal-ui.a7883640.js.br +0 -0
  181. package/dist/web/public/terminal-ui.a7883640.js.gz +0 -0
  182. package/dist/web/public/tile-grid.js.gz +0 -0
  183. package/dist/web/public/ultracode-panel.js.gz +0 -0
  184. package/dist/web/public/ultracode-windows.js.gz +0 -0
  185. package/dist/web/public/vendor/dompurify.min.js.gz +0 -0
  186. package/dist/web/public/vendor/exceljs.min.js.gz +0 -0
  187. package/dist/web/public/vendor/fflate.min.js.gz +0 -0
  188. package/dist/web/public/vendor/marked.min.js.gz +0 -0
  189. package/dist/web/public/vendor/xterm-addon-fit.min.js.gz +0 -0
  190. package/dist/web/public/vendor/xterm-addon-serialize.min.js.gz +0 -0
  191. package/dist/web/public/vendor/xterm-addon-unicode11.min.js.gz +0 -0
  192. package/dist/web/public/vendor/xterm-addon-webgl.min.js.gz +0 -0
  193. package/dist/web/public/vendor/xterm-predictive-echo.276b11d9.js.gz +0 -0
  194. package/dist/web/public/vendor/xterm-zerolag-input.1be42307.js.gz +0 -0
  195. package/dist/web/public/vendor/xterm.css.gz +0 -0
  196. package/dist/web/public/vendor/xterm.min.js.gz +0 -0
  197. package/dist/web/public/voice-input.2342c37b.js.gz +0 -0
  198. package/dist/web/public/voice-pcm-worklet.js.gz +0 -0
  199. package/dist/web/public/webview-tabs.js.gz +0 -0
  200. package/dist/web/public/whats-new.json +9 -9
  201. package/dist/web/routes/case-routes.d.ts.map +1 -1
  202. package/dist/web/routes/case-routes.js +72 -53
  203. package/dist/web/routes/case-routes.js.map +1 -1
  204. package/dist/web/routes/discord-routes.js +1 -1
  205. package/dist/web/routes/discord-routes.js.map +1 -1
  206. package/dist/web/routes/edit-history-routes.d.ts +2 -2
  207. package/dist/web/routes/edit-history-routes.d.ts.map +1 -1
  208. package/dist/web/routes/edit-history-routes.js +4 -3
  209. package/dist/web/routes/edit-history-routes.js.map +1 -1
  210. package/dist/web/routes/file-routes.d.ts.map +1 -1
  211. package/dist/web/routes/file-routes.js +213 -102
  212. package/dist/web/routes/file-routes.js.map +1 -1
  213. package/dist/web/routes/git-status-routes.d.ts.map +1 -1
  214. package/dist/web/routes/git-status-routes.js +7 -2
  215. package/dist/web/routes/git-status-routes.js.map +1 -1
  216. package/dist/web/routes/mux-routes.d.ts +10 -3
  217. package/dist/web/routes/mux-routes.d.ts.map +1 -1
  218. package/dist/web/routes/mux-routes.js +59 -1
  219. package/dist/web/routes/mux-routes.js.map +1 -1
  220. package/dist/web/routes/ralph-routes.d.ts.map +1 -1
  221. package/dist/web/routes/ralph-routes.js +22 -0
  222. package/dist/web/routes/ralph-routes.js.map +1 -1
  223. package/dist/web/routes/readmymind-routes.d.ts.map +1 -1
  224. package/dist/web/routes/readmymind-routes.js +3 -2
  225. package/dist/web/routes/readmymind-routes.js.map +1 -1
  226. package/dist/web/routes/respawn-routes.d.ts.map +1 -1
  227. package/dist/web/routes/respawn-routes.js +24 -0
  228. package/dist/web/routes/respawn-routes.js.map +1 -1
  229. package/dist/web/routes/session-routes.d.ts +11 -8
  230. package/dist/web/routes/session-routes.d.ts.map +1 -1
  231. package/dist/web/routes/session-routes.js +262 -29
  232. package/dist/web/routes/session-routes.js.map +1 -1
  233. package/dist/web/routes/system-routes.d.ts.map +1 -1
  234. package/dist/web/routes/system-routes.js +3 -2
  235. package/dist/web/routes/system-routes.js.map +1 -1
  236. package/dist/web/schemas.d.ts +24 -1
  237. package/dist/web/schemas.d.ts.map +1 -1
  238. package/dist/web/schemas.js +34 -9
  239. package/dist/web/schemas.js.map +1 -1
  240. package/dist/web/self-update.d.ts +9 -0
  241. package/dist/web/self-update.d.ts.map +1 -1
  242. package/dist/web/self-update.js +19 -3
  243. package/dist/web/self-update.js.map +1 -1
  244. package/dist/web/server.d.ts +16 -3
  245. package/dist/web/server.d.ts.map +1 -1
  246. package/dist/web/server.js +84 -24
  247. package/dist/web/server.js.map +1 -1
  248. package/dist/web/session-wait-registry.d.ts +13 -0
  249. package/dist/web/session-wait-registry.d.ts.map +1 -1
  250. package/dist/web/session-wait-registry.js +16 -8
  251. package/dist/web/session-wait-registry.js.map +1 -1
  252. package/package.json +2 -2
  253. package/skills/codeman/SKILL.md +20 -4
  254. package/dist/web/public/app.963b5ba8.js.br +0 -0
  255. package/dist/web/public/app.963b5ba8.js.gz +0 -0
  256. package/dist/web/public/i18n.33f930d7.js +0 -2
  257. package/dist/web/public/i18n.33f930d7.js.br +0 -0
  258. package/dist/web/public/i18n.33f930d7.js.gz +0 -0
  259. package/dist/web/public/keyboard-accessory.d4ec5957.js.br +0 -0
  260. package/dist/web/public/mobile.5ef2ce85.css.br +0 -0
  261. package/dist/web/public/panels-ui.b100727d.js.br +0 -0
  262. package/dist/web/public/panels-ui.b100727d.js.gz +0 -0
  263. package/dist/web/public/session-ui.5ac82f2c.js.br +0 -0
  264. package/dist/web/public/session-ui.5ac82f2c.js.gz +0 -0
  265. package/dist/web/public/settings-ui.d1d4fb99.js.br +0 -0
  266. package/dist/web/public/settings-ui.d1d4fb99.js.gz +0 -0
  267. package/dist/web/public/styles.77dc538f.css.br +0 -0
  268. package/dist/web/public/terminal-ui.d7c75ce8.js.br +0 -0
  269. package/dist/web/public/terminal-ui.d7c75ce8.js.gz +0 -0
@@ -17,9 +17,9 @@
17
17
  *
18
18
  * ⚠️ The path is the injection surface: it arrives from the browser (`?path=`). It is
19
19
  * always interpolated as a single `shellescape`d token, and the whole remote command
20
- * is itself shellescaped into the ssh line, so the local shell and the remote shell
21
- * each see one opaque argument. Never build a command here by concatenating a raw
22
- * path into the string.
20
+ * is {@link remoteLoginShellLine} shellescaped into the ssh line, so the local shell
21
+ * and the remote login shell each see one opaque argument, whichever shell that is.
22
+ * Never build a command here by concatenating a raw path into the string.
23
23
  *
24
24
  * Read-only by design: previews, text reads and streaming. Writing to a remote file
25
25
  * is deliberately NOT implemented (docs/file-viewer-edit-plan.md §6), nor are the
@@ -28,7 +28,7 @@
28
28
  import { exec, spawn } from 'node:child_process';
29
29
  import { promisify } from 'node:util';
30
30
  import { PassThrough } from 'node:stream';
31
- import { buildSshConnectionArgs, remoteSshTarget, shellescape } from './remote-hosts.js';
31
+ import { buildSshConnectionArgs, remoteSshTarget, shellescape, withRemoteTmuxPath } from './remote-hosts.js';
32
32
  import { runWithRemoteSshLimit } from './remote-ssh-limiter.js';
33
33
  const execAsync = promisify(exec);
34
34
  /**
@@ -82,16 +82,41 @@ export class RemoteFileAccessError extends Error {
82
82
  this.name = 'RemoteFileAccessError';
83
83
  }
84
84
  }
85
+ /**
86
+ * A POSIX script as one line that every remote login shell reads the same way, and hands
87
+ * to `sh`.
88
+ *
89
+ * ⚠️ sshd gives the command to the user's LOGIN shell, and {@link shellescape} quotes for a
90
+ * POSIX one. Inside single quotes fish takes `\'` as a literal quote, so `'\''` stops
91
+ * closing and reopening the string, and csh and tcsh end a command at a newline even there
92
+ * and run the script line by line. Both let a path act as a command (measured: a path
93
+ * holding `';touch x;'` ran `touch x` under fish, and one holding a newline ran the next
94
+ * line under tcsh). So the script travels as `printf` text with the bytes those shells
95
+ * treat specially written as octal: no quote, backslash pair, newline or `!` for the login
96
+ * shell to read, and `%` so `printf` keeps its hands off too. Only `sh` sees the script.
97
+ */
98
+ export function remoteLoginShellLine(script) {
99
+ const text = Array.from(Buffer.from(script), (byte) => {
100
+ const char = String.fromCharCode(byte);
101
+ return byte < 0x20 || byte > 0x7e || "'\\%!".includes(char) ? `\\${byte.toString(8).padStart(3, '0')}` : char;
102
+ }).join('');
103
+ return `sh -c 'eval "$(printf "$1")"' sh '${text}'`;
104
+ }
85
105
  /**
86
106
  * Wrap a remote shell command in the shared, shellescaped ssh line.
87
107
  *
88
108
  * The single entry point for "run this on the remote host": connection args (port,
89
109
  * identity, jump host, SOCKS ProxyCommand, extra `-o`) all come from
90
- * `buildSshConnectionArgs`, and the command is ONE shellescaped token, so a path with
91
- * spaces, quotes or `$(…)` cannot escape into the ssh command line.
110
+ * `buildSshConnectionArgs`, and the command is ONE shellescaped token holding
111
+ * {@link remoteLoginShellLine}, so a path with spaces, quotes or `$(…)` cannot escape
112
+ * into the ssh command line or the remote login shell.
92
113
  */
93
114
  export function buildRemoteFileCommand(remote, shellCommand) {
94
- return [...buildSshConnectionArgs(remote), remoteSshTarget(remote), shellescape(shellCommand)].join(' ');
115
+ return [
116
+ ...buildSshConnectionArgs(remote),
117
+ remoteSshTarget(remote),
118
+ shellescape(remoteLoginShellLine(shellCommand)),
119
+ ].join(' ');
95
120
  }
96
121
  /**
97
122
  * `realpath + stat + existence` for one or more paths, in a SINGLE ssh round trip.
@@ -352,6 +377,479 @@ export async function remoteReadFile(remote, remotePath, maxBytes) {
352
377
  throw new RemoteFileAccessError(`failed to read remote file: ${describeExecError(err)}`);
353
378
  }
354
379
  }
380
+ /** Conversation ids are uuids; anything else never reaches the remote shell. */
381
+ const CLAUDE_TRANSCRIPT_ID_PATTERN = /^[A-Za-z0-9._-]+$/;
382
+ /** Exit status the edit-history scripts use for "no such transcript on that host". */
383
+ const TRANSCRIPT_NOT_FOUND_EXIT = 3;
384
+ /** Transcript files an edit-source request may name; nothing else reaches the shell. */
385
+ const EDIT_SOURCE_REL_PATH_PATTERN = /^(main|subagents\/agent-[A-Za-z0-9_-]+\.jsonl)$/;
386
+ /** The meta record's relPath; group 1 is the agentId. */
387
+ const EDIT_SOURCE_META_REL_PATH_PATTERN = /^subagents\/agent-([A-Za-z0-9_-]+)\.meta\.json$/;
388
+ /** Cap on one subagent `.meta.json` record (outside the transcript budget), as in the local reader. */
389
+ const EDIT_SOURCE_META_MAX_BYTES = 8192;
390
+ /**
391
+ * Cap on all meta records of one read (the local reader has none). A meta comes only with a
392
+ * subagent's first read, so one past the cap is never sent: that subagent's transcript is read
393
+ * as usual, and the panel names it by its id instead of its description.
394
+ */
395
+ const EDIT_SOURCE_META_BUDGET_BYTES = 4 * 1024 * 1024;
396
+ /** Room for the record headers (one per transcript file) on top of budget and metas. */
397
+ const EDIT_SOURCE_HEADER_SLACK_BYTES = 1024 * 1024;
398
+ /**
399
+ * Subagent requests per ssh round trip of an edit-history read. Like
400
+ * {@link REMOTE_PROBE_CHUNK_SIZE}: the script is ONE argument of the ssh line, Linux caps a
401
+ * single argv string at 128 KiB, and each request adds a `case` line of 139 bytes once
402
+ * encoded for the login shell (376 with the longest name a filesystem allows; the test pins
403
+ * that worst case). See {@link planRemoteEditSourceRounds}.
404
+ */
405
+ const EDIT_SOURCE_REQUESTS_PER_ROUND_TRIP = 300;
406
+ /**
407
+ * The slowest link an edit-history read is given time for. Such a read can carry megabytes
408
+ * (a forward pass its budget plus the metas, "Load older" up to three budgets), which a flat
409
+ * {@link REMOTE_READ_TIMEOUT_MS} would cut off below ~1 MiB/s. 256 KiB/s ≈ 2 Mbit/s.
410
+ */
411
+ const EDIT_SOURCE_MIN_BYTES_PER_SEC = 256 * 1024;
412
+ /**
413
+ * Timeout of an edit-history read that may return up to `maxBytes`: the flat read timeout plus
414
+ * the transfer time at {@link EDIT_SOURCE_MIN_BYTES_PER_SEC}. It ends a hung read (a host that
415
+ * fell asleep mid-transfer; no keepalives, see the wake invariants), it does not cut a slow one.
416
+ */
417
+ export function remoteEditSourcesTimeoutMs(maxBytes) {
418
+ return REMOTE_READ_TIMEOUT_MS + Math.ceil((Math.max(0, maxBytes) / EDIT_SOURCE_MIN_BYTES_PER_SEC) * 1000);
419
+ }
420
+ /**
421
+ * The ssh line of an edit-history lookup or read: {@link buildRemoteFileCommand} with `exec`, so a
422
+ * timeout reaches ssh itself. Node signals the local `sh -c`, and dash stays the parent of a
423
+ * plain command, which would leave ssh running and the remote read holding its connection.
424
+ */
425
+ export function buildRemoteEditHistoryCommand(remote, shellCommand) {
426
+ return `exec ${buildRemoteFileCommand(remote, shellCommand)}`;
427
+ }
428
+ const TMUX_NAME_PATTERN = /^[A-Za-z0-9._-]+$/;
429
+ function isByteCount(value) {
430
+ return typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;
431
+ }
432
+ /** De-duplicated ids that match {@link CLAUDE_TRANSCRIPT_ID_PATTERN}, in order. */
433
+ function safeClaudeTranscriptIds(ids) {
434
+ return [...new Set(ids)].filter((id) => CLAUDE_TRANSCRIPT_ID_PATTERN.test(id));
435
+ }
436
+ /** A main transcript path the read script takes: absolute, `<id>.jsonl`, no NUL or newline. */
437
+ export function isRemoteClaudeTranscriptPath(path) {
438
+ if (!path.startsWith('/') || !path.endsWith('.jsonl') || /[\0\n]/.test(path))
439
+ return false;
440
+ return CLAUDE_TRANSCRIPT_ID_PATTERN.test(path.slice(path.lastIndexOf('/') + 1, -'.jsonl'.length));
441
+ }
442
+ /**
443
+ * Shell lines that set `cfg` to claude's config dir on the remote host: an absolute
444
+ * `CLAUDE_CONFIG_DIR` from the ssh command's environment, else `$HOME/.claude`, claude's own
445
+ * rule. ⚠️ The remote claude runs under `$SHELL -i -l -c` (`remoteLoginShellCommand`), this
446
+ * script under a plain non-interactive `sh` from sshd's `$SHELL -c`: a `CLAUDE_CONFIG_DIR` set
447
+ * only in a login or interactive profile (`.profile`, `.bash_profile`, `.zshrc`) is not seen
448
+ * here; one from `.zshenv`, sshd `SetEnv` or the system environment is.
449
+ */
450
+ function claudeConfigDirLines() {
451
+ return ['cfg=$HOME/.claude', 'case ${CLAUDE_CONFIG_DIR:-} in /*) cfg=$CLAUDE_CONFIG_DIR ;; esac'];
452
+ }
453
+ /**
454
+ * Shell lines that set `live` to the conversation the claude in `pane` is writing NOW,
455
+ * or leave it empty; they need `cfg` ({@link claudeConfigDirLines}). Codeman launches a
456
+ * remote claude with `--session-id <id>`, but a `/clear` (or a resume picked inside claude)
457
+ * starts a new conversation, and with no hooks from a remote host Codeman never hears of it.
458
+ * claude itself keeps `<config dir>/sessions/<pid>.json` with the current `sessionId`, so: the
459
+ * pane's pid, its children and grandchildren (a wrapper shell may sit in between), the first
460
+ * of those with such a file. Only `[A-Za-z0-9._-]` survives the `sed`, the id pattern, so
461
+ * `$live` is safe unquoted. `ps -A -o pid= -o ppid=` is POSIX (no GNU `--ppid`).
462
+ *
463
+ * ⚠️ tmux runs on the PATH of every other remote tmux call ({@link withRemoteTmuxPath}): sshd's
464
+ * non-interactive shell may not list the directory it lives in, and a silent miss here leaves
465
+ * the panel on the launch conversation after a `/clear`. The `export` stays inside the `$(…)`,
466
+ * and inside this script, which runs under `sh` whatever the remote user's login shell is.
467
+ *
468
+ * ⚠️ `=name:` is an EXACT session match. Without the colon tmux reads a window target, so a
469
+ * session that is gone resolves to a window of that name or a session the name is a prefix of,
470
+ * and that session's conversation would land in this one's edit history.
471
+ */
472
+ function liveClaudeIdLines(pane) {
473
+ if (!pane || !TMUX_NAME_PATTERN.test(pane.socket) || !TMUX_NAME_PATTERN.test(pane.sessionName))
474
+ return [];
475
+ return [
476
+ 'live=',
477
+ `pp=$(${withRemoteTmuxPath(`tmux -L ${shellescape(pane.socket)} list-panes -t ${shellescape(`=${pane.sessionName}:`)} -F '#{pane_pid}' 2>/dev/null | head -n 1`)})`,
478
+ "case $pp in ''|*[!0-9]*) pp= ;; esac",
479
+ 'if [ -n "$pp" ]; then',
480
+ ' tree=$(ps -A -o pid= -o ppid= 2>/dev/null)',
481
+ ' kids=$(printf \'%s\\n\' "$tree" | awk -v p="$pp" \'$2 == p { print $1 }\')',
482
+ ' grand=$(for k in $kids; do printf \'%s\\n\' "$tree" | awk -v p="$k" \'$2 == p { print $1 }\'; done)',
483
+ ' for c in $pp $kids $grand; do',
484
+ ' f="$cfg/sessions/$c.json"',
485
+ ' [ -f "$f" ] || continue',
486
+ ' live=$(sed -n \'s/.*"sessionId":"\\([A-Za-z0-9._-]*\\)".*/\\1/p\' "$f" | head -n 1)',
487
+ ' [ -n "$live" ] && break',
488
+ ' done',
489
+ 'fi',
490
+ ];
491
+ }
492
+ /**
493
+ * Script that finds a remote claude session's main transcript and prints `\0<path>\0`;
494
+ * exit {@link TRANSCRIPT_NOT_FOUND_EXIT} when there is none. First the conversation the
495
+ * claude in `pane` writes now ({@link liveClaudeIdLines}); without one, the most recently
496
+ * written transcript of ALL `ids`, not the first id that has one: the conversation claude
497
+ * wrote last is the current one whether a `/clear` moved on from the launch id or a respawn
498
+ * resumed it again, and no order of the ids gets both right. Each id is looked up as
499
+ * `<config dir>/projects/*\/<id>.jsonl` ({@link claudeConfigDirLines}). `$HOME` is expanded
500
+ * by the REMOTE shell: the transcript lives in the remote user's home, which the server
501
+ * cannot know.
502
+ *
503
+ * ⚠️ Runs under an explicit `sh` with `LC_ALL=C`: sshd runs a command in the remote user's
504
+ * LOGIN shell, and on a zsh host `ls` can be an alias and an unmatched glob aborts the whole
505
+ * script ("no matches found"). So: no `ls` at all, the newest file wins via `-nt`, and an
506
+ * `[ -f ]` guard on every glob. `C` makes bracket ranges and glob order plain bytes.
507
+ */
508
+ export function buildRemoteClaudeTranscriptLocateCommand(ids, pane) {
509
+ const safeIds = safeClaudeTranscriptIds(ids);
510
+ if (safeIds.length === 0)
511
+ return `exit ${TRANSCRIPT_NOT_FOUND_EXIT}`;
512
+ const liveLines = liveClaudeIdLines(pane);
513
+ const script = [
514
+ 'LC_ALL=C',
515
+ 'export LC_ALL',
516
+ 'best=',
517
+ ...claudeConfigDirLines(),
518
+ // newest <id>: `best` becomes that id's transcript if it is newer than the current best.
519
+ // BusyBox's (and bash 3.2's) `-nt` compares whole seconds: a tie keeps the earlier id, the
520
+ // stored conversation, until the next write; only without a live id.
521
+ 'newest() {',
522
+ ' for f in "$cfg"/projects/*/"$1".jsonl; do',
523
+ ' [ -f "$f" ] || continue',
524
+ ' if [ -z "$best" ] || [ "$f" -nt "$best" ]; then best=$f; fi',
525
+ ' done',
526
+ '}',
527
+ ...liveLines,
528
+ ...(liveLines.length ? ['[ -z "$live" ] || newest "$live"'] : []),
529
+ 'if [ -z "$best" ]; then',
530
+ ` for id in ${safeIds.map((id) => shellescape(id)).join(' ')}; do newest "$id"; done`,
531
+ 'fi',
532
+ `[ -n "$best" ] || exit ${TRANSCRIPT_NOT_FOUND_EXIT}`,
533
+ 'printf \'\\0%s\\0\' "$best"',
534
+ ].join('\n');
535
+ return `sh -c ${shellescape(script)}`;
536
+ }
537
+ /** The path from {@link buildRemoteClaudeTranscriptLocateCommand} output; null when there is none. */
538
+ export function parseRemoteClaudeTranscriptLocate(stdout) {
539
+ const start = stdout.indexOf(0);
540
+ const end = start === -1 ? -1 : stdout.indexOf(0, start + 1);
541
+ if (end === -1)
542
+ return null;
543
+ const path = stdout.toString('utf8', start + 1, end);
544
+ return isRemoteClaudeTranscriptPath(path) ? path : null;
545
+ }
546
+ /**
547
+ * Find a remote claude session's main transcript in ONE ssh round trip (see
548
+ * {@link buildRemoteClaudeTranscriptLocateCommand}). `null` when it has none; an unreachable
549
+ * host, an ssh failure or broken output is a `RemoteFileAccessError`. Never wakes a host: a
550
+ * sleeping one is a connect timeout, like every other read in this module.
551
+ */
552
+ export async function remoteLocateClaudeTranscript(remote, ids, pane) {
553
+ assertNotUnderTest();
554
+ const command = buildRemoteEditHistoryCommand(remote, buildRemoteClaudeTranscriptLocateCommand(ids, pane));
555
+ let stdout;
556
+ try {
557
+ const result = await runWithRemoteSshLimit(() => execAsync(command, { timeout: REMOTE_READ_TIMEOUT_MS, maxBuffer: READ_BUFFER_SLACK_BYTES, encoding: 'buffer' }));
558
+ stdout = Buffer.isBuffer(result.stdout) ? result.stdout : Buffer.from(result.stdout);
559
+ }
560
+ catch (err) {
561
+ if (err.code === TRANSCRIPT_NOT_FOUND_EXIT)
562
+ return null;
563
+ throw new RemoteFileAccessError(`remote host ${remote.label || remote.host} unreachable: ${describeExecError(err)}`);
564
+ }
565
+ const path = parseRemoteClaudeTranscriptLocate(stdout);
566
+ if (!path)
567
+ throw new RemoteFileAccessError('unexpected output from the remote transcript lookup');
568
+ return path;
569
+ }
570
+ /** The requests a read script may take: the first per relPath, valid ones only. */
571
+ function validEditSourceRequests(requests) {
572
+ const byRelPath = new Map();
573
+ for (const request of requests) {
574
+ if (!request || typeof request.relPath !== 'string')
575
+ continue;
576
+ if (!EDIT_SOURCE_REL_PATH_PATTERN.test(request.relPath))
577
+ continue;
578
+ if (!isByteCount(request.offset))
579
+ continue;
580
+ if (request.len !== undefined && !isByteCount(request.len))
581
+ continue;
582
+ if (byRelPath.has(request.relPath))
583
+ continue;
584
+ byRelPath.set(request.relPath, request);
585
+ }
586
+ return byRelPath;
587
+ }
588
+ /**
589
+ * The ssh round trips a read takes. Up to `perRound` subagent requests fit one; more are sorted
590
+ * and cut into groups of `perRound`, or the ssh line would hit `E2BIG` and the session would
591
+ * stay `unavailable`: the cursors have no cap and the stored conversation is read first, so
592
+ * not even a `/clear` would get past it.
593
+ *
594
+ * ⚠️ The cuts are NAME RANGES, not only groups of requests. The script takes a file that no
595
+ * `case` line names for a new one (its tail, its meta), so a plain group would read every
596
+ * file of the other groups as new. Each round trip walks only the names between its cuts; the
597
+ * ranges cover every possible name exactly once, so a new file lands in one of them and the
598
+ * merged result is the one a single script would give (the fuzz test compares it with the
599
+ * local reader).
600
+ */
601
+ export function planRemoteEditSourceRounds(requests, perRound = EDIT_SOURCE_REQUESTS_PER_ROUND_TRIP) {
602
+ const valid = validEditSourceRequests(requests);
603
+ const subagents = [...valid.values()].filter((request) => request.relPath !== 'main');
604
+ if (subagents.length <= perRound)
605
+ return [{ requests: [...valid.values()], main: true, after: '', upTo: '' }];
606
+ const main = valid.get('main');
607
+ const fileName = (request) => request.relPath.slice('subagents/'.length);
608
+ subagents.sort((a, b) => (a.relPath < b.relPath ? -1 : 1));
609
+ const rounds = [];
610
+ for (let i = 0; i < subagents.length; i += perRound) {
611
+ const group = subagents.slice(i, i + perRound);
612
+ rounds.push({
613
+ requests: i === 0 && main ? [main, ...group] : group,
614
+ main: i === 0,
615
+ after: i === 0 ? '' : fileName(subagents[i - 1]),
616
+ upTo: i + perRound < subagents.length ? fileName(group[group.length - 1]) : '',
617
+ });
618
+ }
619
+ return rounds;
620
+ }
621
+ /**
622
+ * Script for one round trip of a read of a remote claude session's main transcript at
623
+ * `mainPath` and its subagent transcripts (`<mainPath without .jsonl>/subagents/agent-<id>.jsonl`),
624
+ * with exactly the local reader's rules (`readClaudeEditSources`):
625
+ *
626
+ * - a request without `len` reads from `offset` (clamped to the size);
627
+ * - a request with `len` is a block that ends at `offset + len`: short of budget, its end;
628
+ * - a file without a request (one the caller has not seen) reads its last bytes, and a new
629
+ * subagent's `.meta.json` (≤ {@link EDIT_SOURCE_META_MAX_BYTES}, outside the budget) comes
630
+ * along as its own record; with `onlyRequested` such files are left out.
631
+ *
632
+ * `budgetBytes` is shared by all transcript files, main first, then the subagents in byte
633
+ * order. A file that gets none of it still produces a zero-length record, because the caller
634
+ * needs its size. Exit {@link TRANSCRIPT_NOT_FOUND_EXIT} when `mainPath` is not a file. A read
635
+ * with more requests than fit one script is several of these ({@link planRemoteEditSourceRounds}).
636
+ *
637
+ * Output: `\0<transcriptId>\0`, then per record `<relPath>\0<size>\0<start>\0<len>\0`
638
+ * followed by exactly `<len>` raw bytes. Should a file shrink between `wc -c` and the read,
639
+ * the slice is NUL-padded to `<len>` so the framing never shifts.
640
+ *
641
+ * Inputs never reach the script unchecked: the path via {@link isRemoteClaudeTranscriptPath}
642
+ * (and shellescaped), relPaths via {@link EDIT_SOURCE_REL_PATH_PATTERN}, offsets and lengths as
643
+ * plain digits; anything invalid is dropped. A subagent file whose name the pattern would
644
+ * reject is skipped on the remote side too. Same `sh` + `LC_ALL=C` rules as the lookup.
645
+ */
646
+ export function buildRemoteClaudeEditSourcesCommand(mainPath, requests, budgetBytes, opts = {}) {
647
+ if (!isRemoteClaudeTranscriptPath(mainPath))
648
+ return `exit ${TRANSCRIPT_NOT_FOUND_EXIT}`;
649
+ const transcriptId = mainPath.slice(mainPath.lastIndexOf('/') + 1, -'.jsonl'.length);
650
+ const byRelPath = validEditSourceRequests(requests);
651
+ const budget = Number.isFinite(budgetBytes) ? Math.max(0, Math.floor(budgetBytes)) : 0;
652
+ const requestArgs = (request) => `r ${request.offset} ${request.len === undefined ? "''" : String(request.len)}`;
653
+ const { main: readsMain, after, upTo } = opts.round ?? { main: true, after: '', upTo: '' };
654
+ const main = byRelPath.get('main');
655
+ const mainLine = !readsMain
656
+ ? ''
657
+ : main
658
+ ? `emit main "$best" ${requestArgs(main)}`
659
+ : opts.onlyRequested
660
+ ? ''
661
+ : 'emit main "$best" t 0 \'\'';
662
+ // The names come from validated relPaths, and `$0` stays a string: every name starts `agent-`.
663
+ const rangeFilter = after || upTo
664
+ ? ` | awk -v after=${shellescape(after)} -v upto=${shellescape(upTo)} '$0 > after && (upto == "" || $0 <= upto)'`
665
+ : '';
666
+ const subagentCases = [...byRelPath.entries()]
667
+ .filter(([relPath]) => relPath !== 'main')
668
+ .map(([relPath, request]) => {
669
+ const name = relPath.slice('subagents/'.length);
670
+ return ` ${shellescape(name)}) emit "subagents/$b" "$f" ${requestArgs(request)} ;;`;
671
+ });
672
+ const newSubagent = opts.onlyRequested
673
+ ? [' *) ;;']
674
+ : [
675
+ ' *) emit "subagents/$b" "$f" t 0 \'\'',
676
+ ' m=${f%.jsonl}.meta.json',
677
+ ' if [ -f "$m" ]; then',
678
+ ' fsize "$m"',
679
+ ` mn=$s; [ "$mn" -le ${EDIT_SOURCE_META_MAX_BYTES} ] || mn=${EDIT_SOURCE_META_MAX_BYTES}`,
680
+ ' if [ "$mn" -le "$mbudget" ]; then',
681
+ ' mbudget=$((mbudget - mn))',
682
+ ' printf \'%s\\0%s\\0%s\\0%s\\0\' "subagents/${b%.jsonl}.meta.json" "$s" 0 "$mn"',
683
+ ' [ "$mn" -eq 0 ] || bytes "$m" 0 "$mn"',
684
+ ' fi',
685
+ ' fi ;;',
686
+ ];
687
+ const script = [
688
+ 'LC_ALL=C',
689
+ 'export LC_ALL',
690
+ `best=${shellescape(mainPath)}`,
691
+ `[ -f "$best" ] || exit ${TRANSCRIPT_NOT_FOUND_EXIT}`,
692
+ `printf '\\0%s\\0' ${shellescape(transcriptId)}`,
693
+ `budget=${budget}`,
694
+ `mbudget=${opts.metaBudget ?? EDIT_SOURCE_META_BUDGET_BYTES}`,
695
+ // Size via `wc -c <` (POSIX; BSD pads it with spaces, hence the tr).
696
+ 'fsize() {',
697
+ ' s=$(wc -c < "$1" 2>/dev/null | tr -d \' \\t\\n\')',
698
+ " case $s in ''|*[!0-9]*) s=0 ;; esac",
699
+ '}',
700
+ // Exactly $3 bytes of $1 from offset $2, NUL-padded if the file shrank meanwhile.
701
+ 'bytes() {',
702
+ ' { tail -c +$(($2 + 1)) "$1" 2>/dev/null | head -c "$3"; head -c "$3" /dev/zero; } | head -c "$3"',
703
+ '}',
704
+ // emit <relPath> <file> <r|t> <offset> <len|''>: r = a request, t = the tail of a new file.
705
+ 'emit() {',
706
+ ' fsize "$2"',
707
+ ' if [ "$3" = r ] && [ -n "$5" ]; then',
708
+ ' bs=$4; [ "$bs" -le "$s" ] || bs=$s',
709
+ ' be=$(($4 + $5)); [ "$be" -le "$s" ] || be=$s',
710
+ ' n=$((be - bs)); [ "$n" -le "$budget" ] || n=$budget',
711
+ ' start=$((be - n))',
712
+ ' elif [ "$3" = r ]; then',
713
+ ' start=$4; [ "$start" -le "$s" ] || start=$s',
714
+ ' n=$((s - start)); [ "$n" -le "$budget" ] || n=$budget',
715
+ ' else',
716
+ ' n=$s; [ "$n" -le "$budget" ] || n=$budget',
717
+ ' start=$((s - n))',
718
+ ' fi',
719
+ ' budget=$((budget - n))',
720
+ ' printf \'%s\\0%s\\0%s\\0%s\\0\' "$1" "$s" "$start" "$n"',
721
+ ' [ "$n" -eq 0 ] || bytes "$2" "$start" "$n"',
722
+ '}',
723
+ // The valid names, one per line in byte order (the glob's order under `C`). Nothing but
724
+ // `[A-Za-z0-9_.-]` is left, so the unquoted `$(…)` below splits on them and globs nothing.
725
+ // A function, because bash 3.2 (macOS `sh`) cannot parse a `case` inside `$(…)`.
726
+ 'subagent_names() {',
727
+ ' for f in "${best%.jsonl}"/subagents/agent-*.jsonl; do',
728
+ ' b=${f##*/}',
729
+ ' case $b in agent-.jsonl|agent-*[!A-Za-z0-9_-]*.jsonl) continue ;; esac',
730
+ ' printf \'%s\\n\' "$b"',
731
+ ' done',
732
+ '}',
733
+ mainLine,
734
+ `for b in $(subagent_names${rangeFilter}); do`,
735
+ ' f=${best%.jsonl}/subagents/$b',
736
+ ' [ -f "$f" ] || continue',
737
+ ' case $b in',
738
+ ...subagentCases,
739
+ ...newSubagent,
740
+ ' esac',
741
+ 'done',
742
+ ].join('\n');
743
+ return `sh -c ${shellescape(script)}`;
744
+ }
745
+ /**
746
+ * Parse {@link buildRemoteClaudeEditSourcesCommand} output, byte-exact on the Buffer (a chunk
747
+ * may end mid UTF-8 sequence, so nothing here measures decoded strings). Everything before
748
+ * the first NUL is rc-file chatter. `null` = protocol broken: a missing or malformed header
749
+ * field, an unknown relPath, a slice outside the file or a body shorter than its length.
750
+ */
751
+ export function parseRemoteClaudeEditSources(stdout) {
752
+ let pos = stdout.indexOf(0);
753
+ if (pos === -1)
754
+ return null;
755
+ pos += 1;
756
+ const readField = () => {
757
+ const end = stdout.indexOf(0, pos);
758
+ if (end === -1)
759
+ return null;
760
+ const field = stdout.toString('utf8', pos, end);
761
+ pos = end + 1;
762
+ return field;
763
+ };
764
+ const readNumber = () => {
765
+ const field = readField();
766
+ if (field === null || !/^\d+$/.test(field))
767
+ return null;
768
+ const value = Number(field);
769
+ return Number.isSafeInteger(value) ? value : null;
770
+ };
771
+ const transcriptId = readField();
772
+ if (!transcriptId || !CLAUDE_TRANSCRIPT_ID_PATTERN.test(transcriptId))
773
+ return null;
774
+ const files = [];
775
+ const metas = {};
776
+ while (pos < stdout.length) {
777
+ const relPath = readField();
778
+ const size = readNumber();
779
+ const startOffset = readNumber();
780
+ const len = readNumber();
781
+ if (relPath === null || size === null || startOffset === null || len === null)
782
+ return null;
783
+ if (startOffset + len > size || pos + len > stdout.length)
784
+ return null;
785
+ const chunk = stdout.subarray(pos, pos + len);
786
+ pos += len;
787
+ const meta = EDIT_SOURCE_META_REL_PATH_PATTERN.exec(relPath);
788
+ if (meta) {
789
+ metas[meta[1]] = chunk.toString('utf8');
790
+ }
791
+ else if (EDIT_SOURCE_REL_PATH_PATTERN.test(relPath)) {
792
+ files.push({ relPath, size, startOffset, chunk });
793
+ }
794
+ else {
795
+ return null;
796
+ }
797
+ }
798
+ return { transcriptId, files, metas };
799
+ }
800
+ /**
801
+ * Run the round trips of a read ({@link planRemoteEditSourceRounds}) one after the other and
802
+ * merge them into what one read returns. Budget and meta budget carry over: a later round trip
803
+ * gets what the earlier ones left, and still lists its files, because a requested file missing
804
+ * from the result counts as deleted and loses its cursor. So a read is all or nothing: a failed
805
+ * round trip fails it, and nothing of it reaches the store.
806
+ */
807
+ export async function readRemoteEditSourceRounds(mainPath, requests, budgetBytes, opts, run, perRound) {
808
+ let budget = Number.isFinite(budgetBytes) ? Math.max(0, Math.floor(budgetBytes)) : 0;
809
+ let metaBudget = EDIT_SOURCE_META_BUDGET_BYTES;
810
+ const merged = { transcriptId: '', files: [], metas: {} };
811
+ for (const round of planRemoteEditSourceRounds(requests, perRound)) {
812
+ const stdout = await run(buildRemoteClaudeEditSourcesCommand(mainPath, round.requests, budget, { ...opts, round, metaBudget }), budget + metaBudget + EDIT_SOURCE_HEADER_SLACK_BYTES);
813
+ if (!stdout)
814
+ return null;
815
+ const parsed = parseRemoteClaudeEditSources(stdout);
816
+ if (!parsed || !mainPath.endsWith(`/${parsed.transcriptId}.jsonl`)) {
817
+ throw new RemoteFileAccessError('unexpected output from the remote edit-history read');
818
+ }
819
+ merged.transcriptId = parsed.transcriptId;
820
+ merged.files.push(...parsed.files);
821
+ Object.assign(merged.metas, parsed.metas);
822
+ for (const file of parsed.files)
823
+ budget -= file.chunk.length;
824
+ for (const text of Object.values(parsed.metas))
825
+ metaBudget = Math.max(0, metaBudget - Buffer.byteLength(text));
826
+ }
827
+ return merged;
828
+ }
829
+ /**
830
+ * Read a remote claude session's transcripts (see {@link readRemoteEditSourceRounds}), the
831
+ * remote twin of `readClaudeEditSources`. `null` when `mainPath` does not exist; an unreachable
832
+ * host, an ssh failure or broken output is a `RemoteFileAccessError`. Each round trip takes its
833
+ * own slot of the ssh limiter. Never wakes.
834
+ */
835
+ export async function remoteReadClaudeEditSources(remote, mainPath, requests, budgetBytes, opts = {}) {
836
+ assertNotUnderTest();
837
+ return readRemoteEditSourceRounds(mainPath, requests, budgetBytes, opts, async (command, maxBytes) => {
838
+ try {
839
+ const result = await runWithRemoteSshLimit(() => execAsync(buildRemoteEditHistoryCommand(remote, command), {
840
+ timeout: remoteEditSourcesTimeoutMs(maxBytes),
841
+ maxBuffer: maxBytes,
842
+ encoding: 'buffer',
843
+ }));
844
+ return Buffer.isBuffer(result.stdout) ? result.stdout : Buffer.from(result.stdout);
845
+ }
846
+ catch (err) {
847
+ if (err.code === TRANSCRIPT_NOT_FOUND_EXIT)
848
+ return null;
849
+ throw new RemoteFileAccessError(`remote host ${remote.label || remote.host} unreachable: ${describeExecError(err)}`);
850
+ }
851
+ });
852
+ }
355
853
  /**
356
854
  * Command that writes a remote file's bytes to stdout.
357
855
  *
@@ -1 +1 @@
1
- {"version":3,"file":"remote-files.js","sourceRoot":"","sources":["../src/remote-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote-files.js","sourceRoot":"","sources":["../src/remote-files.ts"],"names":[],"mappings":"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"}