@outerlayer/cli 0.33.0-next.20261021194303 → 0.33.0-next.20261021234516
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 +1 -1
- package/dist/{agent-setup-P5PWEGZM.js → agent-setup-UY5NBT7C.js} +10 -10
- package/dist/{artifact-link-cmd-IGVFGHC2.js → artifact-link-cmd-2MBHG3PO.js} +2 -2
- package/dist/build-info.json +1 -1
- package/dist/{builder-X4PIGYS6.js → builder-K2XIVSSZ.js} +3 -3
- package/dist/{check-DPVNDAQQ.js → check-AXDPZJU4.js} +24 -24
- package/dist/{chunk-ZAJKEHIE.js → chunk-4IG6EZHU.js} +2 -2
- package/dist/{chunk-VFW6I4GG.js → chunk-5RUH3PCG.js} +4 -4
- package/dist/{chunk-ZPW6PUNK.js → chunk-6TFTRVOA.js} +2 -2
- package/dist/{chunk-TGXYNEI7.js → chunk-72YES3RL.js} +11 -11
- package/dist/{chunk-3WW2TL7V.js → chunk-AKHGQKNR.js} +64 -4
- package/dist/{chunk-XT5SOJRC.js → chunk-AKR32WHV.js} +1 -1
- package/dist/{chunk-KUOY5UIR.js → chunk-CHXYLCMA.js} +1 -1
- package/dist/{chunk-XQTT3222.js → chunk-CMU6QJHE.js} +1 -1
- package/dist/{chunk-ENV3AIWQ.js → chunk-CV2S5L4J.js} +8 -8
- package/dist/{chunk-543ZX5TM.js → chunk-DE7YSNDX.js} +2 -2
- package/dist/{chunk-3H7NZPYG.js → chunk-DM4EGXDO.js} +1 -1
- package/dist/{chunk-YZIC5JXC.js → chunk-EG7KPSSP.js} +6 -6
- package/dist/{chunk-OXSFOLWE.js → chunk-HT7LVCTX.js} +2 -2
- package/dist/{chunk-LTZVMKQS.js → chunk-KDM77TVX.js} +2 -2
- package/dist/{chunk-YW4PEGLN.js → chunk-KUTZ6XLS.js} +1 -1
- package/dist/{chunk-OVSUSOHL.js → chunk-LBPK2TPR.js} +4 -4
- package/dist/{chunk-WXEPMPHK.js → chunk-LN4WDONI.js} +1 -1
- package/dist/{chunk-FE3RTGJN.js → chunk-M5OBRUQE.js} +2 -2
- package/dist/{chunk-5ZUT3IK3.js → chunk-N3KK5BKF.js} +7 -7
- package/dist/{chunk-C4N5QRQJ.js → chunk-NOXK3QW6.js} +3 -3
- package/dist/{chunk-CG5TWQ23.js → chunk-O6NG67Y7.js} +2 -2
- package/dist/{chunk-JUXATN46.js → chunk-OGCG5LOX.js} +1 -1
- package/dist/{chunk-XRQ7DABQ.js → chunk-Q2D4M3GC.js} +1 -1
- package/dist/{chunk-UVZ43SW3.js → chunk-Q4YVHYHT.js} +3 -3
- package/dist/{chunk-4OKOLFPH.js → chunk-RQKQTRXM.js} +4 -4
- package/dist/{chunk-WRX2MCDV.js → chunk-RVWADVBN.js} +3 -3
- package/dist/{chunk-6C3ZVE62.js → chunk-RW52CUFX.js} +1 -1
- package/dist/{chunk-NNNUME4Y.js → chunk-SFJD4MRY.js} +5 -5
- package/dist/{chunk-GI6LOIHS.js → chunk-TNJXCNQ6.js} +4 -4
- package/dist/{chunk-XRZGT54P.js → chunk-UIBTEDLA.js} +5 -5
- package/dist/{chunk-QCDVKCHA.js → chunk-UWEJ6HGB.js} +2 -2
- package/dist/{chunk-BBK62GXM.js → chunk-X5LFLYSD.js} +6 -6
- package/dist/{chunk-KURUM765.js → chunk-Y3LIJIRH.js} +4 -4
- package/dist/{chunk-TAZJDD2U.js → chunk-YH2632RT.js} +5 -5
- package/dist/{chunk-LPIUIRHA.js → chunk-ZRTMS4C7.js} +9 -9
- package/dist/{claude-launcher-Q7YAPLY2.js → claude-launcher-STSKZNW3.js} +5 -5
- package/dist/{cli-OGX6JNIN.js → cli-WAXIJAES.js} +94 -89
- package/dist/{command-UIAQUHHU.js → command-2JEY6X6U.js} +16 -16
- package/dist/{connect-cmd-OLESV5O3.js → connect-cmd-WFHAPGCZ.js} +8 -8
- package/dist/{container-start-MGY5VFHW.js → container-start-TTEHOSJK.js} +17 -17
- package/dist/{context-cleanup-VSDT77BZ.js → context-cleanup-UBOJHGQM.js} +3 -3
- package/dist/{control-plane-launch-7PXJSMVM.js → control-plane-launch-R4X63DYW.js} +6 -6
- package/dist/{dist-DY2ZNEBS.js → dist-ADFLG3AY.js} +2 -2
- package/dist/{docker-XRUAUQIG.js → docker-UYS5N5B7.js} +3 -3
- package/dist/{doctor-ZMKO3F7I.js → doctor-3XPT5F2Y.js} +18 -18
- package/dist/{emit-artifact-cmd-RI7HA37S.js → emit-artifact-cmd-FR5PUUJR.js} +13 -13
- package/dist/{emit-cmd-T7NIBSF3.js → emit-cmd-JOO6ZTEI.js} +6 -6
- package/dist/{emit-criteria-cmd-T5HZZ7XJ.js → emit-criteria-cmd-DKPZJTIN.js} +9 -9
- package/dist/emit-demo-cmd-Q3BCRULM.js +3022 -0
- package/dist/{emit-finding-cmd-RN7LSGJ7.js → emit-finding-cmd-VM4KIVEM.js} +10 -10
- package/dist/{emit-result-cmd-72STGWMP.js → emit-result-cmd-SEKL6HUU.js} +12 -12
- package/dist/{emit-step-cmd-POFAEM7G.js → emit-step-cmd-4YAWK4VE.js} +10 -10
- package/dist/{findings-cmd-TMURLT3A.js → findings-cmd-RXYIWXY4.js} +10 -10
- package/dist/{fleet-readiness-N6Y3F7R6.js → fleet-readiness-VIX76RNL.js} +8 -8
- package/dist/{governing-source-2R7IS7LZ.js → governing-source-APGCKDTS.js} +13 -13
- package/dist/{hook-fast-GO7UTNN5.js → hook-fast-NVBMSE3N.js} +1 -1
- package/dist/index.js +4 -4
- package/dist/{init-YMU4QFRV.js → init-BR4Z4T2Q.js} +17 -17
- package/dist/{init-E3VWTJFQ.js → init-XWQJEW6H.js} +17 -17
- package/dist/{init-cmd-WBPE3X7T.js → init-cmd-IEMYX6KA.js} +18 -18
- package/dist/{init-update-MONZSG7L.js → init-update-HOTJISWA.js} +17 -17
- package/dist/{layout-OQ7EJUMH.js → layout-ZI4RJ6MT.js} +4 -4
- package/dist/{login-browser-KP7YVYTN.js → login-browser-WUSIVD5E.js} +2 -2
- package/dist/{loop-N3IUN4F3.js → loop-3NRAMJA4.js} +24 -24
- package/dist/{machine-J7QFINBX.js → machine-LUXL7SFT.js} +16 -16
- package/dist/{machine-skills-XWWYFNOZ.js → machine-skills-REHDWINX.js} +4 -4
- package/dist/{runner-identity-MSMI2PD4.js → runner-identity-DR5I3NBT.js} +3 -3
- package/dist/{runner-key-QTNYQ2I7.js → runner-key-OLMCAOTD.js} +17 -17
- package/dist/{session-sender-USH6NOZL.js → session-sender-PLQ5NOEW.js} +13 -13
- package/dist/{spec-cmd-ABGR2ZDH.js → spec-cmd-NIAQWMLE.js} +10 -10
- package/dist/{starter-pack-6O7F6P7C.js → starter-pack-OESK7UX2.js} +5 -5
- package/dist/{status-FHEVPRWN.js → status-4HNX45UZ.js} +20 -20
- package/dist/{sync-cmd-GC2TBSUO.js → sync-cmd-UTESQMDU.js} +12 -12
- package/dist/{watch-F3LCBTNO.js → watch-4UC4FGI5.js} +12 -12
- package/dist/{work-claim-cmd-X7KNYGU7.js → work-claim-cmd-ODYRE44S.js} +12 -12
- package/dist/{work-cmd-AI3ZPCP7.js → work-cmd-QQDUI3YX.js} +10 -10
- package/dist/{work-comment-cmd-6UXS342S.js → work-comment-cmd-FIOMDPIZ.js} +10 -10
- package/dist/{work-logs-cmd-TVKWMDOW.js → work-logs-cmd-DA6MPQ6O.js} +10 -10
- package/dist/{work-open-pr-cmd-WZ7W2HZ7.js → work-open-pr-cmd-QG2FT7OW.js} +11 -11
- package/dist/{work-pr-cmd-KTNNR46X.js → work-pr-cmd-XNXWWLS5.js} +10 -10
- package/dist/{work-stop-cmd-2BUDSXUU.js → work-stop-cmd-2KLZ2UH2.js} +10 -10
- package/package.json +3 -1
- package/dist/emit-demo-cmd-MWRFZHSX.js +0 -808
|
@@ -1,44 +1,44 @@
|
|
|
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-ZRTMS4C7.js';
|
|
4
|
+
import './chunk-Y3LIJIRH.js';
|
|
5
|
+
import './chunk-EG7KPSSP.js';
|
|
6
6
|
import './chunk-KT4CN6OU.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import { verifiedTrackerNames, TRACKERS } from './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-
|
|
14
|
-
import './chunk-
|
|
7
|
+
import './chunk-UWEJ6HGB.js';
|
|
8
|
+
import { verifiedTrackerNames, TRACKERS } from './chunk-UIBTEDLA.js';
|
|
9
|
+
import './chunk-6TFTRVOA.js';
|
|
10
|
+
import './chunk-5RUH3PCG.js';
|
|
11
|
+
import './chunk-DM4EGXDO.js';
|
|
12
|
+
import './chunk-AKR32WHV.js';
|
|
13
|
+
import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-4IG6EZHU.js';
|
|
14
|
+
import './chunk-RW52CUFX.js';
|
|
15
15
|
import './chunk-G2JWZDFA.js';
|
|
16
16
|
import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
|
|
17
|
-
import './chunk-
|
|
17
|
+
import './chunk-M5OBRUQE.js';
|
|
18
18
|
import './chunk-VQ2JGZSC.js';
|
|
19
19
|
import './chunk-PJDQPF5N.js';
|
|
20
20
|
import './chunk-JT3YO5MH.js';
|
|
21
21
|
import './chunk-ESP5VZBD.js';
|
|
22
22
|
import './chunk-HDSDUTX4.js';
|
|
23
|
-
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-
|
|
23
|
+
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-HT7LVCTX.js';
|
|
24
24
|
import './chunk-ZJSNLVCE.js';
|
|
25
25
|
import './chunk-I7RZHMXW.js';
|
|
26
26
|
import './chunk-BKO6JEZI.js';
|
|
27
27
|
import './chunk-HCVLP7XA.js';
|
|
28
28
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
29
|
+
import './chunk-Q2D4M3GC.js';
|
|
30
|
+
import './chunk-KUTZ6XLS.js';
|
|
31
31
|
import './chunk-5BHIBJDA.js';
|
|
32
32
|
import './chunk-CDDED64E.js';
|
|
33
33
|
import { resolveVersion, resolvePackageVersion } from './chunk-RA3O54FC.js';
|
|
34
34
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
35
35
|
import { cliInvocation, packageRunnerOf } from './chunk-CRB3POP4.js';
|
|
36
36
|
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';
|
|
37
|
-
import './chunk-
|
|
37
|
+
import './chunk-LN4WDONI.js';
|
|
38
38
|
import { cloneIsGoverned } from './chunk-YQR6E6OV.js';
|
|
39
39
|
import { removeJournalHooks, removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
|
|
40
|
-
import './chunk-
|
|
41
|
-
import './chunk-
|
|
40
|
+
import './chunk-OGCG5LOX.js';
|
|
41
|
+
import './chunk-AKHGQKNR.js';
|
|
42
42
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
43
43
|
import './chunk-XD4ZCMA4.js';
|
|
44
44
|
import './chunk-MESOOLF4.js';
|
|
@@ -3658,14 +3658,14 @@ function apiKeyOption() {
|
|
|
3658
3658
|
return new Option("--api-key <key>", `deprecated: use \`${cliInvocation()} login\` or OUTERLAYER_API_KEY`).hideHelp();
|
|
3659
3659
|
}
|
|
3660
3660
|
async function installStarterPackInRepo() {
|
|
3661
|
-
const { installStarterPack, formatStarterPackOutput } = await import('./starter-pack-
|
|
3661
|
+
const { installStarterPack, formatStarterPackOutput } = await import('./starter-pack-OESK7UX2.js');
|
|
3662
3662
|
const cwd = process.cwd();
|
|
3663
3663
|
let repoRoot = cwd;
|
|
3664
3664
|
try {
|
|
3665
3665
|
repoRoot = execFileSync("git", ["rev-parse", "--show-toplevel"], { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"] }).trim() || cwd;
|
|
3666
3666
|
} catch {
|
|
3667
3667
|
}
|
|
3668
|
-
const { declareAgentsMdLayout, isAgentsMdLayout, skillsBaseFor } = await import('./layout-
|
|
3668
|
+
const { declareAgentsMdLayout, isAgentsMdLayout, skillsBaseFor } = await import('./layout-ZI4RJ6MT.js');
|
|
3669
3669
|
const fresh = !isAgentsMdLayout(repoRoot) && !existsSync(join(repoRoot, ".outerlayer"));
|
|
3670
3670
|
const result = installStarterPack({ repoRoot, base: fresh ? ".agents/skills" : skillsBaseFor(repoRoot) });
|
|
3671
3671
|
if (fresh) declareAgentsMdLayout(repoRoot);
|
|
@@ -3791,7 +3791,7 @@ ${starter.output}`),
|
|
|
3791
3791
|
}
|
|
3792
3792
|
}
|
|
3793
3793
|
async function installMachineSkillsForSetup() {
|
|
3794
|
-
const { setupMachineSkills } = await import('./machine-skills-
|
|
3794
|
+
const { setupMachineSkills } = await import('./machine-skills-REHDWINX.js');
|
|
3795
3795
|
const result = setupMachineSkills(homeFromEnv());
|
|
3796
3796
|
for (const failure of result.failures) process.stderr.write(`${C.yellow}!${C.reset} Could not write a maintained skill: ${failure}
|
|
3797
3797
|
`);
|
|
@@ -3799,8 +3799,8 @@ async function installMachineSkillsForSetup() {
|
|
|
3799
3799
|
` : "";
|
|
3800
3800
|
}
|
|
3801
3801
|
async function realConnectDepsForCwd() {
|
|
3802
|
-
const { realConnectDeps } = await import('./connect-cmd-
|
|
3803
|
-
const { resolveRepoIdentity } = await import('./dist-
|
|
3802
|
+
const { realConnectDeps } = await import('./connect-cmd-WFHAPGCZ.js');
|
|
3803
|
+
const { resolveRepoIdentity } = await import('./dist-ADFLG3AY.js');
|
|
3804
3804
|
return {
|
|
3805
3805
|
...realConnectDeps(),
|
|
3806
3806
|
home: homeFromEnv(),
|
|
@@ -3817,7 +3817,7 @@ function buildProgram(argv = process.argv) {
|
|
|
3817
3817
|
const program2 = new Command();
|
|
3818
3818
|
program2.name(cliInvocation()).description("OuterLayer \u2014 see what your coding agents actually do").enablePositionalOptions().version(resolveVersion()).hook("preAction", async (_root, command) => {
|
|
3819
3819
|
if (command.opts().apiKey !== void 0) warnDeprecated(API_KEY_FLAG_DEPRECATION);
|
|
3820
|
-
const { machineRefreshSkipped, refreshMachineSkills } = await import('./machine-skills-
|
|
3820
|
+
const { machineRefreshSkipped, refreshMachineSkills } = await import('./machine-skills-REHDWINX.js');
|
|
3821
3821
|
const names = [];
|
|
3822
3822
|
for (let at = command; at?.parent; at = at.parent) names.push(at.name());
|
|
3823
3823
|
if (!machineRefreshSkipped(names, command._hidden === true, argv)) refreshMachineSkills(homeFromEnv());
|
|
@@ -3874,8 +3874,8 @@ build, ../outerlayer-build/SKILL.md becomes ~/.agents/skills/outerlayer-build/SK
|
|
|
3874
3874
|
what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocation() + " doctor` reports the same\nstates under Starter files.\n"
|
|
3875
3875
|
).action(async (opts) => {
|
|
3876
3876
|
if (opts.update || opts.dryRun) {
|
|
3877
|
-
const { runInitUpdateWithFleet, formatInitUpdate, updateFlagProblem } = await import('./init-update-
|
|
3878
|
-
const { fleetReadiness } = await import('./fleet-readiness-
|
|
3877
|
+
const { runInitUpdateWithFleet, formatInitUpdate, updateFlagProblem } = await import('./init-update-HOTJISWA.js');
|
|
3878
|
+
const { fleetReadiness } = await import('./fleet-readiness-VIX76RNL.js');
|
|
3879
3879
|
const problem = updateFlagProblem(opts);
|
|
3880
3880
|
if (problem !== void 0) {
|
|
3881
3881
|
fail(problem);
|
|
@@ -3892,7 +3892,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3892
3892
|
}
|
|
3893
3893
|
let starterTemplate;
|
|
3894
3894
|
if (opts.template !== void 0) {
|
|
3895
|
-
const { assertKnownTemplate, StarterPackError } = await import('./starter-pack-
|
|
3895
|
+
const { assertKnownTemplate, StarterPackError } = await import('./starter-pack-OESK7UX2.js');
|
|
3896
3896
|
try {
|
|
3897
3897
|
assertKnownTemplate(opts.template);
|
|
3898
3898
|
} catch (err) {
|
|
@@ -3926,13 +3926,13 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3926
3926
|
if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
|
|
3927
3927
|
`);
|
|
3928
3928
|
}
|
|
3929
|
-
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-
|
|
3929
|
+
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-IEMYX6KA.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
|
|
3930
3930
|
if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
|
|
3931
3931
|
else process.stdout.write(outcome.text + skillsLine + (shell?.text ?? ""));
|
|
3932
3932
|
return;
|
|
3933
3933
|
}
|
|
3934
3934
|
await installMachineSkillsForSetup();
|
|
3935
|
-
const { runInitCommand } = await import('./init-cmd-
|
|
3935
|
+
const { runInitCommand } = await import('./init-cmd-IEMYX6KA.js');
|
|
3936
3936
|
const code = await runInitCommand(
|
|
3937
3937
|
{ json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
|
|
3938
3938
|
{
|
|
@@ -3944,7 +3944,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3944
3944
|
return { ok, text, detail };
|
|
3945
3945
|
},
|
|
3946
3946
|
runAgentSetup: async () => {
|
|
3947
|
-
const { runAgentSetup } = await import('./agent-setup-
|
|
3947
|
+
const { runAgentSetup } = await import('./agent-setup-UY5NBT7C.js');
|
|
3948
3948
|
return runAgentSetup({ cwd: process.cwd(), skillsLink: opts.skillsLink !== false });
|
|
3949
3949
|
},
|
|
3950
3950
|
runDoctorChecks: gatherDoctorChecks,
|
|
@@ -3953,7 +3953,7 @@ what CLIs older than ${FIRST_VERSION_READING_AGENTS_SKILLS} do. \`` + cliInvocat
|
|
|
3953
3953
|
shellPath: process.env.SHELL,
|
|
3954
3954
|
interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
|
|
3955
3955
|
ask: async () => {
|
|
3956
|
-
const { promptOnTerminal } = await import('./connect-cmd-
|
|
3956
|
+
const { promptOnTerminal } = await import('./connect-cmd-WFHAPGCZ.js');
|
|
3957
3957
|
const answer = await promptOnTerminal({
|
|
3958
3958
|
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.`,
|
|
3959
3959
|
options: [
|
|
@@ -3992,7 +3992,7 @@ linked (true, false, or null when it could not be checked) and, when false,
|
|
|
3992
3992
|
linkUrl.
|
|
3993
3993
|
`
|
|
3994
3994
|
).action(async (opts) => {
|
|
3995
|
-
const { runConnectCommand } = await import('./connect-cmd-
|
|
3995
|
+
const { runConnectCommand } = await import('./connect-cmd-WFHAPGCZ.js');
|
|
3996
3996
|
const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
|
|
3997
3997
|
stdout: process.stdout,
|
|
3998
3998
|
stderr: process.stderr
|
|
@@ -4031,7 +4031,7 @@ Every later command reads the saved file, so none of them needs a key on
|
|
|
4031
4031
|
its command line. A saved key is checked for real on the first \`sync\`.
|
|
4032
4032
|
`
|
|
4033
4033
|
).action(async (opts) => {
|
|
4034
|
-
const { runLoginCommand, realLoginDeps } = await import('./login-browser-
|
|
4034
|
+
const { runLoginCommand, realLoginDeps } = await import('./login-browser-WUSIVD5E.js');
|
|
4035
4035
|
const code = await runLoginCommand(
|
|
4036
4036
|
{
|
|
4037
4037
|
browser: opts.browser !== false,
|
|
@@ -4064,13 +4064,13 @@ code is 1: revoke the token on /profile/security.
|
|
|
4064
4064
|
"\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"
|
|
4065
4065
|
).action(async (opts) => {
|
|
4066
4066
|
if (opts.link !== void 0) {
|
|
4067
|
-
const { lookupArtifactLink } = await import('./artifact-link-cmd-
|
|
4067
|
+
const { lookupArtifactLink } = await import('./artifact-link-cmd-2MBHG3PO.js');
|
|
4068
4068
|
const found = lookupArtifactLink(opts.link);
|
|
4069
4069
|
if (found.ok) process.stdout.write(found.url + "\n");
|
|
4070
4070
|
else fail(found.reason);
|
|
4071
4071
|
return;
|
|
4072
4072
|
}
|
|
4073
|
-
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-
|
|
4073
|
+
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-UTESQMDU.js');
|
|
4074
4074
|
try {
|
|
4075
4075
|
const result = await runSync({
|
|
4076
4076
|
url: opts.url,
|
|
@@ -4101,7 +4101,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4101
4101
|
if (invokedCommandToken(argv) === "watch") {
|
|
4102
4102
|
warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
|
|
4103
4103
|
}
|
|
4104
|
-
const { runWatch } = await import('./watch-
|
|
4104
|
+
const { runWatch } = await import('./watch-4UC4FGI5.js');
|
|
4105
4105
|
await runWatch({ once: opts.once });
|
|
4106
4106
|
});
|
|
4107
4107
|
program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
|
|
@@ -4191,7 +4191,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4191
4191
|
process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
|
|
4192
4192
|
});
|
|
4193
4193
|
program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
|
|
4194
|
-
const { runSessionSender } = await import('./session-sender-
|
|
4194
|
+
const { runSessionSender } = await import('./session-sender-PLQ5NOEW.js');
|
|
4195
4195
|
try {
|
|
4196
4196
|
await runSessionSender();
|
|
4197
4197
|
} catch (err) {
|
|
@@ -4234,7 +4234,7 @@ async function runCli(processArgv) {
|
|
|
4234
4234
|
await buildProgram(argv).parseAsync(argv);
|
|
4235
4235
|
}
|
|
4236
4236
|
async function compileContext(opts) {
|
|
4237
|
-
const { runEmit, EmitError } = await import('./emit-cmd-
|
|
4237
|
+
const { runEmit, EmitError } = await import('./emit-cmd-JOO6ZTEI.js');
|
|
4238
4238
|
try {
|
|
4239
4239
|
const result = runEmit({ cwd: opts.dir, check: opts.check, json: opts.json });
|
|
4240
4240
|
if (result.exitCode !== 0) process.exitCode = result.exitCode;
|
|
@@ -4287,7 +4287,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
|
|
|
4287
4287
|
await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
|
|
4288
4288
|
return;
|
|
4289
4289
|
}
|
|
4290
|
-
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-
|
|
4290
|
+
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-SEKL6HUU.js');
|
|
4291
4291
|
try {
|
|
4292
4292
|
const result = await runEmitResult({
|
|
4293
4293
|
name,
|
|
@@ -4338,7 +4338,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
|
|
|
4338
4338
|
locally so it never uploads. One correction can retire several duplicates.
|
|
4339
4339
|
`
|
|
4340
4340
|
).action(async (file, opts) => {
|
|
4341
|
-
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-
|
|
4341
|
+
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-FR5PUUJR.js');
|
|
4342
4342
|
let pr;
|
|
4343
4343
|
if (opts.pr !== void 0) {
|
|
4344
4344
|
pr = parseTrackerNumber(opts.pr);
|
|
@@ -4368,10 +4368,11 @@ locally so it never uploads. One correction can retire several duplicates.
|
|
|
4368
4368
|
throw err;
|
|
4369
4369
|
}
|
|
4370
4370
|
});
|
|
4371
|
-
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("--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(
|
|
4371
|
+
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
4372
|
"after",
|
|
4373
4373
|
`
|
|
4374
4374
|
${cliInvocation()} emit demo test-results/demo/manifest.json --item 412
|
|
4375
|
+
${cliInvocation()} emit demo run-1/demo/manifest.json --compare run-2/demo/manifest.json --item 412
|
|
4375
4376
|
|
|
4376
4377
|
The manifest is the JSON file \`@outerlayer/playwright\` writes next to its video. Each chapter
|
|
4377
4378
|
becomes one WebM clip (VP9 video, Opus speech) and is emitted as a video artifact. A chapter whose
|
|
@@ -4381,9 +4382,12 @@ Needs ffmpeg and ffprobe on PATH, and espeak-ng unless --no-narration is given.
|
|
|
4381
4382
|
run downloads the voice pack (about 400 MB) to ~/.outerlayer/voice/ and checks it against pinned
|
|
4382
4383
|
sha256 hashes. Every refusal comes before the first upload. Exit 1 means a chapter had a failed
|
|
4383
4384
|
check: its clip and the record are stored all the same.
|
|
4385
|
+
With --compare, the command pairs the chapters of the two runs, then compares the stills taken after each
|
|
4386
|
+
check. A chapter reads yes when every still matches and no when one differs; the output names the step and
|
|
4387
|
+
the region. One run, or a chapter with no stills, reads not checked. Comparing never changes which clips bind.
|
|
4384
4388
|
`
|
|
4385
4389
|
).action(async (manifest, opts) => {
|
|
4386
|
-
const { runEmitDemo, EmitDemoError } = await import('./emit-demo-cmd-
|
|
4390
|
+
const { runEmitDemo, EmitDemoError } = await import('./emit-demo-cmd-Q3BCRULM.js');
|
|
4387
4391
|
let item;
|
|
4388
4392
|
if (opts.item !== void 0) {
|
|
4389
4393
|
item = parseTrackerNumber(opts.item);
|
|
@@ -4406,6 +4410,7 @@ check: its clip and the record are stored all the same.
|
|
|
4406
4410
|
noNarration: opts.narration === false,
|
|
4407
4411
|
item,
|
|
4408
4412
|
pr,
|
|
4413
|
+
compare: opts.compare,
|
|
4409
4414
|
json: opts.json,
|
|
4410
4415
|
url: opts.url,
|
|
4411
4416
|
apiKey: opts.apiKey,
|
|
@@ -4451,7 +4456,7 @@ recent events with their ids. --find <text> searches all of them.
|
|
|
4451
4456
|
item that session was launched for is used automatically.
|
|
4452
4457
|
`
|
|
4453
4458
|
).action(async (opts) => {
|
|
4454
|
-
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4459
|
+
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-VM4KIVEM.js');
|
|
4455
4460
|
try {
|
|
4456
4461
|
refuseRemovedFindingFlags(opts);
|
|
4457
4462
|
const result = await runEmitFinding({
|
|
@@ -4518,7 +4523,7 @@ the whole batch. "untimed": true records one with no time on purpose.
|
|
|
4518
4523
|
that session was launched for is used automatically.
|
|
4519
4524
|
`
|
|
4520
4525
|
).action(async (file, opts) => {
|
|
4521
|
-
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4526
|
+
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-VM4KIVEM.js');
|
|
4522
4527
|
try {
|
|
4523
4528
|
const result = await runEmitFindings({
|
|
4524
4529
|
file,
|
|
@@ -4553,7 +4558,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
|
|
|
4553
4558
|
the step, the command prints why and exits 1.
|
|
4554
4559
|
`
|
|
4555
4560
|
).action(async (name, opts) => {
|
|
4556
|
-
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-
|
|
4561
|
+
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-4YAWK4VE.js');
|
|
4557
4562
|
try {
|
|
4558
4563
|
await runEmitStep({
|
|
4559
4564
|
name,
|
|
@@ -4596,7 +4601,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
|
|
|
4596
4601
|
${cliInvocation()} emit criteria acceptance/412-login.md --item 412
|
|
4597
4602
|
`
|
|
4598
4603
|
).action(async (file, opts) => {
|
|
4599
|
-
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-
|
|
4604
|
+
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-DKPZJTIN.js');
|
|
4600
4605
|
try {
|
|
4601
4606
|
const result = await runEmitCriteria({
|
|
4602
4607
|
file,
|
|
@@ -4620,9 +4625,9 @@ function registerSpecCommands(program2) {
|
|
|
4620
4625
|
const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
|
|
4621
4626
|
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)");
|
|
4622
4627
|
const run = async (action) => {
|
|
4623
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4628
|
+
const { WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4624
4629
|
try {
|
|
4625
|
-
await action(await import('./spec-cmd-
|
|
4630
|
+
await action(await import('./spec-cmd-NIAQWMLE.js'));
|
|
4626
4631
|
} catch (err) {
|
|
4627
4632
|
if (err instanceof WorkCommandError) {
|
|
4628
4633
|
fail(err.message);
|
|
@@ -4657,7 +4662,7 @@ Prints each problem the item covers with its id, its reports and its result.
|
|
|
4657
4662
|
session was launched for is used.
|
|
4658
4663
|
`
|
|
4659
4664
|
).action(async (opts) => {
|
|
4660
|
-
const { runFindingsShow, FindingsCommandError } = await import('./findings-cmd-
|
|
4665
|
+
const { runFindingsShow, FindingsCommandError } = await import('./findings-cmd-RXYIWXY4.js');
|
|
4661
4666
|
try {
|
|
4662
4667
|
const result = await runFindingsShow({
|
|
4663
4668
|
item: opts.item,
|
|
@@ -4685,7 +4690,7 @@ Give exactly one of --fixed and --not-fixed, and a --note. Run it again for the
|
|
|
4685
4690
|
problem to replace the earlier result. A problem the item does not cover is refused.
|
|
4686
4691
|
`
|
|
4687
4692
|
).action(async (problem, opts) => {
|
|
4688
|
-
const { runFindingsResult, FindingsCommandError } = await import('./findings-cmd-
|
|
4693
|
+
const { runFindingsResult, FindingsCommandError } = await import('./findings-cmd-RXYIWXY4.js');
|
|
4689
4694
|
try {
|
|
4690
4695
|
const result = await runFindingsResult({
|
|
4691
4696
|
problem,
|
|
@@ -4726,7 +4731,7 @@ takes it, and prints the line that starts your session on it. That
|
|
|
4726
4731
|
session links itself and holds the item's lease while it works.
|
|
4727
4732
|
`
|
|
4728
4733
|
).action(async (opts) => {
|
|
4729
|
-
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-
|
|
4734
|
+
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4730
4735
|
try {
|
|
4731
4736
|
await runWorkBuild(opts);
|
|
4732
4737
|
} catch (err) {
|
|
@@ -4749,7 +4754,7 @@ renews that session's own 20-minute lease, unless --no-lease or
|
|
|
4749
4754
|
--ended is given, or another worker already holds a live one.
|
|
4750
4755
|
`
|
|
4751
4756
|
).action(async (number, opts) => {
|
|
4752
|
-
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-
|
|
4757
|
+
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4753
4758
|
try {
|
|
4754
4759
|
await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
|
|
4755
4760
|
} catch (err) {
|
|
@@ -4773,8 +4778,8 @@ criterion's new proof; --ready hands the thread back to a person. At
|
|
|
4773
4778
|
most one action flag may be given.
|
|
4774
4779
|
`
|
|
4775
4780
|
).action(async (opts) => {
|
|
4776
|
-
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4777
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4781
|
+
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-FIOMDPIZ.js');
|
|
4782
|
+
const { WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4778
4783
|
try {
|
|
4779
4784
|
await runWorkComment(opts);
|
|
4780
4785
|
} catch (err) {
|
|
@@ -4795,8 +4800,8 @@ criterion that carries proof or a comment, each with who is waiting
|
|
|
4795
4800
|
on whom next.
|
|
4796
4801
|
`
|
|
4797
4802
|
).action(async (opts) => {
|
|
4798
|
-
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4799
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4803
|
+
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-FIOMDPIZ.js');
|
|
4804
|
+
const { WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4800
4805
|
try {
|
|
4801
4806
|
await runWorkThreads(opts);
|
|
4802
4807
|
} catch (err) {
|
|
@@ -4820,8 +4825,8 @@ still running, or that an older runner released, has no log and the
|
|
|
4820
4825
|
command exits 1.
|
|
4821
4826
|
`
|
|
4822
4827
|
).action(async (opts) => {
|
|
4823
|
-
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-
|
|
4824
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4828
|
+
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-DA6MPQ6O.js');
|
|
4829
|
+
const { WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4825
4830
|
try {
|
|
4826
4831
|
await runWorkLogs(opts);
|
|
4827
4832
|
} catch (err) {
|
|
@@ -4844,8 +4849,8 @@ item is not built again until a new build request. Exits 1 when no host
|
|
|
4844
4849
|
build is running for the item.
|
|
4845
4850
|
`
|
|
4846
4851
|
).action(async (opts) => {
|
|
4847
|
-
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-
|
|
4848
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4852
|
+
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-2KLZ2UH2.js');
|
|
4853
|
+
const { WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4849
4854
|
try {
|
|
4850
4855
|
await runWorkStop(opts);
|
|
4851
4856
|
} catch (err) {
|
|
@@ -4866,7 +4871,7 @@ deletes anything \u2014 the item is removed from Work only once no
|
|
|
4866
4871
|
live addition remains on it.
|
|
4867
4872
|
`
|
|
4868
4873
|
).action(async (opts) => {
|
|
4869
|
-
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-
|
|
4874
|
+
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4870
4875
|
try {
|
|
4871
4876
|
await runWorkRemove(opts);
|
|
4872
4877
|
} catch (err) {
|
|
@@ -4878,7 +4883,7 @@ live addition remains on it.
|
|
|
4878
4883
|
}
|
|
4879
4884
|
});
|
|
4880
4885
|
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) => {
|
|
4881
|
-
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-
|
|
4886
|
+
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4882
4887
|
try {
|
|
4883
4888
|
await runWorkStatus(opts);
|
|
4884
4889
|
} catch (err) {
|
|
@@ -4890,7 +4895,7 @@ live addition remains on it.
|
|
|
4890
4895
|
}
|
|
4891
4896
|
});
|
|
4892
4897
|
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) => {
|
|
4893
|
-
const { runWorkList, WorkCommandError } = await import('./work-cmd-
|
|
4898
|
+
const { runWorkList, WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
4894
4899
|
try {
|
|
4895
4900
|
await runWorkList(opts);
|
|
4896
4901
|
} catch (err) {
|
|
@@ -4911,7 +4916,7 @@ by a different key is refused; claiming again with the same key extends
|
|
|
4911
4916
|
it. --host is a label only.
|
|
4912
4917
|
`
|
|
4913
4918
|
).action(async (opts) => {
|
|
4914
|
-
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-
|
|
4919
|
+
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-ODYRE44S.js');
|
|
4915
4920
|
try {
|
|
4916
4921
|
await runWorkClaim(opts);
|
|
4917
4922
|
} catch (err) {
|
|
@@ -4931,7 +4936,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
|
|
|
4931
4936
|
lease has expired, or a 403 if a different key holds it.
|
|
4932
4937
|
`
|
|
4933
4938
|
).action(async (opts) => {
|
|
4934
|
-
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-
|
|
4939
|
+
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-ODYRE44S.js');
|
|
4935
4940
|
try {
|
|
4936
4941
|
await runWorkRenew(opts);
|
|
4937
4942
|
} catch (err) {
|
|
@@ -4963,7 +4968,7 @@ applies to a host's lease only. A later tool call in the session
|
|
|
4963
4968
|
takes the lease again.
|
|
4964
4969
|
`
|
|
4965
4970
|
).action(async (opts) => {
|
|
4966
|
-
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-
|
|
4971
|
+
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-ODYRE44S.js');
|
|
4967
4972
|
try {
|
|
4968
4973
|
await runWorkRelease(opts);
|
|
4969
4974
|
} catch (err) {
|
|
@@ -4990,7 +4995,7 @@ Idempotent: declaring the same pull request twice is a no-op.
|
|
|
4990
4995
|
needs your own login; an agent session or a factory key is refused.
|
|
4991
4996
|
`
|
|
4992
4997
|
).action(async (number, opts) => {
|
|
4993
|
-
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-
|
|
4998
|
+
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-XNXWWLS5.js');
|
|
4994
4999
|
try {
|
|
4995
5000
|
await runWorkPr({ ...opts, number });
|
|
4996
5001
|
} catch (err) {
|
|
@@ -5015,8 +5020,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
|
|
|
5015
5020
|
Run it again after a change to the title or description.
|
|
5016
5021
|
`
|
|
5017
5022
|
).action(async (opts) => {
|
|
5018
|
-
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-
|
|
5019
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
5023
|
+
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-QG2FT7OW.js');
|
|
5024
|
+
const { WorkCommandError } = await import('./work-cmd-QQDUI3YX.js');
|
|
5020
5025
|
try {
|
|
5021
5026
|
await runWorkOpenPr(opts);
|
|
5022
5027
|
} catch (err) {
|
|
@@ -5033,7 +5038,7 @@ function registerRunnerCommands(program2) {
|
|
|
5033
5038
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
5034
5039
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
5035
5040
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-CUJ3Q4L2.js');
|
|
5036
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
5041
|
+
const { start, RunnerStartError } = await import('./loop-3NRAMJA4.js');
|
|
5037
5042
|
const { RunnerAlreadyRunningError } = await import('./pidfile-52TGLGQH.js');
|
|
5038
5043
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5039
5044
|
try {
|
|
@@ -5052,8 +5057,8 @@ function registerRunnerCommands(program2) {
|
|
|
5052
5057
|
"\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"
|
|
5053
5058
|
).action(async () => {
|
|
5054
5059
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-CUJ3Q4L2.js');
|
|
5055
|
-
const { containerStart } = await import('./container-start-
|
|
5056
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
5060
|
+
const { containerStart } = await import('./container-start-TTEHOSJK.js');
|
|
5061
|
+
const { start, RunnerStartError } = await import('./loop-3NRAMJA4.js');
|
|
5057
5062
|
const { RunnerAlreadyRunningError } = await import('./pidfile-52TGLGQH.js');
|
|
5058
5063
|
try {
|
|
5059
5064
|
const result = await containerStart({
|
|
@@ -5073,7 +5078,7 @@ function registerRunnerCommands(program2) {
|
|
|
5073
5078
|
});
|
|
5074
5079
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
5075
5080
|
const { defaultRunnerConfigPath } = await import('./config-CUJ3Q4L2.js');
|
|
5076
|
-
const { runRunnerCheck } = await import('./check-
|
|
5081
|
+
const { runRunnerCheck } = await import('./check-AXDPZJU4.js');
|
|
5077
5082
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5078
5083
|
const result = await runRunnerCheck(configPath);
|
|
5079
5084
|
if (!result.ok) {
|
|
@@ -5107,7 +5112,7 @@ function registerRunnerCommands(program2) {
|
|
|
5107
5112
|
}
|
|
5108
5113
|
try {
|
|
5109
5114
|
if (opts.service === true) {
|
|
5110
|
-
const { installServiceCommand } = await import('./command-
|
|
5115
|
+
const { installServiceCommand } = await import('./command-2JEY6X6U.js');
|
|
5111
5116
|
const result2 = await installServiceCommand({
|
|
5112
5117
|
configPath,
|
|
5113
5118
|
print: opts.print,
|
|
@@ -5163,7 +5168,7 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
5163
5168
|
return;
|
|
5164
5169
|
}
|
|
5165
5170
|
const { defaultRunnerConfigPath } = await import('./config-CUJ3Q4L2.js');
|
|
5166
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
5171
|
+
const { uninstallServiceCommand } = await import('./command-2JEY6X6U.js');
|
|
5167
5172
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
5168
5173
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
5169
5174
|
`);
|
|
@@ -5191,10 +5196,10 @@ already in claude.env is used.
|
|
|
5191
5196
|
`
|
|
5192
5197
|
).action(async (opts) => {
|
|
5193
5198
|
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-CUJ3Q4L2.js');
|
|
5194
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
5195
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
5196
|
-
const { detectMachine } = await import('./machine-
|
|
5197
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
5199
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-XWQJEW6H.js');
|
|
5200
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-OLMCAOTD.js');
|
|
5201
|
+
const { detectMachine } = await import('./machine-LUXL7SFT.js');
|
|
5202
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-BR4Z4T2Q.js');
|
|
5198
5203
|
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-H6XLACTG.js');
|
|
5199
5204
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5200
5205
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
@@ -5209,7 +5214,7 @@ already in claude.env is used.
|
|
|
5209
5214
|
try {
|
|
5210
5215
|
let credential;
|
|
5211
5216
|
if (agent !== void 0) {
|
|
5212
|
-
const { readPipedKey } = await import('./login-browser-
|
|
5217
|
+
const { readPipedKey } = await import('./login-browser-WUSIVD5E.js');
|
|
5213
5218
|
credential = credentialFromStdin(
|
|
5214
5219
|
await readPipedKey(process.stdin, {
|
|
5215
5220
|
onWaiting: () => process.stderr.write(`runner init is waiting for Claude's credential on stdin; close stdin to use the one already in claude.env
|
|
@@ -5345,7 +5350,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5345
5350
|
let serviceUp = false;
|
|
5346
5351
|
let restart;
|
|
5347
5352
|
if (installedLayout) {
|
|
5348
|
-
const { installServiceCommand } = await import('./command-
|
|
5353
|
+
const { installServiceCommand } = await import('./command-2JEY6X6U.js');
|
|
5349
5354
|
const service = await installServiceCommand({
|
|
5350
5355
|
configPath,
|
|
5351
5356
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5392,8 +5397,8 @@ Next:
|
|
|
5392
5397
|
const { defaultRunnerConfigPath } = await import('./config-CUJ3Q4L2.js');
|
|
5393
5398
|
const { buildRepositoryImage, RecipeError } = await import('./build-SK5BYBER.js');
|
|
5394
5399
|
const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
|
|
5395
|
-
const { createDockerHost } = await import('./docker-
|
|
5396
|
-
const { builderSpec } = await import('./builder-
|
|
5400
|
+
const { createDockerHost } = await import('./docker-UYS5N5B7.js');
|
|
5401
|
+
const { builderSpec } = await import('./builder-K2XIVSSZ.js');
|
|
5397
5402
|
const { loadRunnerConfig } = await import('./config-CUJ3Q4L2.js');
|
|
5398
5403
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5399
5404
|
const loaded = (() => {
|
|
@@ -5405,11 +5410,11 @@ Next:
|
|
|
5405
5410
|
})();
|
|
5406
5411
|
const memory = loaded?.build?.memory ?? "8g";
|
|
5407
5412
|
try {
|
|
5408
|
-
const { ensureRunnerIdentity } = await import('./runner-identity-
|
|
5413
|
+
const { ensureRunnerIdentity } = await import('./runner-identity-DR5I3NBT.js');
|
|
5409
5414
|
await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
|
|
5410
5415
|
console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
|
|
5411
5416
|
});
|
|
5412
|
-
const { imageTargetFor } = await import('./governing-source-
|
|
5417
|
+
const { imageTargetFor } = await import('./governing-source-APGCKDTS.js');
|
|
5413
5418
|
const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
|
|
5414
5419
|
if (!target.ok) {
|
|
5415
5420
|
if (opts.json) {
|
|
@@ -5473,7 +5478,7 @@ Next:
|
|
|
5473
5478
|
});
|
|
5474
5479
|
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) => {
|
|
5475
5480
|
const { defaultRunnerConfigPath } = await import('./config-CUJ3Q4L2.js');
|
|
5476
|
-
const { requestStop } = await import('./loop-
|
|
5481
|
+
const { requestStop } = await import('./loop-3NRAMJA4.js');
|
|
5477
5482
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5478
5483
|
const { runnerImageVersion } = await import('./image-tag-V2LXTKK7.js');
|
|
5479
5484
|
await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
|
|
@@ -5481,8 +5486,8 @@ Next:
|
|
|
5481
5486
|
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) => {
|
|
5482
5487
|
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-CUJ3Q4L2.js');
|
|
5483
5488
|
const { jobsDir, runnerDir } = await import('./paths-BN7X2YPM.js');
|
|
5484
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5485
|
-
const { renderStatus } = await import('./status-
|
|
5489
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-3NRAMJA4.js');
|
|
5490
|
+
const { renderStatus } = await import('./status-4HNX45UZ.js');
|
|
5486
5491
|
const { readHousekeepingRecord } = await import('./record-BSY4BKJ5.js');
|
|
5487
5492
|
const path2 = await import('path');
|
|
5488
5493
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
@@ -5542,7 +5547,7 @@ Next:
|
|
|
5542
5547
|
});
|
|
5543
5548
|
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) => {
|
|
5544
5549
|
const { defaultRunnerConfigPath } = await import('./config-CUJ3Q4L2.js');
|
|
5545
|
-
const { listJobFiles } = await import('./loop-
|
|
5550
|
+
const { listJobFiles } = await import('./loop-3NRAMJA4.js');
|
|
5546
5551
|
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-ET75ZUCN.js');
|
|
5547
5552
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5548
5553
|
const item = parseTrackerNumber(itemArg);
|