@outerlayer/cli 0.28.2 → 0.28.4
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 +13 -0
- package/dist/{agent-setup-YVR5RO56.js → agent-setup-IDF3EXM4.js} +7 -7
- package/dist/{bridge-WW2V7DTB.js → bridge-JN3VJ23L.js} +3 -3
- package/dist/{build-5FRC3RKM.js → build-JCYOHPLL.js} +5 -5
- package/dist/build-info.json +1 -1
- package/dist/{builder-4F2XNSFC.js → builder-HCTVP2O7.js} +5 -5
- package/dist/{check-YEI6TCUH.js → check-WJ4X2Q44.js} +34 -34
- package/dist/{chunk-MKIC65SD.js → chunk-2BZTGJII.js} +4 -4
- package/dist/{chunk-GLL4TN2M.js → chunk-5Q4NDYQP.js} +24 -13
- package/dist/{chunk-GUXWQIEY.js → chunk-6NFXOQKZ.js} +1 -1
- package/dist/{chunk-KU7QL4XW.js → chunk-6P2Z5AUY.js} +16 -16
- package/dist/{chunk-F4FA3ZUT.js → chunk-AV5MJY45.js} +3 -3
- package/dist/{chunk-WWQVKFN6.js → chunk-DIQN5SEL.js} +1 -1
- package/dist/{chunk-CTYSTE5C.js → chunk-DSKOHPXN.js} +1 -1
- package/dist/{chunk-5K3KB4YR.js → chunk-DWVAG73B.js} +1 -1
- package/dist/{chunk-6S4V4UIC.js → chunk-ERVZGWUR.js} +6 -6
- package/dist/{chunk-ATJOFXTE.js → chunk-EZ3DZXUH.js} +3 -3
- package/dist/{chunk-25X2PJDI.js → chunk-FTNCNEWE.js} +35 -24
- package/dist/{chunk-IVX3U7KV.js → chunk-HWOU2HDH.js} +1 -1
- package/dist/{chunk-MQHTM4YJ.js → chunk-JYVBEWBC.js} +3 -3
- package/dist/{chunk-USJZ2LDK.js → chunk-JZJLKTZT.js} +5 -5
- package/dist/{chunk-MNHMUZGC.js → chunk-KBB3CQTW.js} +5 -5
- package/dist/{chunk-7CK2TJFB.js → chunk-KJIUFOC4.js} +1 -1
- package/dist/{chunk-NUHZV3A4.js → chunk-M6NNXKRM.js} +1 -1
- package/dist/{chunk-JGD5TWQ2.js → chunk-MESOOLF4.js} +3 -1
- package/dist/{chunk-VC5J7QPV.js → chunk-MFI55TNI.js} +4 -4
- package/dist/{chunk-HXAEQPZR.js → chunk-N5EEEKT6.js} +1 -1
- package/dist/{chunk-TF7G2PR6.js → chunk-NKD5BNRX.js} +2 -2
- package/dist/{chunk-LNIFYSNK.js → chunk-NMIYK2G2.js} +2 -2
- package/dist/{chunk-O65LES4V.js → chunk-NVUO52YW.js} +19 -19
- package/dist/{chunk-Z3ASAXVU.js → chunk-O47BTZSN.js} +1 -1
- package/dist/{chunk-N7WAEEIU.js → chunk-OO6OADZN.js} +3 -3
- package/dist/{chunk-DKWQMPSL.js → chunk-OOUHNKKX.js} +1 -1
- package/dist/{chunk-66T6XJAB.js → chunk-QBF462QH.js} +1 -1
- package/dist/{chunk-VU7ZJPIR.js → chunk-QFNFBQCG.js} +1 -1
- package/dist/{chunk-YL2VDSNF.js → chunk-R7TMTFJP.js} +1 -1
- package/dist/{chunk-ZTY7HHYB.js → chunk-RXFKXZJS.js} +1 -1
- package/dist/{chunk-T2QSWFSU.js → chunk-TCBVV2JK.js} +4 -4
- package/dist/{chunk-4XN5FRRJ.js → chunk-TG7FAHRP.js} +2 -2
- package/dist/{chunk-QBQHQEUG.js → chunk-TOHKSZKI.js} +1 -1
- package/dist/{chunk-QJFDAKRF.js → chunk-UXLLWIA2.js} +1 -1
- package/dist/{chunk-TVZAC2NP.js → chunk-VM6BX2WJ.js} +2 -2
- package/dist/{chunk-HOB7Z4JQ.js → chunk-W3K6GBXY.js} +2 -2
- package/dist/{chunk-MHAR6S7B.js → chunk-WL3QF3QF.js} +1 -1
- package/dist/{chunk-X52PMPOM.js → chunk-X7SFJZIG.js} +5 -5
- package/dist/{chunk-SFJXGISY.js → chunk-YTR435DO.js} +2 -2
- package/dist/{chunk-55XLX5PA.js → chunk-YYGXCRIW.js} +1 -1
- package/dist/{claude-launcher-7RGVOYCD.js → claude-launcher-LVYZ4YJI.js} +1 -1
- package/dist/{cli-SCTKM2Y5.js → cli-X3JGBH2D.js} +101 -101
- package/dist/{command-PY3C2E4B.js → command-NLWZT7KR.js} +23 -23
- package/dist/{config-5QYIKYUP.js → config-TNV5HHLO.js} +3 -3
- package/dist/{connect-cmd-5TYAOK5M.js → connect-cmd-43IWARIV.js} +6 -6
- package/dist/{container-start-7WLZMPEI.js → container-start-3MXIUNE2.js} +22 -22
- package/dist/{control-plane-launch-FZMD4MXX.js → control-plane-launch-TIK265OT.js} +6 -6
- package/dist/{docker-ZTC4EIU4.js → docker-2IIRBQAB.js} +5 -5
- package/dist/{doctor-DQWRUAEB.js → doctor-PKMAUDTU.js} +25 -25
- package/dist/{emit-artifact-cmd-SOXLBPQB.js → emit-artifact-cmd-RM2X3PBJ.js} +10 -10
- package/dist/{emit-criteria-cmd-JDO2VUG5.js → emit-criteria-cmd-ZUI7DFND.js} +7 -7
- package/dist/{emit-finding-cmd-VCQPCLI2.js → emit-finding-cmd-W2FU4CCF.js} +7 -7
- package/dist/{emit-result-cmd-TKA3GAN7.js → emit-result-cmd-JINMQ7QG.js} +10 -10
- package/dist/{emit-step-cmd-XN44BXYU.js → emit-step-cmd-7FZWQTV3.js} +8 -8
- package/dist/{exec-client-VKT2XNB3.js → exec-client-6ZJJ4KVH.js} +4 -4
- package/dist/{fleet-readiness-G5X3MKP2.js → fleet-readiness-3A67MUAU.js} +6 -6
- package/dist/{governing-source-B3M2U4BC.js → governing-source-KQMKM5CI.js} +10 -10
- package/dist/{guest-init-QW2DPX7H.js → guest-init-A4HHI2UR.js} +5 -5
- package/dist/{hook-fast-EFC44SXV.js → hook-fast-UJPAWDAO.js} +1 -1
- package/dist/host-key-NGRCMJZ7.js +10 -0
- package/dist/{image-tag-SS7YKJHN.js → image-tag-TEOKZVD5.js} +4 -4
- package/dist/index.js +4 -4
- package/dist/{init-BTH5YPBC.js → init-HENNITCI.js} +22 -22
- package/dist/{init-5LHTF72R.js → init-Q6JV7IGF.js} +22 -22
- package/dist/{init-cmd-L4VW3ZCT.js → init-cmd-GJR37XGU.js} +11 -11
- package/dist/{init-update-RWTQSTPE.js → init-update-MZ4IRFC7.js} +9 -9
- package/dist/{install-35SAMY75.js → install-NPTR35MG.js} +5 -5
- package/dist/{install-cmd-GFY4QF72.js → install-cmd-4PXPAFQX.js} +6 -6
- package/dist/{logs-X2IRDP5T.js → logs-Z4L4I3OR.js} +3 -3
- package/dist/{loop-QDV7T65M.js → loop-DO46LFUH.js} +34 -34
- package/dist/{machine-PLNSGKNF.js → machine-HZGUBOUH.js} +18 -18
- package/dist/{mcp-serve-cmd-IITCPAAR.js → mcp-serve-cmd-NQM2WDYI.js} +5 -5
- package/dist/{paths-32DWGK35.js → paths-2VSGK6E2.js} +3 -3
- package/dist/pending-SFZ2AYSK.js +10 -0
- package/dist/{pidfile-CYCTH6NQ.js → pidfile-3FT5OLUE.js} +4 -4
- package/dist/{record-N4WPZCGK.js → record-7SSRLSI2.js} +4 -4
- package/dist/{relay-FJ5K37Z5.js → relay-IEYNSKAZ.js} +1 -1
- package/dist/{relay-protocol-HELO5SNH.js → relay-protocol-5LSWUJCW.js} +1 -1
- package/dist/{runner-env-EIB6WFPG.js → runner-env-2Z2DVSUJ.js} +6 -6
- package/dist/{runner-identity-S3V6I4I3.js → runner-identity-B37HHOZR.js} +5 -5
- package/dist/{runner-key-M4N2BY5A.js → runner-key-UP5YBUHR.js} +22 -22
- package/dist/{session-sender-UQ3VF732.js → session-sender-7MSVJZ6Q.js} +11 -11
- package/dist/{spec-cmd-Z6MGATWC.js → spec-cmd-KAQ7MX4O.js} +8 -8
- package/dist/{status-PWMPP4ES.js → status-2ICTDC2R.js} +25 -25
- package/dist/{sync-cmd-N4R7ST6X.js → sync-cmd-7K3WVQKO.js} +10 -10
- package/dist/{watch-L5MSAWEO.js → watch-NCYESLO2.js} +10 -10
- package/dist/{work-claim-cmd-CXALMILD.js → work-claim-cmd-IOUEHYIY.js} +11 -11
- package/dist/{work-cmd-COESFSHE.js → work-cmd-FOI74X5B.js} +8 -8
- package/dist/{work-comment-cmd-A4ZUVCSA.js → work-comment-cmd-3C44H4CG.js} +8 -8
- package/dist/{work-logs-cmd-CTF43MBE.js → work-logs-cmd-YGAWCX3X.js} +8 -8
- package/dist/{work-open-pr-cmd-EMGYJXVD.js → work-open-pr-cmd-HUG5HAVC.js} +9 -9
- package/dist/{work-pr-cmd-FEXMS6RH.js → work-pr-cmd-L2EDOYXH.js} +8 -8
- package/dist/{work-stop-cmd-NIHAN45R.js → work-stop-cmd-GGDVKC67.js} +8 -8
- package/package.json +1 -1
- package/dist/host-key-AC6LTZDS.js +0 -10
- package/dist/pending-CSIY4Y2I.js +0 -10
|
@@ -1,13 +1,13 @@
|
|
|
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-FTNCNEWE.js';
|
|
4
4
|
import './chunk-ITAIEJ2T.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-TOHKSZKI.js';
|
|
6
6
|
import './chunk-KT4CN6OU.js';
|
|
7
7
|
import './chunk-SATUCMAJ.js';
|
|
8
|
-
import { verifiedTrackerNames, TRACKERS } from './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
8
|
+
import { verifiedTrackerNames, TRACKERS } from './chunk-X7SFJZIG.js';
|
|
9
|
+
import './chunk-NMIYK2G2.js';
|
|
10
|
+
import './chunk-QFNFBQCG.js';
|
|
11
11
|
import './chunk-BUP5N3X6.js';
|
|
12
12
|
import './chunk-UHU7H57K.js';
|
|
13
13
|
import { FIRST_VERSION_READING_AGENTS_SKILLS } from './chunk-5B7BEQPR.js';
|
|
@@ -15,12 +15,12 @@ import './chunk-HOU33DW5.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
17
|
import './chunk-P2RWZCV7.js';
|
|
18
|
-
import './chunk-
|
|
18
|
+
import './chunk-KJIUFOC4.js';
|
|
19
19
|
import './chunk-PJDQPF5N.js';
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-
|
|
20
|
+
import './chunk-R7TMTFJP.js';
|
|
21
|
+
import './chunk-DWVAG73B.js';
|
|
22
|
+
import './chunk-N5EEEKT6.js';
|
|
23
|
+
import { hookFiredMarkerPath, installedCliDistDir } from './chunk-OOUHNKKX.js';
|
|
24
24
|
import './chunk-ZJSNLVCE.js';
|
|
25
25
|
import './chunk-I7RZHMXW.js';
|
|
26
26
|
import './chunk-BKO6JEZI.js';
|
|
@@ -41,7 +41,7 @@ import './chunk-RKOTJQVG.js';
|
|
|
41
41
|
import './chunk-QZBXLLTV.js';
|
|
42
42
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
43
43
|
import './chunk-XD4ZCMA4.js';
|
|
44
|
-
import './chunk-
|
|
44
|
+
import './chunk-MESOOLF4.js';
|
|
45
45
|
import './chunk-Z5GEFMRW.js';
|
|
46
46
|
import { EventEmitter } from 'events';
|
|
47
47
|
import childProcess, { execFileSync } from 'child_process';
|
|
@@ -3799,7 +3799,7 @@ async function installMachineSkillsForSetup() {
|
|
|
3799
3799
|
` : "";
|
|
3800
3800
|
}
|
|
3801
3801
|
async function realConnectDepsForCwd() {
|
|
3802
|
-
const { realConnectDeps } = await import('./connect-cmd-
|
|
3802
|
+
const { realConnectDeps } = await import('./connect-cmd-43IWARIV.js');
|
|
3803
3803
|
const { resolveRepoIdentity } = await import('./dist-JFVKLUHL.js');
|
|
3804
3804
|
return {
|
|
3805
3805
|
...realConnectDeps(),
|
|
@@ -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-MZ4IRFC7.js');
|
|
3878
|
+
const { fleetReadiness } = await import('./fleet-readiness-3A67MUAU.js');
|
|
3879
3879
|
const problem = updateFlagProblem(opts);
|
|
3880
3880
|
if (problem !== void 0) {
|
|
3881
3881
|
fail(problem);
|
|
@@ -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-GJR37XGU.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-GJR37XGU.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-IDF3EXM4.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-43IWARIV.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-43IWARIV.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
|
|
@@ -4070,7 +4070,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
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-7K3WVQKO.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-NCYESLO2.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(() => {
|
|
@@ -4113,8 +4113,8 @@ code is 1: revoke the token on /profile/security.
|
|
|
4113
4113
|
program2.command("claude [args...]").description("start Claude Code with the repository's control plane attached").allowUnknownOption().helpOption(false).action(() => {
|
|
4114
4114
|
});
|
|
4115
4115
|
const brokerRelay = program2.command("broker-relay", { hidden: true }).description("relay a build's loopback connections to the runner's tunnel and destinations").enablePositionalOptions().option("--port <port>", "the loopback port to listen on").option("--socket <path>", "the runner's tunnel socket").option("--join <path>", "the socket the runner's joining process connects to").option("--lease-watchdog", "exit when the runner's lease expiry passes; needs --join").option("--forward <port=target>", "also relay a loopback port to a destination; repeatable", (value, previous) => [...previous, value], []).action(async (opts) => {
|
|
4116
|
-
const { startRelay, startSessionRelay } = await import('./relay-
|
|
4117
|
-
const { TARGET_TUNNEL, targetOfPath } = await import('./relay-protocol-
|
|
4116
|
+
const { startRelay, startSessionRelay } = await import('./relay-IEYNSKAZ.js');
|
|
4117
|
+
const { TARGET_TUNNEL, targetOfPath } = await import('./relay-protocol-5LSWUJCW.js');
|
|
4118
4118
|
const port = Number(opts.port);
|
|
4119
4119
|
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
|
4120
4120
|
fail(opts.port === void 0 ? "--port is required" : `--port must be a port number, not ${opts.port}`);
|
|
@@ -4146,7 +4146,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4146
4146
|
await startRelay({ port, socketPath: opts.socket, forwards: forwards.map((forward) => ({ port: forward.port, socketPath: forward.spec })) });
|
|
4147
4147
|
});
|
|
4148
4148
|
brokerRelay.command("join").description("carry the runner's session to the relay over standard input and output").option("--socket <path>", "the relay's joining socket", "/run/outerlayer-relay/join.sock").action(async (opts) => {
|
|
4149
|
-
const { joinRelay } = await import('./relay-
|
|
4149
|
+
const { joinRelay } = await import('./relay-IEYNSKAZ.js');
|
|
4150
4150
|
try {
|
|
4151
4151
|
await joinRelay({ socketPath: opts.socket, input: process.stdin, output: process.stdout });
|
|
4152
4152
|
} catch (err) {
|
|
@@ -4162,7 +4162,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4162
4162
|
}
|
|
4163
4163
|
});
|
|
4164
4164
|
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) => {
|
|
4165
|
-
const { runVmExec } = await import('./exec-client-
|
|
4165
|
+
const { runVmExec } = await import('./exec-client-6ZJJ4KVH.js');
|
|
4166
4166
|
const env = {};
|
|
4167
4167
|
for (const entry of opts.env) {
|
|
4168
4168
|
const eq = entry.indexOf("=");
|
|
@@ -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-7MSVJZ6Q.js');
|
|
4195
4195
|
try {
|
|
4196
4196
|
await runSessionSender();
|
|
4197
4197
|
} catch (err) {
|
|
@@ -4199,7 +4199,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4199
4199
|
}
|
|
4200
4200
|
});
|
|
4201
4201
|
program2.command("vm-init", { hidden: true }).description("lay out a microVM build's guest; the guest helper runs it").action(async () => {
|
|
4202
|
-
const { realGuestHost, runGuestInit } = await import('./guest-init-
|
|
4202
|
+
const { realGuestHost, runGuestInit } = await import('./guest-init-A4HHI2UR.js');
|
|
4203
4203
|
const { readFileSync: readFileSync3 } = await import('fs');
|
|
4204
4204
|
try {
|
|
4205
4205
|
runGuestInit(realGuestHost(), readFileSync3("/proc/cmdline", "utf8"));
|
|
@@ -4208,7 +4208,7 @@ code is 1: revoke the token on /profile/security.
|
|
|
4208
4208
|
}
|
|
4209
4209
|
});
|
|
4210
4210
|
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) => {
|
|
4211
|
-
const { startBridgeForward } = await import('./bridge-
|
|
4211
|
+
const { startBridgeForward } = await import('./bridge-JN3VJ23L.js');
|
|
4212
4212
|
try {
|
|
4213
4213
|
await startBridgeForward(opts);
|
|
4214
4214
|
} catch (err) {
|
|
@@ -4281,7 +4281,7 @@ Compiling .outerlayer/ moved to \`${cliInvocation()} context emit\`.
|
|
|
4281
4281
|
await compileContext({ dir: opts.dir, check: opts.check, json: opts.json });
|
|
4282
4282
|
return;
|
|
4283
4283
|
}
|
|
4284
|
-
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-
|
|
4284
|
+
const { runEmitResult, EmitResultError } = await import('./emit-result-cmd-JINMQ7QG.js');
|
|
4285
4285
|
try {
|
|
4286
4286
|
const result = await runEmitResult({
|
|
4287
4287
|
name,
|
|
@@ -4331,7 +4331,7 @@ everywhere, bytes and deep link untouched; a still-queued one is cancelled
|
|
|
4331
4331
|
locally so it never uploads. One correction can retire several duplicates.
|
|
4332
4332
|
`
|
|
4333
4333
|
).action(async (file, opts) => {
|
|
4334
|
-
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-
|
|
4334
|
+
const { runEmitArtifact, EmitArtifactError } = await import('./emit-artifact-cmd-RM2X3PBJ.js');
|
|
4335
4335
|
let pr;
|
|
4336
4336
|
if (opts.pr !== void 0) {
|
|
4337
4337
|
pr = parseTrackerNumber(opts.pr);
|
|
@@ -4390,7 +4390,7 @@ recent events with their ids. --find <text> searches all of them.
|
|
|
4390
4390
|
item that session was launched for is used automatically.
|
|
4391
4391
|
`
|
|
4392
4392
|
).action(async (opts) => {
|
|
4393
|
-
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4393
|
+
const { runEmitFinding, refuseRemovedFindingFlags, EmitFindingError } = await import('./emit-finding-cmd-W2FU4CCF.js');
|
|
4394
4394
|
try {
|
|
4395
4395
|
refuseRemovedFindingFlags(opts);
|
|
4396
4396
|
const result = await runEmitFinding({
|
|
@@ -4457,7 +4457,7 @@ the whole batch. "untimed": true records one with no time on purpose.
|
|
|
4457
4457
|
that session was launched for is used automatically.
|
|
4458
4458
|
`
|
|
4459
4459
|
).action(async (file, opts) => {
|
|
4460
|
-
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-
|
|
4460
|
+
const { runEmitFindings, EmitFindingError } = await import('./emit-finding-cmd-W2FU4CCF.js');
|
|
4461
4461
|
try {
|
|
4462
4462
|
const result = await runEmitFindings({
|
|
4463
4463
|
file,
|
|
@@ -4492,7 +4492,7 @@ command, the command exits 0, and \`sync\` sends it later. If the gateway refuse
|
|
|
4492
4492
|
the step, the command prints why and exits 1.
|
|
4493
4493
|
`
|
|
4494
4494
|
).action(async (name, opts) => {
|
|
4495
|
-
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-
|
|
4495
|
+
const { runEmitStep, EmitStepError } = await import('./emit-step-cmd-7FZWQTV3.js');
|
|
4496
4496
|
try {
|
|
4497
4497
|
await runEmitStep({
|
|
4498
4498
|
name,
|
|
@@ -4535,7 +4535,7 @@ of the item, and a (proof: <kind>) annotation names its proof.
|
|
|
4535
4535
|
${cliInvocation()} emit criteria acceptance/412-login.md --item 412
|
|
4536
4536
|
`
|
|
4537
4537
|
).action(async (file, opts) => {
|
|
4538
|
-
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-
|
|
4538
|
+
const { runEmitCriteria, EmitCriteriaError } = await import('./emit-criteria-cmd-ZUI7DFND.js');
|
|
4539
4539
|
try {
|
|
4540
4540
|
const result = await runEmitCriteria({
|
|
4541
4541
|
file,
|
|
@@ -4559,9 +4559,9 @@ function registerSpecCommands(program2) {
|
|
|
4559
4559
|
const specCmd = program2.command("spec").description("Find, file and edit the issue a spec lives in, in your factory's tracker");
|
|
4560
4560
|
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)");
|
|
4561
4561
|
const run = async (action) => {
|
|
4562
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4562
|
+
const { WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4563
4563
|
try {
|
|
4564
|
-
await action(await import('./spec-cmd-
|
|
4564
|
+
await action(await import('./spec-cmd-KAQ7MX4O.js'));
|
|
4565
4565
|
} catch (err) {
|
|
4566
4566
|
if (err instanceof WorkCommandError) {
|
|
4567
4567
|
fail(err.message);
|
|
@@ -4603,7 +4603,7 @@ takes it, and prints the line that starts your session on it. That
|
|
|
4603
4603
|
session links itself and holds the item's lease while it works.
|
|
4604
4604
|
`
|
|
4605
4605
|
).action(async (opts) => {
|
|
4606
|
-
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-
|
|
4606
|
+
const { runWorkBuild, WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4607
4607
|
try {
|
|
4608
4608
|
await runWorkBuild(opts);
|
|
4609
4609
|
} catch (err) {
|
|
@@ -4626,7 +4626,7 @@ renews that session's own 20-minute lease, unless --no-lease or
|
|
|
4626
4626
|
--ended is given, or another worker already holds a live one.
|
|
4627
4627
|
`
|
|
4628
4628
|
).action(async (number, opts) => {
|
|
4629
|
-
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-
|
|
4629
|
+
const { runWorkLinkSession, WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4630
4630
|
try {
|
|
4631
4631
|
await runWorkLinkSession({ ...opts, number, noLease: opts.lease === false, logFailures: opts.logFailures === true });
|
|
4632
4632
|
} catch (err) {
|
|
@@ -4650,8 +4650,8 @@ criterion's new proof; --ready hands the thread back to a person. At
|
|
|
4650
4650
|
most one action flag may be given.
|
|
4651
4651
|
`
|
|
4652
4652
|
).action(async (opts) => {
|
|
4653
|
-
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4654
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4653
|
+
const { runWorkComment, WorkCommentCommandError } = await import('./work-comment-cmd-3C44H4CG.js');
|
|
4654
|
+
const { WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4655
4655
|
try {
|
|
4656
4656
|
await runWorkComment(opts);
|
|
4657
4657
|
} catch (err) {
|
|
@@ -4672,8 +4672,8 @@ criterion that carries proof or a comment, each with who is waiting
|
|
|
4672
4672
|
on whom next.
|
|
4673
4673
|
`
|
|
4674
4674
|
).action(async (opts) => {
|
|
4675
|
-
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-
|
|
4676
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4675
|
+
const { runWorkThreads, WorkCommentCommandError } = await import('./work-comment-cmd-3C44H4CG.js');
|
|
4676
|
+
const { WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4677
4677
|
try {
|
|
4678
4678
|
await runWorkThreads(opts);
|
|
4679
4679
|
} catch (err) {
|
|
@@ -4697,8 +4697,8 @@ still running, or that an older runner released, has no log and the
|
|
|
4697
4697
|
command exits 1.
|
|
4698
4698
|
`
|
|
4699
4699
|
).action(async (opts) => {
|
|
4700
|
-
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-
|
|
4701
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4700
|
+
const { runWorkLogs, WorkLogsCommandError } = await import('./work-logs-cmd-YGAWCX3X.js');
|
|
4701
|
+
const { WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4702
4702
|
try {
|
|
4703
4703
|
await runWorkLogs(opts);
|
|
4704
4704
|
} catch (err) {
|
|
@@ -4721,8 +4721,8 @@ item is not built again until a new build request. Exits 1 when no host
|
|
|
4721
4721
|
build is running for the item.
|
|
4722
4722
|
`
|
|
4723
4723
|
).action(async (opts) => {
|
|
4724
|
-
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-
|
|
4725
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4724
|
+
const { runWorkStop, WorkStopCommandError } = await import('./work-stop-cmd-GGDVKC67.js');
|
|
4725
|
+
const { WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4726
4726
|
try {
|
|
4727
4727
|
await runWorkStop(opts);
|
|
4728
4728
|
} catch (err) {
|
|
@@ -4743,7 +4743,7 @@ deletes anything \u2014 the item is removed from Work only once no
|
|
|
4743
4743
|
live addition remains on it.
|
|
4744
4744
|
`
|
|
4745
4745
|
).action(async (opts) => {
|
|
4746
|
-
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-
|
|
4746
|
+
const { runWorkRemove, WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4747
4747
|
try {
|
|
4748
4748
|
await runWorkRemove(opts);
|
|
4749
4749
|
} catch (err) {
|
|
@@ -4755,7 +4755,7 @@ live addition remains on it.
|
|
|
4755
4755
|
}
|
|
4756
4756
|
});
|
|
4757
4757
|
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) => {
|
|
4758
|
-
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-
|
|
4758
|
+
const { runWorkStatus, WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4759
4759
|
try {
|
|
4760
4760
|
await runWorkStatus(opts);
|
|
4761
4761
|
} catch (err) {
|
|
@@ -4767,7 +4767,7 @@ live addition remains on it.
|
|
|
4767
4767
|
}
|
|
4768
4768
|
});
|
|
4769
4769
|
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) => {
|
|
4770
|
-
const { runWorkList, WorkCommandError } = await import('./work-cmd-
|
|
4770
|
+
const { runWorkList, WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4771
4771
|
try {
|
|
4772
4772
|
await runWorkList(opts);
|
|
4773
4773
|
} catch (err) {
|
|
@@ -4788,7 +4788,7 @@ by a different key is refused; claiming again with the same key extends
|
|
|
4788
4788
|
it. --host is a label only.
|
|
4789
4789
|
`
|
|
4790
4790
|
).action(async (opts) => {
|
|
4791
|
-
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-
|
|
4791
|
+
const { runWorkClaim, WorkCommandError } = await import('./work-claim-cmd-IOUEHYIY.js');
|
|
4792
4792
|
try {
|
|
4793
4793
|
await runWorkClaim(opts);
|
|
4794
4794
|
} catch (err) {
|
|
@@ -4808,7 +4808,7 @@ Extends the live lease this API key holds. Refused with a 410 if the
|
|
|
4808
4808
|
lease has expired, or a 403 if a different key holds it.
|
|
4809
4809
|
`
|
|
4810
4810
|
).action(async (opts) => {
|
|
4811
|
-
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-
|
|
4811
|
+
const { runWorkRenew, WorkCommandError } = await import('./work-claim-cmd-IOUEHYIY.js');
|
|
4812
4812
|
try {
|
|
4813
4813
|
await runWorkRenew(opts);
|
|
4814
4814
|
} catch (err) {
|
|
@@ -4840,7 +4840,7 @@ applies to a host's lease only. A later tool call in the session
|
|
|
4840
4840
|
takes the lease again.
|
|
4841
4841
|
`
|
|
4842
4842
|
).action(async (opts) => {
|
|
4843
|
-
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-
|
|
4843
|
+
const { runWorkRelease, WorkCommandError } = await import('./work-claim-cmd-IOUEHYIY.js');
|
|
4844
4844
|
try {
|
|
4845
4845
|
await runWorkRelease(opts);
|
|
4846
4846
|
} catch (err) {
|
|
@@ -4867,7 +4867,7 @@ Idempotent: declaring the same pull request twice is a no-op.
|
|
|
4867
4867
|
needs your own login; an agent session or a factory key is refused.
|
|
4868
4868
|
`
|
|
4869
4869
|
).action(async (number, opts) => {
|
|
4870
|
-
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-
|
|
4870
|
+
const { runWorkPr, WorkPrCommandError } = await import('./work-pr-cmd-L2EDOYXH.js');
|
|
4871
4871
|
try {
|
|
4872
4872
|
await runWorkPr({ ...opts, number });
|
|
4873
4873
|
} catch (err) {
|
|
@@ -4892,8 +4892,8 @@ login, then declares the pull request on the item, as \`work pr\` does.
|
|
|
4892
4892
|
Run it again after a change to the title or description.
|
|
4893
4893
|
`
|
|
4894
4894
|
).action(async (opts) => {
|
|
4895
|
-
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-
|
|
4896
|
-
const { WorkCommandError } = await import('./work-cmd-
|
|
4895
|
+
const { runWorkOpenPr, WorkOpenPrCommandError } = await import('./work-open-pr-cmd-HUG5HAVC.js');
|
|
4896
|
+
const { WorkCommandError } = await import('./work-cmd-FOI74X5B.js');
|
|
4897
4897
|
try {
|
|
4898
4898
|
await runWorkOpenPr(opts);
|
|
4899
4899
|
} catch (err) {
|
|
@@ -4909,9 +4909,9 @@ function registerRunnerCommands(program2) {
|
|
|
4909
4909
|
const runnerCmd = program2.command("runner").description("Take work from the implement and amend queues on this machine");
|
|
4910
4910
|
const configOption = "the cloud config file to run against (default: ~/.outerlayer/config.json)";
|
|
4911
4911
|
runnerCmd.command("start").description("Run the loop: claim work, run it, report, clean up, repeat").option("--config <path>", configOption).action(async (opts) => {
|
|
4912
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
4913
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4914
|
-
const { RunnerAlreadyRunningError } = await import('./pidfile-
|
|
4912
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
4913
|
+
const { start, RunnerStartError } = await import('./loop-DO46LFUH.js');
|
|
4914
|
+
const { RunnerAlreadyRunningError } = await import('./pidfile-3FT5OLUE.js');
|
|
4915
4915
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4916
4916
|
try {
|
|
4917
4917
|
const { realUpdateDeps } = await import('./real-deps-QX5YH7FG.js');
|
|
@@ -4928,10 +4928,10 @@ function registerRunnerCommands(program2) {
|
|
|
4928
4928
|
"after",
|
|
4929
4929
|
"\nReads OUTERLAYER_URL, OUTERLAYER_APP_ID, OUTERLAYER_API_KEY, OUTERLAYER_RUNNER_NAME and one Claude credential\n(CLAUDE_CODE_OAUTH_TOKEN, ANTHROPIC_API_KEY or ANTHROPIC_AUTH_TOKEN) 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"
|
|
4930
4930
|
).action(async () => {
|
|
4931
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
4932
|
-
const { containerStart } = await import('./container-start-
|
|
4933
|
-
const { start, RunnerStartError } = await import('./loop-
|
|
4934
|
-
const { RunnerAlreadyRunningError } = await import('./pidfile-
|
|
4931
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
4932
|
+
const { containerStart } = await import('./container-start-3MXIUNE2.js');
|
|
4933
|
+
const { start, RunnerStartError } = await import('./loop-DO46LFUH.js');
|
|
4934
|
+
const { RunnerAlreadyRunningError } = await import('./pidfile-3FT5OLUE.js');
|
|
4935
4935
|
try {
|
|
4936
4936
|
const result = await containerStart({
|
|
4937
4937
|
env: process.env,
|
|
@@ -4949,8 +4949,8 @@ function registerRunnerCommands(program2) {
|
|
|
4949
4949
|
}
|
|
4950
4950
|
});
|
|
4951
4951
|
runnerCmd.command("check").description("Validate the config, the hooks and the key, and print the effective settings").option("--config <path>", configOption).action(async (opts) => {
|
|
4952
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
4953
|
-
const { runRunnerCheck } = await import('./check-
|
|
4952
|
+
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
4953
|
+
const { runRunnerCheck } = await import('./check-WJ4X2Q44.js');
|
|
4954
4954
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4955
4955
|
const result = await runRunnerCheck(configPath);
|
|
4956
4956
|
if (!result.ok) {
|
|
@@ -4971,8 +4971,8 @@ function registerRunnerCommands(program2) {
|
|
|
4971
4971
|
`);
|
|
4972
4972
|
});
|
|
4973
4973
|
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) => {
|
|
4974
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
4975
|
-
const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-
|
|
4974
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
4975
|
+
const { runRunnerInstall, RunnerInstallError, launcherSummary, restartNote } = await import('./install-cmd-4PXPAFQX.js');
|
|
4976
4976
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
4977
4977
|
if (opts.service !== true) {
|
|
4978
4978
|
for (const flag of ["print", "user", "unitName"]) {
|
|
@@ -4984,7 +4984,7 @@ function registerRunnerCommands(program2) {
|
|
|
4984
4984
|
}
|
|
4985
4985
|
try {
|
|
4986
4986
|
if (opts.service === true) {
|
|
4987
|
-
const { installServiceCommand } = await import('./command-
|
|
4987
|
+
const { installServiceCommand } = await import('./command-NLWZT7KR.js');
|
|
4988
4988
|
const result2 = await installServiceCommand({
|
|
4989
4989
|
configPath,
|
|
4990
4990
|
print: opts.print,
|
|
@@ -5039,8 +5039,8 @@ To keep it running, run ${C.yellow}${cliInvocation()} runner install --service${
|
|
|
5039
5039
|
fail(`pass --service: \`${cliInvocation()} runner uninstall --service\` removes the runner's service.`);
|
|
5040
5040
|
return;
|
|
5041
5041
|
}
|
|
5042
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5043
|
-
const { uninstallServiceCommand } = await import('./command-
|
|
5042
|
+
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5043
|
+
const { uninstallServiceCommand } = await import('./command-NLWZT7KR.js');
|
|
5044
5044
|
const result = await uninstallServiceCommand({ configPath: opts.config ?? defaultRunnerConfigPath(), unitName: opts.unitName, home: homeFromEnv() });
|
|
5045
5045
|
if (result.ok) for (const line of result.lines) process.stdout.write(`${C.green}\u2713${C.reset} ${line}
|
|
5046
5046
|
`);
|
|
@@ -5067,12 +5067,12 @@ already in claude.env is used.
|
|
|
5067
5067
|
printf '%s' "$CLAUDE_CODE_OAUTH_TOKEN" | ${cliInvocation()} runner init --agent claude --factory <org>/<factory>
|
|
5068
5068
|
`
|
|
5069
5069
|
).action(async (opts) => {
|
|
5070
|
-
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-
|
|
5071
|
-
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-
|
|
5072
|
-
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-
|
|
5073
|
-
const { detectMachine } = await import('./machine-
|
|
5074
|
-
const { chooseVm, runVmInit, VmInitError } = await import('./init-
|
|
5075
|
-
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-
|
|
5070
|
+
const { defaultRunnerConfigPath, RunnerConfigError } = await import('./config-TNV5HHLO.js');
|
|
5071
|
+
const { prepareRunnerInit, runRunnerInit, RunnerInitError, writeRunnerInit } = await import('./init-Q6JV7IGF.js');
|
|
5072
|
+
const { obtainRunnerKey, runnerKeyLogin } = await import('./runner-key-UP5YBUHR.js');
|
|
5073
|
+
const { detectMachine } = await import('./machine-HZGUBOUH.js');
|
|
5074
|
+
const { chooseVm, runVmInit, VmInitError } = await import('./init-HENNITCI.js');
|
|
5075
|
+
const { AGENT_COMMANDS, credentialFromStdin, isAgentName, restartForCredential, RunnerEnvError } = await import('./runner-env-2Z2DVSUJ.js');
|
|
5076
5076
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5077
5077
|
if (opts.agent !== void 0 && !isAgentName(opts.agent)) {
|
|
5078
5078
|
fail(`--agent ${opts.agent}: runner init writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")}. For another agent, leave --agent out and edit runner.commands.`);
|
|
@@ -5103,7 +5103,7 @@ already in claude.env is used.
|
|
|
5103
5103
|
const chunks = [];
|
|
5104
5104
|
for await (const chunk of process.stdin) chunks.push(Buffer.from(chunk));
|
|
5105
5105
|
const result2 = runRunnerInit(configPath, { machine, configFromStdin: Buffer.concat(chunks).toString("utf8"), requireContainer: true });
|
|
5106
|
-
const { ensureHostKey: ensureHostKey2 } = await import('./host-key-
|
|
5106
|
+
const { ensureHostKey: ensureHostKey2 } = await import('./host-key-NGRCMJZ7.js');
|
|
5107
5107
|
const hostKey2 = await ensureHostKey2(configPath);
|
|
5108
5108
|
process.stdout.write(`host key ${hostKey2.fingerprint}
|
|
5109
5109
|
hooks: ${result2.hooks}
|
|
@@ -5162,7 +5162,7 @@ hooks: ${result2.hooks}
|
|
|
5162
5162
|
const prepared = prepareRunnerInit(configPath, { machine, allowProcess, agent, credential, keyFromLogin: makeKey !== void 0 });
|
|
5163
5163
|
const created = makeKey === void 0 ? void 0 : await makeKey();
|
|
5164
5164
|
const result = writeRunnerInit(prepared, created);
|
|
5165
|
-
const { ensureHostKey } = await import('./host-key-
|
|
5165
|
+
const { ensureHostKey } = await import('./host-key-NGRCMJZ7.js');
|
|
5166
5166
|
const hostKey = await ensureHostKey(configPath);
|
|
5167
5167
|
if (created !== void 0) {
|
|
5168
5168
|
process.stdout.write(`${C.green}\u2713${C.reset} saved the runner key in ${result.configPath}
|
|
@@ -5190,7 +5190,7 @@ ${C.yellow}${result.note}${C.reset}
|
|
|
5190
5190
|
To isolate builds in containers instead, run ${C.yellow}${cliInvocation()} runner init --vm${C.reset}.
|
|
5191
5191
|
`);
|
|
5192
5192
|
}
|
|
5193
|
-
const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-
|
|
5193
|
+
const { runRunnerInstall, RunnerInstallError, RunnerDowngradeError, launcherSummary } = await import('./install-cmd-4PXPAFQX.js');
|
|
5194
5194
|
let installedLayout = false;
|
|
5195
5195
|
let noService = "it starts the runner from the install layout, which needs a CLI installed with npm";
|
|
5196
5196
|
try {
|
|
@@ -5222,7 +5222,7 @@ ${C.yellow}The runner will not update itself: ${installErr.message}${C.reset}
|
|
|
5222
5222
|
let serviceUp = false;
|
|
5223
5223
|
let restart;
|
|
5224
5224
|
if (installedLayout) {
|
|
5225
|
-
const { installServiceCommand } = await import('./command-
|
|
5225
|
+
const { installServiceCommand } = await import('./command-NLWZT7KR.js');
|
|
5226
5226
|
const service = await installServiceCommand({
|
|
5227
5227
|
configPath,
|
|
5228
5228
|
entryPath: process.argv[1] ?? "",
|
|
@@ -5266,12 +5266,12 @@ Next:
|
|
|
5266
5266
|
"after",
|
|
5267
5267
|
"\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"
|
|
5268
5268
|
).action(async (opts) => {
|
|
5269
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5270
|
-
const { buildRepositoryImage, RecipeError } = await import('./build-
|
|
5269
|
+
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5270
|
+
const { buildRepositoryImage, RecipeError } = await import('./build-JCYOHPLL.js');
|
|
5271
5271
|
const { currentCliBuild } = await import('./cli-build-K56DK4DS.js');
|
|
5272
|
-
const { createDockerHost } = await import('./docker-
|
|
5273
|
-
const { builderSpec } = await import('./builder-
|
|
5274
|
-
const { loadRunnerConfig } = await import('./config-
|
|
5272
|
+
const { createDockerHost } = await import('./docker-2IIRBQAB.js');
|
|
5273
|
+
const { builderSpec } = await import('./builder-HCTVP2O7.js');
|
|
5274
|
+
const { loadRunnerConfig } = await import('./config-TNV5HHLO.js');
|
|
5275
5275
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5276
5276
|
const loaded = (() => {
|
|
5277
5277
|
try {
|
|
@@ -5282,11 +5282,11 @@ Next:
|
|
|
5282
5282
|
})();
|
|
5283
5283
|
const memory = loaded?.build?.memory ?? "8g";
|
|
5284
5284
|
try {
|
|
5285
|
-
const { ensureRunnerIdentity } = await import('./runner-identity-
|
|
5285
|
+
const { ensureRunnerIdentity } = await import('./runner-identity-B37HHOZR.js');
|
|
5286
5286
|
await ensureRunnerIdentity(configPath, { log: (line) => console.error(line) }).catch((err) => {
|
|
5287
5287
|
console.error(`the runner's Docker identity could not be stored: ${err instanceof Error ? err.message : String(err)}`);
|
|
5288
5288
|
});
|
|
5289
|
-
const { imageTargetFor } = await import('./governing-source-
|
|
5289
|
+
const { imageTargetFor } = await import('./governing-source-KQMKM5CI.js');
|
|
5290
5290
|
const target = await imageTargetFor({ config: loaded, repository: opts.repository, fetchImpl: fetch });
|
|
5291
5291
|
if (!target.ok) {
|
|
5292
5292
|
if (opts.json) {
|
|
@@ -5349,25 +5349,25 @@ Next:
|
|
|
5349
5349
|
}
|
|
5350
5350
|
});
|
|
5351
5351
|
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) => {
|
|
5352
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5353
|
-
const { requestStop } = await import('./loop-
|
|
5352
|
+
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5353
|
+
const { requestStop } = await import('./loop-DO46LFUH.js');
|
|
5354
5354
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5355
|
-
const { runnerImageVersion } = await import('./image-tag-
|
|
5355
|
+
const { runnerImageVersion } = await import('./image-tag-TEOKZVD5.js');
|
|
5356
5356
|
await requestStop(configPath, Boolean(opts.now), void 0, { image: runnerImageVersion() !== void 0 });
|
|
5357
5357
|
});
|
|
5358
5358
|
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) => {
|
|
5359
|
-
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-
|
|
5360
|
-
const { jobsDir, runnerDir } = await import('./paths-
|
|
5361
|
-
const { listJobFiles, runnerProcessState } = await import('./loop-
|
|
5362
|
-
const { renderStatus } = await import('./status-
|
|
5363
|
-
const { readHousekeepingRecord } = await import('./record-
|
|
5359
|
+
const { defaultRunnerConfigPath, loadRunnerConfig } = await import('./config-TNV5HHLO.js');
|
|
5360
|
+
const { jobsDir, runnerDir } = await import('./paths-2VSGK6E2.js');
|
|
5361
|
+
const { listJobFiles, runnerProcessState } = await import('./loop-DO46LFUH.js');
|
|
5362
|
+
const { renderStatus } = await import('./status-2ICTDC2R.js');
|
|
5363
|
+
const { readHousekeepingRecord } = await import('./record-7SSRLSI2.js');
|
|
5364
5364
|
const path2 = await import('path');
|
|
5365
5365
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5366
5366
|
const all = listJobFiles(configPath);
|
|
5367
5367
|
const housekeeping = readHousekeepingRecord(runnerDir(configPath));
|
|
5368
|
-
const { readPendingUpdate } = await import('./pending-
|
|
5368
|
+
const { readPendingUpdate } = await import('./pending-SFZ2AYSK.js');
|
|
5369
5369
|
const pendingUpdate = readPendingUpdate(runnerDir(configPath));
|
|
5370
|
-
const { readImageStatus } = await import('./image-tag-
|
|
5370
|
+
const { readImageStatus } = await import('./image-tag-TEOKZVD5.js');
|
|
5371
5371
|
const image = readImageStatus(runnerDir(configPath));
|
|
5372
5372
|
let host = "unknown";
|
|
5373
5373
|
let concurrency = 1;
|
|
@@ -5381,7 +5381,7 @@ Next:
|
|
|
5381
5381
|
const service = await (async () => {
|
|
5382
5382
|
if (process.platform !== "linux" || !existsSync("/run/systemd/system")) return void 0;
|
|
5383
5383
|
const { inspectService, realInspectProbes } = await import('./inspect-L7JIBK3Y.js');
|
|
5384
|
-
const { DEFAULT_UNIT_NAME } = await import('./install-
|
|
5384
|
+
const { DEFAULT_UNIT_NAME } = await import('./install-NPTR35MG.js');
|
|
5385
5385
|
const facts = inspectService(DEFAULT_UNIT_NAME, path2.dirname(configPath), realInspectProbes());
|
|
5386
5386
|
return facts === void 0 ? void 0 : { unit: facts.unit, running: facts.mainPid !== void 0, delegated: facts.delegate };
|
|
5387
5387
|
})();
|
|
@@ -5418,9 +5418,9 @@ Next:
|
|
|
5418
5418
|
);
|
|
5419
5419
|
});
|
|
5420
5420
|
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) => {
|
|
5421
|
-
const { defaultRunnerConfigPath } = await import('./config-
|
|
5422
|
-
const { listJobFiles } = await import('./loop-
|
|
5423
|
-
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-
|
|
5421
|
+
const { defaultRunnerConfigPath } = await import('./config-TNV5HHLO.js');
|
|
5422
|
+
const { listJobFiles } = await import('./loop-DO46LFUH.js');
|
|
5423
|
+
const { newestAttempt, logPathFor, tail, RunnerLogsError } = await import('./logs-Z4L4I3OR.js');
|
|
5424
5424
|
const configPath = opts.config ?? defaultRunnerConfigPath();
|
|
5425
5425
|
const item = parseTrackerNumber(itemArg);
|
|
5426
5426
|
if (item === void 0) {
|
|
@@ -5651,7 +5651,7 @@ caller from the bearer token, the gateway answers 401 without that header.
|
|
|
5651
5651
|
"after",
|
|
5652
5652
|
"\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"
|
|
5653
5653
|
).action(async (opts) => {
|
|
5654
|
-
const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-
|
|
5654
|
+
const { runMcpServe, handleMcpServeError } = await import('./mcp-serve-cmd-NQM2WDYI.js');
|
|
5655
5655
|
try {
|
|
5656
5656
|
await runMcpServe({ url: opts.url, appId: opts.appId });
|
|
5657
5657
|
} catch (err) {
|