poe-code 3.0.121 → 3.0.123

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.
@@ -12,7 +12,7 @@ export function registerAuthCommand(program, container) {
12
12
  });
13
13
  auth
14
14
  .command("status")
15
- .description("Show login, balance, and configuration status.")
15
+ .description("Show login status.")
16
16
  .action(async () => {
17
17
  await executeStatus(program, container);
18
18
  });
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export function registerInstallCommand(program, container) {
9
9
  return program
10
10
  .command("install")
11
11
  .alias("i")
12
- .description("Install tooling for a configured agent.")
12
+ .description("Install agent binary for a configured agent.")
13
13
  .argument("[agent]", serviceDescription)
14
14
  .action(async (service) => {
15
15
  const resolved = await resolveServiceArgument(program, container, service, { action: "install" });
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,SAAuB;IAEvB,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ;SACpC,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC;SAC1D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,kBAAkB,GACtB,mBAAmB,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;IACvD,OAAO,OAAO;SACX,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,yCAAyC,CAAC;SACtD,QAAQ,CACP,SAAS,EACT,kBAAkB,CACnB;SACA,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAC3C,OAAO,EACP,SAAS,EACT,OAAO,EACP,EAAE,MAAM,EAAE,SAAS,EAAE,CACtB,CAAC;QACF,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgB,EAChB,SAAuB,EACvB,OAAe;IAEf,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,wBAAwB,CACxC,SAAS,EACT,KAAK,EACL,WAAW,gBAAgB,EAAE,CAC9B,CAAC;IAEF,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,gBAAgB,EAAE,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,oBAAoB,CAC1C,SAAS,EACT,OAAO,EACP,SAAS,CACV,CAAC;IAEF,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,UAAU,gBAAgB,6BAA6B,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GACd,gBAAgB,KAAK,aAAa;QAChC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,oBAAoB;QACtC,CAAC,CAAC,0BAA0B,OAAO,CAAC,KAAK,GAAG,CAAC;IAEjD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,aAAa,OAAO,CAAC,KAAK,GAAG;QACtC,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/cli/commands/install.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAExD,MAAM,UAAU,sBAAsB,CACpC,OAAgB,EAChB,SAAuB;IAEvB,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ;SACpC,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC;SAC1D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,kBAAkB,GACtB,mBAAmB,iBAAiB,CAAC,YAAY,CAAC,EAAE,CAAC;IACvD,OAAO,OAAO;SACX,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,CAAC;SACV,WAAW,CAAC,8CAA8C,CAAC;SAC3D,QAAQ,CACP,SAAS,EACT,kBAAkB,CACnB;SACA,MAAM,CAAC,KAAK,EAAE,OAA2B,EAAE,EAAE;QAC5C,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAC3C,OAAO,EACP,SAAS,EACT,OAAO,EACP,EAAE,MAAM,EAAE,SAAS,EAAE,CACtB,CAAC;QACF,MAAM,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAgB,EAChB,SAAuB,EACvB,OAAe;IAEf,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1D,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAC3C,MAAM,SAAS,GAAG,wBAAwB,CACxC,SAAS,EACT,KAAK,EACL,WAAW,gBAAgB,EAAE,CAC9B,CAAC;IAEF,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,gBAAgB,EAAE,CAAC,CAAC;IAEtD,MAAM,eAAe,GAAG,oBAAoB,CAC1C,SAAS,EACT,OAAO,EACP,SAAS,CACV,CAAC;IAEF,MAAM,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;QAC3E,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,UAAU,gBAAgB,6BAA6B,CAAC,CAAC;QAC3E,CAAC;QACD,MAAM,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GACd,gBAAgB,KAAK,aAAa;QAChC,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,oBAAoB;QACtC,CAAC,CAAC,0BAA0B,OAAO,CAAC,KAAK,GAAG,CAAC;IAEjD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,OAAO,EAAE,aAAa,OAAO,CAAC,KAAK,GAAG;QACtC,GAAG,EAAE,UAAU;KAChB,CAAC,CAAC;IAEH,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ import type { CliContainer } from "../container.js";
3
+ export declare function registerLaunchCommand(program: Command, container: CliContainer): Command;
@@ -0,0 +1,456 @@
1
+ import { Option } from "commander";
2
+ import { select, promptText, isCancel, cancel, getTheme, renderTable } from "@poe-code/design-system";
3
+ import { createExecutionResources, resolveCommandFlags } from "./shared.js";
4
+ import { ValidationError } from "../errors.js";
5
+ import { followLaunchLogs, listLaunches, readLaunchLogs, removeLaunch, restartLaunch, runLaunchDaemon, startLaunch, stopLaunch } from "../../sdk/launch.js";
6
+ export function registerLaunchCommand(program, container) {
7
+ const launch = program
8
+ .command("launch")
9
+ .description("Manage long-running host and Docker processes.");
10
+ launch
11
+ .command("start [id] [commandArgs...]")
12
+ .usage("<id> -- <command> [args...]")
13
+ .description("Start and supervise a managed process.")
14
+ .addOption(createChoiceOption("--restart <policy>", "Restart policy", ["never", "on-failure", "always"], "on-failure"))
15
+ .option("--max-restarts <n>", "Max consecutive restarts", "5")
16
+ .option("--ready-pattern <string>", "Log substring to wait for before reporting running")
17
+ .option("--ready-port <port>", "TCP port to probe for readiness")
18
+ .option("--cwd <dir>", "Working directory for the managed process")
19
+ .option("--env <entry>", "Environment variable (KEY=VALUE)", collectValues, [])
20
+ .option("--image <image>", "Docker image")
21
+ .option("--mount <src:target[:ro]>", "Docker bind mount", collectValues, [])
22
+ .option("--port <host:container>", "Docker port mapping", collectValues, [])
23
+ .option("--network <name>", "Docker network")
24
+ .addOption(createChoiceOption("--engine <engine>", "Container engine", ["docker", "podman"]))
25
+ .action(async function (id, commandArgs) {
26
+ const spec = await resolveStartSpec({
27
+ commandArgs,
28
+ id,
29
+ options: this.opts(),
30
+ program
31
+ });
32
+ if (spec === null) {
33
+ return;
34
+ }
35
+ await startLaunch({
36
+ cwd: container.env.cwd,
37
+ homeDir: container.env.homeDir,
38
+ spec
39
+ });
40
+ });
41
+ launch
42
+ .command("stop <id>")
43
+ .description("Stop a managed process.")
44
+ .option("--force", "Stop immediately with SIGKILL / docker kill")
45
+ .action(async function (id) {
46
+ const result = await stopLaunch({
47
+ force: Boolean(this.opts().force),
48
+ homeDir: container.env.homeDir,
49
+ id
50
+ });
51
+ if (result === null) {
52
+ throw new ValidationError(`Managed process not found: ${id}`);
53
+ }
54
+ });
55
+ launch
56
+ .command("restart <id>")
57
+ .description("Restart a managed process.")
58
+ .action(async function (id) {
59
+ await restartLaunch({ homeDir: container.env.homeDir, id });
60
+ });
61
+ launch
62
+ .command("status")
63
+ .description("List managed processes.")
64
+ .action(async function () {
65
+ const records = await listLaunches({ homeDir: container.env.homeDir });
66
+ const flags = resolveCommandFlags(program);
67
+ const resources = createExecutionResources(container, flags, "launch:status");
68
+ if (records.length === 0) {
69
+ resources.logger.info("No managed processes.");
70
+ return;
71
+ }
72
+ resources.logger.info(renderTable({
73
+ columns: [
74
+ { name: "ID", title: "ID", alignment: "left", maxLen: 24 },
75
+ { name: "RUNTIME", title: "RUNTIME", alignment: "left", maxLen: 8 },
76
+ { name: "STATUS", title: "STATUS", alignment: "left", maxLen: 12 },
77
+ { name: "PID", title: "PID", alignment: "right", maxLen: 8 },
78
+ { name: "RESTARTS", title: "RESTARTS", alignment: "right", maxLen: 10 },
79
+ { name: "UPTIME", title: "UPTIME", alignment: "right", maxLen: 12 },
80
+ { name: "LAST EXIT", title: "LAST EXIT", alignment: "right", maxLen: 10 }
81
+ ],
82
+ rows: records.map(formatStatusRow),
83
+ theme: getTheme()
84
+ }));
85
+ });
86
+ launch
87
+ .command("logs <id>")
88
+ .description("Show managed process logs.")
89
+ .option("--follow", "Follow log output")
90
+ .option("--lines <n>", "Number of lines to show", "50")
91
+ .option("--stderr", "Show stderr instead of stdout")
92
+ .action(async function (id) {
93
+ const options = this.opts();
94
+ const lines = parseNonNegativeInt(options.lines, "lines") ?? 50;
95
+ const stream = options.stderr ? "stderr" : "stdout";
96
+ const flags = resolveCommandFlags(program);
97
+ const resources = createExecutionResources(container, flags, `launch:logs:${id}`);
98
+ const initial = await readLaunchLogs({
99
+ homeDir: container.env.homeDir,
100
+ id,
101
+ lines,
102
+ stream
103
+ });
104
+ if (initial.length > 0) {
105
+ resources.logger.info(initial.join("\n"));
106
+ }
107
+ if (!options.follow) {
108
+ return;
109
+ }
110
+ const controller = new AbortController();
111
+ const stop = () => {
112
+ controller.abort();
113
+ };
114
+ process.once("SIGINT", stop);
115
+ process.once("SIGTERM", stop);
116
+ try {
117
+ for await (const line of followLaunchLogs({
118
+ homeDir: container.env.homeDir,
119
+ id,
120
+ lines,
121
+ signal: controller.signal,
122
+ stream
123
+ })) {
124
+ resources.logger.info(line);
125
+ }
126
+ }
127
+ finally {
128
+ process.removeListener("SIGINT", stop);
129
+ process.removeListener("SIGTERM", stop);
130
+ }
131
+ });
132
+ launch
133
+ .command("rm <id>")
134
+ .description("Remove managed process state and logs.")
135
+ .action(async function (id) {
136
+ await removeLaunch({ homeDir: container.env.homeDir, id });
137
+ });
138
+ launch
139
+ .command("__run <id>", { hidden: true })
140
+ .action(async function (id) {
141
+ await runLaunchDaemon({ homeDir: container.env.homeDir, id });
142
+ });
143
+ return launch;
144
+ }
145
+ async function resolveStartSpec(options) {
146
+ const flags = resolveCommandFlags(options.program);
147
+ const id = await resolveProcessId(options.id);
148
+ if (id === null) {
149
+ return null;
150
+ }
151
+ const commandParts = await resolveCommandParts(options.commandArgs);
152
+ if (commandParts === null) {
153
+ return null;
154
+ }
155
+ if (commandParts.length === 0) {
156
+ throw new ValidationError("Command to run is required.");
157
+ }
158
+ const runtime = await resolveRuntime({
159
+ assumeYes: flags.assumeYes,
160
+ hasCommand: commandParts.length > 0,
161
+ image: options.options.image
162
+ });
163
+ if (runtime === null) {
164
+ return null;
165
+ }
166
+ const restart = await resolveRestart(options.options.restart, flags.assumeYes);
167
+ if (restart === null) {
168
+ return null;
169
+ }
170
+ const spec = {
171
+ args: commandParts.slice(1),
172
+ command: commandParts[0],
173
+ id,
174
+ restart
175
+ };
176
+ const maxRestarts = parseNonNegativeInt(options.options.maxRestarts, "max-restarts");
177
+ if (maxRestarts !== undefined) {
178
+ spec.maxRestarts = maxRestarts;
179
+ }
180
+ if (options.options.cwd) {
181
+ spec.cwd = options.options.cwd;
182
+ }
183
+ const envEntries = options.options.env ?? [];
184
+ if (envEntries.length > 0) {
185
+ spec.env = parseEnvEntries(envEntries);
186
+ }
187
+ const readyCheck = resolveReadyCheck(options.options);
188
+ if (readyCheck) {
189
+ spec.readyCheck = readyCheck;
190
+ }
191
+ if (runtime === "docker") {
192
+ const image = await resolveDockerImage(options.options.image);
193
+ if (image === null) {
194
+ return null;
195
+ }
196
+ spec.docker = {
197
+ image,
198
+ ...(options.options.engine ? { engine: options.options.engine } : {}),
199
+ ...(options.options.mount?.length ? { mounts: options.options.mount.map(parseMount) } : {}),
200
+ ...(options.options.port?.length ? { ports: options.options.port.map(parsePort) } : {}),
201
+ ...(options.options.network ? { network: options.options.network } : {})
202
+ };
203
+ }
204
+ return spec;
205
+ }
206
+ async function resolveProcessId(value) {
207
+ if (value && value.trim().length > 0) {
208
+ return value.trim();
209
+ }
210
+ const entered = await promptText({
211
+ message: "Process ID"
212
+ });
213
+ if (isCancel(entered)) {
214
+ cancel("Launch start cancelled.");
215
+ return null;
216
+ }
217
+ const id = typeof entered === "string" ? entered.trim() : "";
218
+ if (id.length === 0) {
219
+ throw new ValidationError("Process ID is required.");
220
+ }
221
+ return id;
222
+ }
223
+ async function resolveCommandParts(commandArgs) {
224
+ if (commandArgs.length > 0) {
225
+ return [...commandArgs];
226
+ }
227
+ const entered = await promptText({
228
+ message: "Command to run"
229
+ });
230
+ if (isCancel(entered)) {
231
+ cancel("Launch start cancelled.");
232
+ return null;
233
+ }
234
+ const value = typeof entered === "string" ? entered.trim() : "";
235
+ if (value.length === 0) {
236
+ throw new ValidationError("Command to run is required.");
237
+ }
238
+ return splitCommandLine(value);
239
+ }
240
+ async function resolveRuntime(options) {
241
+ if (options.image) {
242
+ return "docker";
243
+ }
244
+ if (options.hasCommand || options.assumeYes) {
245
+ return "host";
246
+ }
247
+ const selected = await select({
248
+ message: "Runtime",
249
+ options: [
250
+ { label: "host", value: "host" },
251
+ { label: "docker", value: "docker" }
252
+ ]
253
+ });
254
+ if (isCancel(selected)) {
255
+ cancel("Launch start cancelled.");
256
+ return null;
257
+ }
258
+ return selected;
259
+ }
260
+ async function resolveDockerImage(value) {
261
+ if (value && value.trim().length > 0) {
262
+ return value.trim();
263
+ }
264
+ const entered = await promptText({
265
+ message: "Docker image"
266
+ });
267
+ if (isCancel(entered)) {
268
+ cancel("Launch start cancelled.");
269
+ return null;
270
+ }
271
+ const image = typeof entered === "string" ? entered.trim() : "";
272
+ if (image.length === 0) {
273
+ throw new ValidationError("Docker image is required when runtime is docker.");
274
+ }
275
+ return image;
276
+ }
277
+ async function resolveRestart(restart, assumeYes) {
278
+ if (restart) {
279
+ return restart;
280
+ }
281
+ if (assumeYes) {
282
+ return "on-failure";
283
+ }
284
+ const selected = await select({
285
+ message: "Restart policy",
286
+ options: [
287
+ { label: "on-failure", value: "on-failure" },
288
+ { label: "never", value: "never" },
289
+ { label: "always", value: "always" }
290
+ ]
291
+ });
292
+ if (isCancel(selected)) {
293
+ cancel("Launch start cancelled.");
294
+ return null;
295
+ }
296
+ return selected;
297
+ }
298
+ function resolveReadyCheck(options) {
299
+ if (options.readyPattern && options.readyPattern.trim().length > 0) {
300
+ return { kind: "log-pattern", pattern: options.readyPattern.trim() };
301
+ }
302
+ const readyPort = parsePositiveInt(options.readyPort, "ready-port");
303
+ if (readyPort !== undefined) {
304
+ return { kind: "tcp", port: readyPort };
305
+ }
306
+ return undefined;
307
+ }
308
+ function parseEnvEntries(entries) {
309
+ const env = {};
310
+ for (const entry of entries) {
311
+ const separator = entry.indexOf("=");
312
+ if (separator <= 0) {
313
+ throw new ValidationError(`Invalid --env value "${entry}". Expected KEY=VALUE.`);
314
+ }
315
+ const key = entry.slice(0, separator).trim();
316
+ const value = entry.slice(separator + 1);
317
+ if (key.length === 0) {
318
+ throw new ValidationError(`Invalid --env value "${entry}". Expected KEY=VALUE.`);
319
+ }
320
+ env[key] = value;
321
+ }
322
+ return env;
323
+ }
324
+ function parseMount(value) {
325
+ const parts = value.split(":");
326
+ if (parts.length < 2 || parts.length > 3) {
327
+ throw new ValidationError(`Invalid --mount value "${value}". Expected src:target[:ro].`);
328
+ }
329
+ const mount = {
330
+ source: parts[0],
331
+ target: parts[1]
332
+ };
333
+ if (parts[2] === "ro") {
334
+ mount.readonly = true;
335
+ }
336
+ else if (parts[2] !== undefined) {
337
+ throw new ValidationError(`Invalid --mount value "${value}". Only :ro is supported.`);
338
+ }
339
+ return mount;
340
+ }
341
+ function parsePort(value) {
342
+ const parts = value.split(":");
343
+ if (parts.length !== 2) {
344
+ throw new ValidationError(`Invalid --port value "${value}". Expected host:container.`);
345
+ }
346
+ return {
347
+ container: parseRequiredPositiveInt(parts[1], "port"),
348
+ host: parseRequiredPositiveInt(parts[0], "port")
349
+ };
350
+ }
351
+ function splitCommandLine(value) {
352
+ const parts = [];
353
+ let current = "";
354
+ let quote = null;
355
+ for (const char of value) {
356
+ if (quote !== null) {
357
+ if (char === quote) {
358
+ quote = null;
359
+ }
360
+ else {
361
+ current += char;
362
+ }
363
+ continue;
364
+ }
365
+ if (char === "'" || char === '"') {
366
+ quote = char;
367
+ continue;
368
+ }
369
+ if (char === " " || char === "\t") {
370
+ if (current.length > 0) {
371
+ parts.push(current);
372
+ current = "";
373
+ }
374
+ continue;
375
+ }
376
+ current += char;
377
+ }
378
+ if (quote !== null) {
379
+ throw new ValidationError("Command contains an unterminated quote.");
380
+ }
381
+ if (current.length > 0) {
382
+ parts.push(current);
383
+ }
384
+ return parts;
385
+ }
386
+ function formatStatusRow(record) {
387
+ const state = record.state;
388
+ const id = record.spec?.id ?? state?.id ?? "-";
389
+ return {
390
+ ID: id,
391
+ "LAST EXIT": state?.lastExitCode == null ? "-" : String(state.lastExitCode),
392
+ PID: state?.pid == null ? "-" : String(state.pid),
393
+ RESTARTS: state ? String(state.restartCount) : "0",
394
+ RUNTIME: state?.runtime ?? (record.spec?.docker ? "docker" : "host"),
395
+ STATUS: state?.status ?? "stopped",
396
+ UPTIME: formatUptime(state)
397
+ };
398
+ }
399
+ function formatUptime(state) {
400
+ if (!state || (state.status !== "running" && state.status !== "restarting") || !state.lastStartedAt) {
401
+ return "-";
402
+ }
403
+ const startedAt = Date.parse(state.lastStartedAt);
404
+ if (!Number.isFinite(startedAt)) {
405
+ return "-";
406
+ }
407
+ const totalSeconds = Math.max(0, Math.floor((Date.now() - startedAt) / 1000));
408
+ const hours = Math.floor(totalSeconds / 3600);
409
+ const minutes = Math.floor((totalSeconds % 3600) / 60);
410
+ const seconds = totalSeconds % 60;
411
+ if (hours > 0) {
412
+ return `${hours}h ${minutes}m`;
413
+ }
414
+ if (minutes > 0) {
415
+ return `${minutes}m ${seconds}s`;
416
+ }
417
+ return `${seconds}s`;
418
+ }
419
+ function createChoiceOption(flags, description, choices, defaultValue) {
420
+ const option = new Option(flags, description).choices(choices);
421
+ if (defaultValue !== undefined) {
422
+ option.default(defaultValue);
423
+ }
424
+ return option;
425
+ }
426
+ function parsePositiveInt(value, fieldName) {
427
+ if (value == null) {
428
+ return undefined;
429
+ }
430
+ const parsed = Number.parseInt(value, 10);
431
+ if (!Number.isInteger(parsed) || parsed < 1) {
432
+ throw new ValidationError(`Invalid ${fieldName} "${value}". Expected a positive integer.`);
433
+ }
434
+ return parsed;
435
+ }
436
+ function parseRequiredPositiveInt(value, fieldName) {
437
+ const parsed = parsePositiveInt(value, fieldName);
438
+ if (parsed === undefined) {
439
+ throw new ValidationError(`Invalid ${fieldName} "${value}". Expected a positive integer.`);
440
+ }
441
+ return parsed;
442
+ }
443
+ function parseNonNegativeInt(value, fieldName) {
444
+ if (value == null) {
445
+ return undefined;
446
+ }
447
+ const parsed = Number.parseInt(value, 10);
448
+ if (!Number.isInteger(parsed) || parsed < 0) {
449
+ throw new ValidationError(`Invalid ${fieldName} "${value}". Expected a non-negative integer.`);
450
+ }
451
+ return parsed;
452
+ }
453
+ function collectValues(value, previous) {
454
+ return [...previous, value];
455
+ }
456
+ //# sourceMappingURL=launch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch.js","sourceRoot":"","sources":["../../../src/cli/commands/launch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,MAAM,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtG,OAAO,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EACL,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,WAAW,EACX,UAAU,EACX,MAAM,qBAAqB,CAAC;AAwB7B,MAAM,UAAU,qBAAqB,CAAC,OAAgB,EAAE,SAAuB;IAC7E,MAAM,MAAM,GAAG,OAAO;SACnB,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,gDAAgD,CAAC,CAAC;IAEjE,MAAM;SACH,OAAO,CAAC,6BAA6B,CAAC;SACtC,KAAK,CAAC,6BAA6B,CAAC;SACpC,WAAW,CAAC,wCAAwC,CAAC;SACrD,SAAS,CAAC,kBAAkB,CAAC,oBAAoB,EAAE,gBAAgB,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,YAAY,CAAC,CAAC;SACtH,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,EAAE,GAAG,CAAC;SAC7D,MAAM,CAAC,0BAA0B,EAAE,oDAAoD,CAAC;SACxF,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;SAChE,MAAM,CAAC,aAAa,EAAE,2CAA2C,CAAC;SAClE,MAAM,CAAC,eAAe,EAAE,kCAAkC,EAAE,aAAa,EAAE,EAAE,CAAC;SAC9E,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC;SACzC,MAAM,CAAC,2BAA2B,EAAE,mBAAmB,EAAE,aAAa,EAAE,EAAE,CAAC;SAC3E,MAAM,CAAC,yBAAyB,EAAE,qBAAqB,EAAE,aAAa,EAAE,EAAE,CAAC;SAC3E,MAAM,CAAC,kBAAkB,EAAE,gBAAgB,CAAC;SAC5C,SAAS,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;SAC5F,MAAM,CAAC,KAAK,WAA0B,EAAsB,EAAE,WAAqB;QAClF,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC;YAClC,WAAW;YACX,EAAE;YACF,OAAO,EAAE,IAAI,CAAC,IAAI,EAAuB;YACzC,OAAO;SACR,CAAC,CAAC;QACH,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,MAAM,WAAW,CAAC;YAChB,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG;YACtB,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO;YAC9B,IAAI;SACL,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,SAAS,EAAE,6CAA6C,CAAC;SAChE,MAAM,CAAC,KAAK,WAA0B,EAAU;QAC/C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,EAAuB,CAAC,KAAK,CAAC;YACtD,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO;YAC9B,EAAE;SACH,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,MAAM,IAAI,eAAe,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAC;QAChE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,cAAc,CAAC;SACvB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,KAAK,WAAW,EAAU;QAChC,MAAM,aAAa,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,yBAAyB,CAAC;SACtC,MAAM,CAAC,KAAK;QACX,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;QAE9E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;YAChC,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBAC1D,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE;gBACnE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;gBAClE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;gBACvE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;gBACnE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE;aAC1E;YACD,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;YAClC,KAAK,EAAE,QAAQ,EAAE;SAClB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,WAAW,CAAC;SACpB,WAAW,CAAC,4BAA4B,CAAC;SACzC,MAAM,CAAC,UAAU,EAAE,mBAAmB,CAAC;SACvC,MAAM,CAAC,aAAa,EAAE,yBAAyB,EAAE,IAAI,CAAC;SACtD,MAAM,CAAC,UAAU,EAAE,+BAA+B,CAAC;SACnD,MAAM,CAAC,KAAK,WAA0B,EAAU;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAsB,CAAC;QAChD,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACpD,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,wBAAwB,CAAC,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;YACnC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO;YAC9B,EAAE;YACF,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC;YACH,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,gBAAgB,CAAC;gBACxC,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO;gBAC9B,EAAE;gBACF,KAAK;gBACL,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,MAAM;aACP,CAAC,EAAE,CAAC;gBACH,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACvC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,SAAS,CAAC;SAClB,WAAW,CAAC,wCAAwC,CAAC;SACrD,MAAM,CAAC,KAAK,WAAW,EAAU;QAChC,MAAM,YAAY,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEL,MAAM;SACH,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SACvC,MAAM,CAAC,KAAK,WAAW,EAAU;QAChC,MAAM,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEL,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,OAK/B;IACC,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,EAAE,GAAG,MAAM,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC9C,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QAChB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpE,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC;QACnC,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,UAAU,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC;QACnC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK;KAC7B,CAAC,CAAC;IACH,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/E,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,IAAI,GAAgB;QACxB,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3B,OAAO,EAAE,YAAY,CAAC,CAAC,CAAE;QACzB,EAAE;QACF,OAAO;KACR,CAAC;IAEF,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IACrF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;IACjC,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC;IAC7C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,UAAU,GAAG,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK;YACL,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvF,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzE,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,KAAyB;IACvD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QAC/B,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,eAAe,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,WAAqB;IACtD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,WAAW,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QAC/B,OAAO,EAAE,gBAAgB;KAC1B,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,6BAA6B,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,OAI7B;IACC,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC5C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,SAAS;QAClB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;YAChC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC;KACF,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,QAA6B,CAAC;AACvC,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,KAAyB;IACzD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC;QAC/B,OAAO,EAAE,cAAc;KACxB,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAChE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,kDAAkD,CAAC,CAAC;IAChF,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,OAA2C,EAC3C,SAAkB;IAElB,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC;QAC5B,OAAO,EAAE,gBAAgB;QACzB,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;YAC5C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;YAClC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;SACrC;KACF,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvB,MAAM,CAAC,yBAAyB,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,QAAkC,CAAC;AAC5C,CAAC;AAED,SAAS,iBAAiB,CAAC,OAA4B;IACrD,IAAI,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACpE,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;QAC5B,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC1C,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,OAAiB;IACxC,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,eAAe,CAAC,wBAAwB,KAAK,wBAAwB,CAAC,CAAC;QACnF,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACzC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,eAAe,CAAC,wBAAwB,KAAK,wBAAwB,CAAC,CAAC;QACnF,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,UAAU,CAAC,KAAa;IAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,eAAe,CAAC,0BAA0B,KAAK,8BAA8B,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,KAAK,GAAgB;QACzB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE;QACjB,MAAM,EAAE,KAAK,CAAC,CAAC,CAAE;KAClB,CAAC;IACF,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACtB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;IACxB,CAAC;SAAM,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,IAAI,eAAe,CAAC,0BAA0B,KAAK,2BAA2B,CAAC,CAAC;IACxF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,yBAAyB,KAAK,6BAA6B,CAAC,CAAC;IACzF,CAAC;IAED,OAAO;QACL,SAAS,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC;QACtD,IAAI,EAAE,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC;KAClD,CAAC;AACJ,CAAC;AAGD,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,KAAK,GAAqB,IAAI,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;iBAAM,CAAC;gBACN,OAAO,IAAI,IAAI,CAAC;YAClB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAC;YACb,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACpB,OAAO,GAAG,EAAE,CAAC;YACf,CAAC;YACD,SAAS;QACX,CAAC;QAED,OAAO,IAAI,IAAI,CAAC;IAClB,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CAAC,MAA4B;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,KAAK,EAAE,EAAE,IAAI,GAAG,CAAC;IAC/C,OAAO;QACL,EAAE,EAAE,EAAE;QACN,WAAW,EAAE,KAAK,EAAE,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC;QAC3E,GAAG,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACjD,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG;QAClD,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACpE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,SAAS;QAClC,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,KAAoC;IACxD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;QACpG,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAElC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QACd,OAAO,GAAG,KAAK,KAAK,OAAO,GAAG,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,KAAK,OAAO,GAAG,CAAC;IACnC,CAAC;IACD,OAAO,GAAG,OAAO,GAAG,CAAC;AACvB,CAAC;AAED,SAAS,kBAAkB,CACzB,KAAa,EACb,WAAmB,EACnB,OAAiB,EACjB,YAAqB;IAErB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB,EAAE,SAAiB;IACpE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,WAAW,SAAS,KAAK,KAAK,iCAAiC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAa,EAAE,SAAiB;IAChE,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAClD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CAAC,WAAW,SAAS,KAAK,KAAK,iCAAiC,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAyB,EAAE,SAAiB;IACvE,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,eAAe,CAAC,WAAW,SAAS,KAAK,KAAK,qCAAqC,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,KAAa,EAAE,QAAkB;IACtD,OAAO,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC"}
@@ -23,6 +23,7 @@ import { registerModelsCommand } from "./commands/models.js";
23
23
  import { registerPipelineCommand } from "./commands/pipeline.js";
24
24
  import { registerRalphCommand } from "./commands/ralph.js";
25
25
  import { registerExperimentCommand } from "./commands/experiment.js";
26
+ import { registerLaunchCommand } from "./commands/launch.js";
26
27
  import packageJson from "../../package.json" with { type: "json" };
27
28
  import { throwCommandNotFound } from "./command-not-found.js";
28
29
  import { detectExecutionContext, formatCliHelpCommand, formatCliUsageCommand } from "../utils/execution-context.js";
@@ -47,7 +48,7 @@ function formatHelpText(input) {
47
48
  name: "install",
48
49
  aliases: ["i"],
49
50
  args: "[agent]",
50
- description: "Install tooling for a configured agent"
51
+ description: "Install agent binary for a configured agent"
51
52
  },
52
53
  {
53
54
  name: "configure",
@@ -77,7 +78,7 @@ function formatHelpText(input) {
77
78
  name: "auth status",
78
79
  aliases: [],
79
80
  args: "",
80
- description: "Show login, balance, and configuration status"
81
+ description: "Show login status"
81
82
  },
82
83
  {
83
84
  name: "agent",
@@ -122,10 +123,10 @@ function formatHelpText(input) {
122
123
  description: "Remove Poe MCP configuration from your agent"
123
124
  },
124
125
  {
125
- name: "mcp serve",
126
+ name: "experiment install",
126
127
  aliases: [],
127
- args: "",
128
- description: "Run the Poe MCP server on stdin/stdout"
128
+ args: "[agent]",
129
+ description: "Install the experiment skill into agent configuration"
129
130
  },
130
131
  {
131
132
  name: "skill configure",
@@ -175,6 +176,12 @@ function formatHelpText(input) {
175
176
  args: "[doc]",
176
177
  description: "Display an experiment journal as a formatted table"
177
178
  },
179
+ {
180
+ name: "launch",
181
+ aliases: [],
182
+ args: "",
183
+ description: "Manage long-running host and Docker processes"
184
+ },
178
185
  {
179
186
  name: "usage",
180
187
  aliases: ["u"],
@@ -192,24 +199,6 @@ function formatHelpText(input) {
192
199
  aliases: [],
193
200
  args: "",
194
201
  description: "Show config file paths and usage hints"
195
- },
196
- {
197
- name: "utils config show",
198
- aliases: [],
199
- args: "",
200
- description: "Show config inputs and resolved result"
201
- },
202
- {
203
- name: "utils config init",
204
- aliases: [],
205
- args: "",
206
- description: "Create a project config file"
207
- },
208
- {
209
- name: "utils config edit",
210
- aliases: [],
211
- args: "",
212
- description: "Open a config file in your editor"
213
202
  }
214
203
  ];
215
204
  const nameWidth = Math.max(0, ...commandRows.map((row) => [row.name, ...row.aliases].join(", ").length));
@@ -354,6 +343,7 @@ function bootstrapProgram(container) {
354
343
  registerPipelineCommand(program, container);
355
344
  registerRalphCommand(program, container);
356
345
  registerExperimentCommand(program, container);
346
+ registerLaunchCommand(program, container);
357
347
  registerUsageCommand(program, container);
358
348
  registerModelsCommand(program, container);
359
349
  program.allowExcessArguments().action(function () {