@gh-symphony/cli 0.0.22 → 0.1.2
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.
- package/README.md +72 -77
- package/dist/{chunk-IWFX2FMA.js → chunk-6I753NYO.js} +4 -1
- package/dist/{workflow-L3KT6HB7.js → chunk-B4ZJMAZL.js} +27 -19
- package/dist/{chunk-2TSM3INR.js → chunk-DLZAJXZL.js} +575 -12
- package/dist/chunk-GHVDABFO.js +235 -0
- package/dist/{chunk-EEQQWTXS.js → chunk-GPRCOJDJ.js} +158 -75
- package/dist/{chunk-36KYEDEO.js → chunk-MVRF7BES.js} +1 -10
- package/dist/{chunk-2UW7NQLX.js → chunk-VFHMHHZW.js} +1 -1
- package/dist/{chunk-HMLBBZNY.js → chunk-WM2B6BJ7.js} +16 -71
- package/dist/{chunk-QIRE2VXS.js → chunk-WOVNN5NW.js} +16 -17
- package/dist/{chunk-C67H3OUL.js → chunk-Z3NZOPLZ.js} +0 -81
- package/dist/{config-cmd-Z3A7V6NC.js → config-cmd-2ADPUYWA.js} +1 -1
- package/dist/{doctor-EJUMPBMW.js → doctor-EEPNFCGF.js} +464 -40
- package/dist/index.js +340 -294
- package/dist/{chunk-PUDXVBSN.js → repo-RX4OK7XH.js} +5944 -3001
- package/dist/{setup-TZJSM3QV.js → setup-XNHHRBGU.js} +57 -92
- package/dist/{upgrade-O33S2SJK.js → upgrade-NS53EO2B.js} +2 -2
- package/dist/{version-CW54Q7BK.js → version-2RHFZ5CI.js} +1 -1
- package/dist/worker-entry.js +10 -5
- package/dist/workflow-26QNZZWH.js +22 -0
- package/package.json +4 -4
- package/dist/chunk-DDL4BWSL.js +0 -146
- package/dist/chunk-DFLXHNYQ.js +0 -482
- package/dist/chunk-E7HYEEZD.js +0 -1318
- package/dist/chunk-GDE6FYN4.js +0 -26
- package/dist/chunk-GSX2FV3M.js +0 -103
- package/dist/chunk-ZHOKYUO3.js +0 -1047
- package/dist/init-54HMKNYI.js +0 -38
- package/dist/logs-GTZ4U5JE.js +0 -188
- package/dist/project-RMYMZSFV.js +0 -25
- package/dist/recover-LTLKMTRX.js +0 -133
- package/dist/repo-WI7GF6XQ.js +0 -749
- package/dist/run-IHN3ZL35.js +0 -122
- package/dist/start-RTAHQMR2.js +0 -19
- package/dist/status-F4D52OVK.js +0 -12
- package/dist/stop-MDKMJPVR.js +0 -10
package/dist/index.js
CHANGED
|
@@ -1,7 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import {
|
|
3
|
+
bold,
|
|
4
|
+
cyan,
|
|
5
|
+
setNoColor,
|
|
6
|
+
yellow
|
|
7
|
+
} from "./chunk-MVRF7BES.js";
|
|
2
8
|
import {
|
|
3
9
|
resolveConfigDir
|
|
4
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-WOVNN5NW.js";
|
|
5
11
|
|
|
6
12
|
// src/index.ts
|
|
7
13
|
import { realpathSync } from "fs";
|
|
@@ -19,13 +25,6 @@ var TOP_LEVEL_COMMANDS = [
|
|
|
19
25
|
"setup",
|
|
20
26
|
"doctor",
|
|
21
27
|
"upgrade",
|
|
22
|
-
"start",
|
|
23
|
-
"stop",
|
|
24
|
-
"status",
|
|
25
|
-
"run",
|
|
26
|
-
"recover",
|
|
27
|
-
"logs",
|
|
28
|
-
"project",
|
|
29
28
|
"repo",
|
|
30
29
|
"config",
|
|
31
30
|
"completion",
|
|
@@ -58,70 +57,33 @@ var COMMAND_OPTIONS = {
|
|
|
58
57
|
...GLOBAL_OPTIONS
|
|
59
58
|
],
|
|
60
59
|
"workflow:validate": ["--file", ...GLOBAL_OPTIONS],
|
|
61
|
-
"workflow:preview": [
|
|
62
|
-
"--file",
|
|
63
|
-
"--sample",
|
|
64
|
-
"--attempt",
|
|
65
|
-
...GLOBAL_OPTIONS
|
|
66
|
-
],
|
|
60
|
+
"workflow:preview": ["--file", "--sample", "--attempt", ...GLOBAL_OPTIONS],
|
|
67
61
|
setup: [
|
|
68
62
|
"--non-interactive",
|
|
69
|
-
"--project",
|
|
70
|
-
"--workspace-dir",
|
|
71
63
|
"--assigned-only",
|
|
72
64
|
"--output",
|
|
73
65
|
"--skip-skills",
|
|
74
66
|
"--skip-context",
|
|
75
67
|
...GLOBAL_OPTIONS
|
|
76
68
|
],
|
|
77
|
-
doctor: [
|
|
78
|
-
upgrade: [...GLOBAL_OPTIONS],
|
|
79
|
-
start: ["--project-id", "--project", "--daemon", "-d", ...GLOBAL_OPTIONS],
|
|
80
|
-
stop: ["--project-id", "--project", "--force", ...GLOBAL_OPTIONS],
|
|
81
|
-
status: ["--project-id", "--project", "--watch", "-w", ...GLOBAL_OPTIONS],
|
|
82
|
-
run: ["--project-id", "--project", "--watch", "-w", ...GLOBAL_OPTIONS],
|
|
83
|
-
recover: ["--project-id", "--project", "--dry-run", ...GLOBAL_OPTIONS],
|
|
84
|
-
logs: [
|
|
69
|
+
doctor: [
|
|
85
70
|
"--project-id",
|
|
86
71
|
"--project",
|
|
87
|
-
"--
|
|
88
|
-
"
|
|
72
|
+
"--fix",
|
|
73
|
+
"--smoke",
|
|
89
74
|
"--issue",
|
|
90
|
-
"--run",
|
|
91
|
-
"--level",
|
|
92
|
-
...GLOBAL_OPTIONS
|
|
93
|
-
],
|
|
94
|
-
project: ["add", "list", "remove", "start", "stop", "switch", "status"],
|
|
95
|
-
"project:add": [
|
|
96
|
-
"--non-interactive",
|
|
97
|
-
"--project",
|
|
98
|
-
"--workspace-dir",
|
|
99
|
-
"--assigned-only",
|
|
100
|
-
...GLOBAL_OPTIONS
|
|
101
|
-
],
|
|
102
|
-
"project:list": [...GLOBAL_OPTIONS],
|
|
103
|
-
"project:remove": [...GLOBAL_OPTIONS],
|
|
104
|
-
"project:start": [
|
|
105
|
-
"--project-id",
|
|
106
|
-
"--project",
|
|
107
|
-
"--daemon",
|
|
108
|
-
"-d",
|
|
109
75
|
...GLOBAL_OPTIONS
|
|
110
76
|
],
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
"
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
],
|
|
120
|
-
repo: ["
|
|
121
|
-
"repo:list": [...GLOBAL_OPTIONS],
|
|
122
|
-
"repo:add": [...GLOBAL_OPTIONS],
|
|
123
|
-
"repo:remove": [...GLOBAL_OPTIONS],
|
|
124
|
-
"repo:sync": ["--dry-run", "--prune", ...GLOBAL_OPTIONS],
|
|
77
|
+
upgrade: [...GLOBAL_OPTIONS],
|
|
78
|
+
repo: ["init", "start", "status", "stop", "run", "recover", "logs", "explain"],
|
|
79
|
+
"repo:init": ["--repo-dir", "--workflow-file", ...GLOBAL_OPTIONS],
|
|
80
|
+
"repo:start": ["--daemon", "-d", "--once", "--http", "--web", "--log-level", ...GLOBAL_OPTIONS],
|
|
81
|
+
"repo:status": ["--watch", "-w", ...GLOBAL_OPTIONS],
|
|
82
|
+
"repo:stop": ["--force", ...GLOBAL_OPTIONS],
|
|
83
|
+
"repo:run": ["--watch", ...GLOBAL_OPTIONS],
|
|
84
|
+
"repo:recover": ["--dry-run", ...GLOBAL_OPTIONS],
|
|
85
|
+
"repo:logs": ["--follow", "-f", "--issue", "--run", "--level", ...GLOBAL_OPTIONS],
|
|
86
|
+
"repo:explain": ["--json", "--workflow", ...GLOBAL_OPTIONS],
|
|
125
87
|
config: ["show", "set", "edit"],
|
|
126
88
|
"config:show": [...GLOBAL_OPTIONS],
|
|
127
89
|
"config:set": [...GLOBAL_OPTIONS],
|
|
@@ -140,7 +102,7 @@ function renderBashCasePatterns() {
|
|
|
140
102
|
return
|
|
141
103
|
;;`;
|
|
142
104
|
}
|
|
143
|
-
if (command === "workflow" || command === "
|
|
105
|
+
if (command === "workflow" || command === "repo" || command === "config") {
|
|
144
106
|
return ` ${command})
|
|
145
107
|
COMPREPLY=( $(compgen -W "${quoteWords(values)}" -- "$cur") )
|
|
146
108
|
return
|
|
@@ -166,11 +128,6 @@ function renderFishLines() {
|
|
|
166
128
|
`complete -c gh-symphony -f -n '__fish_use_subcommand' -a '${command}'`
|
|
167
129
|
);
|
|
168
130
|
}
|
|
169
|
-
for (const subcommand of COMMAND_OPTIONS.project ?? []) {
|
|
170
|
-
lines.push(
|
|
171
|
-
`complete -c gh-symphony -f -n '__fish_seen_subcommand_from project' -a '${subcommand}'`
|
|
172
|
-
);
|
|
173
|
-
}
|
|
174
131
|
for (const subcommand of COMMAND_OPTIONS.repo ?? []) {
|
|
175
132
|
lines.push(
|
|
176
133
|
`complete -c gh-symphony -f -n '__fish_seen_subcommand_from repo' -a '${subcommand}'`
|
|
@@ -255,7 +212,7 @@ _gh_symphony_completion() {
|
|
|
255
212
|
return
|
|
256
213
|
fi
|
|
257
214
|
|
|
258
|
-
if [[ "\${path}" == "workflow" || "\${path}" == "
|
|
215
|
+
if [[ "\${path}" == "workflow" || "\${path}" == "repo" || "\${path}" == "config" || "\${path}" == "completion" ]]; then
|
|
259
216
|
if [[ -n "\${GH_SYMPHONY_SUBCOMMAND}" ]]; then
|
|
260
217
|
path="\${path}:\${GH_SYMPHONY_SUBCOMMAND}"
|
|
261
218
|
fi
|
|
@@ -276,23 +233,194 @@ ${bashFunction}complete -F _gh_symphony_completion gh-symphony
|
|
|
276
233
|
`;
|
|
277
234
|
}
|
|
278
235
|
|
|
236
|
+
// src/commands/help.ts
|
|
237
|
+
var DESCRIPTION_COLUMN = 23;
|
|
238
|
+
var COMMAND_COLUMN_WIDTH = DESCRIPTION_COLUMN - 2;
|
|
239
|
+
var HELP_SECTIONS = [
|
|
240
|
+
{
|
|
241
|
+
title: "Setup",
|
|
242
|
+
entries: [
|
|
243
|
+
{
|
|
244
|
+
name: "setup",
|
|
245
|
+
description: "Run the one-command first-run setup flow"
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: "workflow init",
|
|
249
|
+
description: "Generate WORKFLOW.md and workflow support files"
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
name: "workflow validate",
|
|
253
|
+
description: "Strictly validate WORKFLOW.md"
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
name: "workflow preview",
|
|
257
|
+
description: "Render the worker prompt from a sample or live issue"
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
name: "doctor",
|
|
261
|
+
description: "Run diagnostics and optional remediation"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
name: "config show",
|
|
265
|
+
description: "Show current configuration"
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
name: "config set",
|
|
269
|
+
description: "Set a configuration value"
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
name: "config edit",
|
|
273
|
+
description: "Open config in $EDITOR"
|
|
274
|
+
}
|
|
275
|
+
]
|
|
276
|
+
},
|
|
277
|
+
{
|
|
278
|
+
title: "Orchestration (current repository)",
|
|
279
|
+
entries: [
|
|
280
|
+
{
|
|
281
|
+
name: "repo init",
|
|
282
|
+
description: "Initialize gh-symphony for the current repository"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
name: "repo start",
|
|
286
|
+
description: "Start the orchestrator (foreground)"
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
name: "repo start --daemon",
|
|
290
|
+
description: "Start the orchestrator in the background"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
name: "repo stop",
|
|
294
|
+
description: "Stop the background orchestrator"
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
name: "repo status",
|
|
298
|
+
description: "Show orchestrator status"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
name: "repo run <issue>",
|
|
302
|
+
description: "Dispatch a single issue"
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
name: "repo recover",
|
|
306
|
+
description: "Recover stalled runs"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
name: "repo logs",
|
|
310
|
+
description: "View orchestrator logs"
|
|
311
|
+
},
|
|
312
|
+
{
|
|
313
|
+
name: "repo explain <issue>",
|
|
314
|
+
description: "Explain why an issue is not dispatching"
|
|
315
|
+
}
|
|
316
|
+
]
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
title: "Maintenance",
|
|
320
|
+
entries: [
|
|
321
|
+
{
|
|
322
|
+
name: "upgrade",
|
|
323
|
+
description: "Upgrade the CLI to the latest published version"
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
name: "completion <shell>",
|
|
327
|
+
description: "Print shell completion (bash/zsh/fish)"
|
|
328
|
+
},
|
|
329
|
+
{
|
|
330
|
+
name: "version",
|
|
331
|
+
description: "Show version"
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
name: "help [command]",
|
|
335
|
+
description: "Show help for a command"
|
|
336
|
+
}
|
|
337
|
+
]
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
title: "Global Options",
|
|
341
|
+
entries: [
|
|
342
|
+
{
|
|
343
|
+
name: "--config <dir>",
|
|
344
|
+
description: [
|
|
345
|
+
"Config directory override (advanced; default uses initialized",
|
|
346
|
+
"cwd runtime, then ~/.gh-symphony)"
|
|
347
|
+
]
|
|
348
|
+
},
|
|
349
|
+
{
|
|
350
|
+
name: "--verbose, -v",
|
|
351
|
+
description: "Verbose output"
|
|
352
|
+
},
|
|
353
|
+
{
|
|
354
|
+
name: "--json",
|
|
355
|
+
description: "JSON output"
|
|
356
|
+
},
|
|
357
|
+
{
|
|
358
|
+
name: "--no-color",
|
|
359
|
+
description: "Disable color output"
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
name: "--help, -h",
|
|
363
|
+
description: "Show help"
|
|
364
|
+
},
|
|
365
|
+
{
|
|
366
|
+
name: "--version, -V",
|
|
367
|
+
description: "Show version"
|
|
368
|
+
}
|
|
369
|
+
]
|
|
370
|
+
}
|
|
371
|
+
];
|
|
372
|
+
function sectionTitle(title, color) {
|
|
373
|
+
const label = `${title}:`;
|
|
374
|
+
return color ? yellow(bold(label)) : label;
|
|
375
|
+
}
|
|
376
|
+
function entryName(name, color) {
|
|
377
|
+
return color ? cyan(name) : name;
|
|
378
|
+
}
|
|
379
|
+
function renderEntry(entry, color) {
|
|
380
|
+
const descriptions = Array.isArray(entry.description) ? entry.description : [entry.description];
|
|
381
|
+
const lines = [
|
|
382
|
+
` ${entryName(entry.name, color)}${" ".repeat(
|
|
383
|
+
Math.max(COMMAND_COLUMN_WIDTH - entry.name.length, 1)
|
|
384
|
+
)}${descriptions[0]}`
|
|
385
|
+
];
|
|
386
|
+
for (const line of descriptions.slice(1)) {
|
|
387
|
+
lines.push(`${" ".repeat(DESCRIPTION_COLUMN)}${line}`);
|
|
388
|
+
}
|
|
389
|
+
return lines;
|
|
390
|
+
}
|
|
391
|
+
function renderHelp(options) {
|
|
392
|
+
const lines = ["gh-symphony \u2014 AI Coding Agent Orchestrator", ""];
|
|
393
|
+
for (const [index, section] of HELP_SECTIONS.entries()) {
|
|
394
|
+
if (index > 0) {
|
|
395
|
+
lines.push("");
|
|
396
|
+
}
|
|
397
|
+
lines.push(sectionTitle(section.title, options.color));
|
|
398
|
+
for (const entry of section.entries) {
|
|
399
|
+
lines.push(...renderEntry(entry, options.color));
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
return `${lines.join("\n")}
|
|
403
|
+
`;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// src/commands/removed-command.ts
|
|
407
|
+
function createRemovedCommandHandler(message) {
|
|
408
|
+
return async () => {
|
|
409
|
+
process.stderr.write(`${message}
|
|
410
|
+
`);
|
|
411
|
+
process.exitCode = 2;
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
|
|
279
415
|
// src/index.ts
|
|
280
416
|
var COMMANDS = {
|
|
281
|
-
workflow: () => import("./workflow-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
status: () => import("./status-F4D52OVK.js"),
|
|
289
|
-
run: () => import("./run-IHN3ZL35.js"),
|
|
290
|
-
recover: () => import("./recover-LTLKMTRX.js"),
|
|
291
|
-
logs: () => import("./logs-GTZ4U5JE.js"),
|
|
292
|
-
project: () => import("./project-RMYMZSFV.js"),
|
|
293
|
-
repo: () => import("./repo-WI7GF6XQ.js"),
|
|
294
|
-
config: () => import("./config-cmd-Z3A7V6NC.js"),
|
|
295
|
-
version: () => import("./version-CW54Q7BK.js")
|
|
417
|
+
workflow: () => import("./workflow-26QNZZWH.js"),
|
|
418
|
+
setup: () => import("./setup-XNHHRBGU.js"),
|
|
419
|
+
doctor: () => import("./doctor-EEPNFCGF.js"),
|
|
420
|
+
upgrade: () => import("./upgrade-NS53EO2B.js"),
|
|
421
|
+
repo: () => import("./repo-RX4OK7XH.js"),
|
|
422
|
+
config: () => import("./config-cmd-2ADPUYWA.js"),
|
|
423
|
+
version: () => import("./version-2RHFZ5CI.js")
|
|
296
424
|
};
|
|
297
425
|
function addGlobalOptions(command) {
|
|
298
426
|
return command.option("--config <dir>", "Config directory").addOption(new Option("--config-dir <dir>").hideHelp()).option("-v, --verbose", "Enable verbose output").option("--json", "Output in JSON format").option("--no-color", "Disable color output");
|
|
@@ -308,6 +436,7 @@ function resolveGlobalOptions(values) {
|
|
|
308
436
|
if (options.noColor) {
|
|
309
437
|
process.env.NO_COLOR = "1";
|
|
310
438
|
}
|
|
439
|
+
setNoColor(options.noColor);
|
|
311
440
|
return options;
|
|
312
441
|
}
|
|
313
442
|
function resolveProjectId(values) {
|
|
@@ -326,6 +455,9 @@ async function invokeHandler(key, args, values) {
|
|
|
326
455
|
const module = await COMMANDS[key]();
|
|
327
456
|
await module.default(args, resolveGlobalOptions(values));
|
|
328
457
|
}
|
|
458
|
+
async function invokeRemovedCommand(message, values) {
|
|
459
|
+
await createRemovedCommandHandler(message)([], resolveGlobalOptions(values));
|
|
460
|
+
}
|
|
329
461
|
function shellArgument(value) {
|
|
330
462
|
if (value === "bash" || value === "zsh" || value === "fish") {
|
|
331
463
|
return value;
|
|
@@ -345,8 +477,24 @@ function resolveVersionOptions(argv) {
|
|
|
345
477
|
if (options.noColor) {
|
|
346
478
|
process.env.NO_COLOR = "1";
|
|
347
479
|
}
|
|
480
|
+
setNoColor(options.noColor);
|
|
348
481
|
return options;
|
|
349
482
|
}
|
|
483
|
+
function renderRootHelp(command) {
|
|
484
|
+
const values = command.optsWithGlobals();
|
|
485
|
+
const noColor = Boolean(values.noColor);
|
|
486
|
+
return renderHelp({ color: !noColor });
|
|
487
|
+
}
|
|
488
|
+
function registerRemovedCommand(program, commandSpec, message, markInvoked) {
|
|
489
|
+
const handler = createRemovedCommandHandler(message);
|
|
490
|
+
addGlobalOptions(
|
|
491
|
+
program.command(commandSpec, { hidden: true }).allowUnknownOption(true).allowExcessArguments(true)
|
|
492
|
+
).action(async function() {
|
|
493
|
+
markInvoked();
|
|
494
|
+
const values = this.optsWithGlobals();
|
|
495
|
+
await handler([], resolveGlobalOptions(values));
|
|
496
|
+
});
|
|
497
|
+
}
|
|
350
498
|
function createProgram() {
|
|
351
499
|
let actionInvoked = false;
|
|
352
500
|
const markInvoked = () => {
|
|
@@ -355,24 +503,13 @@ function createProgram() {
|
|
|
355
503
|
const program = addGlobalOptions(
|
|
356
504
|
new Command().name("gh-symphony").description("AI Coding Agent Orchestrator").exitOverride().helpOption("-h, --help", "Show help").addHelpCommand("help [command]", "Show help for command").showHelpAfterError("(run with --help for usage)").option("-V, --version", "Show version")
|
|
357
505
|
);
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
const values = this.optsWithGlobals();
|
|
366
|
-
const args = ["init"];
|
|
367
|
-
pushOption(args, "--non-interactive", values.nonInteractive);
|
|
368
|
-
pushOption(args, "--project", values.project);
|
|
369
|
-
pushOption(args, "--output", values.output);
|
|
370
|
-
pushOption(args, "--runtime", values.runtime);
|
|
371
|
-
pushOption(args, "--skip-skills", values.skipSkills);
|
|
372
|
-
pushOption(args, "--skip-context", values.skipContext);
|
|
373
|
-
pushOption(args, "--dry-run", values.dryRun);
|
|
374
|
-
await invokeHandler("workflow", args, values);
|
|
375
|
-
});
|
|
506
|
+
program.helpInformation = () => renderRootHelp(program);
|
|
507
|
+
registerRemovedCommand(
|
|
508
|
+
program,
|
|
509
|
+
"init",
|
|
510
|
+
"Use 'gh-symphony workflow init'.",
|
|
511
|
+
markInvoked
|
|
512
|
+
);
|
|
376
513
|
const workflow = addGlobalOptions(
|
|
377
514
|
program.command("workflow").description("Manage WORKFLOW.md authoring")
|
|
378
515
|
);
|
|
@@ -425,14 +562,12 @@ function createProgram() {
|
|
|
425
562
|
await invokeHandler("workflow", args, values);
|
|
426
563
|
});
|
|
427
564
|
addGlobalOptions(
|
|
428
|
-
program.command("setup").description("Run the one-command first-run setup flow").option("--non-interactive", "Run without prompts").option("--
|
|
565
|
+
program.command("setup").description("Run the one-command first-run setup flow").option("--non-interactive", "Run without prompts").option("--assigned-only", "Limit processing to assigned issues").option("--output <path>", "Write WORKFLOW.md to a custom path").option("--skip-skills", "Skip runtime skill generation").option("--skip-context", "Skip .gh-symphony/context.yaml generation").allowExcessArguments(false)
|
|
429
566
|
).action(async function() {
|
|
430
567
|
markInvoked();
|
|
431
568
|
const values = this.optsWithGlobals();
|
|
432
569
|
const args = [];
|
|
433
570
|
pushOption(args, "--non-interactive", values.nonInteractive);
|
|
434
|
-
pushOption(args, "--project", values.project);
|
|
435
|
-
pushOption(args, "--workspace-dir", values.workspaceDir);
|
|
436
571
|
pushOption(args, "--assigned-only", values.assignedOnly);
|
|
437
572
|
pushOption(args, "--output", values.output);
|
|
438
573
|
pushOption(args, "--skip-skills", values.skipSkills);
|
|
@@ -443,13 +578,18 @@ function createProgram() {
|
|
|
443
578
|
program.command("doctor").description("Run diagnostics and optional first-run remediation").option("--project-id <projectId>", "Project identifier").option(
|
|
444
579
|
"--fix",
|
|
445
580
|
"Apply safe remediation steps and print manual follow-ups"
|
|
446
|
-
).
|
|
581
|
+
).option(
|
|
582
|
+
"--smoke",
|
|
583
|
+
"Run a safe live issue readiness check without dispatching work"
|
|
584
|
+
).option("--issue <owner/repo#number>", "Live issue to validate").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
447
585
|
).action(async function() {
|
|
448
586
|
markInvoked();
|
|
449
587
|
const values = this.optsWithGlobals();
|
|
450
588
|
const args = [];
|
|
451
589
|
pushOption(args, "--project-id", resolveProjectId(values));
|
|
452
590
|
pushOption(args, "--fix", values.fix);
|
|
591
|
+
pushOption(args, "--smoke", values.smoke);
|
|
592
|
+
pushOption(args, "--issue", values.issue);
|
|
453
593
|
await invokeHandler("doctor", args, values);
|
|
454
594
|
});
|
|
455
595
|
addGlobalOptions(
|
|
@@ -458,202 +598,101 @@ function createProgram() {
|
|
|
458
598
|
markInvoked();
|
|
459
599
|
await invokeHandler("upgrade", [], this.optsWithGlobals());
|
|
460
600
|
});
|
|
601
|
+
registerRemovedCommand(
|
|
602
|
+
program,
|
|
603
|
+
"start",
|
|
604
|
+
"Use 'gh-symphony repo start' from the target repository.",
|
|
605
|
+
markInvoked
|
|
606
|
+
);
|
|
607
|
+
registerRemovedCommand(
|
|
608
|
+
program,
|
|
609
|
+
"stop",
|
|
610
|
+
"Use 'gh-symphony repo stop'.",
|
|
611
|
+
markInvoked
|
|
612
|
+
);
|
|
613
|
+
registerRemovedCommand(
|
|
614
|
+
program,
|
|
615
|
+
"status",
|
|
616
|
+
"Use 'gh-symphony repo status'.",
|
|
617
|
+
markInvoked
|
|
618
|
+
);
|
|
619
|
+
registerRemovedCommand(
|
|
620
|
+
program,
|
|
621
|
+
"run",
|
|
622
|
+
"Use 'gh-symphony repo run <issue>'.",
|
|
623
|
+
markInvoked
|
|
624
|
+
);
|
|
625
|
+
registerRemovedCommand(
|
|
626
|
+
program,
|
|
627
|
+
"recover",
|
|
628
|
+
"Use 'gh-symphony repo recover'.",
|
|
629
|
+
markInvoked
|
|
630
|
+
);
|
|
631
|
+
registerRemovedCommand(
|
|
632
|
+
program,
|
|
633
|
+
"logs",
|
|
634
|
+
"Use 'gh-symphony repo logs'.",
|
|
635
|
+
markInvoked
|
|
636
|
+
);
|
|
461
637
|
addGlobalOptions(
|
|
462
|
-
program.command("
|
|
463
|
-
"--http [port]",
|
|
464
|
-
"Expose dashboard and refresh endpoints over HTTP"
|
|
465
|
-
).option(
|
|
466
|
-
"--web [port]",
|
|
467
|
-
"Expose the control plane web dashboard and API over HTTP"
|
|
468
|
-
).option("--log-level <level>", "Orchestrator lifecycle log level").addOption(new Option("--project-id <projectId>").hideHelp()).addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
469
|
-
).action(async function() {
|
|
470
|
-
markInvoked();
|
|
471
|
-
const values = this.optsWithGlobals();
|
|
472
|
-
const args = [];
|
|
473
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
474
|
-
pushOption(args, "--daemon", values.daemon);
|
|
475
|
-
pushOption(args, "--once", values.once);
|
|
476
|
-
pushOption(args, "--http", values.http);
|
|
477
|
-
pushOption(args, "--web", values.web);
|
|
478
|
-
pushOption(args, "--log-level", values.logLevel);
|
|
479
|
-
await invokeHandler("start", args, values);
|
|
480
|
-
});
|
|
481
|
-
addGlobalOptions(
|
|
482
|
-
program.command("stop").description("Stop the background orchestrator").option("--force", "Force stop with SIGKILL").addOption(new Option("--project-id <projectId>").hideHelp()).addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
483
|
-
).action(async function() {
|
|
484
|
-
markInvoked();
|
|
485
|
-
const values = this.optsWithGlobals();
|
|
486
|
-
const args = [];
|
|
487
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
488
|
-
pushOption(args, "--force", values.force);
|
|
489
|
-
await invokeHandler("stop", args, values);
|
|
490
|
-
});
|
|
491
|
-
addGlobalOptions(
|
|
492
|
-
program.command("status").description("Show orchestrator status").option("-w, --watch", "Watch status continuously").addOption(new Option("--project-id <projectId>").hideHelp()).addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
493
|
-
).action(async function() {
|
|
494
|
-
markInvoked();
|
|
495
|
-
const values = this.optsWithGlobals();
|
|
496
|
-
const args = [];
|
|
497
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
498
|
-
pushOption(args, "--watch", values.watch);
|
|
499
|
-
await invokeHandler("status", args, values);
|
|
500
|
-
});
|
|
501
|
-
addGlobalOptions(
|
|
502
|
-
program.command("run").description("Dispatch a single issue").argument("<issue>", "Issue identifier").option("--log-level <level>", "Orchestrator lifecycle log level").option("-w, --watch", "Watch status after dispatch").option("--project-id <projectId>", "Project identifier").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
503
|
-
).action(async function(issue) {
|
|
504
|
-
markInvoked();
|
|
505
|
-
const values = this.optsWithGlobals();
|
|
506
|
-
const args = [issue];
|
|
507
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
508
|
-
pushOption(args, "--log-level", values.logLevel);
|
|
509
|
-
pushOption(args, "--watch", values.watch);
|
|
510
|
-
await invokeHandler("run", args, values);
|
|
511
|
-
});
|
|
512
|
-
addGlobalOptions(
|
|
513
|
-
program.command("recover").description("Recover stalled runs").option("--dry-run", "Show recoverable runs without recovering").option("--project-id <projectId>", "Project identifier").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
514
|
-
).action(async function() {
|
|
515
|
-
markInvoked();
|
|
516
|
-
const values = this.optsWithGlobals();
|
|
517
|
-
const args = [];
|
|
518
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
519
|
-
pushOption(args, "--dry-run", values.dryRun);
|
|
520
|
-
await invokeHandler("recover", args, values);
|
|
521
|
-
});
|
|
522
|
-
addGlobalOptions(
|
|
523
|
-
program.command("logs").description("View orchestrator logs").option("-f, --follow", "Follow new log lines").option("--issue <issue>", "Filter by issue identifier").option("--run <runId>", "Read events for a specific run").option("--level <level>", "Filter by log level").option("--project-id <projectId>", "Project identifier").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
638
|
+
program.command("project").description("Removed project namespace").argument("[args...]", "Removed project command arguments").allowUnknownOption(true).allowExcessArguments(true)
|
|
524
639
|
).action(async function() {
|
|
525
640
|
markInvoked();
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
pushOption(args, "--follow", values.follow);
|
|
530
|
-
pushOption(args, "--issue", values.issue);
|
|
531
|
-
pushOption(args, "--run", values.run);
|
|
532
|
-
pushOption(args, "--level", values.level);
|
|
533
|
-
await invokeHandler("logs", args, values);
|
|
641
|
+
await createRemovedCommandHandler(
|
|
642
|
+
"The 'project' command was removed. The orchestrator is now per-repository. Run 'gh-symphony repo init' in the target repository."
|
|
643
|
+
)([], resolveGlobalOptions(this.optsWithGlobals()));
|
|
534
644
|
});
|
|
535
|
-
const
|
|
536
|
-
program.command("
|
|
645
|
+
const repo = addGlobalOptions(
|
|
646
|
+
program.command("repo").description("Manage the current repository runtime")
|
|
537
647
|
);
|
|
538
|
-
|
|
539
|
-
markInvoked();
|
|
540
|
-
await invokeHandler("project", [], this.optsWithGlobals());
|
|
541
|
-
});
|
|
542
|
-
addGlobalOptions(
|
|
543
|
-
project.command("add").description("Add a new project").option("--non-interactive", "Run without prompts").option("--project <id>", "GitHub Project ID").option("--workspace-dir <path>", "Workspace directory").option("--assigned-only", "Limit processing to assigned issues").allowExcessArguments(false)
|
|
544
|
-
).action(async function() {
|
|
648
|
+
repo.action(async function() {
|
|
545
649
|
markInvoked();
|
|
546
|
-
|
|
547
|
-
const args = [];
|
|
548
|
-
pushOption(args, "--non-interactive", values.nonInteractive);
|
|
549
|
-
pushOption(args, "--project", values.project);
|
|
550
|
-
pushOption(args, "--workspace-dir", values.workspaceDir);
|
|
551
|
-
pushOption(args, "--assigned-only", values.assignedOnly);
|
|
552
|
-
await invokeHandler("project", ["add", ...args], values);
|
|
650
|
+
await invokeHandler("repo", [], this.optsWithGlobals());
|
|
553
651
|
});
|
|
652
|
+
addGlobalOptions(repo.command("list").description("Removed")).action(
|
|
653
|
+
async function() {
|
|
654
|
+
markInvoked();
|
|
655
|
+
await invokeRemovedCommand(
|
|
656
|
+
"Removed. Repository identity is shown by 'repo status'.",
|
|
657
|
+
this.optsWithGlobals()
|
|
658
|
+
);
|
|
659
|
+
}
|
|
660
|
+
);
|
|
554
661
|
addGlobalOptions(
|
|
555
|
-
|
|
662
|
+
repo.command("add").description("Removed").argument("[owner/name]", "Repository spec").allowExcessArguments(false)
|
|
556
663
|
).action(async function() {
|
|
557
664
|
markInvoked();
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
});
|
|
561
|
-
addGlobalOptions(
|
|
562
|
-
project.command("remove").description("Remove a project").argument("<projectId>", "Project identifier").allowExcessArguments(false)
|
|
563
|
-
).action(async function(projectId) {
|
|
564
|
-
markInvoked();
|
|
565
|
-
await invokeHandler(
|
|
566
|
-
"project",
|
|
567
|
-
["remove", projectId],
|
|
665
|
+
await invokeRemovedCommand(
|
|
666
|
+
"Removed. The orchestrator binds to the cwd repository via 'repo init'.",
|
|
568
667
|
this.optsWithGlobals()
|
|
569
668
|
);
|
|
570
669
|
});
|
|
571
670
|
addGlobalOptions(
|
|
572
|
-
|
|
573
|
-
"--http [port]",
|
|
574
|
-
"Expose dashboard and refresh endpoints over HTTP"
|
|
575
|
-
).option(
|
|
576
|
-
"--web [port]",
|
|
577
|
-
"Expose the control plane web dashboard and API over HTTP"
|
|
578
|
-
).option("--log-level <level>", "Orchestrator lifecycle log level").option("--project-id <projectId>", "Project identifier").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
579
|
-
).action(async function() {
|
|
580
|
-
markInvoked();
|
|
581
|
-
const values = this.optsWithGlobals();
|
|
582
|
-
const args = ["start"];
|
|
583
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
584
|
-
pushOption(args, "--daemon", values.daemon);
|
|
585
|
-
pushOption(args, "--once", values.once);
|
|
586
|
-
pushOption(args, "--http", values.http);
|
|
587
|
-
pushOption(args, "--web", values.web);
|
|
588
|
-
pushOption(args, "--log-level", values.logLevel);
|
|
589
|
-
await invokeHandler("project", args, values);
|
|
590
|
-
});
|
|
591
|
-
addGlobalOptions(
|
|
592
|
-
project.command("stop").description("Stop a specific project").option("--force", "Force stop with SIGKILL").option("--project-id <projectId>", "Project identifier").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
671
|
+
repo.command("remove").description("Removed").argument("[owner/name]", "Repository spec").allowExcessArguments(false)
|
|
593
672
|
).action(async function() {
|
|
594
673
|
markInvoked();
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
598
|
-
pushOption(args, "--force", values.force);
|
|
599
|
-
await invokeHandler("project", args, values);
|
|
600
|
-
});
|
|
601
|
-
addGlobalOptions(
|
|
602
|
-
project.command("switch").description("Switch the active project")
|
|
603
|
-
).action(async function() {
|
|
604
|
-
markInvoked();
|
|
605
|
-
await invokeHandler(
|
|
606
|
-
"project",
|
|
607
|
-
["switch"],
|
|
674
|
+
await invokeRemovedCommand(
|
|
675
|
+
"Removed. The orchestrator binds to the cwd repository via 'repo init'.",
|
|
608
676
|
this.optsWithGlobals()
|
|
609
677
|
);
|
|
610
678
|
});
|
|
611
679
|
addGlobalOptions(
|
|
612
|
-
|
|
613
|
-
).action(async function() {
|
|
614
|
-
markInvoked();
|
|
615
|
-
const values = this.optsWithGlobals();
|
|
616
|
-
const args = ["status"];
|
|
617
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
618
|
-
pushOption(args, "--watch", values.watch);
|
|
619
|
-
await invokeHandler("project", args, values);
|
|
620
|
-
});
|
|
621
|
-
addGlobalOptions(
|
|
622
|
-
project.command("explain").description("Explain why a project issue is not dispatching").argument("<issue>", "Issue identifier, for example owner/repo#123").option("--project-id <projectId>", "Project identifier").option("--workflow <path>", "Path to the WORKFLOW.md file to evaluate").addOption(new Option("--project <projectId>").hideHelp()).allowExcessArguments(false)
|
|
623
|
-
).action(async function(issue) {
|
|
624
|
-
markInvoked();
|
|
625
|
-
const values = this.optsWithGlobals();
|
|
626
|
-
const args = ["explain", issue];
|
|
627
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
628
|
-
pushOption(args, "--workflow", values.workflow);
|
|
629
|
-
await invokeHandler("project", args, values);
|
|
630
|
-
});
|
|
631
|
-
const repo = addGlobalOptions(
|
|
632
|
-
program.command("repo").description("Manage repositories in the active project")
|
|
633
|
-
);
|
|
634
|
-
repo.action(async function() {
|
|
635
|
-
markInvoked();
|
|
636
|
-
await invokeHandler("repo", [], this.optsWithGlobals());
|
|
637
|
-
});
|
|
638
|
-
addGlobalOptions(
|
|
639
|
-
repo.command("list").description("List repositories")
|
|
680
|
+
repo.command("sync").description("Removed").allowExcessArguments(false)
|
|
640
681
|
).action(async function() {
|
|
641
682
|
markInvoked();
|
|
642
|
-
await
|
|
643
|
-
"repo",
|
|
644
|
-
["list"],
|
|
683
|
+
await invokeRemovedCommand(
|
|
684
|
+
"Removed. Single-repo model has no linked-repo set to sync.",
|
|
645
685
|
this.optsWithGlobals()
|
|
646
686
|
);
|
|
647
687
|
});
|
|
648
688
|
addGlobalOptions(
|
|
649
|
-
repo.command("init").description("Initialize gh-symphony for the current repository").option("--repo-dir <path>", "Repository directory").option("--workflow-file <path>", "Use a custom WORKFLOW.md path").
|
|
689
|
+
repo.command("init").description("Initialize gh-symphony for the current repository").option("--repo-dir <path>", "Repository directory").option("--workflow-file <path>", "Use a custom WORKFLOW.md path").allowExcessArguments(false)
|
|
650
690
|
).action(async function() {
|
|
651
691
|
markInvoked();
|
|
652
692
|
const values = this.optsWithGlobals();
|
|
653
693
|
const args = ["init"];
|
|
654
694
|
pushOption(args, "--repo-dir", values.repoDir);
|
|
655
695
|
pushOption(args, "--workflow-file", values.workflowFile);
|
|
656
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
657
696
|
await invokeHandler("repo", args, values);
|
|
658
697
|
});
|
|
659
698
|
addGlobalOptions(
|
|
@@ -663,12 +702,11 @@ function createProgram() {
|
|
|
663
702
|
).option(
|
|
664
703
|
"--web [port]",
|
|
665
704
|
"Expose the control plane web dashboard and API over HTTP"
|
|
666
|
-
).option("--log-level <level>", "Orchestrator lifecycle log level").
|
|
705
|
+
).option("--log-level <level>", "Orchestrator lifecycle log level").allowUnknownOption(true).allowExcessArguments(true)
|
|
667
706
|
).action(async function() {
|
|
668
707
|
markInvoked();
|
|
669
708
|
const values = this.optsWithGlobals();
|
|
670
|
-
const args = ["start"];
|
|
671
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
709
|
+
const args = ["start", ...this.args];
|
|
672
710
|
pushOption(args, "--daemon", values.daemon);
|
|
673
711
|
pushOption(args, "--once", values.once);
|
|
674
712
|
pushOption(args, "--http", values.http);
|
|
@@ -677,53 +715,61 @@ function createProgram() {
|
|
|
677
715
|
await invokeHandler("repo", args, values);
|
|
678
716
|
});
|
|
679
717
|
addGlobalOptions(
|
|
680
|
-
repo.command("status").description("Show current repository orchestrator status").option("-w, --watch", "Watch status continuously").
|
|
718
|
+
repo.command("status").description("Show current repository orchestrator status").option("-w, --watch", "Watch status continuously").allowUnknownOption(true).allowExcessArguments(true)
|
|
681
719
|
).action(async function() {
|
|
682
720
|
markInvoked();
|
|
683
721
|
const values = this.optsWithGlobals();
|
|
684
|
-
const args = ["status"];
|
|
685
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
722
|
+
const args = ["status", ...this.args];
|
|
686
723
|
pushOption(args, "--watch", values.watch);
|
|
687
724
|
await invokeHandler("repo", args, values);
|
|
688
725
|
});
|
|
689
726
|
addGlobalOptions(
|
|
690
|
-
repo.command("stop").description("Stop the current repository background orchestrator").option("--force", "Force stop with SIGKILL").
|
|
727
|
+
repo.command("stop").description("Stop the current repository background orchestrator").option("--force", "Force stop with SIGKILL").allowUnknownOption(true).allowExcessArguments(true)
|
|
691
728
|
).action(async function() {
|
|
692
729
|
markInvoked();
|
|
693
730
|
const values = this.optsWithGlobals();
|
|
694
|
-
const args = ["stop"];
|
|
695
|
-
pushOption(args, "--project-id", resolveProjectId(values));
|
|
731
|
+
const args = ["stop", ...this.args];
|
|
696
732
|
pushOption(args, "--force", values.force);
|
|
697
733
|
await invokeHandler("repo", args, values);
|
|
698
734
|
});
|
|
699
735
|
addGlobalOptions(
|
|
700
|
-
repo.command("
|
|
701
|
-
).action(async function(
|
|
736
|
+
repo.command("run").description("Dispatch a single issue from the current repository").argument("[args...]", "Issue identifier and passthrough options").option("--log-level <level>", "Orchestrator lifecycle log level").option("-w, --watch", "Watch status after dispatch").allowUnknownOption(true).allowExcessArguments(true)
|
|
737
|
+
).action(async function(passthrough) {
|
|
702
738
|
markInvoked();
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
);
|
|
739
|
+
const values = this.optsWithGlobals();
|
|
740
|
+
const args = ["run", ...passthrough];
|
|
741
|
+
pushOption(args, "--log-level", values.logLevel);
|
|
742
|
+
pushOption(args, "--watch", values.watch);
|
|
743
|
+
await invokeHandler("repo", args, values);
|
|
708
744
|
});
|
|
709
745
|
addGlobalOptions(
|
|
710
|
-
repo.command("
|
|
711
|
-
).action(async function(
|
|
746
|
+
repo.command("recover").description("Recover stalled runs for the current repository").option("--dry-run", "Show recoverable runs without recovering").allowUnknownOption(true).allowExcessArguments(true)
|
|
747
|
+
).action(async function() {
|
|
712
748
|
markInvoked();
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
);
|
|
749
|
+
const values = this.optsWithGlobals();
|
|
750
|
+
const args = ["recover", ...this.args];
|
|
751
|
+
pushOption(args, "--dry-run", values.dryRun);
|
|
752
|
+
await invokeHandler("repo", args, values);
|
|
718
753
|
});
|
|
719
754
|
addGlobalOptions(
|
|
720
|
-
repo.command("
|
|
755
|
+
repo.command("logs").description("View current repository orchestrator logs").option("-f, --follow", "Follow new log lines").option("--issue <issue>", "Filter by issue identifier").option("--run <runId>", "Read events for a specific run").option("--level <level>", "Filter by log level").allowUnknownOption(true).allowExcessArguments(true)
|
|
721
756
|
).action(async function() {
|
|
722
757
|
markInvoked();
|
|
723
758
|
const values = this.optsWithGlobals();
|
|
724
|
-
const args = ["
|
|
725
|
-
pushOption(args, "--
|
|
726
|
-
pushOption(args, "--
|
|
759
|
+
const args = ["logs", ...this.args];
|
|
760
|
+
pushOption(args, "--follow", values.follow);
|
|
761
|
+
pushOption(args, "--issue", values.issue);
|
|
762
|
+
pushOption(args, "--run", values.run);
|
|
763
|
+
pushOption(args, "--level", values.level);
|
|
764
|
+
await invokeHandler("repo", args, values);
|
|
765
|
+
});
|
|
766
|
+
addGlobalOptions(
|
|
767
|
+
repo.command("explain").description("Explain why a repository issue is not dispatching").argument("[args...]", "Issue identifier and passthrough options").option("--workflow <path>", "Path to the WORKFLOW.md file to evaluate").allowUnknownOption(true).allowExcessArguments(true)
|
|
768
|
+
).action(async function(passthrough) {
|
|
769
|
+
markInvoked();
|
|
770
|
+
const values = this.optsWithGlobals();
|
|
771
|
+
const args = ["explain", ...passthrough];
|
|
772
|
+
pushOption(args, "--workflow", values.workflow);
|
|
727
773
|
await invokeHandler("repo", args, values);
|
|
728
774
|
});
|
|
729
775
|
const config = addGlobalOptions(
|