@getpaseo/server 0.1.63 → 0.1.65

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 (265) hide show
  1. package/dist/server/client/daemon-client-transport-types.d.ts +2 -0
  2. package/dist/server/client/daemon-client-transport-types.d.ts.map +1 -1
  3. package/dist/server/client/daemon-client-websocket-transport.d.ts +2 -1
  4. package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -1
  5. package/dist/server/client/daemon-client-websocket-transport.js +4 -4
  6. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -1
  7. package/dist/server/client/daemon-client.d.ts +30 -20
  8. package/dist/server/client/daemon-client.d.ts.map +1 -1
  9. package/dist/server/client/daemon-client.js +206 -98
  10. package/dist/server/client/daemon-client.js.map +1 -1
  11. package/dist/server/client/terminal-stream-router.d.ts +24 -0
  12. package/dist/server/client/terminal-stream-router.d.ts.map +1 -0
  13. package/dist/server/client/terminal-stream-router.js +100 -0
  14. package/dist/server/client/terminal-stream-router.js.map +1 -0
  15. package/dist/server/server/agent/activity-curator.d.ts +6 -3
  16. package/dist/server/server/agent/activity-curator.d.ts.map +1 -1
  17. package/dist/server/server/agent/activity-curator.js +45 -138
  18. package/dist/server/server/agent/activity-curator.js.map +1 -1
  19. package/dist/server/server/agent/agent-manager.d.ts +3 -14
  20. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  21. package/dist/server/server/agent/agent-manager.js +75 -140
  22. package/dist/server/server/agent/agent-manager.js.map +1 -1
  23. package/dist/server/server/agent/agent-metadata-generator.d.ts +0 -5
  24. package/dist/server/server/agent/agent-metadata-generator.d.ts.map +1 -1
  25. package/dist/server/server/agent/agent-metadata-generator.js +3 -93
  26. package/dist/server/server/agent/agent-metadata-generator.js.map +1 -1
  27. package/dist/server/server/agent/agent-sdk-types.d.ts +15 -1
  28. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  29. package/dist/server/server/agent/agent-stream-coalescer.d.ts +1 -1
  30. package/dist/server/server/agent/agent-stream-coalescer.d.ts.map +1 -1
  31. package/dist/server/server/agent/agent-stream-coalescer.js +1 -1
  32. package/dist/server/server/agent/agent-stream-coalescer.js.map +1 -1
  33. package/dist/server/server/agent/agent-timeline-store.d.ts.map +1 -1
  34. package/dist/server/server/agent/agent-timeline-store.js +29 -32
  35. package/dist/server/server/agent/agent-timeline-store.js.map +1 -1
  36. package/dist/server/server/agent/foreground-run-state.d.ts +50 -0
  37. package/dist/server/server/agent/foreground-run-state.d.ts.map +1 -0
  38. package/dist/server/server/agent/foreground-run-state.js +162 -0
  39. package/dist/server/server/agent/foreground-run-state.js.map +1 -0
  40. package/dist/server/server/agent/mcp-server.d.ts +5 -3
  41. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  42. package/dist/server/server/agent/mcp-server.js +110 -99
  43. package/dist/server/server/agent/mcp-server.js.map +1 -1
  44. package/dist/server/server/agent/mcp-shared.d.ts.map +1 -1
  45. package/dist/server/server/agent/mcp-shared.js +7 -1
  46. package/dist/server/server/agent/mcp-shared.js.map +1 -1
  47. package/dist/server/server/agent/prompt-attachments.d.ts +4 -3
  48. package/dist/server/server/agent/prompt-attachments.d.ts.map +1 -1
  49. package/dist/server/server/agent/prompt-attachments.js +43 -4
  50. package/dist/server/server/agent/prompt-attachments.js.map +1 -1
  51. package/dist/server/server/agent/provider-manifest.d.ts.map +1 -1
  52. package/dist/server/server/agent/provider-manifest.js +7 -0
  53. package/dist/server/server/agent/provider-manifest.js.map +1 -1
  54. package/dist/server/server/agent/providers/acp-agent.d.ts +38 -1
  55. package/dist/server/server/agent/providers/acp-agent.d.ts.map +1 -1
  56. package/dist/server/server/agent/providers/acp-agent.js +257 -140
  57. package/dist/server/server/agent/providers/acp-agent.js.map +1 -1
  58. package/dist/server/server/agent/providers/claude/sidechain-tracker.d.ts.map +1 -1
  59. package/dist/server/server/agent/providers/claude/sidechain-tracker.js +1 -1
  60. package/dist/server/server/agent/providers/claude/sidechain-tracker.js.map +1 -1
  61. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -1
  62. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +68 -198
  63. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
  64. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  65. package/dist/server/server/agent/providers/claude-agent.js +52 -102
  66. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  67. package/dist/server/server/agent/providers/codex/tool-call-mapper.d.ts.map +1 -1
  68. package/dist/server/server/agent/providers/codex/tool-call-mapper.js +125 -141
  69. package/dist/server/server/agent/providers/codex/tool-call-mapper.js.map +1 -1
  70. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts +36 -6
  71. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  72. package/dist/server/server/agent/providers/codex-app-server-agent.js +374 -219
  73. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  74. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts +6 -2
  75. package/dist/server/server/agent/providers/mock-load-test-agent.d.ts.map +1 -1
  76. package/dist/server/server/agent/providers/mock-load-test-agent.js +294 -113
  77. package/dist/server/server/agent/providers/mock-load-test-agent.js.map +1 -1
  78. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts +1 -1
  79. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.d.ts.map +1 -1
  80. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js +94 -2
  81. package/dist/server/server/agent/providers/opencode/tool-call-detail-parser.js.map +1 -1
  82. package/dist/server/server/agent/providers/opencode/tool-call-mapper.d.ts.map +1 -1
  83. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js +24 -115
  84. package/dist/server/server/agent/providers/opencode/tool-call-mapper.js.map +1 -1
  85. package/dist/server/server/agent/providers/opencode-agent.d.ts +102 -1
  86. package/dist/server/server/agent/providers/opencode-agent.d.ts.map +1 -1
  87. package/dist/server/server/agent/providers/opencode-agent.js +416 -158
  88. package/dist/server/server/agent/providers/opencode-agent.js.map +1 -1
  89. package/dist/server/server/agent/providers/provider-runner.d.ts +27 -0
  90. package/dist/server/server/agent/providers/provider-runner.d.ts.map +1 -0
  91. package/dist/server/server/agent/providers/provider-runner.js +80 -0
  92. package/dist/server/server/agent/providers/provider-runner.js.map +1 -0
  93. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +6 -3
  94. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  95. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts +2 -0
  96. package/dist/server/server/agent/providers/tool-call-mapper-utils.d.ts.map +1 -1
  97. package/dist/server/server/agent/providers/tool-call-mapper-utils.js +31 -0
  98. package/dist/server/server/agent/providers/tool-call-mapper-utils.js.map +1 -1
  99. package/dist/server/server/agent/timeline-projection.d.ts +21 -5
  100. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -1
  101. package/dist/server/server/agent/timeline-projection.js +59 -9
  102. package/dist/server/server/agent/timeline-projection.js.map +1 -1
  103. package/dist/server/server/auth.d.ts +25 -0
  104. package/dist/server/server/auth.d.ts.map +1 -0
  105. package/dist/server/server/auth.js +93 -0
  106. package/dist/server/server/auth.js.map +1 -0
  107. package/dist/server/server/bootstrap.d.ts +3 -1
  108. package/dist/server/server/bootstrap.d.ts.map +1 -1
  109. package/dist/server/server/bootstrap.js +87 -30
  110. package/dist/server/server/bootstrap.js.map +1 -1
  111. package/dist/server/server/config.d.ts.map +1 -1
  112. package/dist/server/server/config.js +11 -0
  113. package/dist/server/server/config.js.map +1 -1
  114. package/dist/server/server/exports.d.ts +7 -1
  115. package/dist/server/server/exports.d.ts.map +1 -1
  116. package/dist/server/server/exports.js +6 -1
  117. package/dist/server/server/exports.js.map +1 -1
  118. package/dist/server/server/file-explorer/service.d.ts +10 -0
  119. package/dist/server/server/file-explorer/service.d.ts.map +1 -1
  120. package/dist/server/server/file-explorer/service.js +38 -4
  121. package/dist/server/server/file-explorer/service.js.map +1 -1
  122. package/dist/server/server/index.js +9 -6
  123. package/dist/server/server/index.js.map +1 -1
  124. package/dist/server/server/logger.d.ts.map +1 -1
  125. package/dist/server/server/logger.js +15 -1
  126. package/dist/server/server/logger.js.map +1 -1
  127. package/dist/server/server/pagination/cursor.d.ts +16 -0
  128. package/dist/server/server/pagination/cursor.d.ts.map +1 -0
  129. package/dist/server/server/pagination/cursor.js +62 -0
  130. package/dist/server/server/pagination/cursor.js.map +1 -0
  131. package/dist/server/server/pagination/sortable-pager.d.ts +24 -0
  132. package/dist/server/server/pagination/sortable-pager.d.ts.map +1 -0
  133. package/dist/server/server/pagination/sortable-pager.js +68 -0
  134. package/dist/server/server/pagination/sortable-pager.js.map +1 -0
  135. package/dist/server/server/paseo-worktree-archive-service.d.ts +3 -1
  136. package/dist/server/server/paseo-worktree-archive-service.d.ts.map +1 -1
  137. package/dist/server/server/paseo-worktree-archive-service.js +61 -53
  138. package/dist/server/server/paseo-worktree-archive-service.js.map +1 -1
  139. package/dist/server/server/paseo-worktree-service.d.ts +13 -0
  140. package/dist/server/server/paseo-worktree-service.d.ts.map +1 -1
  141. package/dist/server/server/paseo-worktree-service.js +72 -3
  142. package/dist/server/server/paseo-worktree-service.js.map +1 -1
  143. package/dist/server/server/persisted-config.d.ts +25 -0
  144. package/dist/server/server/persisted-config.d.ts.map +1 -1
  145. package/dist/server/server/persisted-config.js +9 -0
  146. package/dist/server/server/persisted-config.js.map +1 -1
  147. package/dist/server/server/relay-transport.d.ts.map +1 -1
  148. package/dist/server/server/relay-transport.js +16 -4
  149. package/dist/server/server/relay-transport.js.map +1 -1
  150. package/dist/server/server/resolve-worktree-creation-intent.d.ts +0 -10
  151. package/dist/server/server/resolve-worktree-creation-intent.d.ts.map +1 -1
  152. package/dist/server/server/resolve-worktree-creation-intent.js +1 -45
  153. package/dist/server/server/resolve-worktree-creation-intent.js.map +1 -1
  154. package/dist/server/server/script-status-projection.d.ts +6 -1
  155. package/dist/server/server/script-status-projection.d.ts.map +1 -1
  156. package/dist/server/server/script-status-projection.js +12 -3
  157. package/dist/server/server/script-status-projection.js.map +1 -1
  158. package/dist/server/server/session.d.ts +19 -51
  159. package/dist/server/server/session.d.ts.map +1 -1
  160. package/dist/server/server/session.js +354 -1069
  161. package/dist/server/server/session.js.map +1 -1
  162. package/dist/server/server/websocket-server.d.ts +4 -2
  163. package/dist/server/server/websocket-server.d.ts.map +1 -1
  164. package/dist/server/server/websocket-server.js +65 -12
  165. package/dist/server/server/websocket-server.js.map +1 -1
  166. package/dist/server/server/workspace-directory.d.ts +69 -0
  167. package/dist/server/server/workspace-directory.d.ts.map +1 -0
  168. package/dist/server/server/workspace-directory.js +229 -0
  169. package/dist/server/server/workspace-directory.js.map +1 -0
  170. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -1
  171. package/dist/server/server/worktree-bootstrap.js +6 -2
  172. package/dist/server/server/worktree-bootstrap.js.map +1 -1
  173. package/dist/server/server/worktree-core.d.ts +2 -0
  174. package/dist/server/server/worktree-core.d.ts.map +1 -1
  175. package/dist/server/server/worktree-core.js.map +1 -1
  176. package/dist/server/server/worktree-errors.d.ts +1 -1
  177. package/dist/server/server/worktree-errors.d.ts.map +1 -1
  178. package/dist/server/server/worktree-errors.js +1 -4
  179. package/dist/server/server/worktree-errors.js.map +1 -1
  180. package/dist/server/server/worktree-session.d.ts +47 -20
  181. package/dist/server/server/worktree-session.d.ts.map +1 -1
  182. package/dist/server/server/worktree-session.js +68 -25
  183. package/dist/server/server/worktree-session.js.map +1 -1
  184. package/dist/server/shared/binary-frames/file-transfer.d.ts +56 -0
  185. package/dist/server/shared/binary-frames/file-transfer.d.ts.map +1 -0
  186. package/dist/server/shared/binary-frames/file-transfer.js +108 -0
  187. package/dist/server/shared/binary-frames/file-transfer.js.map +1 -0
  188. package/dist/server/shared/binary-frames/index.d.ts +3 -0
  189. package/dist/server/shared/binary-frames/index.d.ts.map +1 -0
  190. package/dist/server/shared/binary-frames/index.js +3 -0
  191. package/dist/server/shared/binary-frames/index.js.map +1 -0
  192. package/dist/server/shared/{terminal-stream-protocol.d.ts → binary-frames/terminal.d.ts} +2 -2
  193. package/dist/server/shared/binary-frames/terminal.d.ts.map +1 -0
  194. package/dist/server/shared/{terminal-stream-protocol.js → binary-frames/terminal.js} +2 -2
  195. package/dist/server/shared/binary-frames/terminal.js.map +1 -0
  196. package/dist/server/shared/client-capabilities.d.ts +5 -0
  197. package/dist/server/shared/client-capabilities.d.ts.map +1 -0
  198. package/dist/server/shared/client-capabilities.js +4 -0
  199. package/dist/server/shared/client-capabilities.js.map +1 -0
  200. package/dist/server/shared/connection-offer.d.ts +8 -0
  201. package/dist/server/shared/connection-offer.d.ts.map +1 -1
  202. package/dist/server/shared/connection-offer.js +35 -0
  203. package/dist/server/shared/connection-offer.js.map +1 -1
  204. package/dist/server/shared/daemon-endpoints.d.ts +16 -1
  205. package/dist/server/shared/daemon-endpoints.d.ts.map +1 -1
  206. package/dist/server/shared/daemon-endpoints.js +65 -6
  207. package/dist/server/shared/daemon-endpoints.js.map +1 -1
  208. package/dist/server/shared/host-connection-schema.d.ts +23 -0
  209. package/dist/server/shared/host-connection-schema.d.ts.map +1 -0
  210. package/dist/server/shared/host-connection-schema.js +9 -0
  211. package/dist/server/shared/host-connection-schema.js.map +1 -0
  212. package/dist/server/shared/messages.d.ts +3242 -535
  213. package/dist/server/shared/messages.d.ts.map +1 -1
  214. package/dist/server/shared/messages.js +73 -34
  215. package/dist/server/shared/messages.js.map +1 -1
  216. package/dist/server/terminal/terminal-manager-factory.d.ts +7 -0
  217. package/dist/server/terminal/terminal-manager-factory.d.ts.map +1 -0
  218. package/dist/server/terminal/terminal-manager-factory.js +13 -0
  219. package/dist/server/terminal/terminal-manager-factory.js.map +1 -0
  220. package/dist/server/terminal/terminal-manager.d.ts +7 -1
  221. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  222. package/dist/server/terminal/terminal-manager.js +14 -1
  223. package/dist/server/terminal/terminal-manager.js.map +1 -1
  224. package/dist/server/terminal/terminal-session-controller.d.ts +63 -0
  225. package/dist/server/terminal/terminal-session-controller.d.ts.map +1 -0
  226. package/dist/server/terminal/terminal-session-controller.js +615 -0
  227. package/dist/server/terminal/terminal-session-controller.js.map +1 -0
  228. package/dist/server/terminal/terminal-ts-loader.mjs +20 -0
  229. package/dist/server/terminal/terminal-worker-process.d.ts +2 -0
  230. package/dist/server/terminal/terminal-worker-process.d.ts.map +1 -0
  231. package/dist/server/terminal/terminal-worker-process.js +221 -0
  232. package/dist/server/terminal/terminal-worker-process.js.map +1 -0
  233. package/dist/server/terminal/terminal-worker-protocol.d.ts +113 -0
  234. package/dist/server/terminal/terminal-worker-protocol.d.ts.map +1 -0
  235. package/dist/server/terminal/terminal-worker-protocol.js +2 -0
  236. package/dist/server/terminal/terminal-worker-protocol.js.map +1 -0
  237. package/dist/server/terminal/terminal.d.ts +7 -0
  238. package/dist/server/terminal/terminal.d.ts.map +1 -1
  239. package/dist/server/terminal/terminal.js +22 -9
  240. package/dist/server/terminal/terminal.js.map +1 -1
  241. package/dist/server/terminal/worker-terminal-manager.d.ts +19 -0
  242. package/dist/server/terminal/worker-terminal-manager.d.ts.map +1 -0
  243. package/dist/server/terminal/worker-terminal-manager.js +466 -0
  244. package/dist/server/terminal/worker-terminal-manager.js.map +1 -0
  245. package/dist/server/utils/directory-suggestions.d.ts.map +1 -1
  246. package/dist/server/utils/directory-suggestions.js +10 -1
  247. package/dist/server/utils/directory-suggestions.js.map +1 -1
  248. package/dist/server/utils/process-tree.d.ts +25 -0
  249. package/dist/server/utils/process-tree.d.ts.map +1 -0
  250. package/dist/server/utils/process-tree.js +96 -0
  251. package/dist/server/utils/process-tree.js.map +1 -0
  252. package/dist/server/utils/windows-command.d.ts.map +1 -1
  253. package/dist/server/utils/windows-command.js +5 -1
  254. package/dist/server/utils/windows-command.js.map +1 -1
  255. package/dist/server/utils/worktree-metadata.d.ts +44 -0
  256. package/dist/server/utils/worktree-metadata.d.ts.map +1 -1
  257. package/dist/server/utils/worktree-metadata.js +58 -0
  258. package/dist/server/utils/worktree-metadata.js.map +1 -1
  259. package/dist/server/utils/worktree.d.ts +14 -2
  260. package/dist/server/utils/worktree.d.ts.map +1 -1
  261. package/dist/server/utils/worktree.js +22 -13
  262. package/dist/server/utils/worktree.js.map +1 -1
  263. package/package.json +5 -4
  264. package/dist/server/shared/terminal-stream-protocol.d.ts.map +0 -1
  265. package/dist/server/shared/terminal-stream-protocol.js.map +0 -1
@@ -0,0 +1,615 @@
1
+ import { killTerminalsUnderPath as killWorktreeTerminalsUnderPath } from "../server/paseo-worktree-archive-service.js";
2
+ import { TerminalStreamOpcode, decodeTerminalResizePayload, encodeTerminalSnapshotPayload, encodeTerminalStreamFrame, } from "../shared/binary-frames/index.js";
3
+ import { TerminalOutputCoalescer } from "./terminal-output-coalescer.js";
4
+ const MAX_TERMINAL_STREAM_SLOTS = 256;
5
+ const TERMINAL_MESSAGE_TYPES = new Set([
6
+ "subscribe_terminals_request",
7
+ "unsubscribe_terminals_request",
8
+ "list_terminals_request",
9
+ "create_terminal_request",
10
+ "subscribe_terminal_request",
11
+ "unsubscribe_terminal_request",
12
+ "terminal_input",
13
+ "kill_terminal_request",
14
+ "capture_terminal_request",
15
+ ]);
16
+ export class TerminalSessionController {
17
+ constructor(options) {
18
+ this.subscribedDirectories = new Set();
19
+ this.unsubscribeTerminalsChanged = null;
20
+ this.exitSubscriptions = new Map();
21
+ this.activeStreams = new Map();
22
+ this.idToSlot = new Map();
23
+ this.nextSlot = 0;
24
+ this.terminalManager = options.terminalManager;
25
+ this.emit = options.emit;
26
+ this.emitBinary = options.emitBinary;
27
+ this.hasBinaryChannel = options.hasBinaryChannel;
28
+ this.isPathWithinRoot = options.isPathWithinRoot;
29
+ this.sessionLogger = options.sessionLogger;
30
+ }
31
+ start() {
32
+ if (!this.terminalManager) {
33
+ return;
34
+ }
35
+ this.unsubscribeTerminalsChanged = this.terminalManager.subscribeTerminalsChanged((event) => this.handleTerminalsChanged(event));
36
+ }
37
+ getMetrics() {
38
+ return {
39
+ directorySubscriptionCount: this.subscribedDirectories.size,
40
+ streamSubscriptionCount: this.activeStreams.size,
41
+ };
42
+ }
43
+ dispatch(msg) {
44
+ if (!isTerminalMessage(msg)) {
45
+ return undefined;
46
+ }
47
+ switch (msg.type) {
48
+ case "subscribe_terminals_request":
49
+ this.handleSubscribeTerminalsRequest(msg);
50
+ return undefined;
51
+ case "unsubscribe_terminals_request":
52
+ this.handleUnsubscribeTerminalsRequest(msg);
53
+ return undefined;
54
+ case "list_terminals_request":
55
+ return this.handleListTerminalsRequest(msg);
56
+ case "create_terminal_request":
57
+ return this.handleCreateTerminalRequest(msg);
58
+ case "subscribe_terminal_request":
59
+ return this.handleSubscribeTerminalRequest(msg);
60
+ case "unsubscribe_terminal_request":
61
+ this.handleUnsubscribeTerminalRequest(msg);
62
+ return undefined;
63
+ case "terminal_input":
64
+ this.handleTerminalInput(msg);
65
+ return undefined;
66
+ case "kill_terminal_request":
67
+ return this.handleKillTerminalRequest(msg);
68
+ case "capture_terminal_request":
69
+ return this.handleCaptureTerminalRequest(msg);
70
+ }
71
+ }
72
+ handleBinaryFrame(frame) {
73
+ const activeStream = this.activeStreams.get(frame.slot);
74
+ if (!activeStream || !this.terminalManager) {
75
+ return;
76
+ }
77
+ const terminal = this.terminalManager.getTerminal(activeStream.terminalId);
78
+ if (!terminal) {
79
+ this.detachStream(activeStream.terminalId, { emitExit: true });
80
+ return;
81
+ }
82
+ switch (frame.opcode) {
83
+ case TerminalStreamOpcode.Input: {
84
+ if (frame.payload.byteLength === 0) {
85
+ return;
86
+ }
87
+ const text = Buffer.from(frame.payload).toString("utf8");
88
+ if (!text) {
89
+ return;
90
+ }
91
+ terminal.send({ type: "input", data: text });
92
+ return;
93
+ }
94
+ case TerminalStreamOpcode.Resize: {
95
+ const resize = decodeTerminalResizePayload(frame.payload);
96
+ if (!resize) {
97
+ return;
98
+ }
99
+ terminal.send({ type: "resize", rows: resize.rows, cols: resize.cols });
100
+ return;
101
+ }
102
+ default:
103
+ return;
104
+ }
105
+ }
106
+ killTerminalForClose(terminalId) {
107
+ if (!this.terminalManager) {
108
+ return { terminalId, success: false };
109
+ }
110
+ this.killTracked(terminalId, { emitExit: true });
111
+ return { terminalId, success: true };
112
+ }
113
+ async killTerminalsUnderPath(rootPath) {
114
+ return killWorktreeTerminalsUnderPath({
115
+ isPathWithinRoot: (pathRoot, candidatePath) => this.isPathWithinRoot(pathRoot, candidatePath),
116
+ killTrackedTerminal: (terminalId, options) => this.killTracked(terminalId, options),
117
+ detachTerminalStream: (terminalId, options) => void this.detachStream(terminalId, options),
118
+ sessionLogger: this.sessionLogger,
119
+ terminalManager: this.terminalManager,
120
+ }, rootPath);
121
+ }
122
+ dispose() {
123
+ if (this.unsubscribeTerminalsChanged) {
124
+ this.unsubscribeTerminalsChanged();
125
+ this.unsubscribeTerminalsChanged = null;
126
+ }
127
+ this.subscribedDirectories.clear();
128
+ for (const unsubscribeExit of this.exitSubscriptions.values()) {
129
+ unsubscribeExit();
130
+ }
131
+ this.exitSubscriptions.clear();
132
+ for (const terminalId of Array.from(this.idToSlot.keys())) {
133
+ this.detachStream(terminalId, { emitExit: false });
134
+ }
135
+ }
136
+ ensureExitSubscription(terminal) {
137
+ if (this.exitSubscriptions.has(terminal.id)) {
138
+ return;
139
+ }
140
+ const unsubscribeExit = terminal.onExit(() => {
141
+ this.handleTerminalExited(terminal.id);
142
+ });
143
+ this.exitSubscriptions.set(terminal.id, unsubscribeExit);
144
+ }
145
+ handleTerminalExited(terminalId) {
146
+ const unsubscribeExit = this.exitSubscriptions.get(terminalId);
147
+ if (unsubscribeExit) {
148
+ unsubscribeExit();
149
+ this.exitSubscriptions.delete(terminalId);
150
+ }
151
+ this.detachStream(terminalId, { emitExit: true });
152
+ }
153
+ emitTerminalsChangedSnapshot(input) {
154
+ this.emit({
155
+ type: "terminals_changed",
156
+ payload: {
157
+ cwd: input.cwd,
158
+ terminals: input.terminals,
159
+ },
160
+ });
161
+ }
162
+ toTerminalInfo(terminal) {
163
+ const title = terminal.getTitle();
164
+ return {
165
+ id: terminal.id,
166
+ name: terminal.name,
167
+ ...(title ? { title } : {}),
168
+ };
169
+ }
170
+ handleTerminalsChanged(event) {
171
+ if (!this.subscribedDirectories.has(event.cwd)) {
172
+ return;
173
+ }
174
+ this.emitTerminalsChangedSnapshot({
175
+ cwd: event.cwd,
176
+ terminals: event.terminals.map((terminal) => Object.assign({ id: terminal.id, name: terminal.name }, terminal.title ? { title: terminal.title } : {})),
177
+ });
178
+ }
179
+ handleSubscribeTerminalsRequest(msg) {
180
+ this.subscribedDirectories.add(msg.cwd);
181
+ void this.emitInitialTerminalsChangedSnapshot(msg.cwd);
182
+ }
183
+ handleUnsubscribeTerminalsRequest(msg) {
184
+ this.subscribedDirectories.delete(msg.cwd);
185
+ }
186
+ async emitInitialTerminalsChangedSnapshot(cwd) {
187
+ if (!this.terminalManager || !this.subscribedDirectories.has(cwd)) {
188
+ return;
189
+ }
190
+ try {
191
+ const terminals = await this.terminalManager.getTerminals(cwd);
192
+ for (const terminal of terminals) {
193
+ this.ensureExitSubscription(terminal);
194
+ }
195
+ if (!this.subscribedDirectories.has(cwd)) {
196
+ return;
197
+ }
198
+ this.emitTerminalsChangedSnapshot({
199
+ cwd,
200
+ terminals: terminals.map((terminal) => this.toTerminalInfo(terminal)),
201
+ });
202
+ }
203
+ catch (error) {
204
+ this.sessionLogger.warn({ err: error, cwd }, "Failed to emit initial terminal snapshot");
205
+ }
206
+ }
207
+ async handleListTerminalsRequest(msg) {
208
+ if (!this.terminalManager) {
209
+ this.emit({
210
+ type: "list_terminals_response",
211
+ payload: {
212
+ ...(msg.cwd ? { cwd: msg.cwd } : {}),
213
+ terminals: [],
214
+ requestId: msg.requestId,
215
+ },
216
+ });
217
+ return;
218
+ }
219
+ try {
220
+ const terminals = typeof msg.cwd === "string"
221
+ ? await this.terminalManager.getTerminals(msg.cwd)
222
+ : await this.getAllTerminalSessions();
223
+ for (const terminal of terminals) {
224
+ this.ensureExitSubscription(terminal);
225
+ }
226
+ this.emit({
227
+ type: "list_terminals_response",
228
+ payload: {
229
+ ...(msg.cwd ? { cwd: msg.cwd } : {}),
230
+ terminals: terminals.map((terminal) => this.toTerminalInfo(terminal)),
231
+ requestId: msg.requestId,
232
+ },
233
+ });
234
+ }
235
+ catch (error) {
236
+ this.sessionLogger.error({ err: error, cwd: msg.cwd }, "Failed to list terminals");
237
+ this.emit({
238
+ type: "list_terminals_response",
239
+ payload: {
240
+ ...(msg.cwd ? { cwd: msg.cwd } : {}),
241
+ terminals: [],
242
+ requestId: msg.requestId,
243
+ },
244
+ });
245
+ }
246
+ }
247
+ async getAllTerminalSessions() {
248
+ if (!this.terminalManager) {
249
+ return [];
250
+ }
251
+ const directories = this.terminalManager.listDirectories();
252
+ const manager = this.terminalManager;
253
+ const terminalsByDirectory = await Promise.all(directories.map((cwd) => manager.getTerminals(cwd)));
254
+ return terminalsByDirectory.flat();
255
+ }
256
+ async handleCreateTerminalRequest(msg) {
257
+ if (!this.terminalManager) {
258
+ this.emit({
259
+ type: "create_terminal_response",
260
+ payload: {
261
+ terminal: null,
262
+ error: "Terminal manager not available",
263
+ requestId: msg.requestId,
264
+ },
265
+ });
266
+ return;
267
+ }
268
+ try {
269
+ if (msg.agentId) {
270
+ this.emit({
271
+ type: "create_terminal_response",
272
+ payload: {
273
+ terminal: null,
274
+ error: `Agent-backed terminals are no longer supported for agent ${msg.agentId}`,
275
+ requestId: msg.requestId,
276
+ },
277
+ });
278
+ return;
279
+ }
280
+ const session = await this.terminalManager.createTerminal({
281
+ cwd: msg.cwd,
282
+ name: msg.name,
283
+ command: msg.command,
284
+ args: msg.args,
285
+ });
286
+ this.ensureExitSubscription(session);
287
+ this.emit({
288
+ type: "create_terminal_response",
289
+ payload: {
290
+ terminal: {
291
+ id: session.id,
292
+ name: session.name,
293
+ cwd: session.cwd,
294
+ ...(session.getTitle() ? { title: session.getTitle() } : {}),
295
+ },
296
+ error: null,
297
+ requestId: msg.requestId,
298
+ },
299
+ });
300
+ }
301
+ catch (error) {
302
+ this.sessionLogger.error({ err: error, cwd: msg.cwd }, "Failed to create terminal");
303
+ this.emit({
304
+ type: "create_terminal_response",
305
+ payload: {
306
+ terminal: null,
307
+ error: error.message,
308
+ requestId: msg.requestId,
309
+ },
310
+ });
311
+ }
312
+ }
313
+ async handleSubscribeTerminalRequest(msg) {
314
+ if (!this.terminalManager) {
315
+ this.emit({
316
+ type: "subscribe_terminal_response",
317
+ payload: {
318
+ terminalId: msg.terminalId,
319
+ error: "Terminal manager not available",
320
+ requestId: msg.requestId,
321
+ },
322
+ });
323
+ return;
324
+ }
325
+ const session = this.terminalManager.getTerminal(msg.terminalId);
326
+ if (!session) {
327
+ this.emit({
328
+ type: "subscribe_terminal_response",
329
+ payload: {
330
+ terminalId: msg.terminalId,
331
+ error: "Terminal not found",
332
+ requestId: msg.requestId,
333
+ },
334
+ });
335
+ return;
336
+ }
337
+ this.ensureExitSubscription(session);
338
+ const slot = this.bindActiveStream(session);
339
+ if (slot === null) {
340
+ this.sessionLogger.warn({
341
+ terminalId: msg.terminalId,
342
+ activeTerminalStreamCount: this.activeStreams.size,
343
+ }, "Terminal stream slot exhaustion");
344
+ this.emit({
345
+ type: "subscribe_terminal_response",
346
+ payload: {
347
+ terminalId: msg.terminalId,
348
+ error: "No terminal stream slots available",
349
+ requestId: msg.requestId,
350
+ },
351
+ });
352
+ return;
353
+ }
354
+ this.emit({
355
+ type: "subscribe_terminal_response",
356
+ payload: {
357
+ terminalId: msg.terminalId,
358
+ slot,
359
+ error: null,
360
+ requestId: msg.requestId,
361
+ },
362
+ });
363
+ const activeStream = this.activeStreams.get(slot);
364
+ if (activeStream) {
365
+ void this.trySendSnapshot(activeStream);
366
+ }
367
+ }
368
+ handleUnsubscribeTerminalRequest(msg) {
369
+ this.detachStream(msg.terminalId, { emitExit: false });
370
+ }
371
+ handleTerminalInput(msg) {
372
+ if (!this.terminalManager) {
373
+ return;
374
+ }
375
+ const session = this.terminalManager.getTerminal(msg.terminalId);
376
+ if (!session) {
377
+ this.sessionLogger.warn({ terminalId: msg.terminalId }, "Terminal not found for input");
378
+ return;
379
+ }
380
+ this.ensureExitSubscription(session);
381
+ if (msg.message.type === "resize") {
382
+ const currentSize = session.getSize();
383
+ if (currentSize.rows === msg.message.rows && currentSize.cols === msg.message.cols) {
384
+ return;
385
+ }
386
+ }
387
+ session.send(msg.message);
388
+ }
389
+ killTracked(terminalId, options) {
390
+ this.detachStream(terminalId, { emitExit: options?.emitExit ?? true });
391
+ this.terminalManager?.killTerminal(terminalId);
392
+ }
393
+ async handleKillTerminalRequest(msg) {
394
+ const result = this.killTerminalForClose(msg.terminalId);
395
+ this.emit({
396
+ type: "kill_terminal_response",
397
+ payload: {
398
+ terminalId: result.terminalId,
399
+ success: result.success,
400
+ requestId: msg.requestId,
401
+ },
402
+ });
403
+ }
404
+ async handleCaptureTerminalRequest(msg) {
405
+ if (!this.terminalManager) {
406
+ this.emit({
407
+ type: "capture_terminal_response",
408
+ payload: {
409
+ terminalId: msg.terminalId,
410
+ lines: [],
411
+ totalLines: 0,
412
+ requestId: msg.requestId,
413
+ },
414
+ });
415
+ return;
416
+ }
417
+ const session = this.terminalManager.getTerminal(msg.terminalId);
418
+ if (!session) {
419
+ this.emit({
420
+ type: "capture_terminal_response",
421
+ payload: {
422
+ terminalId: msg.terminalId,
423
+ lines: [],
424
+ totalLines: 0,
425
+ requestId: msg.requestId,
426
+ },
427
+ });
428
+ return;
429
+ }
430
+ this.ensureExitSubscription(session);
431
+ try {
432
+ const capture = await this.terminalManager.captureTerminal(msg.terminalId, {
433
+ start: msg.start,
434
+ end: msg.end,
435
+ stripAnsi: msg.stripAnsi,
436
+ });
437
+ this.emit({
438
+ type: "capture_terminal_response",
439
+ payload: {
440
+ terminalId: msg.terminalId,
441
+ lines: capture.lines,
442
+ totalLines: capture.totalLines,
443
+ requestId: msg.requestId,
444
+ },
445
+ });
446
+ }
447
+ catch (error) {
448
+ this.sessionLogger.error({ err: error, terminalId: msg.terminalId }, "Failed to capture terminal");
449
+ this.emit({
450
+ type: "capture_terminal_response",
451
+ payload: {
452
+ terminalId: msg.terminalId,
453
+ lines: [],
454
+ totalLines: 0,
455
+ requestId: msg.requestId,
456
+ },
457
+ });
458
+ }
459
+ }
460
+ bindActiveStream(terminal) {
461
+ if (!this.hasBinaryChannel()) {
462
+ return null;
463
+ }
464
+ const existingSlot = this.idToSlot.get(terminal.id);
465
+ if (typeof existingSlot === "number") {
466
+ const existingStream = this.activeStreams.get(existingSlot);
467
+ if (existingStream) {
468
+ existingStream.needsSnapshot = true;
469
+ return existingSlot;
470
+ }
471
+ this.idToSlot.delete(terminal.id);
472
+ }
473
+ const slot = this.allocateSlot();
474
+ if (slot === null) {
475
+ return null;
476
+ }
477
+ const activeStream = {
478
+ terminalId: terminal.id,
479
+ slot,
480
+ unsubscribe: () => { },
481
+ needsSnapshot: true,
482
+ snapshotInFlight: false,
483
+ bufferedOutputs: [],
484
+ outputCoalescer: new TerminalOutputCoalescer({
485
+ timers: { setTimeout, clearTimeout },
486
+ onFlush: ({ payload }) => {
487
+ if (this.activeStreams.get(slot) !== activeStream) {
488
+ return;
489
+ }
490
+ this.emitBinary(encodeTerminalStreamFrame({
491
+ opcode: TerminalStreamOpcode.Output,
492
+ slot,
493
+ payload,
494
+ }));
495
+ },
496
+ }),
497
+ };
498
+ this.activeStreams.set(slot, activeStream);
499
+ this.idToSlot.set(terminal.id, slot);
500
+ activeStream.unsubscribe = terminal.subscribe((message) => {
501
+ if (this.activeStreams.get(slot) !== activeStream) {
502
+ return;
503
+ }
504
+ if (message.type === "snapshot") {
505
+ activeStream.outputCoalescer.flush();
506
+ activeStream.needsSnapshot = true;
507
+ void this.trySendSnapshot(activeStream);
508
+ return;
509
+ }
510
+ if (message.type === "titleChange") {
511
+ return;
512
+ }
513
+ if (message.data.length === 0) {
514
+ return;
515
+ }
516
+ if (activeStream.needsSnapshot || activeStream.snapshotInFlight) {
517
+ activeStream.bufferedOutputs.push({
518
+ data: message.data,
519
+ revision: message.revision,
520
+ });
521
+ return;
522
+ }
523
+ activeStream.outputCoalescer.handle(message.data);
524
+ });
525
+ return slot;
526
+ }
527
+ async trySendSnapshot(activeStream) {
528
+ if (this.activeStreams.get(activeStream.slot) !== activeStream ||
529
+ !activeStream.needsSnapshot ||
530
+ activeStream.snapshotInFlight) {
531
+ return;
532
+ }
533
+ if (!this.terminalManager?.getTerminal(activeStream.terminalId)) {
534
+ this.detachStream(activeStream.terminalId, { emitExit: true });
535
+ return;
536
+ }
537
+ activeStream.outputCoalescer.flush();
538
+ activeStream.snapshotInFlight = true;
539
+ try {
540
+ const snapshot = await this.terminalManager.getTerminalState(activeStream.terminalId);
541
+ if (this.activeStreams.get(activeStream.slot) !== activeStream) {
542
+ return;
543
+ }
544
+ if (!snapshot) {
545
+ this.detachStream(activeStream.terminalId, { emitExit: true });
546
+ return;
547
+ }
548
+ this.emitBinary(encodeTerminalStreamFrame({
549
+ opcode: TerminalStreamOpcode.Snapshot,
550
+ slot: activeStream.slot,
551
+ payload: encodeTerminalSnapshotPayload(snapshot.state),
552
+ }));
553
+ const bufferedOutputs = activeStream.bufferedOutputs.splice(0, activeStream.bufferedOutputs.length);
554
+ for (const output of bufferedOutputs) {
555
+ if (output.revision !== undefined && output.revision <= snapshot.revision) {
556
+ continue;
557
+ }
558
+ activeStream.outputCoalescer.handle(output.data);
559
+ }
560
+ activeStream.needsSnapshot = false;
561
+ }
562
+ catch (error) {
563
+ this.sessionLogger.warn({ err: error, terminalId: activeStream.terminalId }, "Failed to pull terminal snapshot");
564
+ activeStream.needsSnapshot = true;
565
+ }
566
+ finally {
567
+ activeStream.snapshotInFlight = false;
568
+ }
569
+ }
570
+ allocateSlot() {
571
+ for (let attempt = 0; attempt < MAX_TERMINAL_STREAM_SLOTS; attempt += 1) {
572
+ const slot = (this.nextSlot + attempt) % MAX_TERMINAL_STREAM_SLOTS;
573
+ if (this.activeStreams.has(slot)) {
574
+ continue;
575
+ }
576
+ this.nextSlot = (slot + 1) % MAX_TERMINAL_STREAM_SLOTS;
577
+ return slot;
578
+ }
579
+ return null;
580
+ }
581
+ detachStream(terminalId, options) {
582
+ const slot = this.idToSlot.get(terminalId);
583
+ if (typeof slot !== "number") {
584
+ return false;
585
+ }
586
+ const activeStream = this.activeStreams.get(slot);
587
+ if (!activeStream) {
588
+ this.idToSlot.delete(terminalId);
589
+ return false;
590
+ }
591
+ activeStream.outputCoalescer.flush();
592
+ activeStream.bufferedOutputs.length = 0;
593
+ this.activeStreams.delete(slot);
594
+ this.idToSlot.delete(terminalId);
595
+ try {
596
+ activeStream.unsubscribe();
597
+ }
598
+ catch (error) {
599
+ this.sessionLogger.warn({ err: error }, "Failed to unsubscribe terminal stream");
600
+ }
601
+ if (options?.emitExit) {
602
+ this.emit({
603
+ type: "terminal_stream_exit",
604
+ payload: {
605
+ terminalId: activeStream.terminalId,
606
+ },
607
+ });
608
+ }
609
+ return true;
610
+ }
611
+ }
612
+ function isTerminalMessage(msg) {
613
+ return TERMINAL_MESSAGE_TYPES.has(msg.type);
614
+ }
615
+ //# sourceMappingURL=terminal-session-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-session-controller.js","sourceRoot":"","sources":["../../../src/terminal/terminal-session-controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { existsSync } from "node:fs";
2
+ import { fileURLToPath } from "node:url";
3
+
4
+ export async function resolve(specifier, context, nextResolve) {
5
+ if (
6
+ context.parentURL?.startsWith("file:") &&
7
+ specifier.startsWith(".") &&
8
+ specifier.endsWith(".js")
9
+ ) {
10
+ const candidateUrl = new URL(specifier.replace(/\.js$/, ".ts"), context.parentURL);
11
+ if (existsSync(fileURLToPath(candidateUrl))) {
12
+ return {
13
+ url: candidateUrl.href,
14
+ shortCircuit: true,
15
+ };
16
+ }
17
+ }
18
+
19
+ return nextResolve(specifier, context);
20
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=terminal-worker-process.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-worker-process.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal-worker-process.ts"],"names":[],"mappings":""}