nomoreide 0.1.99 → 0.1.101

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 (188) hide show
  1. package/README.md +26 -1
  2. package/dist/cli/git.js +5 -1
  3. package/dist/cli/git.js.map +1 -1
  4. package/dist/cli/profile.js +1 -1
  5. package/dist/cli/profile.js.map +1 -1
  6. package/dist/core/agent-profiles/index.d.ts +3 -2
  7. package/dist/core/agent-profiles/index.js +2 -1
  8. package/dist/core/agent-profiles/index.js.map +1 -1
  9. package/dist/core/agent-profiles/publication.d.ts +105 -0
  10. package/dist/core/agent-profiles/publication.js +126 -0
  11. package/dist/core/agent-profiles/publication.js.map +1 -0
  12. package/dist/core/agent-profiles/registry-client.d.ts +34 -1
  13. package/dist/core/agent-profiles/registry-client.js +12 -0
  14. package/dist/core/agent-profiles/registry-client.js.map +1 -1
  15. package/dist/core/agent-profiles/registry-config.d.ts +16 -2
  16. package/dist/core/agent-profiles/registry-config.js +76 -22
  17. package/dist/core/agent-profiles/registry-config.js.map +1 -1
  18. package/dist/core/agent-profiles/registry-transfer.js +28 -2
  19. package/dist/core/agent-profiles/registry-transfer.js.map +1 -1
  20. package/dist/core/agent-profiles/store.d.ts +25 -0
  21. package/dist/core/agent-profiles/store.js +186 -6
  22. package/dist/core/agent-profiles/store.js.map +1 -1
  23. package/dist/core/agent-profiles/transfer.js +64 -29
  24. package/dist/core/agent-profiles/transfer.js.map +1 -1
  25. package/dist/core/agent-profiles/types.d.ts +13 -6
  26. package/dist/core/agent-profiles/types.js.map +1 -1
  27. package/dist/core/agent-terminal.d.ts +3 -1
  28. package/dist/core/agent-terminal.js +24 -5
  29. package/dist/core/agent-terminal.js.map +1 -1
  30. package/dist/core/agent-transcripts.js +36 -3
  31. package/dist/core/agent-transcripts.js.map +1 -1
  32. package/dist/core/app-settings.d.ts +13 -0
  33. package/dist/core/app-settings.js +12 -0
  34. package/dist/core/app-settings.js.map +1 -1
  35. package/dist/core/config-store.d.ts +35 -1
  36. package/dist/core/config-store.js +173 -0
  37. package/dist/core/config-store.js.map +1 -1
  38. package/dist/core/context-library.d.ts +53 -0
  39. package/dist/core/context-library.js +510 -0
  40. package/dist/core/context-library.js.map +1 -0
  41. package/dist/core/context-types.d.ts +83 -0
  42. package/dist/core/context-types.js +9 -0
  43. package/dist/core/context-types.js.map +1 -0
  44. package/dist/core/daemon-client.d.ts +4 -0
  45. package/dist/core/daemon-client.js +18 -3
  46. package/dist/core/daemon-client.js.map +1 -1
  47. package/dist/core/db/data-masking.d.ts +3 -0
  48. package/dist/core/db/data-masking.js +14 -0
  49. package/dist/core/db/data-masking.js.map +1 -0
  50. package/dist/core/db/driver.d.ts +29 -1
  51. package/dist/core/db/driver.js +94 -0
  52. package/dist/core/db/driver.js.map +1 -1
  53. package/dist/core/db/export.d.ts +17 -0
  54. package/dist/core/db/export.js +67 -0
  55. package/dist/core/db/export.js.map +1 -0
  56. package/dist/core/db/mysql-driver.d.ts +3 -2
  57. package/dist/core/db/mysql-driver.js +53 -3
  58. package/dist/core/db/mysql-driver.js.map +1 -1
  59. package/dist/core/db/postgres-driver.d.ts +3 -2
  60. package/dist/core/db/postgres-driver.js +41 -3
  61. package/dist/core/db/postgres-driver.js.map +1 -1
  62. package/dist/core/db/sqlite-driver.d.ts +4 -2
  63. package/dist/core/db/sqlite-driver.js +68 -18
  64. package/dist/core/db/sqlite-driver.js.map +1 -1
  65. package/dist/core/db-peek.d.ts +9 -2
  66. package/dist/core/db-peek.js +20 -10
  67. package/dist/core/db-peek.js.map +1 -1
  68. package/dist/core/external-terminal.d.ts +60 -0
  69. package/dist/core/external-terminal.js +429 -0
  70. package/dist/core/external-terminal.js.map +1 -0
  71. package/dist/core/git-actions.d.ts +19 -0
  72. package/dist/core/git-actions.js +36 -4
  73. package/dist/core/git-actions.js.map +1 -1
  74. package/dist/core/git-identity.d.ts +78 -0
  75. package/dist/core/git-identity.js +178 -0
  76. package/dist/core/git-identity.js.map +1 -0
  77. package/dist/core/git-manager.d.ts +9 -1
  78. package/dist/core/git-manager.js +10 -3
  79. package/dist/core/git-manager.js.map +1 -1
  80. package/dist/core/github-context.js +1 -29
  81. package/dist/core/github-context.js.map +1 -1
  82. package/dist/core/github-manager.d.ts +6 -0
  83. package/dist/core/github-manager.js.map +1 -1
  84. package/dist/core/process-manager.js +10 -3
  85. package/dist/core/process-manager.js.map +1 -1
  86. package/dist/core/project-overview.d.ts +52 -0
  87. package/dist/core/project-overview.js +122 -0
  88. package/dist/core/project-overview.js.map +1 -0
  89. package/dist/core/repo-match.d.ts +12 -0
  90. package/dist/core/repo-match.js +40 -0
  91. package/dist/core/repo-match.js.map +1 -0
  92. package/dist/core/repo-onboard.d.ts +4 -4
  93. package/dist/core/ssh-servers.d.ts +52 -0
  94. package/dist/core/ssh-servers.js +194 -0
  95. package/dist/core/ssh-servers.js.map +1 -0
  96. package/dist/core/ssh-setup.d.ts +11 -0
  97. package/dist/core/ssh-setup.js +49 -0
  98. package/dist/core/ssh-setup.js.map +1 -0
  99. package/dist/core/terminal-manager.d.ts +40 -0
  100. package/dist/core/terminal-manager.js +320 -11
  101. package/dist/core/terminal-manager.js.map +1 -1
  102. package/dist/core/terminal-session.d.ts +12 -3
  103. package/dist/core/terminal-session.js +53 -4
  104. package/dist/core/terminal-session.js.map +1 -1
  105. package/dist/core/types.d.ts +62 -0
  106. package/dist/core/vercel-actions.d.ts +71 -0
  107. package/dist/core/vercel-actions.js +109 -0
  108. package/dist/core/vercel-actions.js.map +1 -0
  109. package/dist/core/vercel-auth.d.ts +58 -0
  110. package/dist/core/vercel-auth.js +130 -0
  111. package/dist/core/vercel-auth.js.map +1 -0
  112. package/dist/core/vercel-context.d.ts +25 -0
  113. package/dist/core/vercel-context.js +143 -0
  114. package/dist/core/vercel-context.js.map +1 -0
  115. package/dist/core/vercel-manager.d.ts +253 -0
  116. package/dist/core/vercel-manager.js +391 -0
  117. package/dist/core/vercel-manager.js.map +1 -0
  118. package/dist/core/vercel-oauth.d.ts +75 -0
  119. package/dist/core/vercel-oauth.js +223 -0
  120. package/dist/core/vercel-oauth.js.map +1 -0
  121. package/dist/index.js +13 -1
  122. package/dist/index.js.map +1 -1
  123. package/dist/mcp/tools/agent-registry.d.ts +2 -2
  124. package/dist/mcp/tools/agent-registry.js +3 -3
  125. package/dist/mcp/tools/agent-registry.js.map +1 -1
  126. package/dist/mcp/tools/docs.d.ts +1 -1
  127. package/dist/mcp/tools/docs.js +20 -8
  128. package/dist/mcp/tools/docs.js.map +1 -1
  129. package/dist/mcp/tools/git.js +20 -2
  130. package/dist/mcp/tools/git.js.map +1 -1
  131. package/dist/mcp/tools/index.d.ts +1 -1
  132. package/dist/mcp/tools/index.js +6 -0
  133. package/dist/mcp/tools/index.js.map +1 -1
  134. package/dist/mcp/tools/terminal.d.ts +4 -0
  135. package/dist/mcp/tools/terminal.js +38 -0
  136. package/dist/mcp/tools/terminal.js.map +1 -0
  137. package/dist/mcp/tools/vercel.d.ts +12 -0
  138. package/dist/mcp/tools/vercel.js +103 -0
  139. package/dist/mcp/tools/vercel.js.map +1 -0
  140. package/dist/web/client/assets/code-editor-rHWIXkKg.js +30 -0
  141. package/dist/web/client/assets/context-graph-CcfJNAob.js +7 -0
  142. package/dist/web/client/assets/index-BhDAhmA1.js +1 -0
  143. package/dist/web/client/assets/index-BnFtcUqj.js +352 -0
  144. package/dist/web/client/assets/index-CqsghUD9.css +1 -0
  145. package/dist/web/client/assets/system-process-table-S4umMSEK.js +1 -0
  146. package/dist/web/client/index.html +2 -2
  147. package/dist/web/http-utils.d.ts +4 -1
  148. package/dist/web/http-utils.js +12 -2
  149. package/dist/web/http-utils.js.map +1 -1
  150. package/dist/web/routes/agent-chat-routes.js +29 -0
  151. package/dist/web/routes/agent-chat-routes.js.map +1 -1
  152. package/dist/web/routes/agent-profile-routes.js +32 -2
  153. package/dist/web/routes/agent-profile-routes.js.map +1 -1
  154. package/dist/web/routes/agent-registry-routes.js +68 -2
  155. package/dist/web/routes/agent-registry-routes.js.map +1 -1
  156. package/dist/web/routes/context-library-routes.d.ts +2 -0
  157. package/dist/web/routes/context-library-routes.js +139 -0
  158. package/dist/web/routes/context-library-routes.js.map +1 -0
  159. package/dist/web/routes/context.d.ts +2 -0
  160. package/dist/web/routes/context.js.map +1 -1
  161. package/dist/web/routes/database-routes.js +108 -1
  162. package/dist/web/routes/database-routes.js.map +1 -1
  163. package/dist/web/routes/git-routes.js +37 -7
  164. package/dist/web/routes/git-routes.js.map +1 -1
  165. package/dist/web/routes/index.js +8 -0
  166. package/dist/web/routes/index.js.map +1 -1
  167. package/dist/web/routes/overview-routes.d.ts +2 -0
  168. package/dist/web/routes/overview-routes.js +36 -0
  169. package/dist/web/routes/overview-routes.js.map +1 -0
  170. package/dist/web/routes/shell-routes.d.ts +8 -0
  171. package/dist/web/routes/shell-routes.js +11 -2
  172. package/dist/web/routes/shell-routes.js.map +1 -1
  173. package/dist/web/routes/ssh-server-routes.d.ts +3 -0
  174. package/dist/web/routes/ssh-server-routes.js +121 -0
  175. package/dist/web/routes/ssh-server-routes.js.map +1 -0
  176. package/dist/web/routes/terminal-routes.js +176 -7
  177. package/dist/web/routes/terminal-routes.js.map +1 -1
  178. package/dist/web/routes/vercel-routes.d.ts +2 -0
  179. package/dist/web/routes/vercel-routes.js +476 -0
  180. package/dist/web/routes/vercel-routes.js.map +1 -0
  181. package/dist/web/server.d.ts +9 -0
  182. package/dist/web/server.js +53 -13
  183. package/dist/web/server.js.map +1 -1
  184. package/package.json +5 -1
  185. package/dist/web/client/assets/code-editor-DUgkd8Vo.js +0 -28
  186. package/dist/web/client/assets/index-BTwlXmPn.css +0 -1
  187. package/dist/web/client/assets/index-CRM7WNxX.js +0 -308
  188. package/dist/web/client/assets/system-process-table-DbxLdSLC.js +0 -1
@@ -0,0 +1,429 @@
1
+ import { randomBytes, timingSafeEqual } from "node:crypto";
2
+ import { chmod, mkdtemp, rm, stat } from "node:fs/promises";
3
+ import net from "node:net";
4
+ import { homedir, tmpdir } from "node:os";
5
+ import { join } from "node:path";
6
+ import { spawn } from "node:child_process";
7
+ export const TERMINAL_FRAME = {
8
+ auth: 1,
9
+ input: 2,
10
+ resize: 3,
11
+ detach: 4,
12
+ output: 101,
13
+ attached: 102,
14
+ revoked: 103,
15
+ error: 104,
16
+ };
17
+ export const MAX_TERMINAL_FRAME_BYTES = 1024 * 1024;
18
+ const MAX_OUTPUT_QUEUE_BYTES = 1024 * 1024;
19
+ const AUTH_DEADLINE_MS = 30_000;
20
+ const AUTH_READ_TIMEOUT_MS = 500;
21
+ const GHOSTTY_APP_PATH = "/Applications/Ghostty.app";
22
+ const ITERM2_APP_PATHS = iTerm2ApplicationPaths();
23
+ export const EXTERNAL_TERMINAL_RESET = Buffer.from("\u001b[0m\u001b[?25h\u001b[2J\u001b[H");
24
+ export const ITERM2_LAUNCH_SCRIPT = [
25
+ "on run argv",
26
+ ' tell application "iTerm2"',
27
+ " set newWindow to (create window with default profile)",
28
+ // Wait for the login shell to accept input before writing the attach command.
29
+ " delay 1",
30
+ " tell current session of newWindow",
31
+ " set name to (item 2 of argv)",
32
+ " write text (item 1 of argv)",
33
+ " end tell",
34
+ " activate",
35
+ " end tell",
36
+ "end run",
37
+ ].join("\n");
38
+ export const TERMINAL_LAUNCH_SCRIPT = [
39
+ "on run argv",
40
+ ' tell application "Terminal"',
41
+ " set newTab to do script (item 1 of argv)",
42
+ " set custom title of newTab to (item 2 of argv)",
43
+ " activate",
44
+ " end tell",
45
+ "end run",
46
+ ].join("\n");
47
+ export const GHOSTTY_LAUNCH_SCRIPT = [
48
+ "on run argv",
49
+ ' tell application "Ghostty"',
50
+ " set configuration to new surface configuration from {command:(item 1 of argv), wait after command:false}",
51
+ " set newWindow to new window with configuration configuration",
52
+ " activate",
53
+ " end tell",
54
+ "end run",
55
+ ].join("\n");
56
+ /**
57
+ * Creates a private, one-use Unix-socket relay and opens the selected terminal
58
+ * with the exact Node executable and installed package entry used by the daemon.
59
+ */
60
+ export class ExternalTerminalLauncher {
61
+ entryPath;
62
+ preference;
63
+ launch;
64
+ constructor(options) {
65
+ this.entryPath = options.entryPath;
66
+ this.preference = options.preference ?? (() => "automatic");
67
+ this.launch = options.launch ?? launchTerminalApp;
68
+ }
69
+ async open(callbacks, options = {}) {
70
+ if (process.platform !== "darwin") {
71
+ throw new Error("External Terminal is currently available on macOS only.");
72
+ }
73
+ const entry = await stat(this.entryPath).catch(() => null);
74
+ if (!entry?.isFile()) {
75
+ throw new Error(`Cannot find the NoMoreIDE entry point at ${this.entryPath}. Build the package first.`);
76
+ }
77
+ const directory = await mkdtemp(join(tmpdir(), "nomoreide-terminal-"));
78
+ await chmod(directory, 0o700);
79
+ const socketPath = join(directory, "attach.sock");
80
+ const token = randomBytes(32).toString("hex");
81
+ const lease = options.lease ?? randomBytes(16).toString("hex");
82
+ const title = sanitizeTerminalTitle(options.title);
83
+ let server;
84
+ let authenticated;
85
+ let finished = false;
86
+ const candidates = new Set();
87
+ const cleanup = () => {
88
+ if (finished)
89
+ return;
90
+ finished = true;
91
+ for (const socket of candidates)
92
+ socket.destroy();
93
+ candidates.clear();
94
+ server?.close();
95
+ void rm(directory, { force: true, recursive: true });
96
+ };
97
+ const detach = () => {
98
+ cleanup();
99
+ callbacks.detached();
100
+ };
101
+ try {
102
+ server = net.createServer((socket) => {
103
+ if (authenticated || finished) {
104
+ socket.destroy();
105
+ return;
106
+ }
107
+ candidates.add(socket);
108
+ socket.setTimeout(AUTH_READ_TIMEOUT_MS);
109
+ const parser = new FrameParser();
110
+ let authorized = false;
111
+ socket.on("data", (chunk) => {
112
+ try {
113
+ for (const frame of parser.push(chunk)) {
114
+ if (!authorized) {
115
+ if (frame.kind !== TERMINAL_FRAME.auth || !timingSafeToken(frame.data, token)) {
116
+ writeFrame(socket, TERMINAL_FRAME.error, Buffer.from("Terminal attachment authentication failed"));
117
+ socket.end();
118
+ return;
119
+ }
120
+ authorized = true;
121
+ authenticated = socket;
122
+ candidates.delete(socket);
123
+ socket.setTimeout(0);
124
+ server?.close();
125
+ for (const candidate of candidates)
126
+ candidate.destroy();
127
+ candidates.clear();
128
+ const replay = callbacks.attached();
129
+ if (replay === null) {
130
+ writeFrame(socket, TERMINAL_FRAME.revoked);
131
+ socket.end();
132
+ return;
133
+ }
134
+ writeFrame(socket, TERMINAL_FRAME.attached);
135
+ writeFrame(socket, TERMINAL_FRAME.output, EXTERNAL_TERMINAL_RESET);
136
+ if (replay.length > 0)
137
+ writeFrame(socket, TERMINAL_FRAME.output, replay);
138
+ if (title) {
139
+ writeFrame(socket, TERMINAL_FRAME.output, terminalTitleSequence(title));
140
+ }
141
+ continue;
142
+ }
143
+ if (frame.kind === TERMINAL_FRAME.input)
144
+ callbacks.input(frame.data);
145
+ else if (frame.kind === TERMINAL_FRAME.resize && frame.data.length === 4) {
146
+ const cols = frame.data.readUInt16BE(0);
147
+ const rows = frame.data.readUInt16BE(2);
148
+ if (cols > 0 && rows > 0)
149
+ callbacks.resize(cols, rows);
150
+ }
151
+ else if (frame.kind === TERMINAL_FRAME.detach) {
152
+ socket.end();
153
+ }
154
+ }
155
+ }
156
+ catch {
157
+ socket.destroy();
158
+ }
159
+ });
160
+ socket.on("timeout", () => socket.destroy());
161
+ socket.on("close", () => {
162
+ candidates.delete(socket);
163
+ if (authorized && !finished)
164
+ detach();
165
+ });
166
+ socket.on("error", () => { });
167
+ });
168
+ await new Promise((resolve, reject) => {
169
+ server?.once("error", reject);
170
+ server?.listen(socketPath, resolve);
171
+ });
172
+ await chmod(socketPath, 0o600);
173
+ const deadline = setTimeout(() => {
174
+ if (!authenticated && !finished)
175
+ detach();
176
+ }, AUTH_DEADLINE_MS);
177
+ deadline.unref?.();
178
+ server.once("close", () => clearTimeout(deadline));
179
+ await this.launch(socketPath, token, this.entryPath, await this.preference(), title);
180
+ }
181
+ catch (error) {
182
+ cleanup();
183
+ throw error;
184
+ }
185
+ return {
186
+ lease,
187
+ sendOutput(data) {
188
+ const socket = authenticated;
189
+ if (!socket || finished || socket.destroyed)
190
+ return true;
191
+ const frameBytes = data.length + 5;
192
+ if (data.length > MAX_TERMINAL_FRAME_BYTES || socket.writableLength + frameBytes > MAX_OUTPUT_QUEUE_BYTES) {
193
+ detach();
194
+ return false;
195
+ }
196
+ try {
197
+ writeFrame(socket, TERMINAL_FRAME.output, data);
198
+ return true;
199
+ }
200
+ catch {
201
+ detach();
202
+ return false;
203
+ }
204
+ },
205
+ revoke() {
206
+ const socket = authenticated;
207
+ if (socket && !socket.destroyed) {
208
+ try {
209
+ writeFrame(socket, TERMINAL_FRAME.revoked);
210
+ }
211
+ catch { }
212
+ socket.end();
213
+ }
214
+ cleanup();
215
+ },
216
+ };
217
+ }
218
+ }
219
+ export function encodeFrame(kind, data = Buffer.alloc(0)) {
220
+ if (data.length > MAX_TERMINAL_FRAME_BYTES)
221
+ throw new Error("Terminal frame is too large.");
222
+ const frame = Buffer.allocUnsafe(5 + data.length);
223
+ frame[0] = kind;
224
+ frame.writeUInt32BE(data.length, 1);
225
+ data.copy(frame, 5);
226
+ return frame;
227
+ }
228
+ function writeFrame(socket, kind, data = Buffer.alloc(0)) {
229
+ socket.write(encodeFrame(kind, data));
230
+ }
231
+ class FrameParser {
232
+ pending = Buffer.alloc(0);
233
+ push(chunk) {
234
+ this.pending = this.pending.length === 0 ? chunk : Buffer.concat([this.pending, chunk]);
235
+ const frames = [];
236
+ while (this.pending.length >= 5) {
237
+ const length = this.pending.readUInt32BE(1);
238
+ if (length > MAX_TERMINAL_FRAME_BYTES)
239
+ throw new Error("Terminal frame is too large.");
240
+ if (this.pending.length < 5 + length)
241
+ break;
242
+ frames.push({ kind: this.pending[0] ?? 0, data: this.pending.subarray(5, 5 + length) });
243
+ this.pending = this.pending.subarray(5 + length);
244
+ }
245
+ return frames;
246
+ }
247
+ }
248
+ function timingSafeToken(data, token) {
249
+ const expected = Buffer.from(token);
250
+ if (data.length !== expected.length)
251
+ return false;
252
+ return timingSafeEqual(data, expected);
253
+ }
254
+ function posixQuote(value) {
255
+ return `'${value.replaceAll("'", `'\\''`)}'`;
256
+ }
257
+ function sanitizeTerminalTitle(value) {
258
+ if (!value)
259
+ return "";
260
+ return [...value]
261
+ .map((character) => {
262
+ const code = character.codePointAt(0) ?? 0;
263
+ return code < 0x20 || code === 0x7f || (code >= 0x80 && code <= 0x9f)
264
+ ? " "
265
+ : character;
266
+ })
267
+ .join("")
268
+ .trim()
269
+ .split(/\s+/)
270
+ .join(" ");
271
+ }
272
+ export function externalTerminalTitle(provider, label) {
273
+ const identity = provider === "codex"
274
+ ? { fallback: "Codex task", marker: "🟢", provider: "CODEX" }
275
+ : provider === "claude"
276
+ ? { fallback: "Claude task", marker: "🟠", provider: "CLAUDE" }
277
+ : { fallback: "Agent task", marker: "🔵", provider: "AGENT" };
278
+ const taskLabel = sanitizeTerminalTitle(label) || identity.fallback;
279
+ return `${identity.marker} ${identity.provider} · ${taskLabel} · NoMoreIDE`;
280
+ }
281
+ export function terminalTitleSequence(title) {
282
+ return Buffer.from(`\u001b]2;${sanitizeTerminalTitle(title)}\u001b\\`);
283
+ }
284
+ export function iTerm2ApplicationPaths(homeDirectory = homedir()) {
285
+ return [
286
+ "/Applications/iTerm.app",
287
+ join(homeDirectory, "Applications", "iTerm.app"),
288
+ ];
289
+ }
290
+ export function selectExternalTerminal(preference, installed) {
291
+ if (preference === "ghostty" && !installed.ghostty) {
292
+ throw new Error("Ghostty is not installed in /Applications.");
293
+ }
294
+ if (preference === "iterm2" && !installed.iterm2) {
295
+ throw new Error("iTerm2 is not installed in a system or user Applications folder.");
296
+ }
297
+ if (preference !== "automatic")
298
+ return preference;
299
+ if (installed.ghostty)
300
+ return "ghostty";
301
+ if (installed.iterm2)
302
+ return "iterm2";
303
+ return "terminal";
304
+ }
305
+ async function launchTerminalApp(socketPath, token, entryPath, preference, title) {
306
+ const [ghostty, iterm2] = await Promise.all([
307
+ stat(GHOSTTY_APP_PATH).then((entry) => entry.isDirectory()).catch(() => false),
308
+ applicationInstalled(ITERM2_APP_PATHS),
309
+ ]);
310
+ const terminal = selectExternalTerminal(preference, { ghostty, iterm2 });
311
+ if (terminal === "ghostty")
312
+ return launchGhostty(socketPath, token, entryPath, title);
313
+ if (terminal === "iterm2")
314
+ return launchITerm2(socketPath, token, entryPath, title);
315
+ const command = `exec ${posixQuote(process.execPath)} ${posixQuote(entryPath)} __terminal-attach ${posixQuote(socketPath)} ${posixQuote(token)}`;
316
+ await launchWithAppleScript(TERMINAL_LAUNCH_SCRIPT, command, title, "Terminal");
317
+ }
318
+ async function applicationInstalled(paths) {
319
+ const matches = await Promise.all(paths.map((path) => stat(path).then((entry) => entry.isDirectory()).catch(() => false)));
320
+ return matches.some(Boolean);
321
+ }
322
+ async function launchITerm2(socketPath, token, entryPath, title) {
323
+ const command = `exec ${posixQuote(process.execPath)} ${posixQuote(entryPath)} __terminal-attach ${posixQuote(socketPath)} ${posixQuote(token)}`;
324
+ await launchWithAppleScript(ITERM2_LAUNCH_SCRIPT, command, title, "iTerm2");
325
+ }
326
+ async function launchWithAppleScript(script, command, title, application) {
327
+ await new Promise((resolve, reject) => {
328
+ const child = spawn("/usr/bin/osascript", ["-e", script, "--", command, title], {
329
+ stdio: "ignore",
330
+ });
331
+ child.once("error", () => reject(new Error(`Could not open ${application}.`)));
332
+ child.once("exit", (code) => {
333
+ if (code === 0)
334
+ resolve();
335
+ else
336
+ reject(new Error(`Could not open ${application} (osascript exited with ${code ?? "unknown"}).`));
337
+ });
338
+ });
339
+ }
340
+ export function ghosttyLaunchCommand(socketPath, token, entryPath) {
341
+ return `${posixQuote(process.execPath)} ${posixQuote(entryPath)} __terminal-attach ${posixQuote(socketPath)} ${posixQuote(token)}`;
342
+ }
343
+ async function launchGhostty(socketPath, token, entryPath, title) {
344
+ await launchWithAppleScript(GHOSTTY_LAUNCH_SCRIPT, ghosttyLaunchCommand(socketPath, token, entryPath), title, "Ghostty");
345
+ }
346
+ /** Hidden attach client used by supported terminal apps through the installed entry. */
347
+ export async function runExternalTerminalAttach(socketPath, token) {
348
+ if (process.platform !== "darwin")
349
+ throw new Error("External Terminal is currently available on macOS only.");
350
+ if (!socketPath || !token)
351
+ throw new Error("Invalid Terminal attachment request.");
352
+ const socket = net.createConnection(socketPath);
353
+ await new Promise((resolve, reject) => {
354
+ socket.once("connect", resolve);
355
+ socket.once("error", reject);
356
+ });
357
+ writeFrame(socket, TERMINAL_FRAME.auth, Buffer.from(token));
358
+ const input = process.stdin;
359
+ const output = process.stdout;
360
+ const parser = new FrameParser();
361
+ let attached = false;
362
+ let settled = false;
363
+ const rawBefore = input.isRaw;
364
+ const sendResize = () => {
365
+ if (!attached || !output.columns || !output.rows)
366
+ return;
367
+ const size = Buffer.allocUnsafe(4);
368
+ size.writeUInt16BE(Math.min(output.columns, 65_535), 0);
369
+ size.writeUInt16BE(Math.min(output.rows, 65_535), 2);
370
+ writeFrame(socket, TERMINAL_FRAME.resize, size);
371
+ };
372
+ const onInput = (data) => writeFrame(socket, TERMINAL_FRAME.input, data);
373
+ const restore = () => {
374
+ input.off("data", onInput);
375
+ process.off("SIGWINCH", sendResize);
376
+ output.off("drain", resumeSocket);
377
+ if (input.isTTY)
378
+ input.setRawMode(Boolean(rawBefore));
379
+ input.pause();
380
+ };
381
+ const resumeSocket = () => {
382
+ if (!settled)
383
+ socket.resume();
384
+ };
385
+ await new Promise((resolve, reject) => {
386
+ const finish = (error) => {
387
+ if (settled)
388
+ return;
389
+ settled = true;
390
+ restore();
391
+ socket.destroy();
392
+ error ? reject(error) : resolve();
393
+ };
394
+ socket.on("data", (chunk) => {
395
+ try {
396
+ for (const frame of parser.push(chunk)) {
397
+ if (frame.kind === TERMINAL_FRAME.attached && !attached) {
398
+ attached = true;
399
+ if (input.isTTY)
400
+ input.setRawMode(true);
401
+ input.resume();
402
+ input.on("data", onInput);
403
+ process.on("SIGWINCH", sendResize);
404
+ sendResize();
405
+ }
406
+ else if (frame.kind === TERMINAL_FRAME.output) {
407
+ if (!output.write(frame.data)) {
408
+ socket.pause();
409
+ output.once("drain", resumeSocket);
410
+ }
411
+ }
412
+ else if (frame.kind === TERMINAL_FRAME.revoked) {
413
+ finish();
414
+ }
415
+ else if (frame.kind === TERMINAL_FRAME.error) {
416
+ finish(new Error(frame.data.toString("utf8")));
417
+ }
418
+ }
419
+ }
420
+ catch (error) {
421
+ finish(error instanceof Error ? error : new Error(String(error)));
422
+ }
423
+ });
424
+ socket.once("end", () => finish());
425
+ socket.once("close", () => finish());
426
+ socket.once("error", (error) => finish(error));
427
+ });
428
+ }
429
+ //# sourceMappingURL=external-terminal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external-terminal.js","sourceRoot":"","sources":["../../src/core/external-terminal.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,16 @@ export interface CheckoutDefaultAndPullResult {
10
10
  output: string;
11
11
  branch: string;
12
12
  }
13
+ /**
14
+ * Credential for a single push. The token travels through the environment into
15
+ * a throwaway credential helper, so it never appears in `argv` (visible to any
16
+ * process listing) and never gets written to the repository's config.
17
+ */
18
+ export interface PushCredential {
19
+ token: string;
20
+ /** GitHub ignores the username for token auth; the conventional value is used. */
21
+ username?: string;
22
+ }
13
23
  /**
14
24
  * Write-capable Git operations, kept deliberately separate from the read-safe
15
25
  * {@link GitManager}. These reach outward (push) or move refs, so they live in
@@ -29,6 +39,7 @@ export declare class GitActions {
29
39
  */
30
40
  push(options?: {
31
41
  remote?: string;
42
+ credential?: PushCredential;
32
43
  }): Promise<PushResult>;
33
44
  /** Fast-forward the current branch from its configured upstream. */
34
45
  pull(): Promise<string>;
@@ -48,3 +59,11 @@ export declare class GitActions {
48
59
  private assertCleanWorkingTree;
49
60
  private git;
50
61
  }
62
+ /** Exported so tests can drive `git credential fill` through the real helper. */
63
+ export declare function credentialConfigArgs(): string[];
64
+ /**
65
+ * Push output and git's error text are surfaced verbatim in the UI and written
66
+ * to the timeline, so scrub the token on the way out even though the helper
67
+ * keeps it off the command line.
68
+ */
69
+ export declare function redact(text: string, secret: string | undefined): string;
@@ -1,6 +1,15 @@
1
1
  import { execFile } from "node:child_process";
2
2
  import { promisify } from "node:util";
3
3
  const execFileAsync = promisify(execFile);
4
+ /**
5
+ * A credential helper that echoes the two values git asks for and nothing else.
6
+ * The empty `credential.helper=` that precedes it resets the inherited helper
7
+ * chain, so the machine's keychain cannot answer first and quietly push as the
8
+ * account the user did not select.
9
+ */
10
+ // The `$NAME` reads are expanded by the helper's own shell, not by JavaScript —
11
+ // interpolating them here would put the token in `argv`, which is what this avoids.
12
+ const CREDENTIAL_HELPER = '!f() { echo "username=$NOMOREIDE_GIT_USERNAME"; echo "password=$NOMOREIDE_GIT_PASSWORD"; }; f';
4
13
  /**
5
14
  * Write-capable Git operations, kept deliberately separate from the read-safe
6
15
  * {@link GitManager}. These reach outward (push) or move refs, so they live in
@@ -36,7 +45,14 @@ export class GitActions {
36
45
  const args = setUpstream
37
46
  ? ["push", "--set-upstream", remote, branch]
38
47
  : ["push"];
39
- return { output: await this.git(args), branch, setUpstream };
48
+ const credential = options.credential;
49
+ const output = await this.git(credential ? [...credentialConfigArgs(), ...args] : args, credential
50
+ ? {
51
+ NOMOREIDE_GIT_USERNAME: credential.username ?? "x-access-token",
52
+ NOMOREIDE_GIT_PASSWORD: credential.token,
53
+ }
54
+ : undefined);
55
+ return { output, branch, setUpstream };
40
56
  }
41
57
  /** Fast-forward the current branch from its configured upstream. */
42
58
  async pull() {
@@ -106,23 +122,39 @@ export class GitActions {
106
122
  throw new Error(`Commit or stash local changes before ${operation}.`);
107
123
  }
108
124
  }
109
- async git(args) {
125
+ async git(args, env) {
126
+ const secret = env?.NOMOREIDE_GIT_PASSWORD;
110
127
  try {
111
128
  const { stdout, stderr } = await execFileAsync("git", args, {
112
129
  cwd: this.cwd,
130
+ env: env ? { ...process.env, ...env } : undefined,
113
131
  maxBuffer: 16 * 1024 * 1024,
114
132
  });
115
- return stdout || stderr;
133
+ return redact(stdout || stderr, secret);
116
134
  }
117
135
  catch (error) {
118
136
  if (error instanceof Error) {
119
137
  const withStreams = error;
120
- throw new Error((withStreams.stderr || withStreams.stdout || error.message).trim());
138
+ throw new Error(redact((withStreams.stderr || withStreams.stdout || error.message).trim(), secret));
121
139
  }
122
140
  throw error;
123
141
  }
124
142
  }
125
143
  }
144
+ /** Exported so tests can drive `git credential fill` through the real helper. */
145
+ export function credentialConfigArgs() {
146
+ return ["-c", "credential.helper=", "-c", `credential.helper=${CREDENTIAL_HELPER}`];
147
+ }
148
+ /**
149
+ * Push output and git's error text are surfaced verbatim in the UI and written
150
+ * to the timeline, so scrub the token on the way out even though the helper
151
+ * keeps it off the command line.
152
+ */
153
+ export function redact(text, secret) {
154
+ if (!secret)
155
+ return text;
156
+ return text.split(secret).join("***");
157
+ }
126
158
  function errorMessage(error) {
127
159
  return error instanceof Error ? error.message : String(error);
128
160
  }
@@ -1 +1 @@
1
- {"version":3,"file":"git-actions.js","sourceRoot":"","sources":["../../src/core/git-actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-actions.js","sourceRoot":"","sources":["../../src/core/git-actions.ts"],"names":[],"mappings":"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"}