@outerlayer/cli 0.22.0 → 0.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +4 -1
- package/dist/{agent-setup-XAJH6MPW.js → agent-setup-KXPDPTAJ.js} +6 -7
- package/dist/bridge-QFN3KJP6.js +8 -0
- package/dist/{build-GTMEADQD.js → build-6WRNZPVR.js} +4 -4
- package/dist/build-info.json +1 -1
- package/dist/{builder-OAUSTZHL.js → builder-G3MLDMTI.js} +4 -4
- package/dist/{check-3YHMJQ3P.js → check-N6WLZCER.js} +34 -34
- package/dist/{chunk-4NM3I3VV.js → chunk-276D7BJ7.js} +1 -1
- package/dist/{chunk-22DYXLU7.js → chunk-2CPOAPU4.js} +17 -17
- package/dist/{chunk-BLW6GPBZ.js → chunk-2Q3PZ42G.js} +1 -1
- package/dist/{chunk-IRBNIRQJ.js → chunk-3AZYLAJC.js} +4 -4
- package/dist/{chunk-ATRIVTRE.js → chunk-4542B3RR.js} +2 -2
- package/dist/{chunk-7V7KG3YM.js → chunk-4AVDD7VX.js} +2 -2
- package/dist/{chunk-JVB63NIB.js → chunk-4OYKJJ2V.js} +1 -1
- package/dist/{chunk-QOALB6ZD.js → chunk-B42BIYC6.js} +2 -2
- package/dist/{chunk-G6DZCKA6.js → chunk-BVR6MQLS.js} +2 -3
- package/dist/{chunk-KPBQYEND.js → chunk-CQAEV3Z5.js} +1 -1
- package/dist/{chunk-IZSVXRDR.js → chunk-DXDF43YG.js} +1 -1
- package/dist/{chunk-F7CU5ABH.js → chunk-DYEFPYME.js} +1 -1
- package/dist/{chunk-LOB2SUM3.js → chunk-EFB3FGLC.js} +1 -1
- package/dist/{chunk-JRCSET55.js → chunk-EMUNEAQK.js} +3 -3
- package/dist/{chunk-2HT2XGJX.js → chunk-FQE5RDHI.js} +5 -6
- package/dist/{chunk-EXV37PKS.js → chunk-FVDVC2GF.js} +1 -1
- package/dist/{chunk-5QRP3MVS.js → chunk-GNPTU4BM.js} +9 -4
- package/dist/{chunk-6IO62VJS.js → chunk-HWZCE745.js} +2 -2
- package/dist/{chunk-KIGSGZBB.js → chunk-IHNQWF6F.js} +1 -1
- package/dist/{chunk-C3OVGKVJ.js → chunk-IMCVQF5F.js} +5 -5
- package/dist/{chunk-WMHYIBJW.js → chunk-IPS2JCHK.js} +6 -6
- package/dist/{chunk-G2WME4RG.js → chunk-JD6GWYY7.js} +2 -3
- package/dist/{chunk-C3HKR67W.js → chunk-JV4YGAAW.js} +3 -3
- package/dist/{chunk-FGW2774C.js → chunk-KOIMUHIS.js} +16 -15
- package/dist/{chunk-PHHBYAL6.js → chunk-NYTZ7HVN.js} +1 -1
- package/dist/{chunk-I66MQDXH.js → chunk-OBCFK4QD.js} +2 -2
- package/dist/{chunk-KDHYLBRR.js → chunk-OW52QLK3.js} +1 -1
- package/dist/chunk-QS43O4DR.js +113 -0
- package/dist/{chunk-4JHVPFH6.js → chunk-QZX6DAAW.js} +9 -10
- package/dist/{chunk-UD3EXMKB.js → chunk-SFHR45FA.js} +21 -4
- package/dist/{chunk-KOQELWQ6.js → chunk-SNVXHNU7.js} +2 -3
- package/dist/{chunk-34XORKFD.js → chunk-U6RKHNC7.js} +6 -7
- package/dist/{chunk-2J5JGLW5.js → chunk-UF5L4BAI.js} +1 -1
- package/dist/{chunk-V7MQKOZY.js → chunk-URWYRAIC.js} +1 -1
- package/dist/{chunk-2CMJLYV6.js → chunk-V5CG75NX.js} +1 -1
- package/dist/{chunk-VX74ND77.js → chunk-WKSBSEWT.js} +8 -8
- package/dist/chunk-WXJXHZVB.js +73 -0
- package/dist/{chunk-ZFLOGMUC.js → chunk-XACXXKQ5.js} +1 -1
- package/dist/{chunk-WERZMIKA.js → chunk-XR56WEA5.js} +3 -3
- package/dist/{chunk-4QKLMNI3.js → chunk-ZCXP35T3.js} +5 -5
- package/dist/{claude-launcher-4BQNXYAF.js → claude-launcher-QD3C427Y.js} +1 -1
- package/dist/{cli-NMGVZQPB.js → cli-A2Y67WAB.js} +98 -91
- package/dist/{command-GE62AJZY.js → command-Q5Q2EIO4.js} +21 -22
- package/dist/{config-7Q52COZ3.js → config-H4QS332G.js} +2 -2
- package/dist/{connect-cmd-ZFOK6HEL.js → connect-cmd-TNGEIWCA.js} +7 -2
- package/dist/{control-plane-launch-SZTE4TUS.js → control-plane-launch-HE6OSWKO.js} +5 -6
- package/dist/{docker-2OVBKVRK.js → docker-JU422JL7.js} +4 -4
- package/dist/{doctor-3SQGZVYP.js → doctor-BRN4BGMA.js} +23 -24
- package/dist/{emit-artifact-cmd-R42BE6ID.js → emit-artifact-cmd-GPAJCCUC.js} +12 -12
- package/dist/{emit-criteria-cmd-MQZE7W4Y.js → emit-criteria-cmd-R3FKHSQG.js} +7 -7
- package/dist/{emit-finding-cmd-ZS5JEGGM.js → emit-finding-cmd-IK7RAVP5.js} +7 -7
- package/dist/{emit-result-cmd-FUE3DXBW.js → emit-result-cmd-5FJTF7YD.js} +12 -12
- package/dist/{emit-step-cmd-T7PRA44X.js → emit-step-cmd-VRTD5YPP.js} +8 -8
- package/dist/{exec-client-YIDTWXMZ.js → exec-client-ATPF2DDB.js} +3 -3
- package/dist/{governing-source-TORXL4I4.js → governing-source-WM736XR4.js} +9 -10
- package/dist/{guest-init-TO6HAWIT.js → guest-init-2OZ4YC7R.js} +4 -3
- package/dist/{hook-fast-WFB2ZMRB.js → hook-fast-QUGEI2IT.js} +1 -1
- package/dist/{hook-wrap-fast-NPLHJXFK.js → hook-wrap-fast-NOOGDNSW.js} +2 -2
- package/dist/{host-key-2LXQDSBO.js → host-key-ATB23GI3.js} +3 -3
- package/dist/index.js +6 -6
- package/dist/{init-2CRAVIUU.js → init-U3I43XCP.js} +20 -21
- package/dist/{init-AHDZCMDC.js → init-X7FCQDFX.js} +20 -21
- package/dist/{init-cmd-IXDL2ZSL.js → init-cmd-VCKH2DUQ.js} +13 -14
- package/dist/{init-update-YB3PODDH.js → init-update-TCMH7M3Q.js} +7 -8
- package/dist/{install-CZUIW2AF.js → install-SFACZU7E.js} +4 -4
- package/dist/{install-cmd-Q7RJGFUO.js → install-cmd-6HTP7I43.js} +5 -5
- package/dist/{logs-RJPYTVQE.js → logs-N3ZX7HFV.js} +2 -2
- package/dist/{loop-ZDW6TRAA.js → loop-P3QDQOE5.js} +34 -34
- package/dist/{machine-JCOHLASP.js → machine-EEFOW32K.js} +16 -17
- package/dist/{mcp-serve-cmd-IULQPVHL.js → mcp-serve-cmd-TQSPFRC7.js} +5 -5
- package/dist/{paths-N3LU4O2Z.js → paths-AKX2OOLF.js} +2 -2
- package/dist/{pending-GRCV3ZR4.js → pending-7SGWZCEH.js} +3 -3
- package/dist/{pidfile-IF3TCL5A.js → pidfile-G2J5WBQS.js} +3 -3
- package/dist/{record-73PQE77B.js → record-Q4IEYIVV.js} +3 -3
- package/dist/{runner-env-LDOBJESN.js → runner-env-GZHXM27A.js} +5 -5
- package/dist/{runner-identity-RWCBTY2A.js → runner-identity-FTHZFMGY.js} +4 -4
- package/dist/{runner-key-HMYLP6WN.js → runner-key-O42EUXQU.js} +20 -21
- package/dist/{session-sender-2G25JYHI.js → session-sender-HF6DXFA2.js} +13 -13
- package/dist/{settings-J2652U5N.js → settings-AKYEOCC2.js} +1 -1
- package/dist/{spec-cmd-LBVXM6XS.js → spec-cmd-ADPH236D.js} +8 -8
- package/dist/{status-QZB2GWXJ.js → status-LXFIVGP3.js} +25 -25
- package/dist/{statusline-fast-2OK3DVAA.js → statusline-fast-GVRSBHAF.js} +2 -2
- package/dist/{sync-cmd-TQQIR4PN.js → sync-cmd-5XS3CUV5.js} +12 -12
- package/dist/{watch-4JES4PCS.js → watch-FBZHZV56.js} +12 -12
- package/dist/{work-claim-cmd-XG6O7B63.js → work-claim-cmd-LIIINECF.js} +11 -11
- package/dist/{work-cmd-L6WMPAA2.js → work-cmd-SM6DY2WK.js} +8 -8
- package/dist/{work-comment-cmd-SNTDCPGH.js → work-comment-cmd-VYVXGT4W.js} +8 -8
- package/dist/{work-logs-cmd-3S7IAVII.js → work-logs-cmd-XZSCWWMW.js} +8 -8
- package/dist/{work-open-pr-cmd-E3WMO5XT.js → work-open-pr-cmd-YZNC3P3R.js} +9 -9
- package/dist/{work-pr-cmd-22T6FG4T.js → work-pr-cmd-AMN23KFJ.js} +8 -8
- package/dist/{work-stop-cmd-WR7ESS4Z.js → work-stop-cmd-HSR2GOJJ.js} +8 -8
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-amend/SKILL.md +90 -78
- package/skill-pack/maintained/outerlayer-build/SKILL.md +4 -2
- package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +10 -3
- package/skill-pack/maintained/outerlayer-build/references/release.md +7 -4
- package/skill-pack/maintained/outerlayer-build/references/review-briefs.md +6 -3
- package/skill-pack/maintained/outerlayer-cli/SKILL.md +8 -1
- package/skill-pack/maintained/outerlayer-cli/references/merge-base-branch.md +54 -0
- package/dist/chunk-NTRCK4NH.js +0 -38
- package/dist/chunk-VWLOQ6FI.js +0 -56
|
@@ -1,19 +1,18 @@
|
|
|
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-
|
|
3
|
+
import { gatherDoctorChecks, doctorExitCode, summarizeChecks, renderDoctorText, recordWrapped, recordUnwrapped, recordRemoval, readManifest, recordInstall, recordStatusline } from './chunk-QZX6DAAW.js';
|
|
4
4
|
import './chunk-VSUXCMMH.js';
|
|
5
|
-
import { verifiedTrackerNames, TRACKERS } from './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
5
|
+
import { verifiedTrackerNames, TRACKERS } from './chunk-FQE5RDHI.js';
|
|
6
|
+
import './chunk-B42BIYC6.js';
|
|
7
|
+
import './chunk-EMUNEAQK.js';
|
|
8
8
|
import './chunk-G3IJ3N6F.js';
|
|
9
9
|
import './chunk-EAQSOE62.js';
|
|
10
10
|
import './chunk-F35VMF5M.js';
|
|
11
11
|
import './chunk-USWVXQIH.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-6IO62VJS.js';
|
|
12
|
+
import './chunk-QS43O4DR.js';
|
|
13
|
+
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-HWZCE745.js';
|
|
15
14
|
import './chunk-ZJSNLVCE.js';
|
|
16
|
-
import './chunk-
|
|
15
|
+
import './chunk-DXDF43YG.js';
|
|
17
16
|
import './chunk-BKO6JEZI.js';
|
|
18
17
|
import './chunk-HCVLP7XA.js';
|
|
19
18
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
@@ -25,7 +24,7 @@ import './chunk-5OCIHFGE.js';
|
|
|
25
24
|
import { C, warnDeprecated, API_KEY_FLAG_DEPRECATION, NO_COLOR_FLAG, stripNoColor } from './chunk-ANPNT6PM.js';
|
|
26
25
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
27
26
|
import { cliInvocation, packageRunnerOf } from './chunk-CRB3POP4.js';
|
|
28
|
-
import { settingsPath, readSettings, SettingsParseError, listHookCandidates, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, cliCommand, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-
|
|
27
|
+
import { settingsPath, readSettings, SettingsParseError, listHookCandidates, wrapHooks, writeSettings, unwrapHooks, REGISTERED_EVENTS, cliCommand, removeHooks, removeStatusline, cliBinResolvable, mergeHooks, repointWrappedHooks, AUTO_WRAP_EVENTS, mergeStatusline } from './chunk-GNPTU4BM.js';
|
|
29
28
|
import './chunk-W3SWJ2TD.js';
|
|
30
29
|
import { cloneIsGoverned } from './chunk-YQR6E6OV.js';
|
|
31
30
|
import { removeJournalHooks, removePreCommitGuardHook } from './chunk-TUSYOL2O.js';
|
|
@@ -33,9 +32,9 @@ import './chunk-WFSUUUAN.js';
|
|
|
33
32
|
import './chunk-7VUK5RFS.js';
|
|
34
33
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
35
34
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
36
|
-
import './chunk-
|
|
37
|
-
import './chunk-
|
|
38
|
-
import './chunk-
|
|
35
|
+
import './chunk-OW52QLK3.js';
|
|
36
|
+
import './chunk-IHNQWF6F.js';
|
|
37
|
+
import './chunk-URWYRAIC.js';
|
|
39
38
|
import './chunk-GISNHSYL.js';
|
|
40
39
|
import './chunk-Z5GEFMRW.js';
|
|
41
40
|
import { EventEmitter } from 'events';
|
|
@@ -3781,7 +3780,7 @@ ${starter.output}`),
|
|
|
3781
3780
|
}
|
|
3782
3781
|
}
|
|
3783
3782
|
async function realConnectDepsForCwd() {
|
|
3784
|
-
const { realConnectDeps } = await import('./connect-cmd-
|
|
3783
|
+
const { realConnectDeps } = await import('./connect-cmd-TNGEIWCA.js');
|
|
3785
3784
|
const { resolveRepoIdentity } = await import('./dist-7IH56ELA.js');
|
|
3786
3785
|
return {
|
|
3787
3786
|
...realConnectDeps(),
|
|
@@ -3845,7 +3844,7 @@ states under Starter files.
|
|
|
3845
3844
|
`
|
|
3846
3845
|
).action(async (opts) => {
|
|
3847
3846
|
if (opts.update || opts.dryRun) {
|
|
3848
|
-
const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-
|
|
3847
|
+
const { runInitUpdate, formatInitUpdate, updateFlagProblem } = await import('./init-update-TCMH7M3Q.js');
|
|
3849
3848
|
const problem = updateFlagProblem(opts);
|
|
3850
3849
|
if (problem !== void 0) {
|
|
3851
3850
|
fail(problem);
|
|
@@ -3892,12 +3891,12 @@ states under Starter files.
|
|
|
3892
3891
|
if (changed.length > 0 && !opts.json) process.stdout.write(`Removed the claude function from ${changed.join(", ")}.
|
|
3893
3892
|
`);
|
|
3894
3893
|
}
|
|
3895
|
-
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-
|
|
3894
|
+
const shell = !opts.remove && opts.shellFunction !== void 0 ? (await import('./init-cmd-VCKH2DUQ.js')).applyShellFunctionFlag(opts.shellFunction, { home: homeFromEnv(), shellPath: process.env.SHELL }) : void 0;
|
|
3896
3895
|
if (opts.json) writeJson(shell === void 0 ? outcome.result : { ...outcome.result, shellFunction: { outcome: shell.outcome, reason: shell.reason } });
|
|
3897
3896
|
else process.stdout.write(outcome.text + (shell?.text ?? ""));
|
|
3898
3897
|
return;
|
|
3899
3898
|
}
|
|
3900
|
-
const { runInitCommand } = await import('./init-cmd-
|
|
3899
|
+
const { runInitCommand } = await import('./init-cmd-VCKH2DUQ.js');
|
|
3901
3900
|
const code = await runInitCommand(
|
|
3902
3901
|
{ json: opts.json, factory: opts.factory, shellFunction: opts.shellFunction },
|
|
3903
3902
|
{
|
|
@@ -3909,7 +3908,7 @@ states under Starter files.
|
|
|
3909
3908
|
return { ok, text, detail };
|
|
3910
3909
|
},
|
|
3911
3910
|
runAgentSetup: async () => {
|
|
3912
|
-
const { runAgentSetup } = await import('./agent-setup-
|
|
3911
|
+
const { runAgentSetup } = await import('./agent-setup-KXPDPTAJ.js');
|
|
3913
3912
|
return runAgentSetup({ cwd: process.cwd() });
|
|
3914
3913
|
},
|
|
3915
3914
|
runDoctorChecks: gatherDoctorChecks,
|
|
@@ -3918,7 +3917,7 @@ states under Starter files.
|
|
|
3918
3917
|
shellPath: process.env.SHELL,
|
|
3919
3918
|
interactive: Boolean(process.stdin.isTTY && process.stderr.isTTY) && opts.json !== true,
|
|
3920
3919
|
ask: async () => {
|
|
3921
|
-
const { promptOnTerminal } = await import('./connect-cmd-
|
|
3920
|
+
const { promptOnTerminal } = await import('./connect-cmd-TNGEIWCA.js');
|
|
3922
3921
|
const answer = await promptOnTerminal({
|
|
3923
3922
|
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.`,
|
|
3924
3923
|
options: [
|
|
@@ -3957,7 +3956,7 @@ linked (true, false, or null when it could not be checked) and, when false,
|
|
|
3957
3956
|
linkUrl.
|
|
3958
3957
|
`
|
|
3959
3958
|
).action(async (opts) => {
|
|
3960
|
-
const { runConnectCommand } = await import('./connect-cmd-
|
|
3959
|
+
const { runConnectCommand } = await import('./connect-cmd-TNGEIWCA.js');
|
|
3961
3960
|
const code = await runConnectCommand({ factory: opts.factory, json: opts.json }, await realConnectDepsForCwd(), {
|
|
3962
3961
|
stdout: process.stdout,
|
|
3963
3962
|
stderr: process.stderr
|
|
@@ -4035,7 +4034,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4035
4034
|
else fail(found.reason);
|
|
4036
4035
|
return;
|
|
4037
4036
|
}
|
|
4038
|
-
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-
|
|
4037
|
+
const { runSync, SyncConfigError, SyncTransportError } = await import('./sync-cmd-5XS3CUV5.js');
|
|
4039
4038
|
try {
|
|
4040
4039
|
const result = await runSync({
|
|
4041
4040
|
url: opts.url,
|
|
@@ -4066,7 +4065,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4066
4065
|
if (invokedCommandToken(argv) === "watch") {
|
|
4067
4066
|
warnDeprecated(`\`${cliInvocation()} watch\` is now \`${cliInvocation()} daemon\`; the old name will be removed in a future release.`);
|
|
4068
4067
|
}
|
|
4069
|
-
const { runWatch } = await import('./watch-
|
|
4068
|
+
const { runWatch } = await import('./watch-FBZHZV56.js');
|
|
4070
4069
|
await runWatch({ once: opts.once });
|
|
4071
4070
|
});
|
|
4072
4071
|
program2.command("hook <event>", { hidden: true }).description("capture-hook fast path, installed by `init`").action(() => {
|
|
@@ -4127,7 +4126,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4127
4126
|
}
|
|
4128
4127
|
});
|
|
4129
4128
|
program2.command("vm-exec", { hidden: true }).description("run a command in a microVM build's guest through its exec agent").requiredOption("--socket <path>", "the Unix socket Firecracker serves the build's vsock device on").option("--user <user>", "the user to run as", "").option("--cwd <dir>", "the working directory", "/").option("--env <NAME=value>", "an environment value the command line carries; repeatable", (value, previous) => [...previous, value], []).option("--pass <NAME>", "an environment variable whose value is read from this process; repeatable", (value, previous) => [...previous, value], []).argument("<argv...>", "the command and its arguments").action(async (argv2, opts) => {
|
|
4130
|
-
const { runVmExec } = await import('./exec-client-
|
|
4129
|
+
const { runVmExec } = await import('./exec-client-ATPF2DDB.js');
|
|
4131
4130
|
const env = {};
|
|
4132
4131
|
for (const entry of opts.env) {
|
|
4133
4132
|
const eq = entry.indexOf("=");
|
|
@@ -4156,7 +4155,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4156
4155
|
process.exitCode = await runBuildCommand({ dir: opts.dir, argv: command });
|
|
4157
4156
|
});
|
|
4158
4157
|
program2.command("session-sender", { hidden: true }).description("stream a runner build's sessions to its work item while the build runs").action(async () => {
|
|
4159
|
-
const { runSessionSender } = await import('./session-sender-
|
|
4158
|
+
const { runSessionSender } = await import('./session-sender-HF6DXFA2.js');
|
|
4160
4159
|
try {
|
|
4161
4160
|
await runSessionSender();
|
|
4162
4161
|
} catch (err) {
|
|
@@ -4164,7 +4163,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4164
4163
|
}
|
|
4165
4164
|
});
|
|
4166
4165
|
program2.command("vm-init", { hidden: true }).description("lay out a microVM build's guest; the guest helper runs it").action(async () => {
|
|
4167
|
-
const { realGuestHost, runGuestInit } = await import('./guest-init-
|
|
4166
|
+
const { realGuestHost, runGuestInit } = await import('./guest-init-2OZ4YC7R.js');
|
|
4168
4167
|
const { readFileSync: readFileSync3 } = await import('fs');
|
|
4169
4168
|
try {
|
|
4170
4169
|
runGuestInit(realGuestHost(), readFileSync3("/proc/cmdline", "utf8"));
|
|
@@ -4172,6 +4171,14 @@ code is 1: revoke the token on /profile/security.
|
|
|
4172
4171
|
fail(`vm-init failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
4173
4172
|
}
|
|
4174
4173
|
});
|
|
4174
|
+
program2.command("vm-forward", { hidden: true }).description("pipe a guest port to another; vm-init runs it").requiredOption("--listen <host:port>", "the address to listen on").requiredOption("--to <host:port>", "the address to pipe each connection to").action(async (opts) => {
|
|
4175
|
+
const { startBridgeForward } = await import('./bridge-QFN3KJP6.js');
|
|
4176
|
+
try {
|
|
4177
|
+
await startBridgeForward(opts);
|
|
4178
|
+
} catch (err) {
|
|
4179
|
+
fail(`vm-forward failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
4180
|
+
}
|
|
4181
|
+
});
|
|
4175
4182
|
registerEmitCommands(program2);
|
|
4176
4183
|
registerImportCommands(program2);
|
|
4177
4184
|
registerHooksCommands(program2);
|
|
@@ -4239,7 +4246,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
|
|
|
4239
4246
|
await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
|
|
4240
4247
|
return;
|
|
4241
4248
|
}
|
|
4242
|
-
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-
|
|
4249
|
+
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-5FJTF7YD.js');
|
|
4243
4250
|
try {
|
|
4244
4251
|
const result = await runEmitResult({
|
|
4245
4252
|
name,
|
|
@@ -4289,7 +4296,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
|
|
|
4289
4296
|
locally so it never uploads. One correction can retire several duplicates.
|
|
4290
4297
|
`
|
|
4291
4298
|
).action(async (file, opts) => {
|
|
4292
|
-
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-
|
|
4299
|
+
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-GPAJCCUC.js');
|
|
4293
4300
|
let pr;
|
|
4294
4301
|
if (opts.pr !== void 0) {
|
|
4295
4302
|
pr = parseTrackerNumber(opts.pr);
|
|
@@ -4348,7 +4355,7 @@ recent events with their ids. --find <text> searches all of them.
|
|
|
4348
4355
|
item that session was launched for is used automatically.
|
|
4349
4356
|
`
|
|
4350
4357
|
).action(async (opts) => {
|
|
4351
|
-
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4358
|
+
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-IK7RAVP5.js');
|
|
4352
4359
|
try {
|
|
4353
4360
|
refuseRemovedFindingFlags(opts);
|
|
4354
4361
|
const result = await runEmitFinding({
|
|
@@ -4415,7 +4422,7 @@ the whole batch. "untimed": true records one with no time on purpose.
|
|
|
4415
4422
|
that session was launched for is used automatically.
|
|
4416
4423
|
`
|
|
4417
4424
|
).action(async (file, opts) => {
|
|
4418
|
-
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4425
|
+
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-IK7RAVP5.js');
|
|
4419
4426
|
try {
|
|
4420
4427
|
const result = await runEmitFindings({
|
|
4421
4428
|
file,
|
|
@@ -4450,7 +4457,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
|
|
|
4450
4457
|
the step, the command prints why and exits 1.
|
|
4451
4458
|
`
|
|
4452
4459
|
).action(async (name, opts) => {
|
|
4453
|
-
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-
|
|
4460
|
+
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-VRTD5YPP.js');
|
|
4454
4461
|
try {
|
|
4455
4462
|
await runEmitStep({
|
|
4456
4463
|
name,
|
|
@@ -4493,7 +4500,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
|
|
|
4493
4500
|
${cliInvocation()} emit criteria acceptance/412-login.md --item 412
|
|
4494
4501
|
`
|
|
4495
4502
|
).action(async (file, opts) => {
|
|
4496
|
-
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-
|
|
4503
|
+
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-R3FKHSQG.js');
|
|
4497
4504
|
try {
|
|
4498
4505
|
const result = await runEmitCriteria({
|
|
4499
4506
|
file,
|
|
@@ -4517,9 +4524,9 @@ function registerSpecCommands(program2) {
|
|
|
4517
4524
|
const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
|
|
4518
4525
|
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)");
|
|
4519
4526
|
const run = async (action) => {
|
|
4520
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4527
|
+
const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4521
4528
|
try {
|
|
4522
|
-
await action(await import('./spec-cmd-
|
|
4529
|
+
await action(await import('./spec-cmd-ADPH236D.js'));
|
|
4523
4530
|
} catch (err) {
|
|
4524
4531
|
if (err instanceof WorkCommandError) {
|
|
4525
4532
|
fail(err.message);
|
|
@@ -4561,7 +4568,7 @@ takes it, and prints the line that starts your session on it. That
|
|
|
4561
4568
|
session links itself and holds the item's lease while it works.
|
|
4562
4569
|
`
|
|
4563
4570
|
).action(async (opts) => {
|
|
4564
|
-
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-
|
|
4571
|
+
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4565
4572
|
try {
|
|
4566
4573
|
await runWorkBuild(opts);
|
|
4567
4574
|
} catch (err) {
|
|
@@ -4584,7 +4591,7 @@ renews that session's own 20-minute lease, unless --no-lease or
|
|
|
4584
4591
|
--ended is given, or another worker already holds a live one.
|
|
4585
4592
|
`
|
|
4586
4593
|
).action(async (number, opts) => {
|
|
4587
|
-
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-
|
|
4594
|
+
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4588
4595
|
try {
|
|
4589
4596
|
await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
|
|
4590
4597
|
} catch (err) {
|
|
@@ -4608,8 +4615,8 @@ criterion's new proof; --ready hands the thread back to a person. At
|
|
|
4608
4615
|
most one action flag may be given.
|
|
4609
4616
|
`
|
|
4610
4617
|
).action(async (opts) => {
|
|
4611
|
-
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4612
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4618
|
+
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-VYVXGT4W.js');
|
|
4619
|
+
const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4613
4620
|
try {
|
|
4614
4621
|
await runWorkComment(opts);
|
|
4615
4622
|
} catch (err) {
|
|
@@ -4630,8 +4637,8 @@ criterion that carries proof or a comment, each with who is waiting
|
|
|
4630
4637
|
on whom next.
|
|
4631
4638
|
`
|
|
4632
4639
|
).action(async (opts) => {
|
|
4633
|
-
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4634
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4640
|
+
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-VYVXGT4W.js');
|
|
4641
|
+
const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4635
4642
|
try {
|
|
4636
4643
|
await runWorkThreads(opts);
|
|
4637
4644
|
} catch (err) {
|
|
@@ -4655,8 +4662,8 @@ still running, or that an older runner released, has no log and the
|
|
|
4655
4662
|
command exits 1.
|
|
4656
4663
|
`
|
|
4657
4664
|
).action(async (opts) => {
|
|
4658
|
-
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-
|
|
4659
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4665
|
+
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-XZSCWWMW.js');
|
|
4666
|
+
const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4660
4667
|
try {
|
|
4661
4668
|
await runWorkLogs(opts);
|
|
4662
4669
|
} catch (err) {
|
|
@@ -4679,8 +4686,8 @@ item is not built again until a new build request. Exits 1 when no host
|
|
|
4679
4686
|
build is running for the item.
|
|
4680
4687
|
`
|
|
4681
4688
|
).action(async (opts) => {
|
|
4682
|
-
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-
|
|
4683
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4689
|
+
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-HSR2GOJJ.js');
|
|
4690
|
+
const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4684
4691
|
try {
|
|
4685
4692
|
await runWorkStop(opts);
|
|
4686
4693
|
} catch (err) {
|
|
@@ -4701,7 +4708,7 @@ deletes anything \u2014 the item is removed from Work only once no
|
|
|
4701
4708
|
live addition remains on it.
|
|
4702
4709
|
`
|
|
4703
4710
|
).action(async (opts) => {
|
|
4704
|
-
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-
|
|
4711
|
+
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4705
4712
|
try {
|
|
4706
4713
|
await runWorkRemove(opts);
|
|
4707
4714
|
} catch (err) {
|
|
@@ -4713,7 +4720,7 @@ live addition remains on it.
|
|
|
4713
4720
|
}
|
|
4714
4721
|
});
|
|
4715
4722
|
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) => {
|
|
4716
|
-
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-
|
|
4723
|
+
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4717
4724
|
try {
|
|
4718
4725
|
await runWorkStatus(opts);
|
|
4719
4726
|
} catch (err) {
|
|
@@ -4725,7 +4732,7 @@ live addition remains on it.
|
|
|
4725
4732
|
}
|
|
4726
4733
|
});
|
|
4727
4734
|
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) => {
|
|
4728
|
-
const { runWorkList, WorkCommandError } = await import('./work-cmd-
|
|
4735
|
+
const { runWorkList, WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4729
4736
|
try {
|
|
4730
4737
|
await runWorkList(opts);
|
|
4731
4738
|
} catch (err) {
|
|
@@ -4746,7 +4753,7 @@ by a different key is refused; claiming again with the same key extends
|
|
|
4746
4753
|
it. --host is a label only.
|
|
4747
4754
|
`
|
|
4748
4755
|
).action(async (opts) => {
|
|
4749
|
-
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-
|
|
4756
|
+
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-LIIINECF.js');
|
|
4750
4757
|
try {
|
|
4751
4758
|
await runWorkClaim(opts);
|
|
4752
4759
|
} catch (err) {
|
|
@@ -4766,7 +4773,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
|
|
|
4766
4773
|
lease has expired, or a 403 if a different key holds it.
|
|
4767
4774
|
`
|
|
4768
4775
|
).action(async (opts) => {
|
|
4769
|
-
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-
|
|
4776
|
+
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-LIIINECF.js');
|
|
4770
4777
|
try {
|
|
4771
4778
|
await runWorkRenew(opts);
|
|
4772
4779
|
} catch (err) {
|
|
@@ -4798,7 +4805,7 @@ applies to a host's lease only. A later tool call in the session
|
|
|
4798
4805
|
takes the lease again.
|
|
4799
4806
|
`
|
|
4800
4807
|
).action(async (opts) => {
|
|
4801
|
-
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-
|
|
4808
|
+
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-LIIINECF.js');
|
|
4802
4809
|
try {
|
|
4803
4810
|
await runWorkRelease(opts);
|
|
4804
4811
|
} catch (err) {
|
|
@@ -4825,7 +4832,7 @@ Idempotent: declaring the same pull request twice is a no-op.
|
|
|
4825
4832
|
needs your own login; an agent session or a factory key is refused.
|
|
4826
4833
|
`
|
|
4827
4834
|
).action(async (number, opts) => {
|
|
4828
|
-
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-
|
|
4835
|
+
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-AMN23KFJ.js');
|
|
4829
4836
|
try {
|
|
4830
4837
|
await runWorkPr({ ...opts, number });
|
|
4831
4838
|
} catch (err) {
|
|
@@ -4850,8 +4857,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
|
|
|
4850
4857
|
Run it again after a change to the title or description.
|
|
4851
4858
|
`
|
|
4852
4859
|
).action(async (opts) => {
|
|
4853
|
-
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-
|
|
4854
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4860
|
+
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-YZNC3P3R.js');
|
|
4861
|
+
const { WorkCommandError } = await import('./work-cmd-SM6DY2WK.js');
|
|
4855
4862
|
try {
|
|
4856
4863
|
await runWorkOpenPr(opts);
|
|
4857
4864
|
} catch (err) {
|
|
@@ -4867,9 +4874,9 @@ function registerRunnerCommands(program2) {
|
|
|
4867
4874
|
const runnerCmd = program2.command("runner").description("Take work from the implement and amend queues on this machine");
|
|
4868
4875
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
4869
4876
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
4870
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
4871
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4872
|
-
const { RunnerAlreadyRunningError } = await import('./pidfile-
|
|
4877
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-H4QS332G.js');
|
|
4878
|
+
const { start, RunnerStartError } = await import('./loop-P3QDQOE5.js');
|
|
4879
|
+
const { RunnerAlreadyRunningError } = await import('./pidfile-G2J5WBQS.js');
|
|
4873
4880
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4874
4881
|
try {
|
|
4875
4882
|
const { realUpdateDeps } = await import('./real-deps-KNNBQC75.js');
|
|
@@ -4883,8 +4890,8 @@ function registerRunnerCommands(program2) {
|
|
|
4883
4890
|
}
|
|
4884
4891
|
});
|
|
4885
4892
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
4886
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
4887
|
-
const { runRunnerCheck } = await import('./check-
|
|
4893
|
+
const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
|
|
4894
|
+
const { runRunnerCheck } = await import('./check-N6WLZCER.js');
|
|
4888
4895
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4889
4896
|
const result = await runRunnerCheck(configPath);
|
|
4890
4897
|
if (!result.ok) {
|
|
@@ -4900,8 +4907,8 @@ function registerRunnerCommands(program2) {
|
|
|
4900
4907
|
`);
|
|
4901
4908
|
});
|
|
4902
4909
|
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) => {
|
|
4903
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
4904
|
-
const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-
|
|
4910
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-H4QS332G.js');
|
|
4911
|
+
const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-6HTP7I43.js');
|
|
4905
4912
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4906
4913
|
if (opts.service !== true) {
|
|
4907
4914
|
for (const flag of ["print", "user", "unitName"]) {
|
|
@@ -4913,7 +4920,7 @@ function registerRunnerCommands(program2) {
|
|
|
4913
4920
|
}
|
|
4914
4921
|
try {
|
|
4915
4922
|
if (opts.service === true) {
|
|
4916
|
-
const { installServiceCommand } = await import('./command-
|
|
4923
|
+
const { installServiceCommand } = await import('./command-Q5Q2EIO4.js');
|
|
4917
4924
|
const result2 = await installServiceCommand({
|
|
4918
4925
|
configPath,
|
|
4919
4926
|
print: opts.print,
|
|
@@ -4968,8 +4975,8 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
4968
4975
|
fail(`pass --service: \`${cliInvocation()} runner uninstall --service\` removes the runner's service.`);
|
|
4969
4976
|
return;
|
|
4970
4977
|
}
|
|
4971
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
4972
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
4978
|
+
const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
|
|
4979
|
+
const { uninstallServiceCommand } = await import('./command-Q5Q2EIO4.js');
|
|
4973
4980
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
4974
4981
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
4975
4982
|
`);
|
|
@@ -4996,12 +5003,12 @@ already in runner.env is used.
|
|
|
4996
5003
|
printf '%s' "$CLAUDE_CODE_OAUTH_TOKEN" | ${cliInvocation()} runner init --agent claude --factory <org>/<factory>
|
|
4997
5004
|
`
|
|
4998
5005
|
).action(async (opts) => {
|
|
4999
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
5000
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
5001
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
5002
|
-
const { detectMachine } = await import('./machine-
|
|
5003
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
5004
|
-
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-
|
|
5006
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-H4QS332G.js');
|
|
5007
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-U3I43XCP.js');
|
|
5008
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-O42EUXQU.js');
|
|
5009
|
+
const { detectMachine } = await import('./machine-EEFOW32K.js');
|
|
5010
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-X7FCQDFX.js');
|
|
5011
|
+
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-GZHXM27A.js');
|
|
5005
5012
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5006
5013
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
5007
5014
|
fail(`--agent ${opts.agent}: runner init writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")}. For another agent, leave --agent out and edit runner.commands.`);
|
|
@@ -5032,7 +5039,7 @@ already in runner.env is used.
|
|
|
5032
5039
|
const chunks = [];
|
|
5033
5040
|
for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
|
|
5034
5041
|
const result2 = runRunnerInit(configPath, { machine, configFromStdin: Buffer.concat(chunks).toString("utf8"), requireContainer: true });
|
|
5035
|
-
const { ensureHostKey: ensureHostKey2 } = await import('./host-key-
|
|
5042
|
+
const { ensureHostKey: ensureHostKey2 } = await import('./host-key-ATB23GI3.js');
|
|
5036
5043
|
const hostKey2 = await ensureHostKey2(configPath);
|
|
5037
5044
|
process.stdout.write(`host key ${hostKey2.fingerprint}
|
|
5038
5045
|
hooks: ${result2.hooks}
|
|
@@ -5091,7 +5098,7 @@ hooks: ${result2.hooks}
|
|
|
5091
5098
|
const prepared = prepareRunnerInit(configPath, { machine, allowProcess, agent, credential, keyFromLogin: makeKey !== void 0 });
|
|
5092
5099
|
const created = makeKey === void 0 ? void 0 : await makeKey();
|
|
5093
5100
|
const result = writeRunnerInit(prepared, created);
|
|
5094
|
-
const { ensureHostKey } = await import('./host-key-
|
|
5101
|
+
const { ensureHostKey } = await import('./host-key-ATB23GI3.js');
|
|
5095
5102
|
const hostKey = await ensureHostKey(configPath);
|
|
5096
5103
|
if (created !== void 0) {
|
|
5097
5104
|
process.stdout.write(`${C.green}\u2713${C.reset} saved the runner key in ${result.configPath}
|
|
@@ -5119,7 +5126,7 @@ ${C.yellow}${result.note}${C.reset}
|
|
|
5119
5126
|
To isolate builds in containers instead, run ${C.yellow}${cliInvocation()} runner init --vm${C.reset}.
|
|
5120
5127
|
`);
|
|
5121
5128
|
}
|
|
5122
|
-
const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-
|
|
5129
|
+
const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-6HTP7I43.js');
|
|
5123
5130
|
let installedLayout = false;
|
|
5124
5131
|
let noService = "it starts the runner from the install layout, which needs a CLI installed with npm";
|
|
5125
5132
|
try {
|
|
@@ -5151,7 +5158,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5151
5158
|
let serviceUp = false;
|
|
5152
5159
|
let restart;
|
|
5153
5160
|
if (installedLayout) {
|
|
5154
|
-
const { installServiceCommand } = await import('./command-
|
|
5161
|
+
const { installServiceCommand } = await import('./command-Q5Q2EIO4.js');
|
|
5155
5162
|
const service = await installServiceCommand({
|
|
5156
5163
|
configPath,
|
|
5157
5164
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5195,12 +5202,12 @@ Next:
|
|
|
5195
5202
|
"after",
|
|
5196
5203
|
"\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"
|
|
5197
5204
|
).action(async (opts) => {
|
|
5198
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5199
|
-
const { buildRepositoryImage, RecipeError } = await import('./build-
|
|
5205
|
+
const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
|
|
5206
|
+
const { buildRepositoryImage, RecipeError } = await import('./build-6WRNZPVR.js');
|
|
5200
5207
|
const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
|
|
5201
|
-
const { createDockerHost } = await import('./docker-
|
|
5202
|
-
const { builderSpec } = await import('./builder-
|
|
5203
|
-
const { loadRunnerConfig } = await import('./config-
|
|
5208
|
+
const { createDockerHost } = await import('./docker-JU422JL7.js');
|
|
5209
|
+
const { builderSpec } = await import('./builder-G3MLDMTI.js');
|
|
5210
|
+
const { loadRunnerConfig } = await import('./config-H4QS332G.js');
|
|
5204
5211
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5205
5212
|
const loaded = (() => {
|
|
5206
5213
|
try {
|
|
@@ -5211,11 +5218,11 @@ Next:
|
|
|
5211
5218
|
})();
|
|
5212
5219
|
const memory = loaded?.build?.memory ?? "8g";
|
|
5213
5220
|
try {
|
|
5214
|
-
const { ensureRunnerIdentity } = await import('./runner-identity-
|
|
5221
|
+
const { ensureRunnerIdentity } = await import('./runner-identity-FTHZFMGY.js');
|
|
5215
5222
|
await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
|
|
5216
5223
|
console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
|
|
5217
5224
|
});
|
|
5218
|
-
const { imageTargetFor } = await import('./governing-source-
|
|
5225
|
+
const { imageTargetFor } = await import('./governing-source-WM736XR4.js');
|
|
5219
5226
|
const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
|
|
5220
5227
|
if (!target.ok) {
|
|
5221
5228
|
if (opts.json) {
|
|
@@ -5278,22 +5285,22 @@ Next:
|
|
|
5278
5285
|
}
|
|
5279
5286
|
});
|
|
5280
5287
|
runnerCmd.command("stop").description("Take no more work; wait for running jobs to finish, 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) => {
|
|
5281
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5282
|
-
const { requestStop } = await import('./loop-
|
|
5288
|
+
const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
|
|
5289
|
+
const { requestStop } = await import('./loop-P3QDQOE5.js');
|
|
5283
5290
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5284
5291
|
await requestStop(configPath, Boolean(opts.now));
|
|
5285
5292
|
});
|
|
5286
5293
|
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) => {
|
|
5287
|
-
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-
|
|
5288
|
-
const { jobsDir, runnerDir } = await import('./paths-
|
|
5289
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5290
|
-
const { renderStatus } = await import('./status-
|
|
5291
|
-
const { readHousekeepingRecord } = await import('./record-
|
|
5294
|
+
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-H4QS332G.js');
|
|
5295
|
+
const { jobsDir, runnerDir } = await import('./paths-AKX2OOLF.js');
|
|
5296
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-P3QDQOE5.js');
|
|
5297
|
+
const { renderStatus } = await import('./status-LXFIVGP3.js');
|
|
5298
|
+
const { readHousekeepingRecord } = await import('./record-Q4IEYIVV.js');
|
|
5292
5299
|
const path2 = await import('path');
|
|
5293
5300
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5294
5301
|
const all = listJobFiles(configPath);
|
|
5295
5302
|
const housekeeping = readHousekeepingRecord(runnerDir(configPath));
|
|
5296
|
-
const { readPendingUpdate } = await import('./pending-
|
|
5303
|
+
const { readPendingUpdate } = await import('./pending-7SGWZCEH.js');
|
|
5297
5304
|
const pendingUpdate = readPendingUpdate(runnerDir(configPath));
|
|
5298
5305
|
let host = "unknown";
|
|
5299
5306
|
let concurrency = 1;
|
|
@@ -5307,7 +5314,7 @@ Next:
|
|
|
5307
5314
|
const service = await (async () => {
|
|
5308
5315
|
if (process.platform !== "linux" || !existsSync("/run/systemd/system")) return void 0;
|
|
5309
5316
|
const { inspectService, realInspectProbes } = await import('./inspect-6UYAAXH7.js');
|
|
5310
|
-
const { DEFAULT_UNIT_NAME } = await import('./install-
|
|
5317
|
+
const { DEFAULT_UNIT_NAME } = await import('./install-SFACZU7E.js');
|
|
5311
5318
|
const facts = inspectService(DEFAULT_UNIT_NAME, path2.dirname(configPath), realInspectProbes());
|
|
5312
5319
|
return facts === void 0 ? void 0 : { unit: facts.unit, running: facts.mainPid !== void 0, delegated: facts.delegate };
|
|
5313
5320
|
})();
|
|
@@ -5342,9 +5349,9 @@ Next:
|
|
|
5342
5349
|
);
|
|
5343
5350
|
});
|
|
5344
5351
|
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) => {
|
|
5345
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5346
|
-
const { listJobFiles } = await import('./loop-
|
|
5347
|
-
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-
|
|
5352
|
+
const { defaultRunnerConfigPath } = await import('./config-H4QS332G.js');
|
|
5353
|
+
const { listJobFiles } = await import('./loop-P3QDQOE5.js');
|
|
5354
|
+
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-N3ZX7HFV.js');
|
|
5348
5355
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5349
5356
|
const item = parseTrackerNumber(itemArg);
|
|
5350
5357
|
if (item === void 0) {
|
|
@@ -5592,7 +5599,7 @@ caller from the bearer token, the gateway answers 401 without that header.
|
|
|
5592
5599
|
"after",
|
|
5593
5600
|
"\nWhat the stdio .mcp.json entry spawns. Reads newline-delimited JSON-RPC 2.0 on\nstdin and writes responses on stdout. The API key comes from OUTERLAYER_API_KEY\nor ~/.outerlayer/config.json at start-up; with neither the command exits 1 and\nprints why, which the MCP client shows as the connect error.\n"
|
|
5594
5601
|
).action(async (opts) => {
|
|
5595
|
-
const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-
|
|
5602
|
+
const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-TQSPFRC7.js');
|
|
5596
5603
|
try {
|
|
5597
5604
|
await runMcpServe({ url: opts.url, appId: opts.appId });
|
|
5598
5605
|
} catch (err) {
|
|
@@ -1,36 +1,35 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-
|
|
3
|
+
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-JV4YGAAW.js';
|
|
4
4
|
import './chunk-I2UOAV7X.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import { currentLink, execStartCommand } from './chunk-
|
|
7
|
-
import { installService, uninstallService, realTaskScheduler } from './chunk-
|
|
8
|
-
import { detectMachine } from './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
5
|
+
import './chunk-EFB3FGLC.js';
|
|
6
|
+
import { currentLink, execStartCommand } from './chunk-276D7BJ7.js';
|
|
7
|
+
import { installService, uninstallService, realTaskScheduler } from './chunk-OBCFK4QD.js';
|
|
8
|
+
import { detectMachine } from './chunk-FVDVC2GF.js';
|
|
9
|
+
import './chunk-WKSBSEWT.js';
|
|
10
|
+
import './chunk-3AZYLAJC.js';
|
|
11
11
|
import './chunk-OGFGZQA3.js';
|
|
12
|
-
import { readJobFile } from './chunk-
|
|
12
|
+
import { readJobFile } from './chunk-XR56WEA5.js';
|
|
13
13
|
import './chunk-3W333NFO.js';
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
14
|
+
import './chunk-NYTZ7HVN.js';
|
|
15
|
+
import './chunk-2Q3PZ42G.js';
|
|
16
|
+
import './chunk-IMCVQF5F.js';
|
|
17
|
+
import './chunk-FQE5RDHI.js';
|
|
18
|
+
import './chunk-B42BIYC6.js';
|
|
19
|
+
import './chunk-EMUNEAQK.js';
|
|
20
20
|
import './chunk-G3IJ3N6F.js';
|
|
21
21
|
import './chunk-EAQSOE62.js';
|
|
22
22
|
import './chunk-F35VMF5M.js';
|
|
23
|
-
import { runnerVmOf, loadRunnerConfig } from './chunk-
|
|
23
|
+
import { runnerVmOf, loadRunnerConfig } from './chunk-V5CG75NX.js';
|
|
24
24
|
import './chunk-UXYLWVTQ.js';
|
|
25
25
|
import './chunk-7RQ73DLO.js';
|
|
26
26
|
import { realLima } from './chunk-77MM5RYD.js';
|
|
27
27
|
import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
|
|
28
|
-
import './chunk-
|
|
28
|
+
import './chunk-XACXXKQ5.js';
|
|
29
29
|
import './chunk-JBJTC3UU.js';
|
|
30
|
-
import './chunk-
|
|
30
|
+
import './chunk-SNVXHNU7.js';
|
|
31
31
|
import './chunk-USWVXQIH.js';
|
|
32
|
-
import './chunk-
|
|
33
|
-
import './chunk-NTRCK4NH.js';
|
|
32
|
+
import './chunk-QS43O4DR.js';
|
|
34
33
|
import './chunk-ZJSNLVCE.js';
|
|
35
34
|
import './chunk-ZNPE7FW5.js';
|
|
36
35
|
import './chunk-HCVLP7XA.js';
|
|
@@ -46,9 +45,9 @@ import './chunk-WFSUUUAN.js';
|
|
|
46
45
|
import './chunk-7VUK5RFS.js';
|
|
47
46
|
import './chunk-VNVZDWO3.js';
|
|
48
47
|
import './chunk-RA3O54FC.js';
|
|
49
|
-
import './chunk-
|
|
50
|
-
import './chunk-
|
|
51
|
-
import './chunk-
|
|
48
|
+
import './chunk-OW52QLK3.js';
|
|
49
|
+
import './chunk-IHNQWF6F.js';
|
|
50
|
+
import './chunk-URWYRAIC.js';
|
|
52
51
|
import './chunk-GISNHSYL.js';
|
|
53
52
|
import './chunk-Z5GEFMRW.js';
|
|
54
53
|
import { userInfo, totalmem } from 'os';
|