@getpaseo/server 0.1.3 → 0.1.6

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 (148) hide show
  1. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts +8 -0
  2. package/dist/server/client/daemon-client-relay-e2ee-transport.d.ts.map +1 -0
  3. package/dist/server/client/daemon-client-relay-e2ee-transport.js +161 -0
  4. package/dist/server/client/daemon-client-relay-e2ee-transport.js.map +1 -0
  5. package/dist/server/client/daemon-client-terminal-stream-manager.d.ts +43 -0
  6. package/dist/server/client/daemon-client-terminal-stream-manager.d.ts.map +1 -0
  7. package/dist/server/client/daemon-client-terminal-stream-manager.js +134 -0
  8. package/dist/server/client/daemon-client-terminal-stream-manager.js.map +1 -0
  9. package/dist/server/client/daemon-client-transport-types.d.ts +34 -0
  10. package/dist/server/client/daemon-client-transport-types.d.ts.map +1 -0
  11. package/dist/server/client/daemon-client-transport-types.js +2 -0
  12. package/dist/server/client/daemon-client-transport-types.js.map +1 -0
  13. package/dist/server/client/daemon-client-transport-utils.d.ts +9 -0
  14. package/dist/server/client/daemon-client-transport-utils.d.ts.map +1 -0
  15. package/dist/server/client/daemon-client-transport-utils.js +121 -0
  16. package/dist/server/client/daemon-client-transport-utils.js.map +1 -0
  17. package/dist/server/client/daemon-client-transport.d.ts +5 -0
  18. package/dist/server/client/daemon-client-transport.d.ts.map +1 -0
  19. package/dist/server/client/daemon-client-transport.js +4 -0
  20. package/dist/server/client/daemon-client-transport.js.map +1 -0
  21. package/dist/server/client/daemon-client-websocket-transport.d.ts +7 -0
  22. package/dist/server/client/daemon-client-websocket-transport.d.ts.map +1 -0
  23. package/dist/server/client/daemon-client-websocket-transport.js +64 -0
  24. package/dist/server/client/daemon-client-websocket-transport.js.map +1 -0
  25. package/dist/server/client/daemon-client.d.ts +63 -46
  26. package/dist/server/client/daemon-client.d.ts.map +1 -1
  27. package/dist/server/client/daemon-client.js +497 -796
  28. package/dist/server/client/daemon-client.js.map +1 -1
  29. package/dist/server/server/agent/agent-management-mcp.d.ts +2 -0
  30. package/dist/server/server/agent/agent-management-mcp.d.ts.map +1 -1
  31. package/dist/server/server/agent/agent-management-mcp.js +29 -4
  32. package/dist/server/server/agent/agent-management-mcp.js.map +1 -1
  33. package/dist/server/server/agent/agent-manager.d.ts +48 -0
  34. package/dist/server/server/agent/agent-manager.d.ts.map +1 -1
  35. package/dist/server/server/agent/agent-manager.js +224 -14
  36. package/dist/server/server/agent/agent-manager.js.map +1 -1
  37. package/dist/server/server/agent/agent-sdk-types.d.ts +14 -0
  38. package/dist/server/server/agent/agent-sdk-types.d.ts.map +1 -1
  39. package/dist/server/server/agent/agent-storage.d.ts +4 -4
  40. package/dist/server/server/agent/mcp-server.d.ts +2 -0
  41. package/dist/server/server/agent/mcp-server.d.ts.map +1 -1
  42. package/dist/server/server/agent/mcp-server.js +30 -5
  43. package/dist/server/server/agent/mcp-server.js.map +1 -1
  44. package/dist/server/server/agent/providers/claude/tool-call-mapper.d.ts.map +1 -1
  45. package/dist/server/server/agent/providers/claude/tool-call-mapper.js +120 -6
  46. package/dist/server/server/agent/providers/claude/tool-call-mapper.js.map +1 -1
  47. package/dist/server/server/agent/providers/claude-agent.d.ts +7 -0
  48. package/dist/server/server/agent/providers/claude-agent.d.ts.map +1 -1
  49. package/dist/server/server/agent/providers/claude-agent.js +83 -9
  50. package/dist/server/server/agent/providers/claude-agent.js.map +1 -1
  51. package/dist/server/server/agent/providers/codex-app-server-agent.d.ts.map +1 -1
  52. package/dist/server/server/agent/providers/codex-app-server-agent.js +25 -0
  53. package/dist/server/server/agent/providers/codex-app-server-agent.js.map +1 -1
  54. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts +42 -0
  55. package/dist/server/server/agent/providers/tool-call-detail-primitives.d.ts.map +1 -1
  56. package/dist/server/server/agent/stt-manager.d.ts +3 -2
  57. package/dist/server/server/agent/stt-manager.d.ts.map +1 -1
  58. package/dist/server/server/agent/stt-manager.js +5 -3
  59. package/dist/server/server/agent/stt-manager.js.map +1 -1
  60. package/dist/server/server/agent/timeline-append.d.ts +10 -0
  61. package/dist/server/server/agent/timeline-append.d.ts.map +1 -0
  62. package/dist/server/server/agent/timeline-append.js +27 -0
  63. package/dist/server/server/agent/timeline-append.js.map +1 -0
  64. package/dist/server/server/agent/timeline-projection.d.ts +19 -0
  65. package/dist/server/server/agent/timeline-projection.d.ts.map +1 -0
  66. package/dist/server/server/agent/timeline-projection.js +142 -0
  67. package/dist/server/server/agent/timeline-projection.js.map +1 -0
  68. package/dist/server/server/agent/tts-manager.d.ts +3 -2
  69. package/dist/server/server/agent/tts-manager.d.ts.map +1 -1
  70. package/dist/server/server/agent/tts-manager.js +5 -3
  71. package/dist/server/server/agent/tts-manager.js.map +1 -1
  72. package/dist/server/server/agent-attention-policy.d.ts +20 -0
  73. package/dist/server/server/agent-attention-policy.d.ts.map +1 -0
  74. package/dist/server/server/agent-attention-policy.js +40 -0
  75. package/dist/server/server/agent-attention-policy.js.map +1 -0
  76. package/dist/server/server/bootstrap.d.ts.map +1 -1
  77. package/dist/server/server/bootstrap.js +16 -18
  78. package/dist/server/server/bootstrap.js.map +1 -1
  79. package/dist/server/server/dictation/dictation-stream-manager.d.ts +10 -2
  80. package/dist/server/server/dictation/dictation-stream-manager.d.ts.map +1 -1
  81. package/dist/server/server/dictation/dictation-stream-manager.js +81 -14
  82. package/dist/server/server/dictation/dictation-stream-manager.js.map +1 -1
  83. package/dist/server/server/exports.d.ts +1 -1
  84. package/dist/server/server/exports.d.ts.map +1 -1
  85. package/dist/server/server/persisted-config.d.ts +12 -12
  86. package/dist/server/server/relay-transport.d.ts +3 -2
  87. package/dist/server/server/relay-transport.d.ts.map +1 -1
  88. package/dist/server/server/relay-transport.js +21 -5
  89. package/dist/server/server/relay-transport.js.map +1 -1
  90. package/dist/server/server/session.d.ts +51 -14
  91. package/dist/server/server/session.d.ts.map +1 -1
  92. package/dist/server/server/session.js +872 -250
  93. package/dist/server/server/session.js.map +1 -1
  94. package/dist/server/server/speech/provider-resolver.d.ts +3 -0
  95. package/dist/server/server/speech/provider-resolver.d.ts.map +1 -0
  96. package/dist/server/server/speech/provider-resolver.js +7 -0
  97. package/dist/server/server/speech/provider-resolver.js.map +1 -0
  98. package/dist/server/server/speech/providers/local/runtime.d.ts +1 -0
  99. package/dist/server/server/speech/providers/local/runtime.d.ts.map +1 -1
  100. package/dist/server/server/speech/providers/local/runtime.js +4 -3
  101. package/dist/server/server/speech/providers/local/runtime.js.map +1 -1
  102. package/dist/server/server/speech/providers/local/sherpa/model-downloader.d.ts.map +1 -1
  103. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js +3 -66
  104. package/dist/server/server/speech/providers/local/sherpa/model-downloader.js.map +1 -1
  105. package/dist/server/server/speech/speech-runtime.d.ts +26 -3
  106. package/dist/server/server/speech/speech-runtime.d.ts.map +1 -1
  107. package/dist/server/server/speech/speech-runtime.js +466 -112
  108. package/dist/server/server/speech/speech-runtime.js.map +1 -1
  109. package/dist/server/server/websocket-server.d.ts +23 -7
  110. package/dist/server/server/websocket-server.d.ts.map +1 -1
  111. package/dist/server/server/websocket-server.js +288 -64
  112. package/dist/server/server/websocket-server.js.map +1 -1
  113. package/dist/server/server/worktree-bootstrap.d.ts +29 -0
  114. package/dist/server/server/worktree-bootstrap.d.ts.map +1 -0
  115. package/dist/server/server/worktree-bootstrap.js +407 -0
  116. package/dist/server/server/worktree-bootstrap.js.map +1 -0
  117. package/dist/server/shared/binary-mux.d.ts +31 -0
  118. package/dist/server/shared/binary-mux.d.ts.map +1 -0
  119. package/dist/server/shared/binary-mux.js +114 -0
  120. package/dist/server/shared/binary-mux.js.map +1 -0
  121. package/dist/server/shared/messages.d.ts +6437 -5839
  122. package/dist/server/shared/messages.d.ts.map +1 -1
  123. package/dist/server/shared/messages.js +238 -50
  124. package/dist/server/shared/messages.js.map +1 -1
  125. package/dist/server/shared/terminal-key-input.d.ts +9 -0
  126. package/dist/server/shared/terminal-key-input.d.ts.map +1 -0
  127. package/dist/server/shared/terminal-key-input.js +132 -0
  128. package/dist/server/shared/terminal-key-input.js.map +1 -0
  129. package/dist/server/shared/tool-call-display.d.ts.map +1 -1
  130. package/dist/server/shared/tool-call-display.js +4 -0
  131. package/dist/server/shared/tool-call-display.js.map +1 -1
  132. package/dist/server/terminal/terminal-manager.d.ts +11 -0
  133. package/dist/server/terminal/terminal-manager.d.ts.map +1 -1
  134. package/dist/server/terminal/terminal-manager.js +75 -24
  135. package/dist/server/terminal/terminal-manager.js.map +1 -1
  136. package/dist/server/terminal/terminal.d.ts +18 -0
  137. package/dist/server/terminal/terminal.d.ts.map +1 -1
  138. package/dist/server/terminal/terminal.js +142 -5
  139. package/dist/server/terminal/terminal.js.map +1 -1
  140. package/dist/server/utils/checkout-git.d.ts +4 -0
  141. package/dist/server/utils/checkout-git.d.ts.map +1 -1
  142. package/dist/server/utils/checkout-git.js +92 -0
  143. package/dist/server/utils/checkout-git.js.map +1 -1
  144. package/dist/server/utils/worktree.d.ts +32 -0
  145. package/dist/server/utils/worktree.d.ts.map +1 -1
  146. package/dist/server/utils/worktree.js +160 -10
  147. package/dist/server/utils/worktree.js.map +1 -1
  148. package/package.json +2 -2
@@ -2,20 +2,81 @@ import { createTerminal } from "./terminal.js";
2
2
  export function createTerminalManager() {
3
3
  const terminalsByCwd = new Map();
4
4
  const terminalsById = new Map();
5
+ const terminalExitUnsubscribeById = new Map();
6
+ const terminalsChangedListeners = new Set();
5
7
  function assertAbsolutePath(cwd) {
6
8
  if (!cwd.startsWith("/")) {
7
9
  throw new Error("cwd must be absolute path");
8
10
  }
9
11
  }
12
+ function removeSessionById(id, options) {
13
+ const session = terminalsById.get(id);
14
+ if (!session) {
15
+ return;
16
+ }
17
+ const unsubscribeExit = terminalExitUnsubscribeById.get(id);
18
+ if (unsubscribeExit) {
19
+ unsubscribeExit();
20
+ terminalExitUnsubscribeById.delete(id);
21
+ }
22
+ terminalsById.delete(id);
23
+ const terminals = terminalsByCwd.get(session.cwd);
24
+ if (terminals) {
25
+ const index = terminals.findIndex((terminal) => terminal.id === id);
26
+ if (index !== -1) {
27
+ terminals.splice(index, 1);
28
+ }
29
+ if (terminals.length === 0) {
30
+ terminalsByCwd.delete(session.cwd);
31
+ }
32
+ }
33
+ if (options.kill) {
34
+ session.kill();
35
+ }
36
+ emitTerminalsChanged({ cwd: session.cwd });
37
+ }
38
+ function registerSession(session) {
39
+ terminalsById.set(session.id, session);
40
+ const unsubscribeExit = session.onExit(() => {
41
+ removeSessionById(session.id, { kill: false });
42
+ });
43
+ terminalExitUnsubscribeById.set(session.id, unsubscribeExit);
44
+ return session;
45
+ }
46
+ function toTerminalListItem(input) {
47
+ return {
48
+ id: input.session.id,
49
+ name: input.session.name,
50
+ cwd: input.session.cwd,
51
+ };
52
+ }
53
+ function emitTerminalsChanged(input) {
54
+ if (terminalsChangedListeners.size === 0) {
55
+ return;
56
+ }
57
+ const terminals = (terminalsByCwd.get(input.cwd) ?? []).map((session) => toTerminalListItem({ session }));
58
+ const event = {
59
+ cwd: input.cwd,
60
+ terminals,
61
+ };
62
+ for (const listener of terminalsChangedListeners) {
63
+ try {
64
+ listener(event);
65
+ }
66
+ catch {
67
+ // no-op
68
+ }
69
+ }
70
+ }
10
71
  return {
11
72
  async getTerminals(cwd) {
12
73
  assertAbsolutePath(cwd);
13
74
  let terminals = terminalsByCwd.get(cwd);
14
75
  if (!terminals || terminals.length === 0) {
15
- const session = await createTerminal({ cwd, name: "Terminal 1" });
76
+ const session = registerSession(await createTerminal({ cwd, name: "Terminal 1" }));
16
77
  terminals = [session];
17
78
  terminalsByCwd.set(cwd, terminals);
18
- terminalsById.set(session.id, session);
79
+ emitTerminalsChanged({ cwd });
19
80
  }
20
81
  return terminals;
21
82
  },
@@ -23,44 +84,34 @@ export function createTerminalManager() {
23
84
  assertAbsolutePath(options.cwd);
24
85
  const terminals = terminalsByCwd.get(options.cwd) ?? [];
25
86
  const defaultName = `Terminal ${terminals.length + 1}`;
26
- const session = await createTerminal({
87
+ const session = registerSession(await createTerminal({
27
88
  cwd: options.cwd,
28
89
  name: options.name ?? defaultName,
29
- });
90
+ }));
30
91
  terminals.push(session);
31
92
  terminalsByCwd.set(options.cwd, terminals);
32
- terminalsById.set(session.id, session);
93
+ emitTerminalsChanged({ cwd: options.cwd });
33
94
  return session;
34
95
  },
35
96
  getTerminal(id) {
36
97
  return terminalsById.get(id);
37
98
  },
38
99
  killTerminal(id) {
39
- const session = terminalsById.get(id);
40
- if (!session)
41
- return;
42
- session.kill();
43
- terminalsById.delete(id);
44
- const terminals = terminalsByCwd.get(session.cwd);
45
- if (terminals) {
46
- const index = terminals.indexOf(session);
47
- if (index !== -1) {
48
- terminals.splice(index, 1);
49
- }
50
- if (terminals.length === 0) {
51
- terminalsByCwd.delete(session.cwd);
52
- }
53
- }
100
+ removeSessionById(id, { kill: true });
54
101
  },
55
102
  listDirectories() {
56
103
  return Array.from(terminalsByCwd.keys());
57
104
  },
58
105
  killAll() {
59
- for (const session of terminalsById.values()) {
60
- session.kill();
106
+ for (const id of Array.from(terminalsById.keys())) {
107
+ removeSessionById(id, { kill: true });
61
108
  }
62
- terminalsByCwd.clear();
63
- terminalsById.clear();
109
+ },
110
+ subscribeTerminalsChanged(listener) {
111
+ terminalsChangedListeners.add(listener);
112
+ return () => {
113
+ terminalsChangedListeners.delete(listener);
114
+ };
64
115
  },
65
116
  };
66
117
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAwB,MAAM,eAAe,CAAC;AAWrE,MAAM,UAAU,qBAAqB;IACnC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAC;IAC5D,MAAM,aAAa,GAAG,IAAI,GAAG,EAA2B,CAAC;IAEzD,SAAS,kBAAkB,CAAC,GAAW;QACrC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,GAAW;YAC5B,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAExB,IAAI,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;gBAClE,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC;gBACtB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;gBACnC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,KAAK,CAAC,cAAc,CAAC,OAAuC;YAC1D,kBAAkB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAEhC,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACxD,MAAM,WAAW,GAAG,YAAY,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;gBACnC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,WAAW;aAClC,CAAC,CAAC;YAEH,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACxB,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;YAC3C,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAEvC,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,WAAW,CAAC,EAAU;YACpB,OAAO,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,EAAU;YACrB,MAAM,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,OAAO,CAAC,IAAI,EAAE,CAAC;YACf,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAEzB,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAClD,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACzC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC7B,CAAC;gBACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC3B,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAED,eAAe;YACb,OAAO,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,MAAM,EAAE,EAAE,CAAC;gBAC7C,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC;YACD,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,aAAa,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"terminal-manager.js","sourceRoot":"","sources":["../../../src/terminal/terminal-manager.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,19 @@ export interface CellChange {
24
24
  col: number;
25
25
  cell: Cell;
26
26
  }
27
+ export interface TerminalRawChunk {
28
+ data: string;
29
+ startOffset: number;
30
+ endOffset: number;
31
+ replay: boolean;
32
+ }
33
+ export interface TerminalRawSubscriptionResult {
34
+ unsubscribe: () => void;
35
+ replayedFrom: number;
36
+ currentOffset: number;
37
+ earliestAvailableOffset: number;
38
+ reset: boolean;
39
+ }
27
40
  export type ClientMessage = {
28
41
  type: "input";
29
42
  data: string;
@@ -52,6 +65,11 @@ export interface TerminalSession {
52
65
  cwd: string;
53
66
  send(msg: ClientMessage): void;
54
67
  subscribe(listener: (msg: ServerMessage) => void): () => void;
68
+ onExit(listener: () => void): () => void;
69
+ subscribeRaw(listener: (chunk: TerminalRawChunk) => void, options?: {
70
+ fromOffset?: number;
71
+ }): TerminalRawSubscriptionResult;
72
+ getOutputOffset(): number;
55
73
  getState(): TerminalState;
56
74
  kill(): void;
57
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,GAAG;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IACf,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;CACb;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAA;CAAE,CAAC;AAEhG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IAAC,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC;AAEzD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,CAAC;IAC/B,SAAS,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9D,QAAQ,IAAI,aAAa,CAAC;IAC1B,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAiGD,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,eAAe,CAAC,CAoH7F"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../../src/terminal/terminal.ts"],"names":[],"mappings":"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"}
@@ -92,7 +92,15 @@ export async function createTerminal(options) {
92
92
  const { cwd, shell = process.env.SHELL || "/bin/sh", env = {}, rows = 24, cols = 80, name = "Terminal", } = options;
93
93
  const id = randomUUID();
94
94
  const listeners = new Set();
95
+ const rawListeners = new Set();
96
+ const exitListeners = new Set();
97
+ const rawOutputChunks = [];
98
+ const maxRawBufferBytes = 8 * 1024 * 1024;
99
+ let rawBufferBytes = 0;
100
+ let outputOffset = 0;
95
101
  let killed = false;
102
+ let disposed = false;
103
+ let exitEmitted = false;
96
104
  // Create xterm.js headless terminal
97
105
  const terminal = new Terminal({
98
106
  rows,
@@ -112,10 +120,85 @@ export async function createTerminal(options) {
112
120
  TERM: "xterm-256color",
113
121
  },
114
122
  });
123
+ function emitExit() {
124
+ if (exitEmitted) {
125
+ return;
126
+ }
127
+ exitEmitted = true;
128
+ for (const listener of Array.from(exitListeners)) {
129
+ try {
130
+ listener();
131
+ }
132
+ catch {
133
+ // no-op
134
+ }
135
+ }
136
+ exitListeners.clear();
137
+ }
138
+ function disposeResources() {
139
+ if (disposed) {
140
+ return;
141
+ }
142
+ disposed = true;
143
+ terminal.dispose();
144
+ listeners.clear();
145
+ rawListeners.clear();
146
+ exitListeners.clear();
147
+ }
148
+ function appendRawOutputChunk(data) {
149
+ const chunkBytes = Buffer.byteLength(data);
150
+ if (chunkBytes <= 0) {
151
+ return;
152
+ }
153
+ const startOffset = outputOffset;
154
+ const endOffset = startOffset + chunkBytes;
155
+ outputOffset = endOffset;
156
+ rawOutputChunks.push({
157
+ startOffset,
158
+ endOffset,
159
+ data,
160
+ });
161
+ rawBufferBytes += chunkBytes;
162
+ while (rawBufferBytes > maxRawBufferBytes && rawOutputChunks.length > 0) {
163
+ const removed = rawOutputChunks.shift();
164
+ if (!removed) {
165
+ break;
166
+ }
167
+ rawBufferBytes -= removed.endOffset - removed.startOffset;
168
+ }
169
+ const chunk = {
170
+ data,
171
+ startOffset,
172
+ endOffset,
173
+ replay: false,
174
+ };
175
+ for (const listener of rawListeners) {
176
+ listener(chunk);
177
+ }
178
+ }
179
+ function getEarliestAvailableOffset() {
180
+ const earliest = rawOutputChunks[0];
181
+ return earliest ? earliest.startOffset : outputOffset;
182
+ }
183
+ function alignOffsetToChunkBoundary(offset) {
184
+ if (offset === outputOffset) {
185
+ return offset;
186
+ }
187
+ for (const chunk of rawOutputChunks) {
188
+ if (offset === chunk.startOffset || offset === chunk.endOffset) {
189
+ return offset;
190
+ }
191
+ if (offset > chunk.startOffset && offset < chunk.endOffset) {
192
+ return chunk.startOffset;
193
+ }
194
+ }
195
+ return offset;
196
+ }
115
197
  // Pipe PTY output to terminal emulator
116
198
  ptyProcess.onData((data) => {
117
199
  if (killed)
118
200
  return;
201
+ appendRawOutputChunk(data);
119
202
  terminal.write(data, () => {
120
203
  // Notify listeners of changes
121
204
  const state = getState();
@@ -126,6 +209,8 @@ export async function createTerminal(options) {
126
209
  });
127
210
  ptyProcess.onExit(() => {
128
211
  killed = true;
212
+ emitExit();
213
+ disposeResources();
129
214
  });
130
215
  function getState() {
131
216
  return {
@@ -168,12 +253,61 @@ export async function createTerminal(options) {
168
253
  listeners.delete(listener);
169
254
  };
170
255
  }
256
+ function onExit(listener) {
257
+ if (killed) {
258
+ queueMicrotask(() => {
259
+ try {
260
+ listener();
261
+ }
262
+ catch {
263
+ // no-op
264
+ }
265
+ });
266
+ return () => { };
267
+ }
268
+ exitListeners.add(listener);
269
+ return () => {
270
+ exitListeners.delete(listener);
271
+ };
272
+ }
273
+ function subscribeRaw(listener, options) {
274
+ const requestedOffset = Math.max(0, Math.floor(options?.fromOffset ?? 0));
275
+ const earliestAvailableOffset = getEarliestAvailableOffset();
276
+ const clampedOffset = Math.max(requestedOffset, earliestAvailableOffset);
277
+ const replayedFrom = alignOffsetToChunkBoundary(clampedOffset);
278
+ const reset = replayedFrom !== requestedOffset;
279
+ for (const chunk of rawOutputChunks) {
280
+ if (chunk.endOffset <= replayedFrom) {
281
+ continue;
282
+ }
283
+ listener({
284
+ data: chunk.data,
285
+ startOffset: chunk.startOffset,
286
+ endOffset: chunk.endOffset,
287
+ replay: true,
288
+ });
289
+ }
290
+ rawListeners.add(listener);
291
+ return {
292
+ unsubscribe: () => {
293
+ rawListeners.delete(listener);
294
+ },
295
+ replayedFrom,
296
+ currentOffset: outputOffset,
297
+ earliestAvailableOffset,
298
+ reset,
299
+ };
300
+ }
301
+ function getOutputOffset() {
302
+ return outputOffset;
303
+ }
171
304
  function kill() {
172
- if (killed)
173
- return;
174
- killed = true;
175
- ptyProcess.kill();
176
- terminal.dispose();
305
+ if (!killed) {
306
+ killed = true;
307
+ ptyProcess.kill();
308
+ emitExit();
309
+ }
310
+ disposeResources();
177
311
  }
178
312
  // Small delay to let shell initialize
179
313
  await new Promise((resolve) => setTimeout(resolve, 50));
@@ -183,6 +317,9 @@ export async function createTerminal(options) {
183
317
  cwd,
184
318
  send,
185
319
  subscribe,
320
+ onExit,
321
+ subscribeRaw,
322
+ getOutputOffset,
186
323
  getState,
187
324
  kill,
188
325
  };
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/terminal/terminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAwC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;AA4D3B,SAAS,WAAW,CAAC,QAAsB,EAAE,GAAW,EAAE,GAAW;IACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IAED,gFAAgF;IAChF,6FAA6F;IAC7F,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;IACxC,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;IAE/B,4CAA4C;IAC5C,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACxD,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAExD,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG;QAC5B,EAAE;QACF,EAAE;QACF,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACzC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACzC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;QACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC7B,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,QAAsB;IACzC,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,mCAAmC;IACnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAE3B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC7C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAsB;IAC/C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,6DAA6D;IAC7D,wEAAwE;IACxE,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC;IAErC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,eAAe,EAAE,GAAG,EAAE,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAW,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC7C,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxC,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxC,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;oBAC/B,MAAM,MAAM,GAAG,SAAS,IAAI,EAAE,CAAC;oBAC/B,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACxD,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;oBACxD,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,GAAG;wBAC5B,EAAE;wBACF,EAAE;wBACF,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;wBACzC,MAAM,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;wBACzC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;wBACzB,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC;wBAC7B,SAAS,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC;qBACpC,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA8B;IACjE,MAAM,EACJ,GAAG,EACH,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,SAAS,EACtC,GAAG,GAAG,EAAE,EACR,IAAI,GAAG,EAAE,EACT,IAAI,GAAG,EAAE,EACT,IAAI,GAAG,UAAU,GAClB,GAAG,OAAO,CAAC;IAEZ,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;IACxB,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC1D,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,IAAI;QACJ,IAAI;QACJ,UAAU,EAAE,IAAI;QAChB,gBAAgB,EAAE,IAAI;KACvB,CAAC,CAAC;IAEH,aAAa;IACb,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE;QACtC,IAAI,EAAE,gBAAgB;QACtB,IAAI;QACJ,IAAI;QACJ,GAAG;QACH,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,GAAG;YACN,IAAI,EAAE,gBAAgB;SACvB;KACF,CAAC,CAAC;IAEH,uCAAuC;IACvC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,MAAM;YAAE,OAAO;QACnB,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE;YACxB,8BAA8B;YAC9B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;YACzB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;gBACjC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YACpC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE;QACrB,MAAM,GAAG,IAAI,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,SAAS,QAAQ;QACf,OAAO;YACL,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC;YAC3B,UAAU,EAAE,iBAAiB,CAAC,QAAQ,CAAC;YACvC,MAAM,EAAE;gBACN,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;gBACnC,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO;aACpC;SACF,CAAC;IACJ,CAAC;IAED,SAAS,IAAI,CAAC,GAAkB;QAC9B,IAAI,MAAM;YAAE,OAAO;QAEnB,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,OAAO;gBACV,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,QAAQ;gBACX,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACpC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtC,MAAM;YACR,KAAK,OAAO;gBACV,uEAAuE;gBACvE,6DAA6D;gBAC7D,MAAM;QACV,CAAC;IACH,CAAC;IAED,SAAS,SAAS,CAAC,QAAsC;QACvD,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExB,0BAA0B;QAC1B,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC,CAAC;IACJ,CAAC;IAED,SAAS,IAAI;QACX,IAAI,MAAM;YAAE,OAAO;QACnB,MAAM,GAAG,IAAI,CAAC;QACd,UAAU,CAAC,IAAI,EAAE,CAAC;QAClB,QAAQ,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;IAED,sCAAsC;IACtC,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAExD,OAAO;QACL,EAAE;QACF,IAAI;QACJ,GAAG;QACH,IAAI;QACJ,SAAS;QACT,QAAQ;QACR,IAAI;KACL,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"terminal.js","sourceRoot":"","sources":["../../../src/terminal/terminal.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,8 @@
1
1
  import type { ParsedDiffFile } from "../server/utils/diff-highlighter.js";
2
+ export declare function listBranchSuggestions(cwd: string, options?: {
3
+ query?: string;
4
+ limit?: number;
5
+ }): Promise<string[]>;
2
6
  export declare class NotGitRepoError extends Error {
3
7
  readonly cwd: string;
4
8
  readonly code = "NOT_GIT_REPO";
@@ -1 +1 @@
1
- {"version":3,"file":"checkout-git.d.ts","sourceRoot":"","sources":["../../../src/utils/checkout-git.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkout-git.d.ts","sourceRoot":"","sources":["../../../src/utils/checkout-git.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AA0K1E,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,MAAM,EAAE,CAAC,CAgDnB;AA+JD,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,kBAAkB;gBAEnB,GAAG,EAAE,MAAM;CAKxB;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBAErB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE;CAOzF;AAED,qBAAa,0BAA2B,SAAQ,KAAK;IACnD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;gBAErB,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,EAAE,CAAA;KAAE;CASzF;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,KAAK,CAAC;CACd;AAED,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,KAAK,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,KAAK,EAAE,IAAI,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,yBAAyB,GAAG,sBAAsB,CAAC;AAEnF,MAAM,MAAM,oBAAoB,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEtE,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,oBAAoB,EAAE,KAAK,CAAC;IAC5B,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,KAAK,EAAE,IAAI,CAAC;IACZ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,KAAK,CAAC;IAC5B,YAAY,EAAE,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,IAAI,CAAC;IACZ,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,oBAAoB,EAAE,IAAI,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAChC,wBAAwB,GACxB,6BAA6B,GAC7B,0BAA0B,CAAC;AAE/B,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAuHF,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,CAc1E;AAuUD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,oBAAoB,CAAC,CA+C/B;AAED,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,wBAAwB,CAAC,CA6BnC;AAED,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,mBAAmB,EAC5B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,kBAAkB,CAAC,CA0M7B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CAQf;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE3E;AAED,wBAAsB,WAAW,CAC/B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,kBAAuB,EAChC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAoGf;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,EAClC,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,IAAI,CAAC,CAuFf;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAWlE;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,qBAAqB,EAAE,OAAO,CAAC;CAChC;AAsED,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAoC1C;AAED,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,uBAAuB,CAAC,CA8DxF"}
@@ -72,6 +72,98 @@ async function spawnLimitedText(params) {
72
72
  });
73
73
  });
74
74
  }
75
+ function normalizeBranchSuggestionName(raw) {
76
+ const trimmed = raw.trim();
77
+ if (!trimmed) {
78
+ return null;
79
+ }
80
+ let normalized = trimmed;
81
+ if (normalized.startsWith("refs/heads/")) {
82
+ normalized = normalized.slice("refs/heads/".length);
83
+ }
84
+ else if (normalized.startsWith("refs/remotes/")) {
85
+ normalized = normalized.slice("refs/remotes/".length);
86
+ }
87
+ if (normalized.startsWith("origin/")) {
88
+ normalized = normalized.slice("origin/".length);
89
+ }
90
+ if (!normalized || normalized === "HEAD") {
91
+ return null;
92
+ }
93
+ return normalized;
94
+ }
95
+ async function listGitRefs(cwd, refPrefix) {
96
+ const { stdout } = await execGit(`git for-each-ref --format="%(refname:short)" ${refPrefix}`, {
97
+ cwd,
98
+ env: READ_ONLY_GIT_ENV,
99
+ });
100
+ return stdout
101
+ .split("\n")
102
+ .map((line) => line.trim())
103
+ .filter((line) => line.length > 0);
104
+ }
105
+ function sortBranchSuggestions(branchNames, localBranchNames, query) {
106
+ const normalizedQuery = query.trim().toLowerCase();
107
+ const hasQuery = normalizedQuery.length > 0;
108
+ return branchNames.sort((a, b) => {
109
+ const aLower = a.toLowerCase();
110
+ const bLower = b.toLowerCase();
111
+ if (hasQuery) {
112
+ const aPrefix = aLower.startsWith(normalizedQuery);
113
+ const bPrefix = bLower.startsWith(normalizedQuery);
114
+ if (aPrefix !== bPrefix) {
115
+ return aPrefix ? -1 : 1;
116
+ }
117
+ }
118
+ const aIsLocal = localBranchNames.has(a);
119
+ const bIsLocal = localBranchNames.has(b);
120
+ if (aIsLocal !== bIsLocal) {
121
+ return aIsLocal ? -1 : 1;
122
+ }
123
+ return a.localeCompare(b);
124
+ });
125
+ }
126
+ export async function listBranchSuggestions(cwd, options) {
127
+ await requireGitRepo(cwd);
128
+ const requestedLimit = options?.limit ?? 50;
129
+ const limit = Math.max(1, Math.min(200, requestedLimit));
130
+ const query = options?.query?.trim().toLowerCase() ?? "";
131
+ const [localRefs, remoteRefs] = await Promise.all([
132
+ listGitRefs(cwd, "refs/heads"),
133
+ listGitRefs(cwd, "refs/remotes/origin"),
134
+ ]);
135
+ const merged = new Map();
136
+ for (const localRef of localRefs) {
137
+ const normalized = normalizeBranchSuggestionName(localRef);
138
+ if (!normalized) {
139
+ continue;
140
+ }
141
+ const origins = merged.get(normalized) ?? new Set();
142
+ origins.add("local");
143
+ merged.set(normalized, origins);
144
+ }
145
+ for (const remoteRef of remoteRefs) {
146
+ const normalized = normalizeBranchSuggestionName(remoteRef);
147
+ if (!normalized) {
148
+ continue;
149
+ }
150
+ const origins = merged.get(normalized) ?? new Set();
151
+ origins.add("remote");
152
+ merged.set(normalized, origins);
153
+ }
154
+ const filteredNames = Array.from(merged.keys()).filter((name) => query ? name.toLowerCase().includes(query) : true);
155
+ if (filteredNames.length === 0) {
156
+ return [];
157
+ }
158
+ const localBranchNames = new Set();
159
+ for (const [name, origins] of merged) {
160
+ if (origins.has("local")) {
161
+ localBranchNames.add(name);
162
+ }
163
+ }
164
+ const ordered = sortBranchSuggestions(filteredNames, localBranchNames, query);
165
+ return ordered.slice(0, limit);
166
+ }
75
167
  async function listCheckoutFileChanges(cwd, ref) {
76
168
  const changes = [];
77
169
  const { stdout: nameStatusOut } = await execGit(`git diff --name-status ${ref}`, {