@outerlayer/cli 0.23.0 → 0.25.0
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 +26 -0
- package/README.md +13 -0
- package/dist/{agent-setup-SNDCEHG2.js → agent-setup-PDIIGMKE.js} +7 -7
- package/dist/{bridge-QFN3KJP6.js → bridge-5KZ36YDG.js} +3 -3
- package/dist/build-Q2OBF77R.js +12 -0
- package/dist/build-info.json +1 -1
- package/dist/{builder-7FBQAWQZ.js → builder-PRSCX5AH.js} +7 -7
- package/dist/{check-3CGLWMHM.js → check-EPYRTE3R.js} +40 -37
- package/dist/{chunk-URWYRAIC.js → chunk-2K3TCQHW.js} +1 -3
- package/dist/{chunk-Z42JY3LQ.js → chunk-2N72GPS2.js} +3 -3
- package/dist/{chunk-WY7HFY62.js → chunk-34ANPNVB.js} +3 -3
- package/dist/{chunk-QSEPKZXR.js → chunk-3I44PQ26.js} +206 -57
- package/dist/{chunk-ZKWKQIJU.js → chunk-4S4VBDSO.js} +1 -1
- package/dist/chunk-5222PA6S.js +66 -0
- package/dist/{chunk-GXV73IIS.js → chunk-6CNHXHI2.js} +17 -5
- package/dist/{chunk-NYTZ7HVN.js → chunk-7OWPLRJR.js} +1 -1
- package/dist/{chunk-EFB3FGLC.js → chunk-ATGHVEU4.js} +1 -1
- package/dist/{chunk-QILR6TZP.js → chunk-AXPCGD46.js} +5 -5
- package/dist/{chunk-CBCKD6DO.js → chunk-D4AMAEZ7.js} +12 -11
- package/dist/{chunk-XACXXKQ5.js → chunk-DEBOL6ON.js} +1 -1
- package/dist/{chunk-XGPC3IOR.js → chunk-FXUVXSY2.js} +2 -2
- package/dist/{chunk-6AOZD3LY.js → chunk-HBLLZLOH.js} +3 -3
- package/dist/{chunk-ZLZ3XVPI.js → chunk-HWEIFHSW.js} +3 -3
- package/dist/{chunk-D64E222W.js → chunk-IDJIWKTY.js} +3 -3
- package/dist/{chunk-OBCFK4QD.js → chunk-IGRRD7PX.js} +11 -7
- package/dist/{chunk-GISNHSYL.js → chunk-JGD5TWQ2.js} +4 -2
- package/dist/{chunk-2TT7DEMZ.js → chunk-JKILLWZF.js} +11 -9
- package/dist/{chunk-V5CG75NX.js → chunk-JWRX5ZTT.js} +6 -2
- package/dist/{chunk-XOEV4FVK.js → chunk-K5WVK7IC.js} +1 -1
- package/dist/{chunk-TFGXOHF6.js → chunk-L2FZLBF7.js} +278 -40
- package/dist/{chunk-QS43O4DR.js → chunk-M4B6QKNZ.js} +1 -1
- package/dist/{chunk-UF5L4BAI.js → chunk-O2WYUIK7.js} +1 -1
- package/dist/{chunk-276D7BJ7.js → chunk-QMQC6JCO.js} +1 -1
- package/dist/{chunk-OGMZJWWD.js → chunk-QUGYGO6L.js} +6 -6
- package/dist/{chunk-JV4YGAAW.js → chunk-QXNJWSTM.js} +5 -5
- package/dist/{chunk-3W333NFO.js → chunk-RGW7ERF3.js} +15 -4
- package/dist/{chunk-I2UOAV7X.js → chunk-TQMI335S.js} +4 -1
- package/dist/{chunk-WXJXHZVB.js → chunk-UNF7MWEL.js} +1 -1
- package/dist/{chunk-FX6IHR5C.js → chunk-VMF5LK3D.js} +8 -8
- package/dist/{chunk-C2XZBNHY.js → chunk-VNGENFOG.js} +19 -6
- package/dist/{chunk-G3LHWUBK.js → chunk-VPUNOGXO.js} +6 -6
- package/dist/{chunk-C64D7HR3.js → chunk-X5LNCIZT.js} +19 -10
- package/dist/{chunk-2Q3PZ42G.js → chunk-XGJUNNXL.js} +1 -1
- package/dist/{chunk-BOG4ENP7.js → chunk-XHXDCYSK.js} +185 -38
- package/dist/{chunk-CQAEV3Z5.js → chunk-XRYUJTAT.js} +8 -1
- package/dist/{chunk-KGKFEONR.js → chunk-YMKQVCKC.js} +5 -5
- package/dist/{chunk-DJYOCD65.js → chunk-YTTHDPWF.js} +5 -5
- package/dist/{chunk-4AVDD7VX.js → chunk-ZGMQQWCV.js} +2 -2
- package/dist/{chunk-IHNQWF6F.js → chunk-ZI2ZVWKT.js} +1 -1
- package/dist/{chunk-OW52QLK3.js → chunk-ZODVSFI4.js} +1 -1
- package/dist/chunk-ZVB57WI6.js +19 -0
- package/dist/{claude-launcher-KEESTJHO.js → claude-launcher-WGOCLTG6.js} +1 -1
- package/dist/{cli-44WGGICQ.js → cli-2LGSPAYZ.js} +131 -97
- package/dist/command-ITLPJ5XU.js +533 -0
- package/dist/{config-H4QS332G.js → config-JJ3EO7SB.js} +3 -3
- package/dist/connect-cmd-JFDZKPND.js +25 -0
- package/dist/container-start-X22OXY6E.js +179 -0
- package/dist/{control-plane-launch-SEYCOZFH.js → control-plane-launch-ZFT6SI4N.js} +6 -6
- package/dist/{dist-SOH3O24Y.js → dist-2APO44JG.js} +1 -1
- package/dist/{docker-KMK4LOET.js → docker-PQHWAY5J.js} +7 -7
- package/dist/{doctor-4H77CEB7.js → doctor-73GNT4VV.js} +90 -31
- package/dist/{emit-artifact-cmd-XCZ3ALLV.js → emit-artifact-cmd-AIOTX6YT.js} +14 -11
- package/dist/{emit-criteria-cmd-JE72JHKJ.js → emit-criteria-cmd-7PJINOHA.js} +11 -8
- package/dist/{emit-finding-cmd-ILIDRMYN.js → emit-finding-cmd-JRDSZ4DR.js} +11 -8
- package/dist/{emit-result-cmd-WPKG5YAS.js → emit-result-cmd-ZGF6Q6OP.js} +14 -11
- package/dist/{emit-step-cmd-OVMLQSL6.js → emit-step-cmd-DUR34STQ.js} +12 -9
- package/dist/{exec-client-ATPF2DDB.js → exec-client-S5IA7JRG.js} +4 -4
- package/dist/{governing-source-EQBKPME7.js → governing-source-DKJABQAT.js} +12 -11
- package/dist/{guest-init-HWSE7W6L.js → guest-init-TOSKPGPF.js} +5 -5
- package/dist/{hook-fast-27SHD72I.js → hook-fast-NEELST6G.js} +1 -1
- package/dist/host-key-ICJEQBWH.js +9 -0
- package/dist/image-tag-6KJOGBQK.js +10 -0
- package/dist/index.js +4 -4
- package/dist/{init-HAAHIQFN.js → init-NE3VR3EY.js} +26 -23
- package/dist/{init-WQ62BXDN.js → init-SKOXNJND.js} +26 -23
- package/dist/{init-cmd-VPFIDY64.js → init-cmd-UEDOJ7LG.js} +12 -12
- package/dist/{init-update-UZIJ2FMU.js → init-update-VKZ4S6HH.js} +36 -10
- package/dist/{install-SFACZU7E.js → install-MPEJJ7X6.js} +5 -5
- package/dist/install-cmd-SE6NCTJK.js +12 -0
- package/dist/job-state-format-WJQGQB6F.js +6 -0
- package/dist/{logs-N3ZX7HFV.js → logs-T4ERSOQ4.js} +3 -3
- package/dist/loop-BPVEA5OC.js +78 -0
- package/dist/{machine-PGDRWPI2.js → machine-G3GICXQN.js} +22 -19
- package/dist/{mcp-serve-cmd-CNRC5AL5.js → mcp-serve-cmd-7M4VLNI4.js} +5 -5
- package/dist/{paths-AKX2OOLF.js → paths-2KGM2LZV.js} +3 -3
- package/dist/pending-BGLMTB5Q.js +9 -0
- package/dist/{pidfile-G2J5WBQS.js → pidfile-VYBH3IMN.js} +4 -4
- package/dist/{record-Q4IEYIVV.js → record-GNOHDJ2O.js} +4 -4
- package/dist/{relay-PSZ4LGMW.js → relay-GFPPD6GF.js} +1 -1
- package/dist/relay-protocol-HELO5SNH.js +6 -0
- package/dist/{runner-env-GZHXM27A.js → runner-env-GUFV544G.js} +6 -6
- package/dist/{runner-identity-IIZ3RK7M.js → runner-identity-J6DXJ6MF.js} +7 -7
- package/dist/{runner-key-BPP5XRYR.js → runner-key-L55O7Y7W.js} +26 -23
- package/dist/{session-sender-EKKZ5DEU.js → session-sender-LXTASWBY.js} +15 -12
- package/dist/{spec-cmd-JDHGNFVJ.js → spec-cmd-G2JNXKD7.js} +12 -9
- package/dist/{status-UCQDEMFX.js → status-U6DXOR6C.js} +43 -28
- package/dist/{sync-cmd-NSVXOYFJ.js → sync-cmd-VPNS5ITY.js} +14 -11
- package/dist/{watch-NQVZWPBJ.js → watch-ZOCYD2NE.js} +14 -11
- package/dist/{work-claim-cmd-FPJXQAXP.js → work-claim-cmd-BUMIPJNF.js} +15 -12
- package/dist/{work-cmd-FMPDXPU6.js → work-cmd-LRAXUOJV.js} +12 -9
- package/dist/{work-comment-cmd-ZVUE2IUN.js → work-comment-cmd-4RDIBUYO.js} +12 -9
- package/dist/{work-logs-cmd-CQH2SYT4.js → work-logs-cmd-YYN2CPJQ.js} +12 -9
- package/dist/{work-open-pr-cmd-YY2OGJOI.js → work-open-pr-cmd-3MCND2LZ.js} +13 -10
- package/dist/{work-pr-cmd-EHFTEVJO.js → work-pr-cmd-BODEZAXN.js} +12 -9
- package/dist/{work-stop-cmd-LGWSBSBT.js → work-stop-cmd-P7HXVKEG.js} +12 -9
- package/package.json +2 -2
- package/skill-pack/maintained/outerlayer-build/SKILL.md +1 -1
- package/skill-pack/maintained/outerlayer-build/references/agent-briefs.md +3 -2
- package/skill-pack/maintained/outerlayer-build/references/review-briefs.md +3 -1
- package/dist/build-WHHFA7KM.js +0 -12
- package/dist/command-4FAP2D3P.js +0 -207
- package/dist/connect-cmd-6DUTUK63.js +0 -22
- package/dist/host-key-ATB23GI3.js +0 -9
- package/dist/install-cmd-6HTP7I43.js +0 -12
- package/dist/loop-JPW2QJ64.js +0 -75
- package/dist/pending-7SGWZCEH.js +0 -9
- package/dist/relay-protocol-K7KP2SPI.js +0 -6
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-JKILLWZF.js';
|
|
4
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-VNGENFOG.js';
|
|
5
|
+
import { MIN_ENGINE_MAJOR } from './chunk-XHXDCYSK.js';
|
|
6
|
+
import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-5222PA6S.js';
|
|
7
|
+
import './chunk-TQMI335S.js';
|
|
8
|
+
import { isAgentName, AGENT_COMMANDS } from './chunk-ZGMQQWCV.js';
|
|
9
|
+
import './chunk-IGRRD7PX.js';
|
|
10
|
+
import './chunk-6MZSX4M7.js';
|
|
11
|
+
import './chunk-AXPCGD46.js';
|
|
12
|
+
import './chunk-DEBOL6ON.js';
|
|
13
|
+
import './chunk-JBJTC3UU.js';
|
|
14
|
+
import './chunk-OGFGZQA3.js';
|
|
15
|
+
import './chunk-QUGYGO6L.js';
|
|
16
|
+
import './chunk-RGW7ERF3.js';
|
|
17
|
+
import './chunk-7OWPLRJR.js';
|
|
18
|
+
import './chunk-XGJUNNXL.js';
|
|
19
|
+
import './chunk-YMKQVCKC.js';
|
|
20
|
+
import './chunk-X5LNCIZT.js';
|
|
21
|
+
import './chunk-HWEIFHSW.js';
|
|
22
|
+
import './chunk-6CNHXHI2.js';
|
|
23
|
+
import './chunk-BUP5N3X6.js';
|
|
24
|
+
import './chunk-XSPA5ODY.js';
|
|
25
|
+
import './chunk-GOSFARMS.js';
|
|
26
|
+
import './chunk-JWRX5ZTT.js';
|
|
27
|
+
import './chunk-UXYLWVTQ.js';
|
|
28
|
+
import './chunk-7RQ73DLO.js';
|
|
29
|
+
import './chunk-FXUVXSY2.js';
|
|
30
|
+
import './chunk-MQ743JX3.js';
|
|
31
|
+
import './chunk-M4B6QKNZ.js';
|
|
32
|
+
import './chunk-ZJSNLVCE.js';
|
|
33
|
+
import './chunk-VPEGE3QZ.js';
|
|
34
|
+
import './chunk-HCVLP7XA.js';
|
|
35
|
+
import './chunk-BJ3KTMDH.js';
|
|
36
|
+
import './chunk-D4AMAEZ7.js';
|
|
37
|
+
import './chunk-ANPNT6PM.js';
|
|
38
|
+
import './chunk-EABW6AJQ.js';
|
|
39
|
+
import './chunk-JKNYTNYD.js';
|
|
40
|
+
import './chunk-HBISTTG3.js';
|
|
41
|
+
import './chunk-WZBHBH3J.js';
|
|
42
|
+
import './chunk-CRB3POP4.js';
|
|
43
|
+
import './chunk-YQR6E6OV.js';
|
|
44
|
+
import './chunk-RKOTJQVG.js';
|
|
45
|
+
import './chunk-QZBXLLTV.js';
|
|
46
|
+
import './chunk-VNVZDWO3.js';
|
|
47
|
+
import './chunk-RA3O54FC.js';
|
|
48
|
+
import './chunk-ZODVSFI4.js';
|
|
49
|
+
import './chunk-ZI2ZVWKT.js';
|
|
50
|
+
import { CLAUDE_CREDENTIAL_VARIABLES } from './chunk-2K3TCQHW.js';
|
|
51
|
+
import './chunk-JGD5TWQ2.js';
|
|
52
|
+
import './chunk-Z5GEFMRW.js';
|
|
53
|
+
import { existsSync, readFileSync } from 'fs';
|
|
54
|
+
|
|
55
|
+
createRequire(import.meta.url);
|
|
56
|
+
var DOCKER_SOCKET = "/var/run/docker.sock";
|
|
57
|
+
var REQUIRED = [
|
|
58
|
+
["OUTERLAYER_URL", "the factory's gateway address"],
|
|
59
|
+
["OUTERLAYER_APP_ID", "the factory's id"],
|
|
60
|
+
["OUTERLAYER_API_KEY", "a runner key"]
|
|
61
|
+
];
|
|
62
|
+
var NAME_VARIABLE = "OUTERLAYER_RUNNER_NAME";
|
|
63
|
+
var OLD_NAME_VARIABLE = "OUTERLAYER_HOST";
|
|
64
|
+
function runnerName(env) {
|
|
65
|
+
const name = set(env, NAME_VARIABLE);
|
|
66
|
+
const old = set(env, OLD_NAME_VARIABLE);
|
|
67
|
+
if (name !== void 0 && old !== void 0 && name !== old) {
|
|
68
|
+
return { name: void 0, conflict: `${NAME_VARIABLE} is ${name} and ${OLD_NAME_VARIABLE} is ${old}; set ${NAME_VARIABLE} only, since ${OLD_NAME_VARIABLE} is its earlier name` };
|
|
69
|
+
}
|
|
70
|
+
return { name: name ?? old };
|
|
71
|
+
}
|
|
72
|
+
var KEY_MIN_SHOWN = 16;
|
|
73
|
+
var refuse = (message) => ({ ok: false, message });
|
|
74
|
+
var set = (env, name) => {
|
|
75
|
+
const value = env[name]?.trim();
|
|
76
|
+
return value === void 0 || value === "" ? void 0 : value;
|
|
77
|
+
};
|
|
78
|
+
var keyHint = (key) => {
|
|
79
|
+
if (key === "") return "none";
|
|
80
|
+
return key.length < KEY_MIN_SHOWN ? `a ${key.length}-character key` : `\u2026${key.slice(-4)}`;
|
|
81
|
+
};
|
|
82
|
+
var withoutSlash = (url) => url.replace(/\/+$/, "");
|
|
83
|
+
function disagreements(config, env) {
|
|
84
|
+
const lines = [];
|
|
85
|
+
const url = set(env, "OUTERLAYER_URL");
|
|
86
|
+
const appId = set(env, "OUTERLAYER_APP_ID");
|
|
87
|
+
const stored = { url: String(config.url ?? ""), appId: String(config.appId ?? "") };
|
|
88
|
+
if (withoutSlash(stored.url) !== withoutSlash(url) || stored.appId !== appId) {
|
|
89
|
+
lines.push(`factory: the volume has ${stored.url} (app ${stored.appId}); the variables name ${url} (app ${appId})`);
|
|
90
|
+
}
|
|
91
|
+
const key = set(env, "OUTERLAYER_API_KEY");
|
|
92
|
+
if (String(config.apiKey ?? "") !== key) {
|
|
93
|
+
lines.push(`runner key: the volume has ${keyHint(String(config.apiKey ?? ""))}; the variables have ${keyHint(key)}`);
|
|
94
|
+
}
|
|
95
|
+
const host = runnerName(env).name;
|
|
96
|
+
const runner = config.runner;
|
|
97
|
+
const storedHost = runner?.name ?? runner?.host;
|
|
98
|
+
if (runner !== void 0 && storedHost !== host) {
|
|
99
|
+
lines.push(`runner name: the volume has ${typeof storedHost === "string" ? storedHost : "none"}; the variables name ${host}`);
|
|
100
|
+
}
|
|
101
|
+
return lines;
|
|
102
|
+
}
|
|
103
|
+
function readConfig(configPath) {
|
|
104
|
+
try {
|
|
105
|
+
return JSON.parse(readFileSync(configPath, "utf8"));
|
|
106
|
+
} catch (err) {
|
|
107
|
+
return new RunnerInitError(`${configPath}: not valid JSON (${err instanceof Error ? err.message : String(err)})`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
async function containerStart(deps) {
|
|
111
|
+
const { env, configPath } = deps;
|
|
112
|
+
const version = runnerImageVersion(env);
|
|
113
|
+
if (version === void 0) {
|
|
114
|
+
return refuse(`${IMAGE_VERSION_VARIABLE} is not set. This command is the runner container image's entrypoint; to run a runner on a machine, use \`outerlayer runner start\`.`);
|
|
115
|
+
}
|
|
116
|
+
const named = runnerName(env);
|
|
117
|
+
if (named.conflict !== void 0) return refuse(named.conflict);
|
|
118
|
+
const missing = REQUIRED.filter(([name]) => set(env, name) === void 0).map(([name, what]) => `${name} (${what})`);
|
|
119
|
+
if (named.name === void 0) missing.push(`${NAME_VARIABLE} (the runner's name, which the factory shows)`);
|
|
120
|
+
const agent = set(env, "OUTERLAYER_AGENT") ?? "claude";
|
|
121
|
+
if (!isAgentName(agent)) {
|
|
122
|
+
return refuse(`OUTERLAYER_AGENT is ${agent}, and the image writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")} only. Leave it unset to use claude.`);
|
|
123
|
+
}
|
|
124
|
+
if (!CLAUDE_CREDENTIAL_VARIABLES.some((name) => set(env, name) !== void 0)) {
|
|
125
|
+
missing.push(`one Claude credential: ${CLAUDE_CREDENTIAL_VARIABLES.join(", ")}`);
|
|
126
|
+
}
|
|
127
|
+
if (missing.length > 0) {
|
|
128
|
+
return refuse(`the container needs these variables, and they are not set: ${missing.join("; ")}. Put them in the file you pass to docker run with --env-file.`);
|
|
129
|
+
}
|
|
130
|
+
const socketPresent = deps.socketPresent ?? existsSync;
|
|
131
|
+
if (!socketPresent(DOCKER_SOCKET)) {
|
|
132
|
+
return refuse(
|
|
133
|
+
`${DOCKER_SOCKET} is not in the container. The runner starts each build as a container on the host's Docker, so start this container with -v ${DOCKER_SOCKET}:${DOCKER_SOCKET}.`
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
const machine = { ...(deps.machine ?? (() => detectMachine()))(), inImage: true };
|
|
137
|
+
if (!supportsContainerBuilds(machine)) {
|
|
138
|
+
return refuse(
|
|
139
|
+
`The container reaches ${describeMachineDocker(machine)} through ${DOCKER_SOCKET}, and builds need Docker Engine in a version that isolates a build (${MIN_ENGINE_MAJOR} or later), on Docker Engine or Docker Desktop. Check that the socket is the host's Docker and that it is running.`
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
const url = set(env, "OUTERLAYER_URL");
|
|
143
|
+
const appId = set(env, "OUTERLAYER_APP_ID");
|
|
144
|
+
const apiKey = set(env, "OUTERLAYER_API_KEY");
|
|
145
|
+
const host = named.name;
|
|
146
|
+
if (existsSync(configPath)) {
|
|
147
|
+
const stored = readConfig(configPath);
|
|
148
|
+
if (stored instanceof RunnerInitError) return refuse(stored.message);
|
|
149
|
+
const different = disagreements(stored, env);
|
|
150
|
+
if (different.length > 0) {
|
|
151
|
+
return refuse(
|
|
152
|
+
`the config in the volume and the container's variables disagree, so the runner does not start:
|
|
153
|
+
${different.join("\n ")}
|
|
154
|
+
Change the variables to match the volume, or use a new volume to make a new runner.`
|
|
155
|
+
);
|
|
156
|
+
}
|
|
157
|
+
if (stored.runner === void 0) {
|
|
158
|
+
try {
|
|
159
|
+
const prepared = prepareRunnerInit(configPath, { machine, requireContainer: true, agent, credentialInEnvironment: true, host });
|
|
160
|
+
writeRunnerInit(prepared);
|
|
161
|
+
} catch (err) {
|
|
162
|
+
if (err instanceof RunnerInitError) return refuse(err.message);
|
|
163
|
+
throw err;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
} else {
|
|
167
|
+
try {
|
|
168
|
+
const prepared = prepareRunnerInit(configPath, { machine, requireContainer: true, agent, credentialInEnvironment: true, host, keyFromLogin: true });
|
|
169
|
+
writeRunnerInit(prepared, { url, apiKey, appId });
|
|
170
|
+
} catch (err) {
|
|
171
|
+
if (err instanceof RunnerInitError) return refuse(err.message);
|
|
172
|
+
throw err;
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
await deps.start(configPath, { fetchImpl: deps.fetchImpl ?? fetch, image: { version, ...deps.exit === void 0 ? {} : { exit: deps.exit } } });
|
|
176
|
+
return { ok: true };
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
export { containerStart };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { parseOwnerRepo, lookupGoverningSource, defaultGitRunner, materializeContext } from './chunk-
|
|
3
|
+
import { parseOwnerRepo, lookupGoverningSource, defaultGitRunner, materializeContext } from './chunk-FXUVXSY2.js';
|
|
4
4
|
import './chunk-MQ743JX3.js';
|
|
5
|
-
import { resolveGatewayCredentials, defaultFetch } from './chunk-
|
|
5
|
+
import { resolveGatewayCredentials, defaultFetch } from './chunk-M4B6QKNZ.js';
|
|
6
6
|
import './chunk-ZJSNLVCE.js';
|
|
7
7
|
import { layoutRefusalMessage, unsupportedLayout, sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-VPEGE3QZ.js';
|
|
8
8
|
import './chunk-HCVLP7XA.js';
|
|
@@ -17,10 +17,10 @@ import './chunk-RKOTJQVG.js';
|
|
|
17
17
|
import './chunk-QZBXLLTV.js';
|
|
18
18
|
import './chunk-VNVZDWO3.js';
|
|
19
19
|
import './chunk-RA3O54FC.js';
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
20
|
+
import './chunk-ZODVSFI4.js';
|
|
21
|
+
import './chunk-ZI2ZVWKT.js';
|
|
22
|
+
import './chunk-2K3TCQHW.js';
|
|
23
|
+
import './chunk-JGD5TWQ2.js';
|
|
24
24
|
import './chunk-Z5GEFMRW.js';
|
|
25
25
|
import { execFileSync } from 'child_process';
|
|
26
26
|
import { existsSync, readFileSync, mkdirSync, mkdtempSync, cpSync, renameSync, writeFileSync, rmSync, readdirSync } from 'fs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { CaptureDaemon, PRICE_TABLE_SOURCE, SECRET_PATTERNS, SOURCE_ADAPTERS, SUPPORTED_VERSIONS, StatuslineAggregator, WARNING_CODES, claudeCodeAdapter, codexAdapter, codexSessionIdFromPath, compareVersions, completePrefix, computeStatuslineState, costOfUsage, cursorAdapter, cursorChatIdFromPath, defaultCodexSessionsDir, defaultCursorChatsDir, defaultCursorProjectsDir, defaultProjectsDir, defaultRawDir, enrichSessionRepo, findCodexRollouts, findCursorChats, findTranscripts, isNewerThanSupported, isPriceKnown, normalizeErrorSignature, normalizeRemote, parseCodexRollout, parseCursorChat, parseTranscript, readStatuslineState, readSyncWatermarkMs, remoteLookupFailed, resolvePrice, resolveRepoIdentity, rootChildIds, scanAll, scrubDeep, scrubText, sessionIdFromPath, setCustomScrubbers, setLocalIdentity, setRepoRoot, statuslineStatePath, tailTranscript, workspacesByHash, writeStatuslineState } from './chunk-
|
|
3
|
+
export { CaptureDaemon, PRICE_TABLE_SOURCE, SECRET_PATTERNS, SOURCE_ADAPTERS, SUPPORTED_VERSIONS, StatuslineAggregator, WARNING_CODES, claudeCodeAdapter, codexAdapter, codexSessionIdFromPath, compareVersions, completePrefix, computeStatuslineState, costOfUsage, cursorAdapter, cursorChatIdFromPath, defaultCodexSessionsDir, defaultCursorChatsDir, defaultCursorProjectsDir, defaultProjectsDir, defaultRawDir, enrichSessionRepo, findCodexRollouts, findCursorChats, findTranscripts, isNewerThanSupported, isPriceKnown, normalizeErrorSignature, normalizeRemote, parseCodexRollout, parseCursorChat, parseTranscript, readStatuslineState, readSyncWatermarkMs, remoteLookupFailed, resolvePrice, resolveRepoIdentity, rootChildIds, scanAll, scrubDeep, scrubText, sessionIdFromPath, setCustomScrubbers, setLocalIdentity, setRepoRoot, statuslineStatePath, tailTranscript, workspacesByHash, writeStatuslineState } from './chunk-D4AMAEZ7.js';
|
|
4
4
|
import './chunk-QZBXLLTV.js';
|
|
5
5
|
import './chunk-Z5GEFMRW.js';
|
|
6
6
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { childEnvironment, createDockerHost, spawnRun } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { childEnvironment, createDockerHost, spawnRun } from './chunk-QUGYGO6L.js';
|
|
4
|
+
import './chunk-RGW7ERF3.js';
|
|
5
5
|
import './chunk-7RQ73DLO.js';
|
|
6
|
-
import './chunk-
|
|
6
|
+
import './chunk-D4AMAEZ7.js';
|
|
7
7
|
import './chunk-QZBXLLTV.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
8
|
+
import './chunk-ZODVSFI4.js';
|
|
9
|
+
import './chunk-ZI2ZVWKT.js';
|
|
10
|
+
import './chunk-2K3TCQHW.js';
|
|
11
|
+
import './chunk-JGD5TWQ2.js';
|
|
12
12
|
import './chunk-Z5GEFMRW.js';
|
|
13
13
|
|
|
14
14
|
createRequire(import.meta.url);
|
|
@@ -1,44 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import {
|
|
3
|
+
import { launcherCheck } from './chunk-ATGHVEU4.js';
|
|
4
|
+
import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-VPUNOGXO.js';
|
|
5
|
+
import './chunk-QMQC6JCO.js';
|
|
4
6
|
import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
|
|
5
|
-
import { launcherCheck } from './chunk-EFB3FGLC.js';
|
|
6
|
-
import './chunk-276D7BJ7.js';
|
|
7
7
|
import { RepoFilter } from './chunk-TBT347UY.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-
|
|
10
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
8
|
+
import './chunk-JKILLWZF.js';
|
|
9
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-VNGENFOG.js';
|
|
10
|
+
import { MIN_ENGINE_MAJOR, probeHelper, helperSocketPath } from './chunk-XHXDCYSK.js';
|
|
11
|
+
import { runnerImageVersion, imageAdvice, readUpdateStatus, imageTag, pullInstruction } from './chunk-5222PA6S.js';
|
|
12
|
+
import './chunk-TQMI335S.js';
|
|
13
|
+
import './chunk-ZGMQQWCV.js';
|
|
14
|
+
import './chunk-IGRRD7PX.js';
|
|
13
15
|
import './chunk-6MZSX4M7.js';
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
+
import './chunk-AXPCGD46.js';
|
|
17
|
+
import './chunk-DEBOL6ON.js';
|
|
16
18
|
import './chunk-JBJTC3UU.js';
|
|
17
19
|
import './chunk-OGFGZQA3.js';
|
|
18
|
-
import { resolveDevcontainerCli, buildxState, spawnRun } from './chunk-
|
|
19
|
-
import { locateRecipe, assertBuildable, readRecipe, RecipeError, CLAUDE_CODE_VERSION } from './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-
|
|
24
|
-
import './chunk-
|
|
25
|
-
import './chunk-
|
|
20
|
+
import { resolveDevcontainerCli, buildxState, spawnRun } from './chunk-QUGYGO6L.js';
|
|
21
|
+
import { locateRecipe, assertBuildable, readRecipe, RecipeError, CLAUDE_CODE_VERSION } from './chunk-RGW7ERF3.js';
|
|
22
|
+
import './chunk-7OWPLRJR.js';
|
|
23
|
+
import './chunk-XGJUNNXL.js';
|
|
24
|
+
import './chunk-YMKQVCKC.js';
|
|
25
|
+
import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-X5LNCIZT.js';
|
|
26
|
+
import './chunk-HWEIFHSW.js';
|
|
27
|
+
import './chunk-6CNHXHI2.js';
|
|
26
28
|
import './chunk-BUP5N3X6.js';
|
|
27
29
|
import './chunk-XSPA5ODY.js';
|
|
28
30
|
import './chunk-GOSFARMS.js';
|
|
29
|
-
import { builtinKind } from './chunk-
|
|
31
|
+
import { builtinKind } from './chunk-JWRX5ZTT.js';
|
|
30
32
|
import { allowHostProblem, MAX_ALLOW_HOSTS } from './chunk-UXYLWVTQ.js';
|
|
31
33
|
import { parseSize } from './chunk-7RQ73DLO.js';
|
|
32
|
-
import { defaultGitRunner } from './chunk-
|
|
34
|
+
import { defaultGitRunner } from './chunk-FXUVXSY2.js';
|
|
33
35
|
import './chunk-MQ743JX3.js';
|
|
34
|
-
import { defaultFetch } from './chunk-
|
|
36
|
+
import { defaultFetch } from './chunk-M4B6QKNZ.js';
|
|
35
37
|
import './chunk-ZJSNLVCE.js';
|
|
36
38
|
import './chunk-VPEGE3QZ.js';
|
|
37
39
|
import './chunk-HCVLP7XA.js';
|
|
38
40
|
import './chunk-BJ3KTMDH.js';
|
|
39
|
-
import { compareVersions } from './chunk-
|
|
41
|
+
import { compareVersions } from './chunk-D4AMAEZ7.js';
|
|
40
42
|
import './chunk-ANPNT6PM.js';
|
|
41
43
|
import './chunk-EABW6AJQ.js';
|
|
44
|
+
import './chunk-JKNYTNYD.js';
|
|
42
45
|
import './chunk-HBISTTG3.js';
|
|
43
46
|
import './chunk-WZBHBH3J.js';
|
|
44
47
|
import './chunk-CRB3POP4.js';
|
|
@@ -47,10 +50,10 @@ import './chunk-RKOTJQVG.js';
|
|
|
47
50
|
import './chunk-QZBXLLTV.js';
|
|
48
51
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
49
52
|
import './chunk-RA3O54FC.js';
|
|
50
|
-
import { loadHostKey } from './chunk-
|
|
51
|
-
import { runnerDir, hostKeyPath, jobsDir } from './chunk-
|
|
52
|
-
import './chunk-
|
|
53
|
-
import './chunk-
|
|
53
|
+
import { loadHostKey } from './chunk-ZODVSFI4.js';
|
|
54
|
+
import { runnerDir, hostKeyPath, jobsDir } from './chunk-ZI2ZVWKT.js';
|
|
55
|
+
import './chunk-2K3TCQHW.js';
|
|
56
|
+
import './chunk-JGD5TWQ2.js';
|
|
54
57
|
import './chunk-Z5GEFMRW.js';
|
|
55
58
|
import { spawnSync } from 'child_process';
|
|
56
59
|
import { existsSync, readdirSync, statSync, readFileSync } from 'fs';
|
|
@@ -123,6 +126,27 @@ function delegationCheck(service) {
|
|
|
123
126
|
fix: "run `outerlayer runner install --service --replace` to write the unit this CLI generates, which sets Delegate=yes"
|
|
124
127
|
};
|
|
125
128
|
}
|
|
129
|
+
var REINSTALL = "run `outerlayer runner install --service --replace` to install the root helper that starts each microVM build under Firecracker's jailer";
|
|
130
|
+
function helperCheck(facts) {
|
|
131
|
+
const name = "MicroVM jailer";
|
|
132
|
+
if (facts.present) {
|
|
133
|
+
return {
|
|
134
|
+
name,
|
|
135
|
+
status: "pass",
|
|
136
|
+
detail: `each microVM build runs under Firecracker's jailer (Firecracker ${facts.firecracker}), as a user of its own with no credentials, no shared group and no network, so a build that escaped its microVM would reach none of the runner's credentials`
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
const reaches = "a build that escaped its microVM would run as the runner's account and reach what that account holds: the Claude credential, the runner key, the host key, the host's `gh` login and its membership of the `docker` group";
|
|
140
|
+
if (facts.reason === "unpinned") {
|
|
141
|
+
return { name, status: "warn", detail: `this release of the CLI pins no root helper, so Firecracker runs as the runner's account: ${reaches}` };
|
|
142
|
+
}
|
|
143
|
+
return {
|
|
144
|
+
name,
|
|
145
|
+
status: "warn",
|
|
146
|
+
detail: `no usable root helper runs for this runner, so Firecracker runs as the runner's account: ${reaches} (${facts.detail})`,
|
|
147
|
+
fix: REINSTALL
|
|
148
|
+
};
|
|
149
|
+
}
|
|
126
150
|
|
|
127
151
|
// src/runner/image/doctor.ts
|
|
128
152
|
var LATEST_URL = "https://registry.npmjs.org/@anthropic-ai/claude-code/latest";
|
|
@@ -202,6 +226,7 @@ async function pinCheck(fetchImpl) {
|
|
|
202
226
|
}
|
|
203
227
|
return { name, status: "pass", detail: `images pin Claude Code ${CLAUDE_CODE_VERSION}; latest is ${latest}` };
|
|
204
228
|
}
|
|
229
|
+
var RUNNER_IMAGE_GUIDE = "https://docs.outerlayer.ai/run-the-runner-in-a-container";
|
|
205
230
|
function isolationCheck(machine, hooks) {
|
|
206
231
|
const name = "Build isolation";
|
|
207
232
|
const kind = builtinKind(hooks.provision);
|
|
@@ -210,7 +235,8 @@ function isolationCheck(machine, hooks) {
|
|
|
210
235
|
if (kind === "container") {
|
|
211
236
|
if (can) {
|
|
212
237
|
const where = machine.platform === "wsl2" ? " inside WSL2" : "";
|
|
213
|
-
|
|
238
|
+
const docker = machine.docker.kind === "desktop" ? "Docker Desktop with engine" : "Docker Engine";
|
|
239
|
+
return { name, status: "pass", detail: `builtin:container: builds run in containers (isolation: container) on ${docker} ${machine.docker.version}${where}` };
|
|
214
240
|
}
|
|
215
241
|
return {
|
|
216
242
|
name,
|
|
@@ -244,7 +270,7 @@ function isolationCheck(machine, hooks) {
|
|
|
244
270
|
name,
|
|
245
271
|
status: "warn",
|
|
246
272
|
detail: "builtin:process: builds are not isolated: they run as processes under this user (isolation: shared-user), and macOS cannot run container builds itself",
|
|
247
|
-
fix:
|
|
273
|
+
fix: `run the runner image on Docker Desktop (${RUNNER_IMAGE_GUIDE}), or run outerlayer runner init --vm to run the runner in a Linux VM; either way builds run in containers (isolation: container)`
|
|
248
274
|
};
|
|
249
275
|
}
|
|
250
276
|
if (can) {
|
|
@@ -256,7 +282,7 @@ function isolationCheck(machine, hooks) {
|
|
|
256
282
|
};
|
|
257
283
|
}
|
|
258
284
|
const reach = reachDockerStep(machine);
|
|
259
|
-
const fix = reach !== void 0 ? `isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later: ${reach}, then set both hooks to builtin:container` : machine.platform === "windows" ? `install Docker Engine inside WSL2 (version ${MIN_ENGINE_MAJOR} or later), run the runner from a WSL2 shell, and set both hooks to builtin:container; Docker Desktop
|
|
285
|
+
const fix = reach !== void 0 ? `isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later: ${reach}, then set both hooks to builtin:container` : machine.platform === "windows" ? `install Docker Engine inside WSL2 (version ${MIN_ENGINE_MAJOR} or later), run the runner from a WSL2 shell, and set both hooks to builtin:container; or run the runner image on Docker Desktop (${RUNNER_IMAGE_GUIDE})` : machine.docker.kind === "desktop" ? `isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later: install it and set both hooks to builtin:container, or run the runner image on Docker Desktop (${RUNNER_IMAGE_GUIDE})` : `isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later on Linux or WSL2: install it and set both hooks to builtin:container`;
|
|
260
286
|
return {
|
|
261
287
|
name,
|
|
262
288
|
status: "warn",
|
|
@@ -499,9 +525,36 @@ function allowHostsCheck(configPath, allowHosts) {
|
|
|
499
525
|
fix: reached.length === 0 ? "list the public hosts your builds need in runner.build.allowHosts; once a few builds have run, doctor lists the hosts they reached" : `review the hosts past builds reached and set runner.build.allowHosts to the ones they need: ${JSON.stringify(reached)}`
|
|
500
526
|
};
|
|
501
527
|
}
|
|
528
|
+
function runnerNameCheck(configPath) {
|
|
529
|
+
let runner;
|
|
530
|
+
try {
|
|
531
|
+
runner = JSON.parse(readFileSync(configPath, "utf8")).runner;
|
|
532
|
+
} catch {
|
|
533
|
+
return void 0;
|
|
534
|
+
}
|
|
535
|
+
if (runner?.host === void 0 || runner.name !== void 0) return void 0;
|
|
536
|
+
return {
|
|
537
|
+
name: "Runner name",
|
|
538
|
+
status: "warn",
|
|
539
|
+
detail: "the config names this runner with runner.host, the earlier name of runner.name; it still works",
|
|
540
|
+
fix: "rename runner.host to runner.name in the config file"
|
|
541
|
+
};
|
|
542
|
+
}
|
|
502
543
|
function launcherCheckOf(env) {
|
|
503
544
|
return launcherCheck({ home: env.home ?? homeFromEnv(), PATH: env.PATH ?? process.env.PATH });
|
|
504
545
|
}
|
|
546
|
+
function runnerImageCheck(env) {
|
|
547
|
+
const version = runnerImageVersion(env.env ?? process.env);
|
|
548
|
+
if (version === void 0) return void 0;
|
|
549
|
+
const name = "Runner image";
|
|
550
|
+
const advice = imageAdvice(version, readUpdateStatus(runnerDir(env.configPath)));
|
|
551
|
+
if (advice === void 0) return { name, status: "pass", detail: `runs ${imageTag(version)}` };
|
|
552
|
+
return advice.reason === "refused" ? { name, status: "fail", detail: `the factory refuses this runner as too old, so it claims nothing (image ${version})`, fix: pullInstruction(advice.tag) } : { name, status: "warn", detail: `the factory names a newer version than the ${version} this image runs`, fix: pullInstruction(advice.tag) };
|
|
553
|
+
}
|
|
554
|
+
async function helperFactsOf(env) {
|
|
555
|
+
const probe = await (env.helper ?? (() => probeHelper(env.service === void 0 ? void 0 : helperSocketPath(env.service.unit))))();
|
|
556
|
+
return probe.ok ? { present: true, firecracker: probe.firecracker } : { present: false, reason: probe.reason, detail: probe.detail };
|
|
557
|
+
}
|
|
505
558
|
async function runnerHostChecks(env) {
|
|
506
559
|
const dockerAvailable = env.dockerAvailable ?? (() => spawnSync("docker", ["info"], { stdio: "ignore" }).status === 0);
|
|
507
560
|
const devcontainerRunnable = env.devcontainerRunnable ?? (() => devcontainerCliRunnable());
|
|
@@ -510,17 +563,23 @@ async function runnerHostChecks(env) {
|
|
|
510
563
|
const recipes = existsSync(reposDir) ? directories(reposDir).flatMap(
|
|
511
564
|
(owner) => directories(join(reposDir, owner)).filter((name) => existsSync(join(reposDir, owner, name, ".git"))).map((name) => recipeCheck(reposDir, owner, name))
|
|
512
565
|
) : [];
|
|
566
|
+
const imageCheck = runnerImageCheck(env);
|
|
567
|
+
const nameCheck = runnerNameCheck(env.configPath);
|
|
568
|
+
const machine = () => env.machine ?? detectMachine({ env: env.env });
|
|
513
569
|
return [
|
|
570
|
+
...imageCheck === void 0 ? [] : [imageCheck],
|
|
571
|
+
...nameCheck === void 0 ? [] : [nameCheck],
|
|
514
572
|
dockerAvailable() ? { name: "Docker Engine", status: "pass", detail: "reachable" } : {
|
|
515
573
|
name: "Docker Engine",
|
|
516
574
|
status: "warn",
|
|
517
575
|
detail: "docker info failed, so `outerlayer runner image` cannot build",
|
|
518
576
|
fix: "start Docker, or give this user access to its socket"
|
|
519
577
|
},
|
|
520
|
-
...env.hooks === void 0 ? [] : [isolationCheck(
|
|
578
|
+
...env.hooks === void 0 ? [] : [isolationCheck(machine(), env.hooks)],
|
|
521
579
|
...env.hooks !== void 0 && builtinKind(env.hooks.provision) === "vm" ? [
|
|
522
|
-
kvmCheck(
|
|
580
|
+
kvmCheck(machine(), env.service),
|
|
523
581
|
...env.service === void 0 ? [] : [delegationCheck(env.service)],
|
|
582
|
+
helperCheck(await helperFactsOf(env)),
|
|
524
583
|
...env.runner === void 0 ? [] : [memoryCheck({ concurrency: env.runner.concurrency, buildMemory: env.runner.buildMemory, hostMemory: env.hostMemory ?? totalmem() })]
|
|
525
584
|
] : [],
|
|
526
585
|
...env.hooks !== void 0 && ["container", "vm"].includes(builtinKind(env.hooks.provision)) ? [imageBuildLimitCheck(await (env.buildx ?? (() => buildxState(spawnRun)))(), env.runner?.buildMemory)] : [],
|
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-YTTHDPWF.js';
|
|
4
|
+
import './chunk-IDJIWKTY.js';
|
|
5
5
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
6
6
|
import './chunk-TBT347UY.js';
|
|
7
|
-
import { detectActiveSession, autoConnect } from './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import { detectActiveSession, autoConnect } from './chunk-HWEIFHSW.js';
|
|
8
|
+
import './chunk-6CNHXHI2.js';
|
|
9
9
|
import { readEffectiveArtifactSpoolState, localArtifactIds, isArtifactTombstoned, artifactBlobsDir, appendArtifactRecord, artifactsSpoolPath, findPendingArtifactRecord, sanitizeTerminal, appendArtifactTombstone } from './chunk-BUP5N3X6.js';
|
|
10
10
|
import './chunk-XSPA5ODY.js';
|
|
11
11
|
import './chunk-GOSFARMS.js';
|
|
12
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
13
|
-
import './chunk-
|
|
12
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-M4B6QKNZ.js';
|
|
13
|
+
import './chunk-K5WVK7IC.js';
|
|
14
14
|
import './chunk-ZJSNLVCE.js';
|
|
15
15
|
import './chunk-DYEFPYME.js';
|
|
16
16
|
import './chunk-BKO6JEZI.js';
|
|
17
17
|
import './chunk-HCVLP7XA.js';
|
|
18
18
|
import './chunk-BJ3KTMDH.js';
|
|
19
|
-
import { resolveRepoIdentity } from './chunk-
|
|
19
|
+
import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
|
|
20
20
|
import { C } from './chunk-ANPNT6PM.js';
|
|
21
21
|
import './chunk-EABW6AJQ.js';
|
|
22
|
+
import './chunk-JKNYTNYD.js';
|
|
23
|
+
import './chunk-HBISTTG3.js';
|
|
22
24
|
import './chunk-T2Q7ISPE.js';
|
|
23
25
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
24
26
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
25
27
|
import './chunk-GNPTU4BM.js';
|
|
26
28
|
import './chunk-TUSYOL2O.js';
|
|
29
|
+
import './chunk-RKOTJQVG.js';
|
|
27
30
|
import { ARTIFACT_MAX_CAPTION_LENGTH, ArtifactCriterionIdSchema, ARTIFACT_MAX_FILENAME_LENGTH, mediaTypeForArtifactPath, inferArtifactKind, ARTIFACT_MAX_REPLACES_TARGETS, parseTestSelector, parseJunit, bindTests } from './chunk-QZBXLLTV.js';
|
|
28
31
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
29
32
|
import './chunk-RA3O54FC.js';
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
32
|
-
import './chunk-
|
|
33
|
-
import './chunk-
|
|
33
|
+
import './chunk-ZODVSFI4.js';
|
|
34
|
+
import './chunk-ZI2ZVWKT.js';
|
|
35
|
+
import './chunk-2K3TCQHW.js';
|
|
36
|
+
import './chunk-JGD5TWQ2.js';
|
|
34
37
|
import './chunk-Z5GEFMRW.js';
|
|
35
38
|
import { createHash, randomUUID } from 'crypto';
|
|
36
39
|
import { statSync, readFileSync, mkdirSync, existsSync, writeFileSync, renameSync, unlinkSync } from 'fs';
|
|
@@ -1,26 +1,29 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
4
|
-
import { detectActiveSession, autoConnect } from './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import { detectActiveSession, autoConnect } from './chunk-HWEIFHSW.js';
|
|
5
|
+
import './chunk-6CNHXHI2.js';
|
|
6
6
|
import './chunk-BUP5N3X6.js';
|
|
7
7
|
import './chunk-XSPA5ODY.js';
|
|
8
8
|
import './chunk-GOSFARMS.js';
|
|
9
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
9
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-M4B6QKNZ.js';
|
|
10
10
|
import './chunk-BJ3KTMDH.js';
|
|
11
|
-
import { resolveRepoIdentity } from './chunk-
|
|
11
|
+
import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
|
|
12
12
|
import { C } from './chunk-ANPNT6PM.js';
|
|
13
13
|
import './chunk-EABW6AJQ.js';
|
|
14
|
+
import './chunk-JKNYTNYD.js';
|
|
15
|
+
import './chunk-HBISTTG3.js';
|
|
14
16
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
15
17
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
16
18
|
import './chunk-CRB3POP4.js';
|
|
19
|
+
import './chunk-RKOTJQVG.js';
|
|
17
20
|
import { CriteriaListSchema } from './chunk-QZBXLLTV.js';
|
|
18
21
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
19
22
|
import './chunk-RA3O54FC.js';
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
23
|
+
import './chunk-ZODVSFI4.js';
|
|
24
|
+
import './chunk-ZI2ZVWKT.js';
|
|
25
|
+
import './chunk-2K3TCQHW.js';
|
|
26
|
+
import './chunk-JGD5TWQ2.js';
|
|
24
27
|
import './chunk-Z5GEFMRW.js';
|
|
25
28
|
import { readFileSync } from 'fs';
|
|
26
29
|
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
4
|
-
import { detectActiveSession, autoConnect, transcriptPathForSession } from './chunk-
|
|
5
|
-
import './chunk-
|
|
4
|
+
import { detectActiveSession, autoConnect, transcriptPathForSession } from './chunk-HWEIFHSW.js';
|
|
5
|
+
import './chunk-6CNHXHI2.js';
|
|
6
6
|
import './chunk-BUP5N3X6.js';
|
|
7
7
|
import './chunk-XSPA5ODY.js';
|
|
8
8
|
import './chunk-GOSFARMS.js';
|
|
9
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
9
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-M4B6QKNZ.js';
|
|
10
10
|
import { readLatestProvenanceForSession } from './chunk-ZJSNLVCE.js';
|
|
11
11
|
import './chunk-BJ3KTMDH.js';
|
|
12
|
-
import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-
|
|
12
|
+
import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-D4AMAEZ7.js';
|
|
13
13
|
import { C } from './chunk-ANPNT6PM.js';
|
|
14
14
|
import './chunk-EABW6AJQ.js';
|
|
15
|
+
import './chunk-JKNYTNYD.js';
|
|
16
|
+
import './chunk-HBISTTG3.js';
|
|
15
17
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
16
18
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
17
19
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
20
|
+
import './chunk-RKOTJQVG.js';
|
|
18
21
|
import { FindingBatchSchema, FindingsResponseSchema, SAME_PROBLEM_RULES } from './chunk-QZBXLLTV.js';
|
|
19
22
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
20
23
|
import './chunk-RA3O54FC.js';
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
24
|
-
import './chunk-
|
|
24
|
+
import './chunk-ZODVSFI4.js';
|
|
25
|
+
import './chunk-ZI2ZVWKT.js';
|
|
26
|
+
import './chunk-2K3TCQHW.js';
|
|
27
|
+
import './chunk-JGD5TWQ2.js';
|
|
25
28
|
import './chunk-Z5GEFMRW.js';
|
|
26
29
|
import { readFileSync, existsSync } from 'fs';
|
|
27
30
|
import { join, dirname, basename } from 'path';
|
|
@@ -1,36 +1,39 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { detectCi } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import { detectCi } from './chunk-YTTHDPWF.js';
|
|
4
|
+
import './chunk-IDJIWKTY.js';
|
|
5
5
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
6
6
|
import './chunk-TBT347UY.js';
|
|
7
|
-
import { detectActiveSession, autoConnect } from './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import { detectActiveSession, autoConnect } from './chunk-HWEIFHSW.js';
|
|
8
|
+
import './chunk-6CNHXHI2.js';
|
|
9
9
|
import './chunk-BUP5N3X6.js';
|
|
10
10
|
import './chunk-XSPA5ODY.js';
|
|
11
11
|
import './chunk-GOSFARMS.js';
|
|
12
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
13
|
-
import './chunk-
|
|
12
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-M4B6QKNZ.js';
|
|
13
|
+
import './chunk-K5WVK7IC.js';
|
|
14
14
|
import './chunk-ZJSNLVCE.js';
|
|
15
15
|
import './chunk-DYEFPYME.js';
|
|
16
16
|
import './chunk-BKO6JEZI.js';
|
|
17
17
|
import './chunk-HCVLP7XA.js';
|
|
18
18
|
import './chunk-BJ3KTMDH.js';
|
|
19
|
-
import { resolveRepoIdentity } from './chunk-
|
|
19
|
+
import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
|
|
20
20
|
import { C } from './chunk-ANPNT6PM.js';
|
|
21
21
|
import './chunk-EABW6AJQ.js';
|
|
22
|
+
import './chunk-JKNYTNYD.js';
|
|
23
|
+
import './chunk-HBISTTG3.js';
|
|
22
24
|
import './chunk-T2Q7ISPE.js';
|
|
23
25
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
24
26
|
import './chunk-CRB3POP4.js';
|
|
25
27
|
import './chunk-GNPTU4BM.js';
|
|
26
28
|
import './chunk-TUSYOL2O.js';
|
|
29
|
+
import './chunk-RKOTJQVG.js';
|
|
27
30
|
import { EmittedNameSchema, EMITTED_RESULT_MAX_LINK_LENGTH, EMITTED_RESULTS, EMITTED_RESULT_MAX_BODY_LENGTH } from './chunk-QZBXLLTV.js';
|
|
28
31
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
29
32
|
import './chunk-RA3O54FC.js';
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
32
|
-
import './chunk-
|
|
33
|
-
import './chunk-
|
|
33
|
+
import './chunk-ZODVSFI4.js';
|
|
34
|
+
import './chunk-ZI2ZVWKT.js';
|
|
35
|
+
import './chunk-2K3TCQHW.js';
|
|
36
|
+
import './chunk-JGD5TWQ2.js';
|
|
34
37
|
import './chunk-Z5GEFMRW.js';
|
|
35
38
|
import { randomUUID } from 'crypto';
|
|
36
39
|
import { readFileSync } from 'fs';
|