@tacuchi/agent-workflow-cli 14.2.0 → 14.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/adapters/node-file-system.d.ts +2 -0
  2. package/dist/adapters/node-file-system.d.ts.map +1 -1
  3. package/dist/adapters/node-file-system.js +7 -2
  4. package/dist/adapters/node-file-system.js.map +1 -1
  5. package/dist/adapters/node-process.d.ts +15 -1
  6. package/dist/adapters/node-process.d.ts.map +1 -1
  7. package/dist/adapters/node-process.js +178 -7
  8. package/dist/adapters/node-process.js.map +1 -1
  9. package/dist/application/dev-only-services.d.ts.map +1 -1
  10. package/dist/application/dev-only-services.js +13 -12
  11. package/dist/application/dev-only-services.js.map +1 -1
  12. package/dist/application/logging/log-events.d.ts +12 -0
  13. package/dist/application/logging/log-events.d.ts.map +1 -0
  14. package/dist/application/logging/log-events.js +30 -0
  15. package/dist/application/logging/log-events.js.map +1 -0
  16. package/dist/application/logging/logger.d.ts +32 -0
  17. package/dist/application/logging/logger.d.ts.map +1 -0
  18. package/dist/application/logging/logger.js +45 -0
  19. package/dist/application/logging/logger.js.map +1 -0
  20. package/dist/application/open-external.d.ts +21 -0
  21. package/dist/application/open-external.d.ts.map +1 -0
  22. package/dist/application/open-external.js +26 -0
  23. package/dist/application/open-external.js.map +1 -0
  24. package/dist/application/paths-service.d.ts +7 -0
  25. package/dist/application/paths-service.d.ts.map +1 -1
  26. package/dist/application/paths-service.js +12 -0
  27. package/dist/application/paths-service.js.map +1 -1
  28. package/dist/application/process-registry-service.d.ts +2 -0
  29. package/dist/application/process-registry-service.d.ts.map +1 -1
  30. package/dist/application/process-registry-service.js.map +1 -1
  31. package/dist/application/source-launch-service.d.ts +4 -1
  32. package/dist/application/source-launch-service.d.ts.map +1 -1
  33. package/dist/application/source-launch-service.js +12 -6
  34. package/dist/application/source-launch-service.js.map +1 -1
  35. package/dist/application/terminal-launch.d.ts +72 -0
  36. package/dist/application/terminal-launch.d.ts.map +1 -0
  37. package/dist/application/terminal-launch.js +114 -0
  38. package/dist/application/terminal-launch.js.map +1 -0
  39. package/dist/cli/main.js +8 -0
  40. package/dist/cli/main.js.map +1 -1
  41. package/dist/cli/tui/app.js +6 -6
  42. package/dist/cli/tui/app.js.map +1 -1
  43. package/dist/cli/tui/components/logs-section.d.ts +21 -0
  44. package/dist/cli/tui/components/logs-section.d.ts.map +1 -0
  45. package/dist/cli/tui/components/logs-section.js +80 -0
  46. package/dist/cli/tui/components/logs-section.js.map +1 -0
  47. package/dist/cli/tui/components/process-list.d.ts +3 -2
  48. package/dist/cli/tui/components/process-list.d.ts.map +1 -1
  49. package/dist/cli/tui/components/process-list.js +10 -4
  50. package/dist/cli/tui/components/process-list.js.map +1 -1
  51. package/dist/cli/tui/data/logs.d.ts +20 -0
  52. package/dist/cli/tui/data/logs.d.ts.map +1 -0
  53. package/dist/cli/tui/data/logs.js +39 -0
  54. package/dist/cli/tui/data/logs.js.map +1 -0
  55. package/dist/cli/tui/tabs/project-tab.js +12 -4
  56. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  57. package/dist/cli/tui/tabs/status-tab.d.ts +8 -4
  58. package/dist/cli/tui/tabs/status-tab.d.ts.map +1 -1
  59. package/dist/cli/tui/tabs/status-tab.js +33 -8
  60. package/dist/cli/tui/tabs/status-tab.js.map +1 -1
  61. package/dist/cli/tui/tui-prefs.d.ts +2 -0
  62. package/dist/cli/tui/tui-prefs.d.ts.map +1 -1
  63. package/dist/cli/tui/tui-prefs.js +1 -0
  64. package/dist/cli/tui/tui-prefs.js.map +1 -1
  65. package/dist/ports/file-system.d.ts +2 -0
  66. package/dist/ports/file-system.d.ts.map +1 -1
  67. package/dist/ports/process.d.ts +34 -0
  68. package/dist/ports/process.d.ts.map +1 -1
  69. package/package.json +1 -1
@@ -16,6 +16,8 @@ export declare class NodeFileSystem implements FileSystemPort {
16
16
  writeTextExclusive(path: string, content: string): Promise<{
17
17
  created: boolean;
18
18
  }>;
19
+ /** Append content, creating parent dirs on first write (log-friendly). */
20
+ appendText(path: string, content: string): Promise<void>;
19
21
  remove(path: string): Promise<void>;
20
22
  exists(path: string): Promise<boolean>;
21
23
  list(path: string): Promise<DirEntry[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"node-file-system.d.ts","sourceRoot":"","sources":["../../src/adapters/node-file-system.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAgB,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAMhG,qBAAa,cAAe,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAK;IAE1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D;;;OAGG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAkBhF,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAK5C"}
1
+ {"version":3,"file":"node-file-system.d.ts","sourceRoot":"","sources":["../../src/adapters/node-file-system.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAgB,QAAQ,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAMhG,qBAAa,cAAe,YAAW,cAAc;IACnD,OAAO,CAAC,MAAM,CAAC,YAAY,CAAK;IAE1B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7C;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7D;;;OAGG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAkBtF,0EAA0E;IACpE,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAStC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAQvC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInC,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;CAK5C"}
@@ -1,5 +1,5 @@
1
- import { mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile, } from "node:fs/promises";
2
- import { join } from "node:path";
1
+ import { appendFile, mkdir, open, readFile, readdir, rename, rm, stat, unlink, writeFile, } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
3
  export class NodeFileSystem {
4
4
  static writeCounter = 0;
5
5
  async readText(path) {
@@ -50,6 +50,11 @@ export class NodeFileSystem {
50
50
  }
51
51
  return { created: true };
52
52
  }
53
+ /** Append content, creating parent dirs on first write (log-friendly). */
54
+ async appendText(path, content) {
55
+ await mkdir(dirname(path), { recursive: true });
56
+ await appendFile(path, content, "utf8");
57
+ }
53
58
  async remove(path) {
54
59
  // recursive+force: borra archivo o directorio (con su contenido); force
55
60
  // ignora ENOENT → idempotente. Antes solo unlink (archivos).
@@ -1 +1 @@
1
- {"version":3,"file":"node-file-system.js","sourceRoot":"","sources":["../../src/adapters/node-file-system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-file-system.js","sourceRoot":"","sources":["../../src/adapters/node-file-system.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,22 @@
1
- import type { ProcessPort, RunOptions, RunResult, SpawnDetachedOptions, SpawnDetachedResult } from "../ports/process.js";
1
+ import type { ProcessPort, RunOptions, RunResult, SpawnDetachedOptions, SpawnDetachedResult, SpawnInTerminalOptions, SpawnInTerminalResult } from "../ports/process.js";
2
2
  export declare class NodeProcess implements ProcessPort {
3
+ private readonly platform;
4
+ private readonly env;
5
+ /** Platform/env are injectable so the terminal-launch fallback is testable without opening real windows. */
6
+ constructor(platform?: NodeJS.Platform, env?: NodeJS.ProcessEnv);
3
7
  run(cmd: string, args: string[], opts?: RunOptions): Promise<RunResult>;
4
8
  which(cmd: string): Promise<string | undefined>;
5
9
  spawnDetached(cmd: string, args: string[], opts: SpawnDetachedOptions): Promise<SpawnDetachedResult>;
10
+ spawnInTerminal(cmd: string, args: string[], opts: SpawnInTerminalOptions): Promise<SpawnInTerminalResult>;
11
+ /** Fall back to a detached background process (spawnDetached semantics + log). */
12
+ private backgroundFallback;
13
+ /** Poll `pidFile` for the app pid the wrapper wrote; null on timeout or abort. */
14
+ private readPidFile;
15
+ /** Linux terminal emulator basenames present on PATH, in priority order. */
16
+ private resolveLinuxTerminals;
17
+ openPath(path: string, opts?: {
18
+ app?: string;
19
+ }): Promise<void>;
6
20
  killTree(pid: number): Promise<void>;
7
21
  isAlive(pid: number): Promise<boolean>;
8
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node-process.d.ts","sourceRoot":"","sources":["../../src/adapters/node-process.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,qBAAqB,CAAC;AAI7B,qBAAa,WAAY,YAAW,WAAW;IACvC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IA8C3E,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAU/C,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC;IA4BzB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAW7C"}
1
+ {"version":3,"file":"node-process.d.ts","sourceRoot":"","sources":["../../src/adapters/node-process.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,qBAAqB,EACtB,MAAM,qBAAqB,CAAC;AAe7B,qBAAa,WAAY,YAAW,WAAW;IAG3C,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAHtB,4GAA4G;gBAEzF,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB;IAGjD,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IA8C3E,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAU/C,aAAa,CACjB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,mBAAmB,CAAC;IA4BzB,eAAe,CACnB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,sBAAsB,GAC3B,OAAO,CAAC,qBAAqB,CAAC;IAqGjC,kFAAkF;YACpE,kBAAkB;IAahC,kFAAkF;YACpE,WAAW;IAmBzB,4EAA4E;YAC9D,qBAAqB;IAQ7B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBlE,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAW7C"}
@@ -1,13 +1,34 @@
1
1
  import { spawn } from "node:child_process";
2
- import { closeSync, openSync } from "node:fs";
2
+ import { closeSync, openSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { buildOpenCommand } from "../application/open-external.js";
6
+ import { LINUX_TERMINALS, buildNixWrapper, buildTerminalCommand, } from "../application/terminal-launch.js";
3
7
  const WIN_SHELL_CMDS = new Set(["npm", "npx", "yarn", "pnpm", "node-gyp"]);
8
+ /** Monotonic suffix for ephemeral wrapper/pid files (avoids Date.now/random). */
9
+ let terminalSeq = 0;
10
+ function safeUnlink(path) {
11
+ try {
12
+ unlinkSync(path);
13
+ }
14
+ catch {
15
+ // best-effort cleanup
16
+ }
17
+ }
4
18
  export class NodeProcess {
19
+ platform;
20
+ env;
21
+ /** Platform/env are injectable so the terminal-launch fallback is testable without opening real windows. */
22
+ constructor(platform = process.platform, env = process.env) {
23
+ this.platform = platform;
24
+ this.env = env;
25
+ }
5
26
  async run(cmd, args, opts = {}) {
6
- const useShell = process.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
27
+ const useShell = this.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
7
28
  return new Promise((resolve, reject) => {
8
29
  const child = spawn(cmd, args, {
9
30
  cwd: opts.cwd,
10
- env: opts.env ?? process.env,
31
+ env: opts.env ?? this.env,
11
32
  stdio: ["pipe", "pipe", "pipe"],
12
33
  shell: useShell,
13
34
  });
@@ -45,7 +66,7 @@ export class NodeProcess {
45
66
  });
46
67
  }
47
68
  async which(cmd) {
48
- const lookup = process.platform === "win32" ? "where" : "which";
69
+ const lookup = this.platform === "win32" ? "where" : "which";
49
70
  const result = await this.run(lookup, [cmd]);
50
71
  if (result.code !== 0) {
51
72
  return undefined;
@@ -54,13 +75,13 @@ export class NodeProcess {
54
75
  return first && first.length > 0 ? first : undefined;
55
76
  }
56
77
  async spawnDetached(cmd, args, opts) {
57
- const useShell = process.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
78
+ const useShell = this.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
58
79
  // Open the log in append mode and hand the fd to the child for stdout+stderr.
59
80
  const fd = openSync(opts.logPath, "a");
60
81
  try {
61
82
  const child = spawn(cmd, args, {
62
83
  cwd: opts.cwd,
63
- env: opts.env ?? process.env,
84
+ env: opts.env ?? this.env,
64
85
  detached: true,
65
86
  stdio: ["ignore", fd, fd],
66
87
  windowsHide: true,
@@ -81,10 +102,160 @@ export class NodeProcess {
81
102
  closeSync(fd);
82
103
  }
83
104
  }
105
+ async spawnInTerminal(cmd, args, opts) {
106
+ if (this.platform === "win32") {
107
+ const plan = buildTerminalCommand("win32", {
108
+ wrapperPath: "",
109
+ cwd: opts.cwd,
110
+ command: cmd,
111
+ args,
112
+ title: opts.title,
113
+ linuxTerminals: [],
114
+ hasDisplay: true,
115
+ });
116
+ if (plan.kind === "terminal") {
117
+ // `detached` gives the child its own console window; `windowsHide:false`
118
+ // (unlike spawnDetached) keeps it visible; secrets ride in via `env`
119
+ // (inherited), never the command line.
120
+ const child = spawn(plan.cmd, plan.args, {
121
+ cwd: opts.cwd,
122
+ env: opts.env,
123
+ detached: true,
124
+ windowsHide: false,
125
+ stdio: "ignore",
126
+ });
127
+ child.on("error", () => { });
128
+ if (child.pid !== undefined) {
129
+ child.unref();
130
+ return { pid: child.pid, mode: "terminal" };
131
+ }
132
+ }
133
+ return this.backgroundFallback(cmd, args, opts);
134
+ }
135
+ // *nix — Terminal.app (macOS) or an emulator (Linux) runs an ephemeral
136
+ // wrapper that captures the real app pid into a pidfile we read back.
137
+ const hasDisplay = this.platform === "darwin" || Boolean(this.env.DISPLAY || this.env.WAYLAND_DISPLAY);
138
+ const linuxTerminals = this.platform === "linux" && hasDisplay ? await this.resolveLinuxTerminals() : [];
139
+ const seq = terminalSeq++;
140
+ const wrapperPath = join(tmpdir(), `aw-launch-${process.pid}-${seq}.sh`);
141
+ const pidFile = `${wrapperPath}.pid`;
142
+ const plan = buildTerminalCommand(this.platform, {
143
+ wrapperPath,
144
+ cwd: opts.cwd,
145
+ command: cmd,
146
+ args,
147
+ title: opts.title,
148
+ linuxTerminals,
149
+ hasDisplay,
150
+ });
151
+ if (plan.kind === "terminal") {
152
+ try {
153
+ writeFileSync(wrapperPath, buildNixWrapper({
154
+ cwd: opts.cwd,
155
+ command: cmd,
156
+ args,
157
+ envDelta: opts.envDelta,
158
+ pidFile,
159
+ logPath: opts.logPath,
160
+ title: opts.title,
161
+ }), { mode: 0o700 });
162
+ // Track launcher failure so we can fall back fast (e.g. osascript with no
163
+ // GUI, or an emulator that can't open a display, exit non-zero), WITHOUT
164
+ // mistaking a slow-but-succeeding cold start for "no terminal".
165
+ let launcherFailed = false;
166
+ const child = spawn(plan.cmd, plan.args, {
167
+ cwd: opts.cwd,
168
+ env: opts.env,
169
+ detached: true,
170
+ stdio: "ignore",
171
+ });
172
+ child.on("error", () => {
173
+ launcherFailed = true;
174
+ });
175
+ // Launchers like osascript / the gnome-terminal client exit right after
176
+ // handoff; a NON-zero exit means the window never opened.
177
+ child.on("exit", (code) => {
178
+ if (code !== 0 && code !== null)
179
+ launcherFailed = true;
180
+ });
181
+ child.unref();
182
+ // Wait for the wrapper to report the real app pid. The window may cold-start
183
+ // slowly (Terminal.app / a fresh emulator), so poll generously — but bail
184
+ // early the moment the launcher itself failed. If no pid ever appears AND the
185
+ // launcher didn't fail, the wrapper never got to run the app, so falling back
186
+ // cannot double-launch it. (bash keeps the unlinked script fd open → safe.)
187
+ const pid = await this.readPidFile(pidFile, 10000, () => launcherFailed);
188
+ safeUnlink(wrapperPath);
189
+ safeUnlink(pidFile);
190
+ if (pid !== null)
191
+ return { pid, mode: "terminal" };
192
+ }
193
+ catch {
194
+ safeUnlink(wrapperPath);
195
+ safeUnlink(pidFile);
196
+ }
197
+ }
198
+ // No terminal opened (headless/CI, or it failed): the app MUST still run.
199
+ return this.backgroundFallback(cmd, args, opts);
200
+ }
201
+ /** Fall back to a detached background process (spawnDetached semantics + log). */
202
+ async backgroundFallback(cmd, args, opts) {
203
+ const { pid } = await this.spawnDetached(cmd, args, {
204
+ cwd: opts.cwd,
205
+ env: opts.env,
206
+ logPath: opts.logPath,
207
+ });
208
+ return { pid, mode: "background" };
209
+ }
210
+ /** Poll `pidFile` for the app pid the wrapper wrote; null on timeout or abort. */
211
+ async readPidFile(pidFile, timeoutMs, shouldAbort) {
212
+ const deadline = Date.now() + timeoutMs;
213
+ while (Date.now() < deadline) {
214
+ if (shouldAbort?.())
215
+ return null;
216
+ try {
217
+ const pid = Number.parseInt(readFileSync(pidFile, "utf8").trim(), 10);
218
+ if (Number.isInteger(pid) && pid > 0)
219
+ return pid;
220
+ }
221
+ catch {
222
+ // not written yet
223
+ }
224
+ await new Promise((r) => setTimeout(r, 50));
225
+ }
226
+ return null;
227
+ }
228
+ /** Linux terminal emulator basenames present on PATH, in priority order. */
229
+ async resolveLinuxTerminals() {
230
+ const found = [];
231
+ for (const t of LINUX_TERMINALS) {
232
+ if (await this.which(t.bin))
233
+ found.push(t.bin);
234
+ }
235
+ return found;
236
+ }
237
+ async openPath(path, opts = {}) {
238
+ const plan = buildOpenCommand(this.platform, opts.app ? { path, app: opts.app } : { path });
239
+ try {
240
+ const child = spawn(plan.cmd, plan.args, {
241
+ detached: true,
242
+ stdio: "ignore",
243
+ // GUI openers may want a window; do not hide it on Windows.
244
+ windowsHide: false,
245
+ });
246
+ // Best-effort: swallow async spawn failures (e.g. ENOENT) so opening never
247
+ // crashes the TUI — the caller surfaces failure by other means.
248
+ child.on("error", () => { });
249
+ child.unref();
250
+ }
251
+ catch {
252
+ // Synchronous spawn failure — also best-effort.
253
+ }
254
+ }
84
255
  async killTree(pid) {
85
256
  if (!Number.isInteger(pid) || pid <= 0)
86
257
  return;
87
- if (process.platform === "win32") {
258
+ if (this.platform === "win32") {
88
259
  // Kill the process and its child tree, forcefully.
89
260
  await this.run("taskkill", ["/PID", String(pid), "/T", "/F"]).catch(() => { });
90
261
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"node-process.js","sourceRoot":"","sources":["../../src/adapters/node-process.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node-process.js","sourceRoot":"","sources":["../../src/adapters/node-process.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev-only-services.d.ts","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAgC,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EACzC,SAAS,GAAE,MAAM,MAAgB,GAChC,aAAa,CA4Cf;AAID,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;IAClC,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,cAAc,CAAC,CA6CzB;AAID,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE5D,wBAAsB,OAAO,CAC3B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,UAAU,CAAC,CAgCrB;AAID,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAID,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"dev-only-services.d.ts","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAa,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAgC,MAAM,eAAe,CAAC;AAChF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAIrC,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,EACzC,SAAS,GAAE,MAAM,MAAgB,GAChC,aAAa,CA4Cf;AAID,MAAM,WAAW,cAAc;IAC7B,eAAe,EAAE,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;IAC3C,aAAa,EAAE,KAAK,GAAG,IAAI,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,SAAS,GAAG,aAAa,CAAC;IAClC,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAED,wBAAsB,WAAW,CAC/B,EAAE,EAAE,cAAc,EAClB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,cAAc,CAAC,CA6CzB;AAID,MAAM,WAAW,SAAS;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE5D,wBAAsB,OAAO,CAC3B,GAAG,EAAE,OAAO,EACZ,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,UAAU,CAAC,CAiCrB;AAID,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAsB,aAAa,CACjC,EAAE,EAAE,cAAc,EAClB,GAAG,EAAE,OAAO,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAuB3B;AAID,OAAO,EAAE,iBAAiB,EAAE,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,CAAC"}
@@ -1,4 +1,4 @@
1
- import { existsSync, readFileSync, statSync, unlinkSync } from "node:fs";
1
+ import { existsSync, readFileSync, readdirSync, statSync, unlinkSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { HARNESSES } from "../domain/harnesses.js";
@@ -92,19 +92,20 @@ export async function runProfiles(fs, paths) {
92
92
  return result;
93
93
  }
94
94
  export async function runLogs(env, paths, input) {
95
- // Prefer the in-cwd ${ns}/logs/ when present, fallback to ~/.${ns}/logs/.
95
+ // Unified to the GLOBAL, user-level daily log (~/.${ns}/logs/agent-workflow-*.log):
96
+ // the same source the [Status] tab lists. The old per-workspace path is obsolete.
96
97
  void env;
97
- const cwdRoot = paths.cwdRoot();
98
- const path = existsSync(cwdRoot) && statSync(cwdRoot).isDirectory()
99
- ? paths.cwdLogFile()
100
- : join(paths.userLogsDir(), "agent-workflow.log");
98
+ const logsDir = paths.userLogsDir();
99
+ const path = paths.userDailyLogFile(new Date());
101
100
  if (input.clear === true) {
102
- if (existsSync(path))
103
- unlinkSync(path);
104
- const old = path.replace(/\.log$/, ".log.old");
105
- if (existsSync(old))
106
- unlinkSync(old);
107
- return { cleared: true, path };
101
+ // Clear every daily log, not just today's.
102
+ if (existsSync(logsDir)) {
103
+ for (const name of readdirSync(logsDir)) {
104
+ if (/^agent-workflow-.*\.log$/.test(name))
105
+ unlinkSync(join(logsDir, name));
106
+ }
107
+ }
108
+ return { cleared: true, path: logsDir };
108
109
  }
109
110
  if (!existsSync(path)) {
110
111
  return { lines: [], path, message: "No log file found" };
@@ -1 +1 @@
1
- {"version":3,"file":"dev-only-services.js","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dev-only-services.js","sourceRoot":"","sources":["../../src/application/dev-only-services.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ParsedArgs } from "../../cli/parser.js";
2
+ /**
3
+ * Human-readable one-line rendering of a command invocation for the operational
4
+ * log. Secret values are NOT masked here — the `Logger` redacts the final line
5
+ * (see `redactSecrets`), so this stays a faithful reconstruction.
6
+ */
7
+ export declare function formatCommandInvocation(parsed: ParsedArgs): string;
8
+ /** `<command> → exit <code>` for a completed dispatch. */
9
+ export declare function formatCommandOutcome(command: string, exitCode: number): string;
10
+ /** `<command> → error: <message>` for a thrown dispatch. */
11
+ export declare function formatCommandError(command: string, err: unknown): string;
12
+ //# sourceMappingURL=log-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-events.d.ts","sourceRoot":"","sources":["../../../src/application/logging/log-events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAUlE;AAED,0DAA0D;AAC1D,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE9E;AAED,4DAA4D;AAC5D,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAGxE"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Human-readable one-line rendering of a command invocation for the operational
3
+ * log. Secret values are NOT masked here — the `Logger` redacts the final line
4
+ * (see `redactSecrets`), so this stays a faithful reconstruction.
5
+ */
6
+ export function formatCommandInvocation(parsed) {
7
+ const parts = [];
8
+ if (parsed.command)
9
+ parts.push(parsed.command);
10
+ parts.push(...parsed.rest);
11
+ for (const flag of parsed.flags)
12
+ parts.push(`--${flag}`);
13
+ for (const [key, value] of parsed.values)
14
+ parts.push(`--${key}=${value}`);
15
+ for (const [key, values] of parsed.valuesMulti) {
16
+ for (const value of values)
17
+ parts.push(`--${key}=${value}`);
18
+ }
19
+ return parts.join(" ");
20
+ }
21
+ /** `<command> → exit <code>` for a completed dispatch. */
22
+ export function formatCommandOutcome(command, exitCode) {
23
+ return `${command} → exit ${exitCode}`;
24
+ }
25
+ /** `<command> → error: <message>` for a thrown dispatch. */
26
+ export function formatCommandError(command, err) {
27
+ const message = err instanceof Error ? err.message : String(err);
28
+ return `${command} → error: ${message}`;
29
+ }
30
+ //# sourceMappingURL=log-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-events.js","sourceRoot":"","sources":["../../../src/application/logging/log-events.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,MAAM,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/C,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IACzD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAC1E,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAC/C,KAAK,MAAM,KAAK,IAAI,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,QAAgB;IACpE,OAAO,GAAG,OAAO,WAAW,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,GAAY;IAC9D,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO,GAAG,OAAO,aAAa,OAAO,EAAE,CAAC;AAC1C,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { FileSystemPort } from "../../ports/file-system.js";
2
+ import type { PathsService } from "../paths-service.js";
3
+ export type LogLevel = "info" | "warn" | "error";
4
+ export interface LoggerDeps {
5
+ fs: FileSystemPort;
6
+ paths: PathsService;
7
+ /** Injected clock; defaults to the wall clock. The daily file uses its LOCAL date. */
8
+ now?: () => Date;
9
+ }
10
+ /**
11
+ * Operational logger: appends one line per event to the GLOBAL, user-level daily
12
+ * log (`~/.${ns}/logs/agent-workflow-YYYY-MM-DD.log`), the same file regardless of
13
+ * the cwd. Best-effort: a write failure never propagates (logging must not crash
14
+ * the CLI). Secret-looking values are redacted before writing.
15
+ */
16
+ export declare class Logger {
17
+ private readonly fs;
18
+ private readonly paths;
19
+ private readonly now;
20
+ constructor(deps: LoggerDeps);
21
+ info(message: string): Promise<void>;
22
+ warn(message: string): Promise<void>;
23
+ error(message: string): Promise<void>;
24
+ log(level: LogLevel, message: string): Promise<void>;
25
+ }
26
+ /**
27
+ * Mask values of secret-looking flags (`--token X`, `--password=X`, …) and common
28
+ * credential shapes, so tokens/passwords never land in the log. Deliberately
29
+ * conservative: it targets named secret flags + Bearer tokens.
30
+ */
31
+ export declare function redactSecrets(text: string): string;
32
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/application/logging/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,KAAK,EAAE,YAAY,CAAC;IACpB,sFAAsF;IACtF,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED;;;;;GAKG;AACH,qBAAa,MAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,IAAI,EAAE,UAAU;IAM5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGpC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAS3D;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGlD"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Operational logger: appends one line per event to the GLOBAL, user-level daily
3
+ * log (`~/.${ns}/logs/agent-workflow-YYYY-MM-DD.log`), the same file regardless of
4
+ * the cwd. Best-effort: a write failure never propagates (logging must not crash
5
+ * the CLI). Secret-looking values are redacted before writing.
6
+ */
7
+ export class Logger {
8
+ fs;
9
+ paths;
10
+ now;
11
+ constructor(deps) {
12
+ this.fs = deps.fs;
13
+ this.paths = deps.paths;
14
+ this.now = deps.now ?? (() => new Date());
15
+ }
16
+ info(message) {
17
+ return this.log("info", message);
18
+ }
19
+ warn(message) {
20
+ return this.log("warn", message);
21
+ }
22
+ error(message) {
23
+ return this.log("error", message);
24
+ }
25
+ async log(level, message) {
26
+ const at = this.now();
27
+ const line = `${at.toISOString()} ${level.toUpperCase()} ${redactSecrets(message)}\n`;
28
+ try {
29
+ await this.fs.appendText(this.paths.userDailyLogFile(at), line);
30
+ }
31
+ catch {
32
+ // Logging is best-effort — never let it crash the CLI.
33
+ }
34
+ }
35
+ }
36
+ /**
37
+ * Mask values of secret-looking flags (`--token X`, `--password=X`, …) and common
38
+ * credential shapes, so tokens/passwords never land in the log. Deliberately
39
+ * conservative: it targets named secret flags + Bearer tokens.
40
+ */
41
+ export function redactSecrets(text) {
42
+ const SECRET_FLAG = /(--?(?:token|secret|password|passwd|pwd|api[-_]?key|key|auth)[=\s]+)(\S+)/gi;
43
+ return text.replace(SECRET_FLAG, "$1***").replace(/\bBearer\s+\S+/gi, "Bearer ***");
44
+ }
45
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/application/logging/logger.ts"],"names":[],"mappings":"AAYA;;;;;GAKG;AACH,MAAM,OAAO,MAAM;IACA,EAAE,CAAiB;IACnB,KAAK,CAAe;IACpB,GAAG,CAAa;IAEjC,YAAY,IAAgB;QAC1B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,IAAI,CAAC,OAAe;QAClB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,KAAK,CAAC,OAAe;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,KAAe,EAAE,OAAe;QACxC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC;QACtF,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,WAAW,GAAG,6EAA6E,CAAC;IAClG,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Pure, cross-platform construction of the command that opens a file in an
3
+ * EXTERNAL application — the OS default text editor, or a specific app. The
4
+ * adapter (`NodeProcess.openPath`) spawns it detached so it never captures the
5
+ * TUI's TTY (a terminal editor like vim would block Ink; use GUI apps).
6
+ *
7
+ * Impurity-free so the Windows/Linux/macOS shapes are unit-tested deterministically.
8
+ */
9
+ export interface OpenCommand {
10
+ cmd: string;
11
+ args: string[];
12
+ }
13
+ export interface OpenOptions {
14
+ /** Absolute path of the file to open. */
15
+ path: string;
16
+ /** Specific application to open with; when absent, the OS default is used. */
17
+ app?: string;
18
+ }
19
+ /** Build the OS-specific command that opens `path` (in the default text editor or `app`). */
20
+ export declare function buildOpenCommand(platform: string, opts: OpenOptions): OpenCommand;
21
+ //# sourceMappingURL=open-external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-external.d.ts","sourceRoot":"","sources":["../../src/application/open-external.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,6FAA6F;AAC7F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,WAAW,CAejF"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Pure, cross-platform construction of the command that opens a file in an
3
+ * EXTERNAL application — the OS default text editor, or a specific app. The
4
+ * adapter (`NodeProcess.openPath`) spawns it detached so it never captures the
5
+ * TUI's TTY (a terminal editor like vim would block Ink; use GUI apps).
6
+ *
7
+ * Impurity-free so the Windows/Linux/macOS shapes are unit-tested deterministically.
8
+ */
9
+ /** Build the OS-specific command that opens `path` (in the default text editor or `app`). */
10
+ export function buildOpenCommand(platform, opts) {
11
+ if (platform === "darwin") {
12
+ // `-t` opens in the default TEXT editor (not whatever handles .log); `-a` picks an app.
13
+ return opts.app
14
+ ? { cmd: "open", args: ["-a", opts.app, opts.path] }
15
+ : { cmd: "open", args: ["-t", opts.path] };
16
+ }
17
+ if (platform === "win32") {
18
+ // `start` is a cmd builtin; the empty "" is the (required) window title so a
19
+ // quoted first token isn't mistaken for it. With an app, it precedes the path.
20
+ const tail = opts.app ? ["start", "", opts.app, opts.path] : ["start", "", opts.path];
21
+ return { cmd: "cmd", args: ["/c", ...tail] };
22
+ }
23
+ // linux + anything else: xdg-open for the default handler, or run the app directly.
24
+ return opts.app ? { cmd: opts.app, args: [opts.path] } : { cmd: "xdg-open", args: [opts.path] };
25
+ }
26
+ //# sourceMappingURL=open-external.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-external.js","sourceRoot":"","sources":["../../src/application/open-external.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,6FAA6F;AAC7F,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,IAAiB;IAClE,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,wFAAwF;QACxF,OAAO,IAAI,CAAC,GAAG;YACb,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,6EAA6E;QAC7E,+EAA+E;QAC/E,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QACtF,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;IAC/C,CAAC;IACD,oFAAoF;IACpF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAClG,CAAC"}