@tacuchi/agent-workflow-cli 14.1.1 → 14.3.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 (36) hide show
  1. package/dist/adapters/node-process.d.ts +12 -1
  2. package/dist/adapters/node-process.d.ts.map +1 -1
  3. package/dist/adapters/node-process.js +159 -7
  4. package/dist/adapters/node-process.js.map +1 -1
  5. package/dist/application/process-registry-service.d.ts +2 -0
  6. package/dist/application/process-registry-service.d.ts.map +1 -1
  7. package/dist/application/process-registry-service.js.map +1 -1
  8. package/dist/application/source-launch-service.d.ts +4 -1
  9. package/dist/application/source-launch-service.d.ts.map +1 -1
  10. package/dist/application/source-launch-service.js +12 -6
  11. package/dist/application/source-launch-service.js.map +1 -1
  12. package/dist/application/terminal-launch.d.ts +72 -0
  13. package/dist/application/terminal-launch.d.ts.map +1 -0
  14. package/dist/application/terminal-launch.js +114 -0
  15. package/dist/application/terminal-launch.js.map +1 -0
  16. package/dist/cli/tui/components/process-list.d.ts +3 -2
  17. package/dist/cli/tui/components/process-list.d.ts.map +1 -1
  18. package/dist/cli/tui/components/process-list.js +10 -4
  19. package/dist/cli/tui/components/process-list.js.map +1 -1
  20. package/dist/cli/tui/data/workflow-content.d.ts.map +1 -1
  21. package/dist/cli/tui/data/workflow-content.js +4 -3
  22. package/dist/cli/tui/data/workflow-content.js.map +1 -1
  23. package/dist/cli/tui/tabs/project-tab.js +12 -4
  24. package/dist/cli/tui/tabs/project-tab.js.map +1 -1
  25. package/dist/ports/process.d.ts +25 -0
  26. package/dist/ports/process.d.ts.map +1 -1
  27. package/package.json +1 -1
  28. package/skills/w/README.md +5 -5
  29. package/skills/w/SKILL.md +9 -8
  30. package/skills/w/commands/README.md +12 -6
  31. package/skills/w/commands/plan-refine.md +53 -0
  32. package/skills/w/loops/README.md +14 -9
  33. package/skills/w/loops/plan-exec-loop/SKILL.md +1 -1
  34. package/skills/w/loops/plan-new-loop/SKILL.md +2 -0
  35. package/skills/w/loops/plan-refine-loop/SKILL.md +94 -0
  36. package/skills/w/loops/spec-refine-loop/SKILL.md +1 -0
@@ -1,8 +1,19 @@
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;
6
17
  killTree(pid: number): Promise<void>;
7
18
  isAlive(pid: number): Promise<boolean>;
8
19
  }
@@ -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":"AASA,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,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBpC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAW7C"}
@@ -1,13 +1,33 @@
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 { LINUX_TERMINALS, buildNixWrapper, buildTerminalCommand, } from "../application/terminal-launch.js";
3
6
  const WIN_SHELL_CMDS = new Set(["npm", "npx", "yarn", "pnpm", "node-gyp"]);
7
+ /** Monotonic suffix for ephemeral wrapper/pid files (avoids Date.now/random). */
8
+ let terminalSeq = 0;
9
+ function safeUnlink(path) {
10
+ try {
11
+ unlinkSync(path);
12
+ }
13
+ catch {
14
+ // best-effort cleanup
15
+ }
16
+ }
4
17
  export class NodeProcess {
18
+ platform;
19
+ env;
20
+ /** Platform/env are injectable so the terminal-launch fallback is testable without opening real windows. */
21
+ constructor(platform = process.platform, env = process.env) {
22
+ this.platform = platform;
23
+ this.env = env;
24
+ }
5
25
  async run(cmd, args, opts = {}) {
6
- const useShell = process.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
26
+ const useShell = this.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
7
27
  return new Promise((resolve, reject) => {
8
28
  const child = spawn(cmd, args, {
9
29
  cwd: opts.cwd,
10
- env: opts.env ?? process.env,
30
+ env: opts.env ?? this.env,
11
31
  stdio: ["pipe", "pipe", "pipe"],
12
32
  shell: useShell,
13
33
  });
@@ -45,7 +65,7 @@ export class NodeProcess {
45
65
  });
46
66
  }
47
67
  async which(cmd) {
48
- const lookup = process.platform === "win32" ? "where" : "which";
68
+ const lookup = this.platform === "win32" ? "where" : "which";
49
69
  const result = await this.run(lookup, [cmd]);
50
70
  if (result.code !== 0) {
51
71
  return undefined;
@@ -54,13 +74,13 @@ export class NodeProcess {
54
74
  return first && first.length > 0 ? first : undefined;
55
75
  }
56
76
  async spawnDetached(cmd, args, opts) {
57
- const useShell = process.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
77
+ const useShell = this.platform === "win32" && WIN_SHELL_CMDS.has(cmd);
58
78
  // Open the log in append mode and hand the fd to the child for stdout+stderr.
59
79
  const fd = openSync(opts.logPath, "a");
60
80
  try {
61
81
  const child = spawn(cmd, args, {
62
82
  cwd: opts.cwd,
63
- env: opts.env ?? process.env,
83
+ env: opts.env ?? this.env,
64
84
  detached: true,
65
85
  stdio: ["ignore", fd, fd],
66
86
  windowsHide: true,
@@ -81,10 +101,142 @@ export class NodeProcess {
81
101
  closeSync(fd);
82
102
  }
83
103
  }
104
+ async spawnInTerminal(cmd, args, opts) {
105
+ if (this.platform === "win32") {
106
+ const plan = buildTerminalCommand("win32", {
107
+ wrapperPath: "",
108
+ cwd: opts.cwd,
109
+ command: cmd,
110
+ args,
111
+ title: opts.title,
112
+ linuxTerminals: [],
113
+ hasDisplay: true,
114
+ });
115
+ if (plan.kind === "terminal") {
116
+ // `detached` gives the child its own console window; `windowsHide:false`
117
+ // (unlike spawnDetached) keeps it visible; secrets ride in via `env`
118
+ // (inherited), never the command line.
119
+ const child = spawn(plan.cmd, plan.args, {
120
+ cwd: opts.cwd,
121
+ env: opts.env,
122
+ detached: true,
123
+ windowsHide: false,
124
+ stdio: "ignore",
125
+ });
126
+ child.on("error", () => { });
127
+ if (child.pid !== undefined) {
128
+ child.unref();
129
+ return { pid: child.pid, mode: "terminal" };
130
+ }
131
+ }
132
+ return this.backgroundFallback(cmd, args, opts);
133
+ }
134
+ // *nix — Terminal.app (macOS) or an emulator (Linux) runs an ephemeral
135
+ // wrapper that captures the real app pid into a pidfile we read back.
136
+ const hasDisplay = this.platform === "darwin" || Boolean(this.env.DISPLAY || this.env.WAYLAND_DISPLAY);
137
+ const linuxTerminals = this.platform === "linux" && hasDisplay ? await this.resolveLinuxTerminals() : [];
138
+ const seq = terminalSeq++;
139
+ const wrapperPath = join(tmpdir(), `aw-launch-${process.pid}-${seq}.sh`);
140
+ const pidFile = `${wrapperPath}.pid`;
141
+ const plan = buildTerminalCommand(this.platform, {
142
+ wrapperPath,
143
+ cwd: opts.cwd,
144
+ command: cmd,
145
+ args,
146
+ title: opts.title,
147
+ linuxTerminals,
148
+ hasDisplay,
149
+ });
150
+ if (plan.kind === "terminal") {
151
+ try {
152
+ writeFileSync(wrapperPath, buildNixWrapper({
153
+ cwd: opts.cwd,
154
+ command: cmd,
155
+ args,
156
+ envDelta: opts.envDelta,
157
+ pidFile,
158
+ logPath: opts.logPath,
159
+ title: opts.title,
160
+ }), { mode: 0o700 });
161
+ // Track launcher failure so we can fall back fast (e.g. osascript with no
162
+ // GUI, or an emulator that can't open a display, exit non-zero), WITHOUT
163
+ // mistaking a slow-but-succeeding cold start for "no terminal".
164
+ let launcherFailed = false;
165
+ const child = spawn(plan.cmd, plan.args, {
166
+ cwd: opts.cwd,
167
+ env: opts.env,
168
+ detached: true,
169
+ stdio: "ignore",
170
+ });
171
+ child.on("error", () => {
172
+ launcherFailed = true;
173
+ });
174
+ // Launchers like osascript / the gnome-terminal client exit right after
175
+ // handoff; a NON-zero exit means the window never opened.
176
+ child.on("exit", (code) => {
177
+ if (code !== 0 && code !== null)
178
+ launcherFailed = true;
179
+ });
180
+ child.unref();
181
+ // Wait for the wrapper to report the real app pid. The window may cold-start
182
+ // slowly (Terminal.app / a fresh emulator), so poll generously — but bail
183
+ // early the moment the launcher itself failed. If no pid ever appears AND the
184
+ // launcher didn't fail, the wrapper never got to run the app, so falling back
185
+ // cannot double-launch it. (bash keeps the unlinked script fd open → safe.)
186
+ const pid = await this.readPidFile(pidFile, 10000, () => launcherFailed);
187
+ safeUnlink(wrapperPath);
188
+ safeUnlink(pidFile);
189
+ if (pid !== null)
190
+ return { pid, mode: "terminal" };
191
+ }
192
+ catch {
193
+ safeUnlink(wrapperPath);
194
+ safeUnlink(pidFile);
195
+ }
196
+ }
197
+ // No terminal opened (headless/CI, or it failed): the app MUST still run.
198
+ return this.backgroundFallback(cmd, args, opts);
199
+ }
200
+ /** Fall back to a detached background process (spawnDetached semantics + log). */
201
+ async backgroundFallback(cmd, args, opts) {
202
+ const { pid } = await this.spawnDetached(cmd, args, {
203
+ cwd: opts.cwd,
204
+ env: opts.env,
205
+ logPath: opts.logPath,
206
+ });
207
+ return { pid, mode: "background" };
208
+ }
209
+ /** Poll `pidFile` for the app pid the wrapper wrote; null on timeout or abort. */
210
+ async readPidFile(pidFile, timeoutMs, shouldAbort) {
211
+ const deadline = Date.now() + timeoutMs;
212
+ while (Date.now() < deadline) {
213
+ if (shouldAbort?.())
214
+ return null;
215
+ try {
216
+ const pid = Number.parseInt(readFileSync(pidFile, "utf8").trim(), 10);
217
+ if (Number.isInteger(pid) && pid > 0)
218
+ return pid;
219
+ }
220
+ catch {
221
+ // not written yet
222
+ }
223
+ await new Promise((r) => setTimeout(r, 50));
224
+ }
225
+ return null;
226
+ }
227
+ /** Linux terminal emulator basenames present on PATH, in priority order. */
228
+ async resolveLinuxTerminals() {
229
+ const found = [];
230
+ for (const t of LINUX_TERMINALS) {
231
+ if (await this.which(t.bin))
232
+ found.push(t.bin);
233
+ }
234
+ return found;
235
+ }
84
236
  async killTree(pid) {
85
237
  if (!Number.isInteger(pid) || pid <= 0)
86
238
  return;
87
- if (process.platform === "win32") {
239
+ if (this.platform === "win32") {
88
240
  // Kill the process and its child tree, forcefully.
89
241
  await this.run("taskkill", ["/PID", String(pid), "/T", "/F"]).catch(() => { });
90
242
  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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"}
@@ -17,6 +17,8 @@ export interface ProcessRecord {
17
17
  logPath: string;
18
18
  /** Non-secret param values entered at launch, so a relaunch reuses them (secrets never persisted). */
19
19
  values?: Record<string, string>;
20
+ /** How it was launched: "terminal" (visible window) or "background" (detached + log fallback). Absent = legacy background. */
21
+ launchMode?: "terminal" | "background";
20
22
  state: ProcessState;
21
23
  }
22
24
  /** Fields the caller supplies when registering a launch (id/state are derived). */
@@ -1 +1 @@
1
- {"version":3,"file":"process-registry-service.d.ts","sourceRoot":"","sources":["../../src/application/process-registry-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,mFAAmF;AACnF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;AAMtE;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM;YAGrB,IAAI;YAYJ,KAAK;IAKnB,mFAAmF;IAC7E,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAchE;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAetC,+EAA+E;IACzE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C,gDAAgD;IAC1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxC"}
1
+ {"version":3,"file":"process-registry-service.d.ts","sourceRoot":"","sources":["../../src/application/process-registry-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,wDAAwD;AACxD,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE5D,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,kEAAkE;IAClE,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAChB,sGAAsG;IACtG,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,8HAA8H;IAC9H,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACvC,KAAK,EAAE,YAAY,CAAC;CACrB;AAED,mFAAmF;AACnF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC;AAMtE;;;;;;;;GAQG;AACH,qBAAa,sBAAsB;IAE/B,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAFR,EAAE,EAAE,cAAc,EAClB,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,MAAM;YAGrB,IAAI;YAYJ,KAAK;IAKnB,mFAAmF;IAC7E,QAAQ,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;IAchE;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAetC,+EAA+E;IACzE,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAa5C,gDAAgD;IAC1C,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAKxC"}
@@ -1 +1 @@
1
- {"version":3,"file":"process-registry-service.js","sourceRoot":"","sources":["../../src/application/process-registry-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"process-registry-service.js","sourceRoot":"","sources":["../../src/application/process-registry-service.ts"],"names":[],"mappings":"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"}
@@ -13,7 +13,10 @@ export interface ResolvedLaunch {
13
13
  command: string;
14
14
  args: string[];
15
15
  cwd: string;
16
+ /** Full child env: base + params + PROFILE. */
16
17
  env: Record<string, string>;
18
+ /** Deltas over the base env (params + PROFILE) — what a terminal must bake in when it doesn't inherit our env. */
19
+ envDelta: Record<string, string>;
17
20
  logPath: string;
18
21
  }
19
22
  export interface LaunchDeps {
@@ -41,7 +44,7 @@ export declare function logFileFor(logsDir: string, alias: string, profile: stri
41
44
  export declare function resolveLaunch(desc: LaunchDescriptor, req: LaunchRequest, logsDir: string, baseEnv: Record<string, string>): ResolvedLaunch | null;
42
45
  /** A running process for the same source+profile, if any (collision). */
43
46
  export declare function findCollision(processes: ProcessRecord[], alias: string, profile: string | null): ProcessRecord | undefined;
44
- /** Launch a source detached: resolve → open log dir → spawnDetached → register. */
47
+ /** Launch a source: resolve → open log dir → spawnInTerminal (terminal or background fallback) → register. */
45
48
  export declare function launchSource(deps: LaunchDeps, req: LaunchRequest): Promise<LaunchResult>;
46
49
  /** Stop a process (kill its tree) and mark it stopped in the registry. */
47
50
  export declare function stopProcess(deps: LaunchDeps, record: ProcessRecord): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"source-launch-service.d.ts","sourceRoot":"","sources":["../../src/application/source-launch-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,KAAK,aAAa,EAA0B,MAAM,+BAA+B,CAAC;AAC3F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,cAAc,CAAC;IACnB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,YAAY,CAAC;IACpB,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,0EAA0E;IAC1E,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GACpB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,GACnC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,GAAG,cAAc,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/F,sEAAsE;AACtE,wBAAsB,cAAc,CAClC,EAAE,EAAE,cAAc,EAClB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAQlC;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAEzF;AAED,yGAAyG;AACzG,wBAAgB,aAAa,CAC3B,IAAI,EAAE,gBAAgB,EACtB,GAAG,EAAE,aAAa,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,cAAc,GAAG,IAAI,CAcvB;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAC3B,SAAS,EAAE,aAAa,EAAE,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,aAAa,GAAG,SAAS,CAI3B;AAMD,mFAAmF;AACnF,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAyC9F;AAED,0EAA0E;AAC1E,wBAAsB,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAGxF;AAED,wFAAwF;AACxF,wBAAsB,eAAe,CACnC,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED,0EAA0E;AAC1E,wBAAsB,OAAO,CAC3B,EAAE,EAAE,cAAc,EAClB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,EAAE,CAAC,CAUnB"}
1
+ {"version":3,"file":"source-launch-service.d.ts","sourceRoot":"","sources":["../../src/application/source-launch-service.ts"],"names":[],"mappings":"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"}
@@ -20,17 +20,18 @@ export function logFileFor(logsDir, alias, profile) {
20
20
  export function resolveLaunch(desc, req, logsDir, baseEnv) {
21
21
  if (!desc.command)
22
22
  return null;
23
- const env = { ...baseEnv };
23
+ const envDelta = {};
24
24
  for (const p of desc.params) {
25
- env[p.name] = req.values[p.name] ?? p.default;
25
+ envDelta[p.name] = req.values[p.name] ?? p.default;
26
26
  }
27
27
  if (req.profile)
28
- env.PROFILE = req.profile;
28
+ envDelta.PROFILE = req.profile;
29
29
  return {
30
30
  command: desc.command,
31
31
  args: desc.args,
32
32
  cwd: desc.cwd,
33
- env,
33
+ env: { ...baseEnv, ...envDelta },
34
+ envDelta,
34
35
  logPath: logFileFor(logsDir, req.alias, req.profile),
35
36
  };
36
37
  }
@@ -41,7 +42,7 @@ export function findCollision(processes, alias, profile) {
41
42
  function registry(deps) {
42
43
  return new ProcessRegistryService(deps.fs, deps.proc, deps.paths.cwdProcessesFile());
43
44
  }
44
- /** Launch a source detached: resolve → open log dir → spawnDetached → register. */
45
+ /** Launch a source: resolve → open log dir → spawnInTerminal (terminal or background fallback) → register. */
45
46
  export async function launchSource(deps, req) {
46
47
  const desc = await readDescriptor(deps.fs, deps.paths.cwdLaunchDir(), req.alias);
47
48
  if (!desc)
@@ -57,10 +58,14 @@ export async function launchSource(deps, req) {
57
58
  }
58
59
  await deps.fs.mkdirp(logsDir);
59
60
  try {
60
- const { pid } = await deps.proc.spawnDetached(resolved.command, resolved.args, {
61
+ // Open a visible, persistent terminal window (monitor live + close-to-stop);
62
+ // the adapter falls back to a background+log process when no terminal exists.
63
+ const { pid, mode } = await deps.proc.spawnInTerminal(resolved.command, resolved.args, {
61
64
  cwd: resolved.cwd,
62
65
  env: resolved.env,
66
+ envDelta: resolved.envDelta,
63
67
  logPath: resolved.logPath,
68
+ title: req.profile ? `${req.alias} · ${req.profile}` : req.alias,
64
69
  });
65
70
  const startedAt = (deps.now ?? (() => new Date().toISOString()))();
66
71
  // Persist only NON-secret entered values so a relaunch can reuse them; secrets
@@ -76,6 +81,7 @@ export async function launchSource(deps, req) {
76
81
  startedAt,
77
82
  logPath: resolved.logPath,
78
83
  values: persistedValues,
84
+ launchMode: mode,
79
85
  });
80
86
  return { ok: true, record };
81
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"source-launch-service.js","sourceRoot":"","sources":["../../src/application/source-launch-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"source-launch-service.js","sourceRoot":"","sources":["../../src/application/source-launch-service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Pure, cross-platform construction of the command that opens a *visible,
3
+ * persistent* terminal window for a source launch, plus the *nix wrapper script
4
+ * that runs inside it.
5
+ *
6
+ * The window must stay open (to monitor the app live) and closing it must stop
7
+ * the app (to detenerla al cerrarla). To also keep the TUI process registry
8
+ * working, the wrapper captures the *real* app PID into a pidfile the adapter
9
+ * reads back (on Windows we track the console PID instead — see the adapter).
10
+ *
11
+ * This module is impurity-free so the Windows/Linux/macOS shapes are unit-tested
12
+ * deterministically; the adapter (`NodeProcess.spawnInTerminal`) does the I/O
13
+ * (write wrapper, spawn, poll pidfile, fall back to background when there is no
14
+ * terminal).
15
+ */
16
+ /** A source's launch command, or `kind:"none"` when no terminal is available. */
17
+ export type TerminalCommand = {
18
+ kind: "terminal";
19
+ cmd: string;
20
+ args: string[];
21
+ } | {
22
+ kind: "none";
23
+ };
24
+ export interface NixWrapperSpec {
25
+ /** Working directory the command runs from. */
26
+ cwd: string;
27
+ /** Launch command + args (already resolved from the descriptor). */
28
+ command: string;
29
+ args: string[];
30
+ /**
31
+ * Environment deltas over the inherited base env (params + PROFILE), baked as
32
+ * exports so they survive terminals that do NOT inherit our env (Terminal.app
33
+ * `do script`, gnome-terminal-server). Secrets are included — the wrapper is a
34
+ * 0700 temp file the adapter unlinks right after launch.
35
+ */
36
+ envDelta: Record<string, string>;
37
+ /** File the wrapper writes the app PID to (the adapter reads it back). */
38
+ pidFile: string;
39
+ /** Log file the output is tee'd to (so the TUI "Ver log" keeps working). */
40
+ logPath: string;
41
+ /** Label shown in the exit line when the app finishes. */
42
+ title: string;
43
+ }
44
+ export interface TerminalCommandOptions {
45
+ /** *nix: absolute path to the wrapper file (run via `bash <wrapper>`). */
46
+ wrapperPath: string;
47
+ /** Working directory (Windows bakes it via `Set-Location`). */
48
+ cwd: string;
49
+ /** Launch command + args (Windows bakes them into `-Command`). */
50
+ command: string;
51
+ args: string[];
52
+ /** Window title / exit-line label. */
53
+ title: string;
54
+ /** Linux: emulator basenames found on PATH (adapter resolves via `which`). */
55
+ linuxTerminals: string[];
56
+ /** Linux: whether a GUI display is present (DISPLAY / WAYLAND_DISPLAY). */
57
+ hasDisplay: boolean;
58
+ }
59
+ /**
60
+ * Known Linux terminal emulators, in priority order, with how to invoke each to
61
+ * run `bash <wrapper>`. `x-terminal-emulator` is first so the Debian-alternatives
62
+ * choice (the user's default) wins.
63
+ */
64
+ export declare const LINUX_TERMINALS: {
65
+ bin: string;
66
+ toArgs: (wrapper: string) => string[];
67
+ }[];
68
+ /** Assemble the bash wrapper that runs inside the *nix terminal window. */
69
+ export declare function buildNixWrapper(spec: NixWrapperSpec): string;
70
+ /** Build the OS-specific command that opens the persistent terminal window. */
71
+ export declare function buildTerminalCommand(platform: string, opts: TerminalCommandOptions): TerminalCommand;
72
+ //# sourceMappingURL=terminal-launch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-launch.d.ts","sourceRoot":"","sources":["../../src/application/terminal-launch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,oEAAoE;IACpE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;IACpB,+DAA+D;IAC/D,GAAG,EAAE,MAAM,CAAC;IACZ,kEAAkE;IAClE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,2EAA2E;IAC3E,UAAU,EAAE,OAAO,CAAC;CACrB;AAED;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,EAAE,CAAA;CAAE,EAUnF,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,eAAe,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CA8B5D;AAED,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,sBAAsB,GAC3B,eAAe,CAsCjB"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Pure, cross-platform construction of the command that opens a *visible,
3
+ * persistent* terminal window for a source launch, plus the *nix wrapper script
4
+ * that runs inside it.
5
+ *
6
+ * The window must stay open (to monitor the app live) and closing it must stop
7
+ * the app (to detenerla al cerrarla). To also keep the TUI process registry
8
+ * working, the wrapper captures the *real* app PID into a pidfile the adapter
9
+ * reads back (on Windows we track the console PID instead — see the adapter).
10
+ *
11
+ * This module is impurity-free so the Windows/Linux/macOS shapes are unit-tested
12
+ * deterministically; the adapter (`NodeProcess.spawnInTerminal`) does the I/O
13
+ * (write wrapper, spawn, poll pidfile, fall back to background when there is no
14
+ * terminal).
15
+ */
16
+ /**
17
+ * Known Linux terminal emulators, in priority order, with how to invoke each to
18
+ * run `bash <wrapper>`. `x-terminal-emulator` is first so the Debian-alternatives
19
+ * choice (the user's default) wins.
20
+ */
21
+ export const LINUX_TERMINALS = [
22
+ { bin: "x-terminal-emulator", toArgs: (w) => ["-e", "bash", w] },
23
+ { bin: "gnome-terminal", toArgs: (w) => ["--", "bash", w] },
24
+ { bin: "konsole", toArgs: (w) => ["-e", "bash", w] },
25
+ // `-x` (execute) consumes the rest of argv as a real vector; `--command` would
26
+ // re-parse a string via GLib's non-shell parser (wrong quoting dialect).
27
+ { bin: "xfce4-terminal", toArgs: (w) => ["-x", "bash", w] },
28
+ { bin: "alacritty", toArgs: (w) => ["-e", "bash", w] },
29
+ { bin: "kitty", toArgs: (w) => ["bash", w] },
30
+ { bin: "xterm", toArgs: (w) => ["-e", "bash", w] },
31
+ ];
32
+ /** Assemble the bash wrapper that runs inside the *nix terminal window. */
33
+ export function buildNixWrapper(spec) {
34
+ const lines = [
35
+ "#!/usr/bin/env bash",
36
+ "# agent-workflow: wrapper efímero de lanzamiento en terminal (se autoelimina).",
37
+ // Job control: the backgrounded app becomes its own process group, so both
38
+ // the trap and the TUI's killTree(-pid) take down its whole tree (npm→node…).
39
+ "set -m",
40
+ `cd ${shQuote(spec.cwd)} || exit 1`,
41
+ ];
42
+ for (const key of Object.keys(spec.envDelta).sort()) {
43
+ lines.push(`export ${key}=${shSingleQuote(spec.envDelta[key] ?? "")}`);
44
+ }
45
+ const cmdline = [spec.command, ...spec.args].map(shQuote).join(" ");
46
+ // Background the app so we can grab its pid, tee its output to the log, and
47
+ // still keep this shell (→ the window) alive after it exits.
48
+ lines.push(`${cmdline} > >(tee -a ${shQuote(spec.logPath)}) 2>&1 &`);
49
+ lines.push("__aw_pid=$!");
50
+ // Tie the app to this window: closing it (SIGHUP) — or any exit — kills the app's
51
+ // whole process group (npm→node…); non-interactive bash won't forward it for us.
52
+ lines.push(`trap 'kill -TERM -"$__aw_pid" 2>/dev/null || kill -TERM "$__aw_pid" 2>/dev/null' EXIT HUP TERM INT`);
53
+ lines.push(`printf '%s' "$__aw_pid" > ${shQuote(spec.pidFile)}`);
54
+ lines.push('wait "$__aw_pid"');
55
+ lines.push("__aw_ec=$?");
56
+ lines.push(`printf '\\n[%s — código %s · cerrá esta ventana para detener]\\n' ${shQuote(spec.title)} "$__aw_ec"`);
57
+ lines.push('exec "${SHELL:-bash}"');
58
+ return `${lines.join("\n")}\n`;
59
+ }
60
+ /** Build the OS-specific command that opens the persistent terminal window. */
61
+ export function buildTerminalCommand(platform, opts) {
62
+ if (platform === "darwin") {
63
+ // Terminal.app runs the wrapper via AppleScript; `do script` opens a new
64
+ // window that stays open while the shell (the wrapper) lives.
65
+ const inner = `bash ${shQuote(opts.wrapperPath)}`;
66
+ const escaped = inner.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
67
+ return {
68
+ kind: "terminal",
69
+ cmd: "osascript",
70
+ args: [
71
+ "-e",
72
+ `tell application "Terminal" to do script "${escaped}"`,
73
+ "-e",
74
+ 'tell application "Terminal" to activate',
75
+ ],
76
+ };
77
+ }
78
+ if (platform === "win32") {
79
+ // `-NoExit` keeps the console open after the command finishes (crash
80
+ // visibility); the adapter spawns it `detached` (own console) + `windowsHide:false`.
81
+ const psArgs = opts.args.map(psSingleQuote).join(" ");
82
+ const command = `Set-Location ${psSingleQuote(opts.cwd)}; & ${psSingleQuote(opts.command)}${psArgs ? ` ${psArgs}` : ""}`;
83
+ return {
84
+ kind: "terminal",
85
+ cmd: "powershell",
86
+ args: ["-NoExit", "-ExecutionPolicy", "Bypass", "-Command", command],
87
+ };
88
+ }
89
+ if (platform === "linux") {
90
+ if (!opts.hasDisplay)
91
+ return { kind: "none" };
92
+ for (const t of LINUX_TERMINALS) {
93
+ if (opts.linuxTerminals.includes(t.bin)) {
94
+ return { kind: "terminal", cmd: t.bin, args: t.toArgs(opts.wrapperPath) };
95
+ }
96
+ }
97
+ return { kind: "none" };
98
+ }
99
+ return { kind: "none" };
100
+ }
101
+ // --- quoting helpers -------------------------------------------------------
102
+ /** POSIX shell quoting: bare when safe, else single-quoted with `'` escaped. */
103
+ function shQuote(v) {
104
+ return /^[A-Za-z0-9_./:-]+$/.test(v) ? v : shSingleQuote(v);
105
+ }
106
+ /** Always single-quote (no expansion) — safe for baked env values incl. secrets. */
107
+ function shSingleQuote(v) {
108
+ return `'${v.replace(/'/g, "'\\''")}'`;
109
+ }
110
+ /** PowerShell single-quote literal: wrap in `'…'` with `'` doubled. */
111
+ function psSingleQuote(v) {
112
+ return `'${v.replace(/'/g, "''")}'`;
113
+ }
114
+ //# sourceMappingURL=terminal-launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"terminal-launch.js","sourceRoot":"","sources":["../../src/application/terminal-launch.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@ export interface ProcessListProps {
8
8
  widthHint: number;
9
9
  }
10
10
  /**
11
- * "Procesos en segundo plano" — the launched detached processes for the
12
- * workspace sources, with their reconciled state. Navigable in process mode.
11
+ * "Procesos lanzados" — the launched source processes (in a visible terminal, or
12
+ * background when no terminal was available), with their reconciled state.
13
+ * Navigable in process mode.
13
14
  */
14
15
  export declare function ProcessList({ processes, cursor, focused, widthHint }: ProcessListProps): import("react/jsx-runtime").JSX.Element;
15
16
  //# sourceMappingURL=process-list.d.ts.map