@gh-symphony/cli 0.4.4 → 0.4.6
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 +4 -1
- package/dist/{chunk-4ZHWEQQL.js → chunk-DENDF6S6.js} +1 -1
- package/dist/{chunk-34YCGQD2.js → chunk-EILO332E.js} +1 -1
- package/dist/{chunk-I3CZXKS5.js → chunk-FBJRJWE5.js} +3 -3
- package/dist/{chunk-LJUEOVAQ.js → chunk-RGCSM2KZ.js} +1 -0
- package/dist/{chunk-HHBXGE23.js → chunk-RMNLHTIK.js} +1 -1
- package/dist/{chunk-QBBJMCNC.js → chunk-XLDJTMW5.js} +13 -52
- package/dist/{doctor-Y2AZZKGW.js → doctor-YV5NV4HX.js} +15 -7
- package/dist/index.js +6 -6
- package/dist/{repo-2NS2AU3D.js → repo-LBNPFDDF.js} +37 -14
- package/dist/{setup-DMYXHOCB.js → setup-IJMKV5YA.js} +3 -3
- package/dist/{upgrade-FJXX733J.js → upgrade-TS42ZOSU.js} +2 -2
- package/dist/{version-FYAZ57WO.js → version-QXB4FBVW.js} +1 -1
- package/dist/worker-entry.js +2 -2
- package/dist/{workflow-TQ7UZPGP.js → workflow-WG55ZIZ6.js} +5 -5
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -8,6 +8,9 @@ The following tools must be installed before using the CLI:
|
|
|
8
8
|
|
|
9
9
|
- **[Node.js](https://nodejs.org/)** (v24+) with npm
|
|
10
10
|
- **[Git](https://git-scm.com/)**
|
|
11
|
+
- At least one AI agent runtime on `PATH` before `gh-symphony repo start`:
|
|
12
|
+
- **[Codex CLI](https://developers.openai.com/codex/cli/)** (`codex`) - install from the official Codex CLI guide, then authenticate with `codex login`.
|
|
13
|
+
- **[Claude Code](https://code.claude.com/docs/en/quickstart)** (`claude`) - install from the official Claude Code quickstart, then authenticate with `ANTHROPIC_API_KEY` or a local Claude login for non-bare runs.
|
|
11
14
|
- One GitHub auth source with required scopes (`repo`, `read:org`, `project`):
|
|
12
15
|
- **[GitHub CLI (`gh`)](https://cli.github.com/)**:
|
|
13
16
|
```bash
|
|
@@ -106,7 +109,7 @@ Examples of generated validation guidance include `make test`, `just build`, `uv
|
|
|
106
109
|
|
|
107
110
|
You can further customize the agent's behavior by editing `WORKFLOW.md` — this is the policy layer that controls what the agent does at each workflow phase.
|
|
108
111
|
|
|
109
|
-
> Currently supported runtimes: **Codex
|
|
112
|
+
> Currently supported runtimes: **[Codex CLI](https://developers.openai.com/codex/cli/)** and **[Claude Code](https://code.claude.com/docs/en/quickstart)**. The selected runtime command must be installed and authenticated before `gh-symphony repo start` can dispatch worker runs.
|
|
110
113
|
|
|
111
114
|
### Explicit Priority Mapping
|
|
112
115
|
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
3
|
workflow_init_default
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DENDF6S6.js";
|
|
5
5
|
import {
|
|
6
6
|
fetchGithubProjectIssueByRepositoryAndNumber,
|
|
7
7
|
inspectManagedProjectSelection,
|
|
8
8
|
resolveTrackerAdapter
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-RMNLHTIK.js";
|
|
10
10
|
import {
|
|
11
11
|
GitHubApiError,
|
|
12
12
|
createClient,
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
buildPromptVariables,
|
|
20
20
|
parseWorkflowMarkdown,
|
|
21
21
|
renderPrompt
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-RGCSM2KZ.js";
|
|
23
23
|
import {
|
|
24
24
|
loadActiveProjectConfig
|
|
25
25
|
} from "./chunk-YZP5N5XP.js";
|
|
@@ -10,17 +10,14 @@ import {
|
|
|
10
10
|
resolveGitHubGraphQLToken,
|
|
11
11
|
shouldReuseAgentCredentialCache,
|
|
12
12
|
writeAgentCredentialCache
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-RGCSM2KZ.js";
|
|
14
14
|
|
|
15
15
|
// ../runtime-codex/src/runtime.ts
|
|
16
16
|
import { spawn } from "child_process";
|
|
17
|
-
import {
|
|
18
|
-
import { join } from "path";
|
|
19
|
-
import { homedir } from "os";
|
|
17
|
+
import { readFile, writeFile } from "fs/promises";
|
|
20
18
|
import { fileURLToPath } from "url";
|
|
21
19
|
var DEFAULT_GITHUB_GIT_HOST = "github.com";
|
|
22
20
|
var DEFAULT_GITHUB_GIT_USERNAME = "x-access-token";
|
|
23
|
-
var STAGED_CODEX_HOME_DIRNAME = ".codex-agent";
|
|
24
21
|
var DIRECT_AGENT_ENV_KEYS = [
|
|
25
22
|
"OPENAI_API_KEY",
|
|
26
23
|
"OPENAI_BASE_URL",
|
|
@@ -287,20 +284,13 @@ function normalizeCodexRuntimeEvents(message) {
|
|
|
287
284
|
}
|
|
288
285
|
return events;
|
|
289
286
|
}
|
|
290
|
-
function
|
|
291
|
-
return
|
|
292
|
-
}
|
|
293
|
-
function resolvePreparedAgentEnvironment(workingDirectory, env) {
|
|
294
|
-
const preparedEnv = Object.fromEntries(
|
|
287
|
+
function resolvePreparedAgentEnvironment(env) {
|
|
288
|
+
return Object.fromEntries(
|
|
295
289
|
DIRECT_AGENT_ENV_KEYS.flatMap((key) => {
|
|
296
290
|
const value = env?.[key];
|
|
297
291
|
return typeof value === "string" && value.length > 0 ? [[key, value]] : [];
|
|
298
292
|
})
|
|
299
293
|
);
|
|
300
|
-
return {
|
|
301
|
-
...preparedEnv,
|
|
302
|
-
CODEX_HOME: resolveStagedCodexHome(workingDirectory)
|
|
303
|
-
};
|
|
304
294
|
}
|
|
305
295
|
function buildCodexRuntimePlan(config) {
|
|
306
296
|
const githubTool = createGitHubGraphQLToolDefinition(config);
|
|
@@ -317,10 +307,7 @@ function buildCodexRuntimePlan(config) {
|
|
|
317
307
|
const cmd = config.agentCommand ?? "codex app-server";
|
|
318
308
|
return cmd.startsWith("bash -lc ") ? cmd.slice("bash -lc ".length) : cmd;
|
|
319
309
|
})();
|
|
320
|
-
const agentEnv = resolvePreparedAgentEnvironment(
|
|
321
|
-
config.workingDirectory,
|
|
322
|
-
config.agentEnv
|
|
323
|
-
);
|
|
310
|
+
const agentEnv = resolvePreparedAgentEnvironment(config.agentEnv);
|
|
324
311
|
const linearGraphqlEnv = config.enableLinearGraphqlTool ? {
|
|
325
312
|
LINEAR_GRAPHQL_TOOL_NAME: "linear_graphql",
|
|
326
313
|
LINEAR_GRAPHQL_URL: config.linearGraphqlUrl ?? DEFAULT_LINEAR_GRAPHQL_URL,
|
|
@@ -385,7 +372,6 @@ var CodexRuntimeAdapter = class {
|
|
|
385
372
|
this.dependencies,
|
|
386
373
|
this
|
|
387
374
|
);
|
|
388
|
-
await stageCodexHome(this.config, this.dependencies);
|
|
389
375
|
this.plan = buildCodexRuntimePlan({
|
|
390
376
|
...this.config,
|
|
391
377
|
agentEnv
|
|
@@ -418,10 +404,7 @@ var CodexRuntimeAdapter = class {
|
|
|
418
404
|
};
|
|
419
405
|
}
|
|
420
406
|
resolveCredentials(brokerResponse) {
|
|
421
|
-
return resolvePreparedAgentEnvironment(
|
|
422
|
-
this.config.workingDirectory,
|
|
423
|
-
brokerResponse.env
|
|
424
|
-
);
|
|
407
|
+
return resolvePreparedAgentEnvironment(brokerResponse.env);
|
|
425
408
|
}
|
|
426
409
|
async shutdown() {
|
|
427
410
|
terminateChildProcess(this.child);
|
|
@@ -477,10 +460,10 @@ function createGitCredentialHelperEnvironment(config) {
|
|
|
477
460
|
}
|
|
478
461
|
async function resolveAgentRuntimeEnvironment(config, dependencies = {}, adapter) {
|
|
479
462
|
if (config.agentEnv) {
|
|
480
|
-
return resolveRuntimeCredentials(
|
|
463
|
+
return resolveRuntimeCredentials({ env: config.agentEnv }, adapter);
|
|
481
464
|
}
|
|
482
465
|
if (!config.agentCredentialBrokerUrl || !config.agentCredentialBrokerSecret) {
|
|
483
|
-
return resolvePreparedAgentEnvironment(
|
|
466
|
+
return resolvePreparedAgentEnvironment();
|
|
484
467
|
}
|
|
485
468
|
const now = dependencies.now ?? /* @__PURE__ */ new Date();
|
|
486
469
|
const readFileImpl = dependencies.readFileImpl ?? readFile;
|
|
@@ -489,7 +472,7 @@ async function resolveAgentRuntimeEnvironment(config, dependencies = {}, adapter
|
|
|
489
472
|
readFileImpl
|
|
490
473
|
) : null;
|
|
491
474
|
if (cachedCredentials && shouldReuseAgentCredentialCache(cachedCredentials, now)) {
|
|
492
|
-
return resolveRuntimeCredentials(
|
|
475
|
+
return resolveRuntimeCredentials(cachedCredentials, adapter);
|
|
493
476
|
}
|
|
494
477
|
const fetchImpl = dependencies.fetchImpl ?? fetch;
|
|
495
478
|
const response = await fetchImpl(config.agentCredentialBrokerUrl, {
|
|
@@ -503,7 +486,7 @@ async function resolveAgentRuntimeEnvironment(config, dependencies = {}, adapter
|
|
|
503
486
|
const resolvedEnv = payload.env && response.ok ? adapter ? adapter.resolveCredentials({
|
|
504
487
|
env: payload.env,
|
|
505
488
|
expires_at: payload.expires_at
|
|
506
|
-
}) : resolvePreparedAgentEnvironment(
|
|
489
|
+
}) : resolvePreparedAgentEnvironment(payload.env) : null;
|
|
507
490
|
if (!response.ok || !payload.env || Object.keys(payload.env).length === 0 || !resolvedEnv) {
|
|
508
491
|
throw new AgentRuntimeResolutionError(
|
|
509
492
|
payload.error ?? `Agent credential broker request failed with status ${response.status}.`
|
|
@@ -520,31 +503,8 @@ async function resolveAgentRuntimeEnvironment(config, dependencies = {}, adapter
|
|
|
520
503
|
}
|
|
521
504
|
return resolvedEnv;
|
|
522
505
|
}
|
|
523
|
-
function resolveRuntimeCredentials(
|
|
524
|
-
return adapter ? adapter.resolveCredentials(brokerResponse) : resolvePreparedAgentEnvironment(
|
|
525
|
-
config.workingDirectory,
|
|
526
|
-
brokerResponse.env
|
|
527
|
-
);
|
|
528
|
-
}
|
|
529
|
-
async function stageCodexHome(config, dependencies = {}) {
|
|
530
|
-
const codexHomeDir = resolveStagedCodexHome(config.workingDirectory);
|
|
531
|
-
const mkdirImpl = dependencies.mkdirImpl ?? mkdir;
|
|
532
|
-
await mkdirImpl(codexHomeDir, { recursive: true });
|
|
533
|
-
const writeFileImpl = dependencies.writeFileImpl ?? writeFile;
|
|
534
|
-
await writeFileImpl(
|
|
535
|
-
join(codexHomeDir, "config.toml"),
|
|
536
|
-
"# Isolated agent config \u2014 no personal MCP servers\n",
|
|
537
|
-
"utf8"
|
|
538
|
-
);
|
|
539
|
-
const realCodexHome = process.env.CODEX_HOME ?? join(homedir(), ".codex");
|
|
540
|
-
const copyFileImpl = dependencies.copyFileImpl ?? copyFile;
|
|
541
|
-
try {
|
|
542
|
-
await copyFileImpl(
|
|
543
|
-
join(realCodexHome, "auth.json"),
|
|
544
|
-
join(codexHomeDir, "auth.json")
|
|
545
|
-
);
|
|
546
|
-
} catch {
|
|
547
|
-
}
|
|
506
|
+
function resolveRuntimeCredentials(brokerResponse, adapter) {
|
|
507
|
+
return adapter ? adapter.resolveCredentials(brokerResponse) : resolvePreparedAgentEnvironment(brokerResponse.env);
|
|
548
508
|
}
|
|
549
509
|
function hasRunningChild(child) {
|
|
550
510
|
return child !== null && child.exitCode === null && child.signalCode === null;
|
|
@@ -583,6 +543,7 @@ function resolveLocalRuntimeLaunchConfig(env = process.env) {
|
|
|
583
543
|
githubTokenBrokerSecret: env.GITHUB_TOKEN_BROKER_SECRET,
|
|
584
544
|
githubTokenCachePath: env.GITHUB_TOKEN_CACHE_PATH,
|
|
585
545
|
agentEnv: readDirectAgentEnvironment(env),
|
|
546
|
+
extraEnv: env.CODEX_HOME ? { CODEX_HOME: env.CODEX_HOME } : void 0,
|
|
586
547
|
agentCredentialBrokerUrl: env.AGENT_CREDENTIAL_BROKER_URL,
|
|
587
548
|
agentCredentialBrokerSecret: env.AGENT_CREDENTIAL_BROKER_SECRET,
|
|
588
549
|
agentCredentialCachePath: env.AGENT_CREDENTIAL_CACHE_PATH,
|
|
@@ -5,14 +5,14 @@ import {
|
|
|
5
5
|
parseIssueReference,
|
|
6
6
|
readGitHubProjectBinding,
|
|
7
7
|
renderIssueWorkflowPreview
|
|
8
|
-
} from "./chunk-
|
|
9
|
-
import "./chunk-
|
|
8
|
+
} from "./chunk-FBJRJWE5.js";
|
|
9
|
+
import "./chunk-DENDF6S6.js";
|
|
10
10
|
import {
|
|
11
11
|
fetchGithubProjectIssueByRepositoryAndNumber,
|
|
12
12
|
fetchGithubProjectIssues,
|
|
13
13
|
inspectManagedProjectSelection
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import "./chunk-
|
|
14
|
+
} from "./chunk-RMNLHTIK.js";
|
|
15
|
+
import "./chunk-XLDJTMW5.js";
|
|
16
16
|
import {
|
|
17
17
|
resolveRuntimeRoot
|
|
18
18
|
} from "./chunk-3IRPSPAF.js";
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
resolveClaudeCommandBinary,
|
|
41
41
|
resolveRuntimeCommandBinary,
|
|
42
42
|
runClaudePreflight
|
|
43
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-RGCSM2KZ.js";
|
|
44
44
|
import {
|
|
45
45
|
configFilePath,
|
|
46
46
|
orchestratorLogPath,
|
|
@@ -1886,10 +1886,18 @@ ${DOCTOR_USAGE}`);
|
|
|
1886
1886
|
}
|
|
1887
1887
|
function buildRuntimeInstallGuidance(binary, platform) {
|
|
1888
1888
|
if (binary === "codex") {
|
|
1889
|
-
return
|
|
1889
|
+
return [
|
|
1890
|
+
"Install Codex CLI from https://developers.openai.com/codex/cli/",
|
|
1891
|
+
"and ensure 'codex' is on PATH.",
|
|
1892
|
+
"Then authenticate with 'codex login'."
|
|
1893
|
+
].join(" ");
|
|
1890
1894
|
}
|
|
1891
1895
|
if (binary === "claude" || binary === "claude-code") {
|
|
1892
|
-
return
|
|
1896
|
+
return [
|
|
1897
|
+
"Install Claude Code from https://code.claude.com/docs/en/quickstart",
|
|
1898
|
+
"and ensure the runtime binary is on PATH.",
|
|
1899
|
+
"Then set ANTHROPIC_API_KEY or complete a local Claude login for non-bare runs."
|
|
1900
|
+
].join(" ");
|
|
1893
1901
|
}
|
|
1894
1902
|
if (platform === "win32" && binary) {
|
|
1895
1903
|
return `Install '${binary}' using its official installation instructions and ensure the directory containing '${binary}.exe' is on PATH.`;
|
package/dist/index.js
CHANGED
|
@@ -417,13 +417,13 @@ function createRemovedCommandHandler(message) {
|
|
|
417
417
|
|
|
418
418
|
// src/index.ts
|
|
419
419
|
var COMMANDS = {
|
|
420
|
-
workflow: () => import("./workflow-
|
|
421
|
-
setup: () => import("./setup-
|
|
422
|
-
doctor: () => import("./doctor-
|
|
423
|
-
upgrade: () => import("./upgrade-
|
|
424
|
-
repo: () => import("./repo-
|
|
420
|
+
workflow: () => import("./workflow-WG55ZIZ6.js"),
|
|
421
|
+
setup: () => import("./setup-IJMKV5YA.js"),
|
|
422
|
+
doctor: () => import("./doctor-YV5NV4HX.js"),
|
|
423
|
+
upgrade: () => import("./upgrade-TS42ZOSU.js"),
|
|
424
|
+
repo: () => import("./repo-LBNPFDDF.js"),
|
|
425
425
|
config: () => import("./config-cmd-OIVIUKG7.js"),
|
|
426
|
-
version: () => import("./version-
|
|
426
|
+
version: () => import("./version-QXB4FBVW.js")
|
|
427
427
|
};
|
|
428
428
|
function addGlobalOptions(command) {
|
|
429
429
|
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");
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
import {
|
|
18
18
|
initRepoRuntime,
|
|
19
19
|
parseRepoRuntimeFlags
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-EILO332E.js";
|
|
21
21
|
import {
|
|
22
22
|
OrchestratorService,
|
|
23
23
|
acquireProjectLock,
|
|
@@ -33,8 +33,8 @@ import {
|
|
|
33
33
|
resolveOrchestratorLogLevel,
|
|
34
34
|
resolveTrackerAdapter,
|
|
35
35
|
runCli
|
|
36
|
-
} from "./chunk-
|
|
37
|
-
import "./chunk-
|
|
36
|
+
} from "./chunk-RMNLHTIK.js";
|
|
37
|
+
import "./chunk-XLDJTMW5.js";
|
|
38
38
|
import {
|
|
39
39
|
resolveRepoRuntimeRoot,
|
|
40
40
|
resolveRuntimeRoot
|
|
@@ -52,13 +52,14 @@ import {
|
|
|
52
52
|
import {
|
|
53
53
|
WorkflowConfigStore,
|
|
54
54
|
deriveIssueWorkspaceKeyFromIdentifier,
|
|
55
|
+
formatEventMessage,
|
|
55
56
|
isFileMissing,
|
|
56
57
|
isMatchingIssueRun,
|
|
57
58
|
mapIssueOrchestrationStateToStatus,
|
|
58
59
|
parseRecentEvents,
|
|
59
60
|
readJsonFile,
|
|
60
61
|
safeReadDir
|
|
61
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-RGCSM2KZ.js";
|
|
62
63
|
import {
|
|
63
64
|
daemonPidPath,
|
|
64
65
|
httpStatusPath,
|
|
@@ -121,9 +122,11 @@ var handler = async (args, options) => {
|
|
|
121
122
|
const lines = content.trim().split("\n").filter(Boolean);
|
|
122
123
|
for (const line of lines) {
|
|
123
124
|
const event = JSON.parse(line);
|
|
124
|
-
if (parsed.projectId && event
|
|
125
|
-
|
|
126
|
-
if (parsed.
|
|
125
|
+
if (parsed.projectId && getProjectId(event) !== parsed.projectId)
|
|
126
|
+
continue;
|
|
127
|
+
if (parsed.level && getLevel(event) !== parsed.level) continue;
|
|
128
|
+
if (parsed.issue && getIssueIdentifier(event) !== parsed.issue)
|
|
129
|
+
continue;
|
|
127
130
|
process.stdout.write(formatEvent(event) + "\n");
|
|
128
131
|
}
|
|
129
132
|
} catch {
|
|
@@ -177,6 +180,7 @@ var handler = async (args, options) => {
|
|
|
177
180
|
}
|
|
178
181
|
const runRoots = parsed.projectId ? [join(runtimeRoot, "projects", parsed.projectId, "runs")] : await listProjectRunRoots(runtimeRoot);
|
|
179
182
|
let foundRuns = false;
|
|
183
|
+
const events = [];
|
|
180
184
|
try {
|
|
181
185
|
for (const runsDir of runRoots) {
|
|
182
186
|
const entries = await safeReadDir2(runsDir);
|
|
@@ -191,11 +195,12 @@ var handler = async (args, options) => {
|
|
|
191
195
|
const lines = content.trim().split("\n").filter(Boolean);
|
|
192
196
|
for (const line of lines) {
|
|
193
197
|
const event = JSON.parse(line);
|
|
194
|
-
if (parsed.projectId && event
|
|
198
|
+
if (parsed.projectId && getProjectId(event) !== parsed.projectId)
|
|
199
|
+
continue;
|
|
200
|
+
if (parsed.level && getLevel(event) !== parsed.level) continue;
|
|
201
|
+
if (parsed.issue && getIssueIdentifier(event) !== parsed.issue)
|
|
195
202
|
continue;
|
|
196
|
-
|
|
197
|
-
if (parsed.issue && event.issueIdentifier !== parsed.issue) continue;
|
|
198
|
-
process.stdout.write(formatEvent(event) + "\n");
|
|
203
|
+
events.push(event);
|
|
199
204
|
}
|
|
200
205
|
} catch {
|
|
201
206
|
}
|
|
@@ -205,15 +210,33 @@ var handler = async (args, options) => {
|
|
|
205
210
|
}
|
|
206
211
|
if (!foundRuns) {
|
|
207
212
|
process.stderr.write("No runs found. Start the orchestrator first.\n");
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
events.sort(
|
|
216
|
+
(left, right) => String(left.at ?? "").localeCompare(String(right.at ?? ""))
|
|
217
|
+
);
|
|
218
|
+
for (const event of events) {
|
|
219
|
+
process.stdout.write(formatEvent(event) + "\n");
|
|
208
220
|
}
|
|
209
221
|
};
|
|
210
222
|
var logs_default = handler;
|
|
211
223
|
function formatEvent(event) {
|
|
212
224
|
const at = event.at ?? "";
|
|
213
225
|
const eventType = event.event ?? "unknown";
|
|
214
|
-
const issue = event
|
|
215
|
-
const
|
|
216
|
-
|
|
226
|
+
const issue = getIssueIdentifier(event);
|
|
227
|
+
const message = formatEventMessage(event);
|
|
228
|
+
const subject = issue ? ` ${issue}` : "";
|
|
229
|
+
const extra = message ? ` ${message}` : "";
|
|
230
|
+
return `[${at}] ${eventType}${subject}${extra}`;
|
|
231
|
+
}
|
|
232
|
+
function getProjectId(event) {
|
|
233
|
+
return typeof event.projectId === "string" ? event.projectId : void 0;
|
|
234
|
+
}
|
|
235
|
+
function getLevel(event) {
|
|
236
|
+
return typeof event.level === "string" ? event.level : void 0;
|
|
237
|
+
}
|
|
238
|
+
function getIssueIdentifier(event) {
|
|
239
|
+
return typeof event.issueIdentifier === "string" ? event.issueIdentifier : "";
|
|
217
240
|
}
|
|
218
241
|
async function listProjectRunRoots(runtimeRoot) {
|
|
219
242
|
const roots = [join(runtimeRoot, "runs")];
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
warnDeprecatedSkipContext,
|
|
17
17
|
writeEcosystem,
|
|
18
18
|
writeWorkflowPlan
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-DENDF6S6.js";
|
|
20
20
|
import {
|
|
21
21
|
initRepoRuntime
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-EILO332E.js";
|
|
23
23
|
import "./chunk-3IRPSPAF.js";
|
|
24
24
|
import {
|
|
25
25
|
GhAuthError,
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
listUserProjects,
|
|
34
34
|
validateToken
|
|
35
35
|
} from "./chunk-SMNIGNS3.js";
|
|
36
|
-
import "./chunk-
|
|
36
|
+
import "./chunk-RGCSM2KZ.js";
|
|
37
37
|
import "./chunk-YZP5N5XP.js";
|
|
38
38
|
|
|
39
39
|
// src/commands/setup.ts
|
|
@@ -16,8 +16,8 @@ function execFileAsync(file, args, execFileImpl = execFileCallback) {
|
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
18
|
function resolveCurrentCliVersion() {
|
|
19
|
-
if ("0.4.
|
|
20
|
-
return "0.4.
|
|
19
|
+
if ("0.4.6".length > 0) {
|
|
20
|
+
return "0.4.6";
|
|
21
21
|
}
|
|
22
22
|
const pkg = JSON.parse(
|
|
23
23
|
readFileSync(new URL("../../package.json", import.meta.url), "utf8")
|
package/dist/worker-entry.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
normalizeCodexRuntimeEvents,
|
|
7
7
|
prepareCodexRuntimePlan,
|
|
8
8
|
resolveLocalRuntimeLaunchConfig
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-XLDJTMW5.js";
|
|
10
10
|
import {
|
|
11
11
|
DEFAULT_AGENT_INPUT_REQUIRED_REASON,
|
|
12
12
|
classifySessionExit,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
resolveClaudeCommandBinary,
|
|
18
18
|
resolveWorkflowRuntimeCommand,
|
|
19
19
|
runClaudePreflight
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-RGCSM2KZ.js";
|
|
21
21
|
|
|
22
22
|
// ../worker/src/index.ts
|
|
23
23
|
import { spawn as spawn2 } from "child_process";
|
|
@@ -6,12 +6,12 @@ import {
|
|
|
6
6
|
resetWorkflowCommandDependenciesForTest,
|
|
7
7
|
setWorkflowCommandDependenciesForTest,
|
|
8
8
|
workflow_default
|
|
9
|
-
} from "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
9
|
+
} from "./chunk-FBJRJWE5.js";
|
|
10
|
+
import "./chunk-DENDF6S6.js";
|
|
11
|
+
import "./chunk-RMNLHTIK.js";
|
|
12
|
+
import "./chunk-XLDJTMW5.js";
|
|
13
13
|
import "./chunk-SMNIGNS3.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-RGCSM2KZ.js";
|
|
15
15
|
import "./chunk-YZP5N5XP.js";
|
|
16
16
|
export {
|
|
17
17
|
workflow_default as default,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gh-symphony/cli",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.6",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "hojinzs",
|
|
6
6
|
"description": "Interactive CLI for GitHub Symphony orchestration",
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"tsup": "^8.5.1",
|
|
44
|
-
"@gh-symphony/
|
|
44
|
+
"@gh-symphony/core": "0.0.14",
|
|
45
45
|
"@gh-symphony/dashboard": "0.0.14",
|
|
46
|
+
"@gh-symphony/orchestrator": "0.0.14",
|
|
46
47
|
"@gh-symphony/tracker-github": "0.0.14",
|
|
47
|
-
"@gh-symphony/core": "0.0.14",
|
|
48
|
-
"@gh-symphony/worker": "0.0.14",
|
|
49
48
|
"@gh-symphony/runtime-claude": "0.0.14",
|
|
50
|
-
"@gh-symphony/
|
|
49
|
+
"@gh-symphony/worker": "0.0.14",
|
|
50
|
+
"@gh-symphony/control-plane": "0.0.15"
|
|
51
51
|
},
|
|
52
52
|
"scripts": {
|
|
53
53
|
"build": "tsup",
|