@outerlayer/cli 0.33.0-next.20261023003700 → 0.33.0-next.20261023030517
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 +9 -3
- package/dist/{agent-setup-55ZDEXCS.js → agent-setup-APFM4MZ4.js} +10 -10
- package/dist/{artifact-link-cmd-6FF2Y6QI.js → artifact-link-cmd-IHHMU4EA.js} +2 -2
- package/dist/{build-disk-JHTMPRAA.js → build-disk-55M4ZMDX.js} +4 -4
- package/dist/build-info.json +1 -1
- package/dist/{builder-Y4P7QARW.js → builder-DQZCPB7J.js} +3 -3
- package/dist/{check-MRYFTLOO.js → check-AEMFDR55.js} +28 -28
- package/dist/{chunk-EUVE2EAE.js → chunk-2WZ66FXA.js} +3 -3
- package/dist/{chunk-BJQ25STI.js → chunk-35DSTT37.js} +4 -4
- package/dist/{chunk-Q2CMEQV7.js → chunk-4NKHOCTF.js} +3 -3
- package/dist/{chunk-VT4TTJPG.js → chunk-5FSVA3CO.js} +5 -5
- package/dist/{chunk-SDU2IE22.js → chunk-67KCGRKA.js} +12 -12
- package/dist/{chunk-HXA5GIHK.js → chunk-6ANIBEQ6.js} +6 -6
- package/dist/{chunk-AVTI3FL5.js → chunk-6ZLI652Y.js} +1 -1
- package/dist/{chunk-HE4FBF4T.js → chunk-7HZH5D7H.js} +2 -2
- package/dist/{chunk-6Z4SZHV2.js → chunk-A5FFANL7.js} +5 -5
- package/dist/{chunk-PWH3BEZF.js → chunk-AXIK6F52.js} +13 -13
- package/dist/{chunk-7HHNGZS5.js → chunk-B6WW6AKO.js} +4 -4
- package/dist/{chunk-ULBNTSAD.js → chunk-C66Q2CLW.js} +2 -2
- package/dist/{chunk-UIUGTW5C.js → chunk-C7WGCI77.js} +2 -2
- package/dist/{chunk-B2JURP6A.js → chunk-CCOU4NXE.js} +2 -2
- package/dist/{chunk-SVDOA4W2.js → chunk-DHUHQPRQ.js} +7 -7
- package/dist/{chunk-EWVYQLD3.js → chunk-E4F7YE7P.js} +1 -1
- package/dist/chunk-ER6KQCVJ.js +18 -0
- package/dist/{chunk-2EGCI2VW.js → chunk-GFTWZSOW.js} +10 -10
- package/dist/{chunk-AU346ENF.js → chunk-HUBRTT2C.js} +4 -4
- package/dist/{chunk-QPWFVE3X.js → chunk-JB4R5IFJ.js} +2 -2
- package/dist/{chunk-W2AEL4BJ.js → chunk-LHKWWEQZ.js} +1 -1
- package/dist/{chunk-G63KT5I5.js → chunk-M24H6JQW.js} +1 -1
- package/dist/{chunk-XL2XWWU7.js → chunk-M3RYZRMH.js} +3 -3
- package/dist/{chunk-RQJMN5TJ.js → chunk-ONUACB5C.js} +2 -2
- package/dist/{chunk-JHTJPQSL.js → chunk-PILHDNHX.js} +4 -4
- package/dist/{chunk-HJYBWJAS.js → chunk-PJI5D2XT.js} +2 -2
- package/dist/{chunk-LJG6EMLJ.js → chunk-PNIFQX73.js} +1 -1
- package/dist/{chunk-FR7HWWCF.js → chunk-QKEOAQ2W.js} +1 -1
- package/dist/{chunk-5DNCFOXA.js → chunk-QQXNS4G2.js} +1 -1
- package/dist/{chunk-XHHTMFCX.js → chunk-RLAKWXDK.js} +1 -1
- package/dist/{chunk-2N67C6IV.js → chunk-T4S2DVOA.js} +5 -5
- package/dist/{chunk-GFYEMCPP.js → chunk-T4TT76GG.js} +1 -1
- package/dist/{chunk-BKADJZ7F.js → chunk-UAJYWZ2F.js} +3 -3
- package/dist/{chunk-DISTLL2Q.js → chunk-UHFU3CBN.js} +1 -1
- package/dist/{chunk-E6CO3MJE.js → chunk-V7Q5OKN7.js} +12 -1
- package/dist/{chunk-2WMZPJVE.js → chunk-VJGQEASF.js} +4 -4
- package/dist/{chunk-NSPRS7WK.js → chunk-X37GC7DM.js} +1 -1
- package/dist/{chunk-3RIFVLPO.js → chunk-X62C7V4B.js} +12 -12
- package/dist/{chunk-DY7Y7UT4.js → chunk-XMPE5TT4.js} +2 -2
- package/dist/{chunk-T5REPMNL.js → chunk-Z4GLZTDF.js} +2 -2
- package/dist/{claude-launcher-NTYHJUJM.js → claude-launcher-B55NWRH5.js} +5 -5
- package/dist/{cli-K6XGL4EZ.js → cli-5YT5EL2R.js} +146 -103
- package/dist/{command-7FAIIQGF.js → command-DYLRDCGC.js} +19 -19
- package/dist/{config-QXMUWJAQ.js → config-RRY7DIJG.js} +5 -5
- package/dist/{connect-cmd-P5GASVAF.js → connect-cmd-7C6W2SEP.js} +8 -8
- package/dist/{container-start-CVP3NTDG.js → container-start-F7PBMTAL.js} +20 -20
- package/dist/{context-cleanup-BX5Y3AFL.js → context-cleanup-EKTPKJJT.js} +3 -3
- package/dist/{context-show-cmd-3EPJ7CJC.js → context-show-cmd-I5JC7EFH.js} +9 -9
- package/dist/{control-plane-launch-A3YCHQNQ.js → control-plane-launch-NOKM6CBH.js} +6 -6
- package/dist/{dist-ACTRIBVW.js → dist-LLYL5UCV.js} +2 -2
- package/dist/{docker-ANW76BNW.js → docker-W7WWFZ3Q.js} +3 -3
- package/dist/{doctor-GJAHI3KU.js → doctor-LYOFFCQS.js} +20 -20
- package/dist/{emit-artifact-cmd-FDPJKGOO.js → emit-artifact-cmd-RO34UG7A.js} +13 -13
- package/dist/{emit-cmd-OX6LYS6I.js → emit-cmd-GY7Z26DY.js} +6 -6
- package/dist/{emit-criteria-cmd-3SVGCMJN.js → emit-criteria-cmd-Y36QCPAM.js} +10 -10
- package/dist/{emit-demo-cmd-6DF2QIAS.js → emit-demo-cmd-YMWVF5U4.js} +104 -34
- package/dist/{emit-finding-cmd-TLJWBGQE.js → emit-finding-cmd-MH3ZWUNV.js} +10 -10
- package/dist/{emit-result-cmd-CJNVDV5V.js → emit-result-cmd-ZARZZZ3Y.js} +12 -12
- package/dist/{emit-step-cmd-347CZO7Y.js → emit-step-cmd-A6HQJDBY.js} +10 -10
- package/dist/{findings-cmd-LHTYEHYB.js → findings-cmd-OLLBWJXJ.js} +10 -10
- package/dist/{fleet-readiness-KGR5AC2J.js → fleet-readiness-VB5QSFSY.js} +8 -8
- package/dist/{governing-source-JZQZUTMA.js → governing-source-ZX7VXTOA.js} +13 -13
- package/dist/{hook-fast-6WDMNZG5.js → hook-fast-4RYMBFPO.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-ZQ5B3TJZ.js → init-BQCGL7UD.js} +19 -19
- package/dist/{init-XDOKWBL2.js → init-NCCMB2UE.js} +19 -19
- package/dist/{init-cmd-YMGW2WXJ.js → init-cmd-OW2L5HTI.js} +18 -18
- package/dist/{init-update-X7YLZL6H.js → init-update-7LUMOECE.js} +17 -17
- package/dist/{install-QPA7DQHO.js → install-5BQ3TFBT.js} +6 -6
- package/dist/{layout-JGF7MJHG.js → layout-RGVPCX7Y.js} +4 -4
- package/dist/{login-browser-3RIZQJY2.js → login-browser-BC2Z5QKG.js} +2 -2
- package/dist/{loop-UJL2UCUM.js → loop-BU634Y6A.js} +28 -28
- package/dist/{machine-2YPAFFCH.js → machine-RI4KHRYP.js} +19 -19
- package/dist/{machine-skills-AGERT2HN.js → machine-skills-CS5HAQHF.js} +4 -4
- package/dist/{runner-env-HOUXKWIJ.js → runner-env-QSLLOFNF.js} +7 -7
- package/dist/{runner-identity-KPUVTRLS.js → runner-identity-DQAXW4DL.js} +3 -3
- package/dist/{runner-key-FUJD66R6.js → runner-key-UWL475RU.js} +19 -19
- package/dist/{session-sender-7B3ZDWMC.js → session-sender-OGDUJ2KK.js} +13 -13
- package/dist/{spec-cmd-Q26NE22H.js → spec-cmd-WB4UOFPG.js} +11 -11
- package/dist/{starter-pack-UBEC5LTE.js → starter-pack-XHATFTO3.js} +5 -5
- package/dist/{status-2KNTILGQ.js → status-GFZFND6L.js} +24 -24
- package/dist/{sync-cmd-SSUYTMLJ.js → sync-cmd-GPZD2C45.js} +12 -12
- package/dist/{watch-L5NCO46E.js → watch-5I3GURXY.js} +12 -12
- package/dist/{work-claim-cmd-NJNOQFQE.js → work-claim-cmd-J52UVCAF.js} +15 -15
- package/dist/{work-cmd-W7WEHMQJ.js → work-cmd-PQZ5RYDB.js} +10 -10
- package/dist/{work-comment-cmd-SSUOGVDD.js → work-comment-cmd-WI6B3IOS.js} +10 -10
- package/dist/work-demo-cmd-3NDGSQKJ.js +62 -0
- package/dist/{work-logs-cmd-WPMWMDX6.js → work-logs-cmd-QCYZ5X5A.js} +10 -10
- package/dist/{work-open-pr-cmd-NO5YLOXD.js → work-open-pr-cmd-BRDF3ZKL.js} +11 -11
- package/dist/{work-pr-cmd-37B5KECR.js → work-pr-cmd-WY2TBAKW.js} +10 -10
- package/dist/work-proofs-cmd-R25HT6WP.js +111 -0
- package/dist/{work-stop-cmd-3BJLXUJ3.js → work-stop-cmd-C52JPZ4E.js} +10 -10
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-amend/SKILL.md +36 -34
- package/skill-pack/maintained/outerlayer-amend/scripts/rerecord-demo.mjs +187 -0
- package/skill-pack/maintained/outerlayer-build/SKILL.md +7 -2
- package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +11 -2
- package/skill-pack/maintained/outerlayer-build/references/evidence.md +8 -0
- package/skill-pack/maintained/outerlayer-build/references/release.md +3 -2
- package/skill-pack/maintained/outerlayer-evidence/SKILL.md +6 -4
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-X62C7V4B.js';
|
|
4
|
+
import './chunk-35DSTT37.js';
|
|
5
|
+
import './chunk-6ANIBEQ6.js';
|
|
6
6
|
import './chunk-KT4CN6OU.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import { verifiedTrackerNames, TRACKERS } from './chunk-
|
|
7
|
+
import './chunk-XMPE5TT4.js';
|
|
8
|
+
import { verifiedTrackerNames, TRACKERS } from './chunk-5FSVA3CO.js';
|
|
9
9
|
import './chunk-IP7BIBXJ.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-
|
|
15
|
-
import './chunk-
|
|
10
|
+
import './chunk-CCOU4NXE.js';
|
|
11
|
+
import './chunk-VJGQEASF.js';
|
|
12
|
+
import './chunk-E4F7YE7P.js';
|
|
13
|
+
import './chunk-QQXNS4G2.js';
|
|
14
|
+
import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-PJI5D2XT.js';
|
|
15
|
+
import './chunk-X37GC7DM.js';
|
|
16
16
|
import './chunk-G2JWZDFA.js';
|
|
17
17
|
import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
|
|
18
|
-
import './chunk-
|
|
18
|
+
import './chunk-C7WGCI77.js';
|
|
19
19
|
import './chunk-6RKD7YZ6.js';
|
|
20
20
|
import './chunk-PJDQPF5N.js';
|
|
21
21
|
import './chunk-SOI6K5DY.js';
|
|
22
22
|
import './chunk-PA6CK6WQ.js';
|
|
23
23
|
import './chunk-BALIE3BA.js';
|
|
24
|
-
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-
|
|
24
|
+
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-JB4R5IFJ.js';
|
|
25
25
|
import './chunk-ZJSNLVCE.js';
|
|
26
26
|
import './chunk-I7RZHMXW.js';
|
|
27
27
|
import './chunk-BKO6JEZI.js';
|
|
28
28
|
import './chunk-HCVLP7XA.js';
|
|
29
29
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
30
|
+
import './chunk-T4TT76GG.js';
|
|
31
|
+
import './chunk-M24H6JQW.js';
|
|
32
32
|
import './chunk-5BHIBJDA.js';
|
|
33
33
|
import './chunk-CDDED64E.js';
|
|
34
34
|
import { resolveVersion, resolvePackageVersion } from './chunk-RA3O54FC.js';
|
|
35
35
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
36
36
|
import { cliInvocation, packageRunnerOf } from './chunk-CRB3POP4.js';
|
|
37
37
|
import { settingsPath, readSettings, SettingsParseError, listHookCandidates, PORTABLE_BIN, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-URIZRCRY.js';
|
|
38
|
-
import './chunk-
|
|
38
|
+
import './chunk-6ZLI652Y.js';
|
|
39
39
|
import { cloneIsGoverned } from './chunk-YQR6E6OV.js';
|
|
40
40
|
import { removeJournalHooks, removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
|
|
41
|
-
import './chunk-
|
|
42
|
-
import './chunk-
|
|
41
|
+
import './chunk-PNIFQX73.js';
|
|
42
|
+
import './chunk-V7Q5OKN7.js';
|
|
43
43
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
44
44
|
import './chunk-HACGUL52.js';
|
|
45
45
|
import './chunk-MESOOLF4.js';
|
|
@@ -3659,14 +3659,14 @@ function apiKeyOption() {
|
|
|
3659
3659
|
return new Option("--api-key <key>", `deprecated: use \`${cliInvocation()} login\` or OUTERLAYER_API_KEY`).hideHelp();
|
|
3660
3660
|
}
|
|
3661
3661
|
async function installStarterPackInRepo() {
|
|
3662
|
-
const { installStarterPack, formatStarterPackOutput } = await import('./starter-pack-
|
|
3662
|
+
const { installStarterPack, formatStarterPackOutput } = await import('./starter-pack-XHATFTO3.js');
|
|
3663
3663
|
const cwd = process.cwd();
|
|
3664
3664
|
let repoRoot = cwd;
|
|
3665
3665
|
try {
|
|
3666
3666
|
repoRoot = execFileSync("git", ["rev-parse", "--show-toplevel"], { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim() || cwd;
|
|
3667
3667
|
} catch {
|
|
3668
3668
|
}
|
|
3669
|
-
const { declareAgentsMdLayout, isAgentsMdLayout, skillsBaseFor } = await import('./layout-
|
|
3669
|
+
const { declareAgentsMdLayout, isAgentsMdLayout, skillsBaseFor } = await import('./layout-RGVPCX7Y.js');
|
|
3670
3670
|
const fresh = !isAgentsMdLayout(repoRoot) && !existsSync(join(repoRoot, ".outerlayer/skills")) && !existsSync(join(repoRoot, ".outerlayer/AGENTS.md"));
|
|
3671
3671
|
const result = installStarterPack({ repoRoot, base: fresh ? ".agents/skills" : skillsBaseFor(repoRoot) });
|
|
3672
3672
|
if (fresh) declareAgentsMdLayout(repoRoot);
|
|
@@ -3792,7 +3792,7 @@ ${starter.output}`),
|
|
|
3792
3792
|
}
|
|
3793
3793
|
}
|
|
3794
3794
|
async function installMachineSkillsForSetup() {
|
|
3795
|
-
const { setupMachineSkills } = await import('./machine-skills-
|
|
3795
|
+
const { setupMachineSkills } = await import('./machine-skills-CS5HAQHF.js');
|
|
3796
3796
|
const result = setupMachineSkills(homeFromEnv());
|
|
3797
3797
|
for (const failure of result.failures) process.stderr.write(`${C.yellow}!${C.reset} Could not write a maintained skill: ${failure}
|
|
3798
3798
|
`);
|
|
@@ -3800,8 +3800,8 @@ async function installMachineSkillsForSetup() {
|
|
|
3800
3800
|
` : "";
|
|
3801
3801
|
}
|
|
3802
3802
|
async function realConnectDepsForCwd() {
|
|
3803
|
-
const { realConnectDeps } = await import('./connect-cmd-
|
|
3804
|
-
const { resolveRepoIdentity } = await import('./dist-
|
|
3803
|
+
const { realConnectDeps } = await import('./connect-cmd-7C6W2SEP.js');
|
|
3804
|
+
const { resolveRepoIdentity } = await import('./dist-LLYL5UCV.js');
|
|
3805
3805
|
return {
|
|
3806
3806
|
...realConnectDeps(),
|
|
3807
3807
|
home: homeFromEnv(),
|
|
@@ -3818,7 +3818,7 @@ function buildProgram(argv = process.argv) {
|
|
|
3818
3818
|
const program2 = new Command();
|
|
3819
3819
|
program2.name(cliInvocation()).description("OuterLayer \u2014 see what your coding agents actually do").enablePositionalOptions().version(resolveVersion()).hook("preAction", async (_root, command) => {
|
|
3820
3820
|
if (command.opts().apiKey !== void 0) warnDeprecated(API_KEY_FLAG_DEPRECATION);
|
|
3821
|
-
const { machineRefreshSkipped, refreshMachineSkills } = await import('./machine-skills-
|
|
3821
|
+
const { machineRefreshSkipped, refreshMachineSkills } = await import('./machine-skills-CS5HAQHF.js');
|
|
3822
3822
|
const names = [];
|
|
3823
3823
|
for (let at = command; at?.parent; at = at.parent) names.push(at.name());
|
|
3824
3824
|
if (!machineRefreshSkipped(names, command._hidden === true, argv)) refreshMachineSkills(homeFromEnv());
|
|
@@ -3875,8 +3875,8 @@ build, ../outerlayer-build/SKILL.md becomes ~/.agents/skills/outerlayer-build/SK
|
|
|
3875
3875
|
what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocation() + " doctor` reports the same\nstates under Starter files.\n"
|
|
3876
3876
|
).action(async (opts) => {
|
|
3877
3877
|
if (opts.update || opts.dryRun) {
|
|
3878
|
-
const { runInitUpdateWithFleet, formatInitUpdate, updateFlagProblem } = await import('./init-update-
|
|
3879
|
-
const { fleetReadiness } = await import('./fleet-readiness-
|
|
3878
|
+
const { runInitUpdateWithFleet, formatInitUpdate, updateFlagProblem } = await import('./init-update-7LUMOECE.js');
|
|
3879
|
+
const { fleetReadiness } = await import('./fleet-readiness-VB5QSFSY.js');
|
|
3880
3880
|
const problem = updateFlagProblem(opts);
|
|
3881
3881
|
if (problem !== void 0) {
|
|
3882
3882
|
fail(problem);
|
|
@@ -3893,7 +3893,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3893
3893
|
}
|
|
3894
3894
|
let starterTemplate;
|
|
3895
3895
|
if (opts.template !== void 0) {
|
|
3896
|
-
const { assertKnownTemplate, StarterPackError } = await import('./starter-pack-
|
|
3896
|
+
const { assertKnownTemplate, StarterPackError } = await import('./starter-pack-XHATFTO3.js');
|
|
3897
3897
|
try {
|
|
3898
3898
|
assertKnownTemplate(opts.template);
|
|
3899
3899
|
} catch (err) {
|
|
@@ -3927,13 +3927,13 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3927
3927
|
if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
|
|
3928
3928
|
`);
|
|
3929
3929
|
}
|
|
3930
|
-
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-
|
|
3930
|
+
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-OW2L5HTI.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
|
|
3931
3931
|
if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
|
|
3932
3932
|
else process.stdout.write(outcome.text + skillsLine + (shell?.text ?? ""));
|
|
3933
3933
|
return;
|
|
3934
3934
|
}
|
|
3935
3935
|
await installMachineSkillsForSetup();
|
|
3936
|
-
const { runInitCommand } = await import('./init-cmd-
|
|
3936
|
+
const { runInitCommand } = await import('./init-cmd-OW2L5HTI.js');
|
|
3937
3937
|
const code = await runInitCommand(
|
|
3938
3938
|
{ json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
|
|
3939
3939
|
{
|
|
@@ -3945,7 +3945,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3945
3945
|
return { ok, text, detail };
|
|
3946
3946
|
},
|
|
3947
3947
|
runAgentSetup: async () => {
|
|
3948
|
-
const { runAgentSetup } = await import('./agent-setup-
|
|
3948
|
+
const { runAgentSetup } = await import('./agent-setup-APFM4MZ4.js');
|
|
3949
3949
|
return runAgentSetup({ cwd: process.cwd(), skillsLink: opts.skillsLink !== false });
|
|
3950
3950
|
},
|
|
3951
3951
|
runDoctorChecks: gatherDoctorChecks,
|
|
@@ -3954,7 +3954,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3954
3954
|
shellPath: process.env.SHELL,
|
|
3955
3955
|
interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
|
|
3956
3956
|
ask: async () => {
|
|
3957
|
-
const { promptOnTerminal } = await import('./connect-cmd-
|
|
3957
|
+
const { promptOnTerminal } = await import('./connect-cmd-7C6W2SEP.js');
|
|
3958
3958
|
const answer = await promptOnTerminal({
|
|
3959
3959
|
message: `Should plain claude start Claude Code through ${cliInvocation()} claude? That is how a session in a governed repository gets its control plane. It adds one block to your zsh or bash startup file.`,
|
|
3960
3960
|
options: [
|
|
@@ -3993,7 +3993,7 @@ linked (true, false, or null when it could not be checked) and, when false,
|
|
|
3993
3993
|
linkUrl.
|
|
3994
3994
|
`
|
|
3995
3995
|
).action(async (opts) => {
|
|
3996
|
-
const { runConnectCommand } = await import('./connect-cmd-
|
|
3996
|
+
const { runConnectCommand } = await import('./connect-cmd-7C6W2SEP.js');
|
|
3997
3997
|
const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
|
|
3998
3998
|
stdout: process.stdout,
|
|
3999
3999
|
stderr: process.stderr
|
|
@@ -4032,7 +4032,7 @@ Every later command reads the saved file, so none of them needs a key on
|
|
|
4032
4032
|
its command line. A saved key is checked for real on the first \`sync\`.
|
|
4033
4033
|
`
|
|
4034
4034
|
).action(async (opts) => {
|
|
4035
|
-
const { runLoginCommand, realLoginDeps } = await import('./login-browser-
|
|
4035
|
+
const { runLoginCommand, realLoginDeps } = await import('./login-browser-BC2Z5QKG.js');
|
|
4036
4036
|
const code = await runLoginCommand(
|
|
4037
4037
|
{
|
|
4038
4038
|
browser: opts.browser !== false,
|
|
@@ -4065,13 +4065,13 @@ code is 1: revoke the token on /profile/security.
|
|
|
4065
4065
|
"\nIncremental: only sessions newer than the last checkpoint ship. The tier\nis applied on this machine before anything leaves it; `--dry-run` prints\nexactly what would. The hook-triggered background sync runs `--quiet`.\nExit 2 means the server rejected at least one session.\n"
|
|
4066
4066
|
).action(async (opts) => {
|
|
4067
4067
|
if (opts.link !== void 0) {
|
|
4068
|
-
const { lookupArtifactLink } = await import('./artifact-link-cmd-
|
|
4068
|
+
const { lookupArtifactLink } = await import('./artifact-link-cmd-IHHMU4EA.js');
|
|
4069
4069
|
const found = lookupArtifactLink(opts.link);
|
|
4070
4070
|
if (found.ok) process.stdout.write(found.url + "\n");
|
|
4071
4071
|
else fail(found.reason);
|
|
4072
4072
|
return;
|
|
4073
4073
|
}
|
|
4074
|
-
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-
|
|
4074
|
+
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-GPZD2C45.js');
|
|
4075
4075
|
try {
|
|
4076
4076
|
const result = await runSync({
|
|
4077
4077
|
url: opts.url,
|
|
@@ -4102,7 +4102,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4102
4102
|
if (invokedCommandToken(argv) === "watch") {
|
|
4103
4103
|
warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
|
|
4104
4104
|
}
|
|
4105
|
-
const { runWatch } = await import('./watch-
|
|
4105
|
+
const { runWatch } = await import('./watch-5I3GURXY.js');
|
|
4106
4106
|
await runWatch({ once: opts.once });
|
|
4107
4107
|
});
|
|
4108
4108
|
program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
|
|
@@ -4192,7 +4192,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4192
4192
|
process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
|
|
4193
4193
|
});
|
|
4194
4194
|
program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
|
|
4195
|
-
const { runSessionSender } = await import('./session-sender-
|
|
4195
|
+
const { runSessionSender } = await import('./session-sender-OGDUJ2KK.js');
|
|
4196
4196
|
try {
|
|
4197
4197
|
await runSessionSender();
|
|
4198
4198
|
} catch (err) {
|
|
@@ -4235,7 +4235,7 @@ async function runCli(processArgv) {
|
|
|
4235
4235
|
await buildProgram(argv).parseAsync(argv);
|
|
4236
4236
|
}
|
|
4237
4237
|
async function compileContext(opts) {
|
|
4238
|
-
const { runEmit, EmitError } = await import('./emit-cmd-
|
|
4238
|
+
const { runEmit, EmitError } = await import('./emit-cmd-GY7Z26DY.js');
|
|
4239
4239
|
try {
|
|
4240
4240
|
const result = runEmit({ cwd: opts.dir, check: opts.check, json: opts.json });
|
|
4241
4241
|
if (result.exitCode !== 0) process.exitCode = result.exitCode;
|
|
@@ -4288,7 +4288,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
|
|
|
4288
4288
|
await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
|
|
4289
4289
|
return;
|
|
4290
4290
|
}
|
|
4291
|
-
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-
|
|
4291
|
+
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-ZARZZZ3Y.js');
|
|
4292
4292
|
try {
|
|
4293
4293
|
const result = await runEmitResult({
|
|
4294
4294
|
name,
|
|
@@ -4339,7 +4339,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
|
|
|
4339
4339
|
locally so it never uploads. One correction can retire several duplicates.
|
|
4340
4340
|
`
|
|
4341
4341
|
).action(async (file, opts) => {
|
|
4342
|
-
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-
|
|
4342
|
+
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-RO34UG7A.js');
|
|
4343
4343
|
let pr;
|
|
4344
4344
|
if (opts.pr !== void 0) {
|
|
4345
4345
|
pr = parseTrackerNumber(opts.pr);
|
|
@@ -4369,10 +4369,11 @@ locally so it never uploads. One correction can retire several duplicates.
|
|
|
4369
4369
|
throw err;
|
|
4370
4370
|
}
|
|
4371
4371
|
});
|
|
4372
|
-
emitCmd.command("demo <manifest>").description("Emit a narrated demo: one video artifact for each chapter of a recorded manifest").option("--no-narration", "store the clips with no speech; needs neither espeak-ng nor the voice pack").option("--item <number>", "work item whose recorded criteria the chapters are checked against").option("--pr <number>", "pull request number to anchor to, outside a recorded session").option("--compare <manifest>", "manifest of a second run of the same demo, to compare their stills").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").addHelpText(
|
|
4372
|
+
emitCmd.command("demo <manifest>").description("Emit a narrated demo: one video artifact for each chapter of a recorded manifest").option("--no-narration", "store the clips with no speech; needs neither espeak-ng nor the voice pack").option("--item <number>", "work item whose recorded criteria the chapters are checked against").option("--pr <number>", "pull request number to anchor to, outside a recorded session").option("--compare <manifest>", "manifest of a second run of the same demo, to compare their stills").option("--replaces <artifact-id>", "item's newest demo record id, to retire; outside a recorded session needs --item").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").addHelpText(
|
|
4373
4373
|
"after",
|
|
4374
4374
|
`
|
|
4375
4375
|
${cliInvocation()} emit demo test-results/demo/manifest.json --item 412
|
|
4376
|
+
${cliInvocation()} emit demo test-results/demo/manifest.json --item 412 --replaces <record id from work demo>
|
|
4376
4377
|
${cliInvocation()} emit demo run-1/demo/manifest.json --compare run-2/demo/manifest.json --item 412
|
|
4377
4378
|
|
|
4378
4379
|
The manifest is the JSON file \`@outerlayer/playwright\` writes next to its video. Each chapter
|
|
@@ -4386,9 +4387,12 @@ check: its clip and the record are stored all the same.
|
|
|
4386
4387
|
With --compare, the command pairs the chapters of the two runs, then compares the stills taken after each
|
|
4387
4388
|
check. A chapter reads yes when every still matches and no when one differs; the output names the step and
|
|
4388
4389
|
the region. One run, or a chapter with no stills, reads not checked. Comparing never changes which clips bind.
|
|
4390
|
+
With --replaces <record id>, the new video retires the old video, each new chapter retires the old chapters of
|
|
4391
|
+
its criterion, and the new record retires the old record. The id must be the item's newest demo record,
|
|
4392
|
+
as \`work demo --item <n> --json\` prints it.
|
|
4389
4393
|
`
|
|
4390
4394
|
).action(async (manifest, opts) => {
|
|
4391
|
-
const { runEmitDemo, EmitDemoError } = await import('./emit-demo-cmd-
|
|
4395
|
+
const { runEmitDemo, EmitDemoError } = await import('./emit-demo-cmd-YMWVF5U4.js');
|
|
4392
4396
|
let item;
|
|
4393
4397
|
if (opts.item !== void 0) {
|
|
4394
4398
|
item = parseTrackerNumber(opts.item);
|
|
@@ -4412,6 +4416,7 @@ the region. One run, or a chapter with no stills, reads not checked. Comparing n
|
|
|
4412
4416
|
item,
|
|
4413
4417
|
pr,
|
|
4414
4418
|
compare: opts.compare,
|
|
4419
|
+
replaces: opts.replaces,
|
|
4415
4420
|
json: opts.json,
|
|
4416
4421
|
url: opts.url,
|
|
4417
4422
|
apiKey: opts.apiKey,
|
|
@@ -4457,7 +4462,7 @@ recent events with their ids. --find <text> searches all of them.
|
|
|
4457
4462
|
item that session was launched for is used automatically.
|
|
4458
4463
|
`
|
|
4459
4464
|
).action(async (opts) => {
|
|
4460
|
-
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4465
|
+
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-MH3ZWUNV.js');
|
|
4461
4466
|
try {
|
|
4462
4467
|
refuseRemovedFindingFlags(opts);
|
|
4463
4468
|
const result = await runEmitFinding({
|
|
@@ -4524,7 +4529,7 @@ the whole batch. "untimed": true records one with no time on purpose.
|
|
|
4524
4529
|
that session was launched for is used automatically.
|
|
4525
4530
|
`
|
|
4526
4531
|
).action(async (file, opts) => {
|
|
4527
|
-
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4532
|
+
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-MH3ZWUNV.js');
|
|
4528
4533
|
try {
|
|
4529
4534
|
const result = await runEmitFindings({
|
|
4530
4535
|
file,
|
|
@@ -4559,7 +4564,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
|
|
|
4559
4564
|
the step, the command prints why and exits 1.
|
|
4560
4565
|
`
|
|
4561
4566
|
).action(async (name, opts) => {
|
|
4562
|
-
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-
|
|
4567
|
+
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-A6HQJDBY.js');
|
|
4563
4568
|
try {
|
|
4564
4569
|
await runEmitStep({
|
|
4565
4570
|
name,
|
|
@@ -4602,7 +4607,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
|
|
|
4602
4607
|
${cliInvocation()} emit criteria acceptance/412-login.md --item 412
|
|
4603
4608
|
`
|
|
4604
4609
|
).action(async (file, opts) => {
|
|
4605
|
-
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-
|
|
4610
|
+
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-Y36QCPAM.js');
|
|
4606
4611
|
try {
|
|
4607
4612
|
const result = await runEmitCriteria({
|
|
4608
4613
|
file,
|
|
@@ -4626,9 +4631,9 @@ function registerSpecCommands(program2) {
|
|
|
4626
4631
|
const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
|
|
4627
4632
|
const credentialOptions = (command) => command.option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)");
|
|
4628
4633
|
const run = async (action) => {
|
|
4629
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4634
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4630
4635
|
try {
|
|
4631
|
-
await action(await import('./spec-cmd-
|
|
4636
|
+
await action(await import('./spec-cmd-WB4UOFPG.js'));
|
|
4632
4637
|
} catch (err) {
|
|
4633
4638
|
if (err instanceof WorkCommandError) {
|
|
4634
4639
|
fail(err.message);
|
|
@@ -4663,7 +4668,7 @@ Prints each problem the item covers with its id, its reports and its result.
|
|
|
4663
4668
|
session was launched for is used.
|
|
4664
4669
|
`
|
|
4665
4670
|
).action(async (opts) => {
|
|
4666
|
-
const { runFindingsShow, FindingsCommandError } = await import('./findings-cmd-
|
|
4671
|
+
const { runFindingsShow, FindingsCommandError } = await import('./findings-cmd-OLLBWJXJ.js');
|
|
4667
4672
|
try {
|
|
4668
4673
|
const result = await runFindingsShow({
|
|
4669
4674
|
item: opts.item,
|
|
@@ -4691,7 +4696,7 @@ Give exactly one of --fixed and --not-fixed, and a --note. Run it again for the
|
|
|
4691
4696
|
problem to replace the earlier result. A problem the item does not cover is refused.
|
|
4692
4697
|
`
|
|
4693
4698
|
).action(async (problem, opts) => {
|
|
4694
|
-
const { runFindingsResult, FindingsCommandError } = await import('./findings-cmd-
|
|
4699
|
+
const { runFindingsResult, FindingsCommandError } = await import('./findings-cmd-OLLBWJXJ.js');
|
|
4695
4700
|
try {
|
|
4696
4701
|
const result = await runFindingsResult({
|
|
4697
4702
|
problem,
|
|
@@ -4732,7 +4737,7 @@ takes it, and prints the line that starts your session on it. That
|
|
|
4732
4737
|
session links itself and holds the item's lease while it works.
|
|
4733
4738
|
`
|
|
4734
4739
|
).action(async (opts) => {
|
|
4735
|
-
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-
|
|
4740
|
+
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4736
4741
|
try {
|
|
4737
4742
|
await runWorkBuild(opts);
|
|
4738
4743
|
} catch (err) {
|
|
@@ -4755,7 +4760,7 @@ renews that session's own 20-minute lease, unless --no-lease or
|
|
|
4755
4760
|
--ended is given, or another worker already holds a live one.
|
|
4756
4761
|
`
|
|
4757
4762
|
).action(async (number, opts) => {
|
|
4758
|
-
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-
|
|
4763
|
+
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4759
4764
|
try {
|
|
4760
4765
|
await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
|
|
4761
4766
|
} catch (err) {
|
|
@@ -4779,8 +4784,8 @@ criterion's new proof; --ready hands the thread back to a person. At
|
|
|
4779
4784
|
most one action flag may be given.
|
|
4780
4785
|
`
|
|
4781
4786
|
).action(async (opts) => {
|
|
4782
|
-
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4783
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4787
|
+
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-WI6B3IOS.js');
|
|
4788
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4784
4789
|
try {
|
|
4785
4790
|
await runWorkComment(opts);
|
|
4786
4791
|
} catch (err) {
|
|
@@ -4801,8 +4806,8 @@ criterion that carries proof or a comment, each with who is waiting
|
|
|
4801
4806
|
on whom next.
|
|
4802
4807
|
`
|
|
4803
4808
|
).action(async (opts) => {
|
|
4804
|
-
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4805
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4809
|
+
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-WI6B3IOS.js');
|
|
4810
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4806
4811
|
try {
|
|
4807
4812
|
await runWorkThreads(opts);
|
|
4808
4813
|
} catch (err) {
|
|
@@ -4826,8 +4831,8 @@ still running, or that an older runner released, has no log and the
|
|
|
4826
4831
|
command exits 1.
|
|
4827
4832
|
`
|
|
4828
4833
|
).action(async (opts) => {
|
|
4829
|
-
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-
|
|
4830
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4834
|
+
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-QCYZ5X5A.js');
|
|
4835
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4831
4836
|
try {
|
|
4832
4837
|
await runWorkLogs(opts);
|
|
4833
4838
|
} catch (err) {
|
|
@@ -4850,8 +4855,8 @@ item is not built again until a new build request. Exits 1 when no host
|
|
|
4850
4855
|
build is running for the item.
|
|
4851
4856
|
`
|
|
4852
4857
|
).action(async (opts) => {
|
|
4853
|
-
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-
|
|
4854
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4858
|
+
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-C52JPZ4E.js');
|
|
4859
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4855
4860
|
try {
|
|
4856
4861
|
await runWorkStop(opts);
|
|
4857
4862
|
} catch (err) {
|
|
@@ -4862,6 +4867,28 @@ build is running for the item.
|
|
|
4862
4867
|
throw err;
|
|
4863
4868
|
}
|
|
4864
4869
|
});
|
|
4870
|
+
workCmd.command("demo").description("Show a work item's newest demo record").requiredOption("--item <number>", "the item's number inside this factory").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").addHelpText(
|
|
4871
|
+
"after",
|
|
4872
|
+
`
|
|
4873
|
+
${cliInvocation()} work demo --item 7
|
|
4874
|
+
${cliInvocation()} work demo --item 7 --json
|
|
4875
|
+
|
|
4876
|
+
Prints the item's newest live demo record: its artifact id, the commit it was recorded at, and the
|
|
4877
|
+
test file that recorded it. With --json, prints { "demo": null } for an item with no demo.
|
|
4878
|
+
`
|
|
4879
|
+
).action(async (opts) => {
|
|
4880
|
+
const { runWorkDemo, WorkDemoCommandError } = await import('./work-demo-cmd-3NDGSQKJ.js');
|
|
4881
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4882
|
+
try {
|
|
4883
|
+
await runWorkDemo(opts);
|
|
4884
|
+
} catch (err) {
|
|
4885
|
+
if (err instanceof WorkDemoCommandError || err instanceof WorkCommandError) {
|
|
4886
|
+
fail(err.message);
|
|
4887
|
+
return;
|
|
4888
|
+
}
|
|
4889
|
+
throw err;
|
|
4890
|
+
}
|
|
4891
|
+
});
|
|
4865
4892
|
workCmd.command("remove").description("Withdraw a source's addition \u2014 never deletes the item").option("--item <number>", "the item's number inside this factory").option("--issue <number>", "issue number or Linear/Jira key (default: named by --item instead)").option(TRACKER_OPTION_FLAG, "tracker for a keyed --issue, when both hold the key").option("--repo <owner/name>", "repository for an issue number (default: the checkout's remote)").requiredOption("--reason <text>", "why this source is no longer working on it").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").addHelpText(
|
|
4866
4893
|
"after",
|
|
4867
4894
|
`
|
|
@@ -4872,7 +4899,7 @@ deletes anything \u2014 the item is removed from Work only once no
|
|
|
4872
4899
|
live addition remains on it.
|
|
4873
4900
|
`
|
|
4874
4901
|
).action(async (opts) => {
|
|
4875
|
-
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-
|
|
4902
|
+
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4876
4903
|
try {
|
|
4877
4904
|
await runWorkRemove(opts);
|
|
4878
4905
|
} catch (err) {
|
|
@@ -4884,7 +4911,7 @@ live addition remains on it.
|
|
|
4884
4911
|
}
|
|
4885
4912
|
});
|
|
4886
4913
|
workCmd.command("status").description("Show one item's stage, gate ledger, and additions").option("--item <number>", "the item's number inside this factory").option("--issue <number>", "issue number, or a Linear/Jira key like ENG-123").option(TRACKER_OPTION_FLAG, "tracker for a keyed --issue, when both hold the key").option("--repo <owner/name>", "repository for an issue number (default: the checkout's remote)").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").action(async (opts) => {
|
|
4887
|
-
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-
|
|
4914
|
+
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4888
4915
|
try {
|
|
4889
4916
|
await runWorkStatus(opts);
|
|
4890
4917
|
} catch (err) {
|
|
@@ -4895,8 +4922,24 @@ live addition remains on it.
|
|
|
4895
4922
|
throw err;
|
|
4896
4923
|
}
|
|
4897
4924
|
});
|
|
4925
|
+
workCmd.command("proofs").description("List each declared proof as current, out of date or missing").option("--item <number>", "the item's number inside this factory (default: OUTERLAYER_WORK)").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").addHelpText(
|
|
4926
|
+
"after",
|
|
4927
|
+
`
|
|
4928
|
+
${cliInvocation()} work proofs --item 7
|
|
4929
|
+
${cliInvocation()} work proofs --json
|
|
4930
|
+
|
|
4931
|
+
A proof is current when it was recorded at this checkout's HEAD, or at the head of a
|
|
4932
|
+
linked pull request that is open or merged. Run \`outerlayer sync\` first, so the
|
|
4933
|
+
gateway has the artifacts you just emitted. Test proofs are not listed.
|
|
4934
|
+
Exits 0 when every listed proof is current, 1 when any is out of date or missing,
|
|
4935
|
+
and 2 when it cannot tell.
|
|
4936
|
+
`
|
|
4937
|
+
).action(async (opts) => {
|
|
4938
|
+
const { runWorkProofsCommand } = await import('./work-proofs-cmd-R25HT6WP.js');
|
|
4939
|
+
await runWorkProofsCommand(opts);
|
|
4940
|
+
});
|
|
4898
4941
|
workCmd.command("list").description("List live work items for this factory").option("--stage <spec|build|review>", "filter by stage").option("--section <attention|waiting|flowing>", "filter by Queue section").option("--repo <owner/name>", "repository (default: the current checkout's remote)").option("--unclaimed", "only items with no live lease").option("--claimed", "only items with a live lease, held by a host or a local session").option("--startable", "only items a host can start: a build request, no open PR, no live lease").option("--needs <amend>", "only items with a thread waiting on an agent").option("--json", "machine-readable JSON output").option("--url <url>", "cloud base URL (or OUTERLAYER_URL / config)").addOption(apiKeyOption()).option("--app-id <id>", "factory id the key is bound to (or OUTERLAYER_APP_ID / config)").action(async (opts) => {
|
|
4899
|
-
const { runWorkList, WorkCommandError } = await import('./work-cmd-
|
|
4942
|
+
const { runWorkList, WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
4900
4943
|
try {
|
|
4901
4944
|
await runWorkList(opts);
|
|
4902
4945
|
} catch (err) {
|
|
@@ -4917,7 +4960,7 @@ by a different key is refused; claiming again with the same key extends
|
|
|
4917
4960
|
it. --host is a label only.
|
|
4918
4961
|
`
|
|
4919
4962
|
).action(async (opts) => {
|
|
4920
|
-
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-
|
|
4963
|
+
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-J52UVCAF.js');
|
|
4921
4964
|
try {
|
|
4922
4965
|
await runWorkClaim(opts);
|
|
4923
4966
|
} catch (err) {
|
|
@@ -4937,7 +4980,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
|
|
|
4937
4980
|
lease has expired, or a 403 if a different key holds it.
|
|
4938
4981
|
`
|
|
4939
4982
|
).action(async (opts) => {
|
|
4940
|
-
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-
|
|
4983
|
+
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-J52UVCAF.js');
|
|
4941
4984
|
try {
|
|
4942
4985
|
await runWorkRenew(opts);
|
|
4943
4986
|
} catch (err) {
|
|
@@ -4969,7 +5012,7 @@ applies to a host's lease only. A later tool call in the session
|
|
|
4969
5012
|
takes the lease again.
|
|
4970
5013
|
`
|
|
4971
5014
|
).action(async (opts) => {
|
|
4972
|
-
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-
|
|
5015
|
+
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-J52UVCAF.js');
|
|
4973
5016
|
try {
|
|
4974
5017
|
await runWorkRelease(opts);
|
|
4975
5018
|
} catch (err) {
|
|
@@ -4996,7 +5039,7 @@ Idempotent: declaring the same pull request twice is a no-op.
|
|
|
4996
5039
|
needs your own login; an agent session or a factory key is refused.
|
|
4997
5040
|
`
|
|
4998
5041
|
).action(async (number, opts) => {
|
|
4999
|
-
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-
|
|
5042
|
+
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-WY2TBAKW.js');
|
|
5000
5043
|
try {
|
|
5001
5044
|
await runWorkPr({ ...opts, number });
|
|
5002
5045
|
} catch (err) {
|
|
@@ -5021,8 +5064,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
|
|
|
5021
5064
|
Run it again after a change to the title or description.
|
|
5022
5065
|
`
|
|
5023
5066
|
).action(async (opts) => {
|
|
5024
|
-
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-
|
|
5025
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
5067
|
+
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-BRDF3ZKL.js');
|
|
5068
|
+
const { WorkCommandError } = await import('./work-cmd-PQZ5RYDB.js');
|
|
5026
5069
|
try {
|
|
5027
5070
|
await runWorkOpenPr(opts);
|
|
5028
5071
|
} catch (err) {
|
|
@@ -5038,8 +5081,8 @@ function registerRunnerCommands(program2) {
|
|
|
5038
5081
|
const runnerCmd = program2.command("runner").description("Take work from the implement and amend queues on this machine");
|
|
5039
5082
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
5040
5083
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
5041
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
5042
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
5084
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-RRY7DIJG.js');
|
|
5085
|
+
const { start, RunnerStartError } = await import('./loop-BU634Y6A.js');
|
|
5043
5086
|
const { RunnerAlreadyRunningError } = await import('./pidfile-5UDLYPMC.js');
|
|
5044
5087
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5045
5088
|
try {
|
|
@@ -5057,9 +5100,9 @@ function registerRunnerCommands(program2) {
|
|
|
5057
5100
|
"after",
|
|
5058
5101
|
"\nReads OUTERLAYER_URL, OUTERLAYER_APP_ID, OUTERLAYER_API_KEY, OUTERLAYER_RUNNER_NAME and one Claude credential\n(CLAUDE_CODE_OAUTH_TOKEN or ANTHROPIC_API_KEY) from the environment. OUTERLAYER_AGENT\nis optional and defaults to claude. On a later start it refuses variables that disagree with the config in the volume.\nThe image sets OUTERLAYER_RUNNER_IMAGE; outside the image, use `runner start`.\n"
|
|
5059
5102
|
).action(async () => {
|
|
5060
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
5061
|
-
const { containerStart } = await import('./container-start-
|
|
5062
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
5103
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-RRY7DIJG.js');
|
|
5104
|
+
const { containerStart } = await import('./container-start-F7PBMTAL.js');
|
|
5105
|
+
const { start, RunnerStartError } = await import('./loop-BU634Y6A.js');
|
|
5063
5106
|
const { RunnerAlreadyRunningError } = await import('./pidfile-5UDLYPMC.js');
|
|
5064
5107
|
try {
|
|
5065
5108
|
const result = await containerStart({
|
|
@@ -5078,8 +5121,8 @@ function registerRunnerCommands(program2) {
|
|
|
5078
5121
|
}
|
|
5079
5122
|
});
|
|
5080
5123
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
5081
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5082
|
-
const { runRunnerCheck } = await import('./check-
|
|
5124
|
+
const { defaultRunnerConfigPath } = await import('./config-RRY7DIJG.js');
|
|
5125
|
+
const { runRunnerCheck } = await import('./check-AEMFDR55.js');
|
|
5083
5126
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5084
5127
|
const result = await runRunnerCheck(configPath);
|
|
5085
5128
|
if (!result.ok) {
|
|
@@ -5100,7 +5143,7 @@ function registerRunnerCommands(program2) {
|
|
|
5100
5143
|
`);
|
|
5101
5144
|
});
|
|
5102
5145
|
runnerCmd.command("install").description("Put this CLI in the runner's install layout; --service adds its service").option("--config <path>", configOption).option("--service", "set up the service that keeps the runner running").option("--print", "with --service, print the unit and set up nothing").option("--user <account>", "with --service, the account the service runs as").option("--replace", "replace a unit or launcher file this command did not write").option("--allow-downgrade", "install this CLI even when it is older than the version the runner runs").option("--unit-name <name>", "with --service, the unit's name, to run a second runner beside the first").action(async (opts) => {
|
|
5103
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
5146
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-RRY7DIJG.js');
|
|
5104
5147
|
const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-FV7IZ7XF.js');
|
|
5105
5148
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5106
5149
|
if (opts.service !== true) {
|
|
@@ -5113,7 +5156,7 @@ function registerRunnerCommands(program2) {
|
|
|
5113
5156
|
}
|
|
5114
5157
|
try {
|
|
5115
5158
|
if (opts.service === true) {
|
|
5116
|
-
const { installServiceCommand } = await import('./command-
|
|
5159
|
+
const { installServiceCommand } = await import('./command-DYLRDCGC.js');
|
|
5117
5160
|
const result2 = await installServiceCommand({
|
|
5118
5161
|
configPath,
|
|
5119
5162
|
print: opts.print,
|
|
@@ -5168,8 +5211,8 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
5168
5211
|
fail(`pass --service: \`${cliInvocation()} runner uninstall --service\` removes the runner's service.`);
|
|
5169
5212
|
return;
|
|
5170
5213
|
}
|
|
5171
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5172
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
5214
|
+
const { defaultRunnerConfigPath } = await import('./config-RRY7DIJG.js');
|
|
5215
|
+
const { uninstallServiceCommand } = await import('./command-DYLRDCGC.js');
|
|
5173
5216
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
5174
5217
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
5175
5218
|
`);
|
|
@@ -5196,12 +5239,12 @@ already in claude.env is used.
|
|
|
5196
5239
|
printf '%s' "$CLAUDE_CODE_OAUTH_TOKEN" | ${cliInvocation()} runner init --agent claude --factory <org>/<factory>
|
|
5197
5240
|
`
|
|
5198
5241
|
).action(async (opts) => {
|
|
5199
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
5200
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
5201
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
5202
|
-
const { detectMachine } = await import('./machine-
|
|
5203
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
5204
|
-
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-
|
|
5242
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-RRY7DIJG.js');
|
|
5243
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-NCCMB2UE.js');
|
|
5244
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-UWL475RU.js');
|
|
5245
|
+
const { detectMachine } = await import('./machine-RI4KHRYP.js');
|
|
5246
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-BQCGL7UD.js');
|
|
5247
|
+
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-QSLLOFNF.js');
|
|
5205
5248
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5206
5249
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
5207
5250
|
fail(`--agent ${opts.agent}: runner init writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")}. For another agent, leave --agent out and edit runner.commands.`);
|
|
@@ -5215,7 +5258,7 @@ already in claude.env is used.
|
|
|
5215
5258
|
try {
|
|
5216
5259
|
let credential;
|
|
5217
5260
|
if (agent !== void 0) {
|
|
5218
|
-
const { readPipedKey } = await import('./login-browser-
|
|
5261
|
+
const { readPipedKey } = await import('./login-browser-BC2Z5QKG.js');
|
|
5219
5262
|
credential = credentialFromStdin(
|
|
5220
5263
|
await readPipedKey(process.stdin, {
|
|
5221
5264
|
onWaiting: () => process.stderr.write(`runner init is waiting for Claude's credential on stdin; close stdin to use the one already in claude.env
|
|
@@ -5351,7 +5394,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5351
5394
|
let serviceUp = false;
|
|
5352
5395
|
let restart;
|
|
5353
5396
|
if (installedLayout) {
|
|
5354
|
-
const { installServiceCommand } = await import('./command-
|
|
5397
|
+
const { installServiceCommand } = await import('./command-DYLRDCGC.js');
|
|
5355
5398
|
const service = await installServiceCommand({
|
|
5356
5399
|
configPath,
|
|
5357
5400
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5395,12 +5438,12 @@ Next:
|
|
|
5395
5438
|
"after",
|
|
5396
5439
|
"\nA repository governed by a control plane builds the control plane's image, at the commit\nthe gateway has stored for it. A repository that governs itself fetches the head of its\ndefault branch into the runner's cache. Either way it reads .devcontainer/devcontainer.json\nand builds the image with the devcontainer CLI. Settings\nthat reach the host or widen the container's privileges are ignored and listed. The\nimage holds this CLI and a pinned Claude Code. Nothing runs inside the image.\n"
|
|
5397
5440
|
).action(async (opts) => {
|
|
5398
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5441
|
+
const { defaultRunnerConfigPath } = await import('./config-RRY7DIJG.js');
|
|
5399
5442
|
const { buildRepositoryImage, RecipeError } = await import('./build-SEAQVLD5.js');
|
|
5400
5443
|
const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
|
|
5401
|
-
const { createDockerHost } = await import('./docker-
|
|
5402
|
-
const { builderSpec } = await import('./builder-
|
|
5403
|
-
const { loadRunnerConfig } = await import('./config-
|
|
5444
|
+
const { createDockerHost } = await import('./docker-W7WWFZ3Q.js');
|
|
5445
|
+
const { builderSpec } = await import('./builder-DQZCPB7J.js');
|
|
5446
|
+
const { loadRunnerConfig } = await import('./config-RRY7DIJG.js');
|
|
5404
5447
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5405
5448
|
const loaded = (() => {
|
|
5406
5449
|
try {
|
|
@@ -5411,11 +5454,11 @@ Next:
|
|
|
5411
5454
|
})();
|
|
5412
5455
|
const memory = loaded?.build?.memory ?? "8g";
|
|
5413
5456
|
try {
|
|
5414
|
-
const { ensureRunnerIdentity } = await import('./runner-identity-
|
|
5457
|
+
const { ensureRunnerIdentity } = await import('./runner-identity-DQAXW4DL.js');
|
|
5415
5458
|
await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
|
|
5416
5459
|
console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
|
|
5417
5460
|
});
|
|
5418
|
-
const { imageTargetFor } = await import('./governing-source-
|
|
5461
|
+
const { imageTargetFor } = await import('./governing-source-ZX7VXTOA.js');
|
|
5419
5462
|
const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
|
|
5420
5463
|
if (!target.ok) {
|
|
5421
5464
|
if (opts.json) {
|
|
@@ -5478,17 +5521,17 @@ Next:
|
|
|
5478
5521
|
}
|
|
5479
5522
|
});
|
|
5480
5523
|
runnerCmd.command("stop").description("Take no more work; finish running jobs, then exit").option("--config <path>", "the cloud config file naming the runner to stop").option("--now", "end running jobs immediately, with outcome stopped").action(async (opts) => {
|
|
5481
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5482
|
-
const { requestStop } = await import('./loop-
|
|
5524
|
+
const { defaultRunnerConfigPath } = await import('./config-RRY7DIJG.js');
|
|
5525
|
+
const { requestStop } = await import('./loop-BU634Y6A.js');
|
|
5483
5526
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5484
5527
|
const { runnerImageVersion } = await import('./image-tag-ADSLWXBA.js');
|
|
5485
5528
|
await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
|
|
5486
5529
|
});
|
|
5487
5530
|
runnerCmd.command("status").description("List running jobs; with --recent, finished ones too").option("--config <path>", "the cloud config file naming the runner to inspect").option("--recent", "also list finished jobs, newest first, capped at 20").option("--json", "machine-readable JSON output").action(async (opts) => {
|
|
5488
|
-
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-
|
|
5531
|
+
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-RRY7DIJG.js');
|
|
5489
5532
|
const { jobsDir, runnerDir } = await import('./paths-7HVTDE6J.js');
|
|
5490
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5491
|
-
const { renderStatus } = await import('./status-
|
|
5533
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-BU634Y6A.js');
|
|
5534
|
+
const { renderStatus } = await import('./status-GFZFND6L.js');
|
|
5492
5535
|
const { readHousekeepingRecord } = await import('./record-PPZEXAVA.js');
|
|
5493
5536
|
const path2 = await import('path');
|
|
5494
5537
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -5510,7 +5553,7 @@ Next:
|
|
|
5510
5553
|
const service = await (async () => {
|
|
5511
5554
|
if (process.platform !== "linux" || !existsSync("/run/systemd/system")) return void 0;
|
|
5512
5555
|
const { inspectService, realInspectProbes } = await import('./inspect-DNLXTXLA.js');
|
|
5513
|
-
const { DEFAULT_UNIT_NAME } = await import('./install-
|
|
5556
|
+
const { DEFAULT_UNIT_NAME } = await import('./install-5BQ3TFBT.js');
|
|
5514
5557
|
const facts = inspectService(DEFAULT_UNIT_NAME, path2.dirname(configPath), realInspectProbes());
|
|
5515
5558
|
return facts === void 0 ? void 0 : { unit: facts.unit, running: facts.mainPid !== void 0, delegated: facts.delegate };
|
|
5516
5559
|
})();
|
|
@@ -5547,8 +5590,8 @@ Next:
|
|
|
5547
5590
|
);
|
|
5548
5591
|
});
|
|
5549
5592
|
runnerCmd.command("logs").argument("<item>", "the work item's number in the factory").description("Print the newest attempt's log for one item").option("--config <path>", "the cloud config file naming the runner to inspect").option("-f, --follow", "keep printing as the log grows").action(async (itemArg, opts) => {
|
|
5550
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5551
|
-
const { listJobFiles } = await import('./loop-
|
|
5593
|
+
const { defaultRunnerConfigPath } = await import('./config-RRY7DIJG.js');
|
|
5594
|
+
const { listJobFiles } = await import('./loop-BU634Y6A.js');
|
|
5552
5595
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-HI46FO6Z.js');
|
|
5553
5596
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5554
5597
|
const item = parseTrackerNumber(itemArg);
|
|
@@ -5801,7 +5844,7 @@ would get, the instruction files and the names of the skills. It warns when the
|
|
|
5801
5844
|
no \`build\`. It needs the context-read permission: a login or a factory key with it is enough.
|
|
5802
5845
|
`
|
|
5803
5846
|
).action(async (opts) => {
|
|
5804
|
-
const { runContextShow, ContextShowError } = await import('./context-show-cmd-
|
|
5847
|
+
const { runContextShow, ContextShowError } = await import('./context-show-cmd-I5JC7EFH.js');
|
|
5805
5848
|
try {
|
|
5806
5849
|
const result = await runContextShow({ repo: opts.repo, json: opts.json, url: opts.url, apiKey: opts.apiKey, appId: opts.appId });
|
|
5807
5850
|
process.stdout.write(result.output);
|