@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
|
@@ -21971,14 +21971,14 @@ var ModelRegistryImpl = class {
|
|
|
21971
21971
|
};
|
|
21972
21972
|
var models_default = {
|
|
21973
21973
|
version: "1.0.0",
|
|
21974
|
-
generatedAt: "2026-10-
|
|
21974
|
+
generatedAt: "2026-10-15T03:53:58.240Z",
|
|
21975
21975
|
sources: {
|
|
21976
21976
|
litellm: {
|
|
21977
|
-
fetchedAt: "2026-10-
|
|
21978
|
-
modelCount:
|
|
21977
|
+
fetchedAt: "2026-10-15T03:53:58.240Z",
|
|
21978
|
+
modelCount: 1937
|
|
21979
21979
|
},
|
|
21980
21980
|
openrouter: {
|
|
21981
|
-
fetchedAt: "2026-10-
|
|
21981
|
+
fetchedAt: "2026-10-15T03:53:58.240Z",
|
|
21982
21982
|
modelCount: 205
|
|
21983
21983
|
}
|
|
21984
21984
|
},
|
|
@@ -50707,7 +50707,8 @@ var models_default = {
|
|
|
50707
50707
|
},
|
|
50708
50708
|
capabilities: {
|
|
50709
50709
|
vision: true
|
|
50710
|
-
}
|
|
50710
|
+
},
|
|
50711
|
+
deprecationDate: "2025-11-14"
|
|
50711
50712
|
},
|
|
50712
50713
|
"gemini-2.5-flash-native-audio-latest": {
|
|
50713
50714
|
provider: "google",
|
|
@@ -52816,8 +52817,8 @@ var models_default = {
|
|
|
52816
52817
|
"max_tokens"
|
|
52817
52818
|
],
|
|
52818
52819
|
pricing: {
|
|
52819
|
-
inputCostPerToken:
|
|
52820
|
-
outputCostPerToken:
|
|
52820
|
+
inputCostPerToken: 4e-6,
|
|
52821
|
+
outputCostPerToken: 2e-5
|
|
52821
52822
|
},
|
|
52822
52823
|
context: {
|
|
52823
52824
|
maxInputTokens: 105e4,
|
|
@@ -54011,8 +54012,8 @@ var models_default = {
|
|
|
54011
54012
|
"max_tokens"
|
|
54012
54013
|
],
|
|
54013
54014
|
pricing: {
|
|
54014
|
-
inputCostPerToken:
|
|
54015
|
-
outputCostPerToken:
|
|
54015
|
+
inputCostPerToken: 2e-6,
|
|
54016
|
+
outputCostPerToken: 1e-5
|
|
54016
54017
|
},
|
|
54017
54018
|
context: {
|
|
54018
54019
|
maxInputTokens: 105e4,
|
|
@@ -54033,8 +54034,8 @@ var models_default = {
|
|
|
54033
54034
|
"max_tokens"
|
|
54034
54035
|
],
|
|
54035
54036
|
pricing: {
|
|
54036
|
-
inputCostPerToken:
|
|
54037
|
-
outputCostPerToken:
|
|
54037
|
+
inputCostPerToken: 2e-6,
|
|
54038
|
+
outputCostPerToken: 1e-5
|
|
54038
54039
|
},
|
|
54039
54040
|
context: {
|
|
54040
54041
|
maxInputTokens: 105e4,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { isSameProcess } from './chunk-JBJTC3UU.js';
|
|
4
|
-
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-
|
|
4
|
+
import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-ZI2ZVWKT.js';
|
|
5
5
|
import { existsSync, readFileSync, rmSync, mkdirSync, writeFileSync } from 'fs';
|
|
6
6
|
import { dirname } from 'path';
|
|
7
7
|
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { removeRetiredSkills } from './chunk-MQ743JX3.js';
|
|
4
|
-
import { defaultFetch, resolveGatewayCredentials } from './chunk-
|
|
4
|
+
import { defaultFetch, resolveGatewayCredentials } from './chunk-M4B6QKNZ.js';
|
|
5
5
|
import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
|
|
6
6
|
import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-HBISTTG3.js';
|
|
7
7
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
8
8
|
import { writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, writeContextManifest, SOURCE_CACHE_TTL_SUCCESS_MS, readSourceCache, isSourceCacheFresh, clearDegraded } from './chunk-YQR6E6OV.js';
|
|
9
9
|
import { normalizeRepoName, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-RKOTJQVG.js';
|
|
10
10
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
11
|
-
import { withTokenHeader } from './chunk-
|
|
11
|
+
import { withTokenHeader } from './chunk-2K3TCQHW.js';
|
|
12
12
|
import { execFileSync } from 'child_process';
|
|
13
13
|
import { existsSync, mkdirSync, writeFileSync, chmodSync, lstatSync, readFileSync, copyFileSync } from 'fs';
|
|
14
14
|
import { isAbsolute, join, dirname } from 'path';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { autoConnect, detectActiveSession } from './chunk-
|
|
4
|
-
import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-
|
|
5
|
-
import { resolveRepoIdentity } from './chunk-
|
|
3
|
+
import { autoConnect, detectActiveSession } from './chunk-HWEIFHSW.js';
|
|
4
|
+
import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-M4B6QKNZ.js';
|
|
5
|
+
import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
|
|
6
6
|
import { C } from './chunk-ANPNT6PM.js';
|
|
7
7
|
import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
|
|
8
8
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-
|
|
4
|
-
import { resolveGatewayCredentials } from './chunk-
|
|
3
|
+
import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-6CNHXHI2.js';
|
|
4
|
+
import { resolveGatewayCredentials } from './chunk-M4B6QKNZ.js';
|
|
5
5
|
import { findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
|
|
6
|
-
import { resolveRepoIdentity } from './chunk-
|
|
6
|
+
import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
|
|
7
7
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
8
8
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
9
9
|
import { openSync, fstatSync, readSync, closeSync } from 'fs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
3
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
4
|
-
import { autoConnect, detectActiveSession } from './chunk-
|
|
4
|
+
import { autoConnect, detectActiveSession } from './chunk-HWEIFHSW.js';
|
|
5
5
|
import { acquireSpoolLockAt } from './chunk-BUP5N3X6.js';
|
|
6
|
-
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-
|
|
7
|
-
import { resolveRepoIdentity } from './chunk-
|
|
6
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-M4B6QKNZ.js';
|
|
7
|
+
import { resolveRepoIdentity } from './chunk-D4AMAEZ7.js';
|
|
8
8
|
import { C } from './chunk-ANPNT6PM.js';
|
|
9
9
|
import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
|
|
10
10
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { builtinKind } from './chunk-
|
|
3
|
+
import { builtinKind } from './chunk-JWRX5ZTT.js';
|
|
4
4
|
import { parseSize } from './chunk-7RQ73DLO.js';
|
|
5
|
-
import { runnerDir } from './chunk-
|
|
5
|
+
import { runnerDir } from './chunk-ZI2ZVWKT.js';
|
|
6
6
|
import { dirname } from 'path';
|
|
7
7
|
import { spawnSync } from 'child_process';
|
|
8
8
|
|
|
@@ -16,16 +16,19 @@ function escapeUnitPath(path) {
|
|
|
16
16
|
return path.replace(/%/g, "%%").replace(/ /g, "\\x20");
|
|
17
17
|
}
|
|
18
18
|
function runnerUnit(unit) {
|
|
19
|
+
const helperService = unit.helper === void 0 ? void 0 : `${unit.helper.unit}.service`;
|
|
19
20
|
return `${UNIT_MARKER}
|
|
20
21
|
[Unit]
|
|
21
22
|
Description=OuterLayer runner
|
|
22
|
-
After=network-online.target${unit.docker ? " docker.service" : ""}
|
|
23
|
+
After=network-online.target${unit.docker ? " docker.service" : ""}${helperService === void 0 ? "" : ` ${helperService}`}
|
|
23
24
|
Wants=network-online.target
|
|
24
|
-
${
|
|
25
|
+
${helperService === void 0 ? "" : `Wants=${helperService}
|
|
26
|
+
`}${unit.docker ? "Requires=docker.service\n" : ""}
|
|
25
27
|
[Service]
|
|
26
28
|
User=${unit.user}
|
|
27
29
|
ExecStart=${unit.execStart}
|
|
28
|
-
|
|
30
|
+
${unit.helper === void 0 ? "" : `Environment=OUTERLAYER_HELPER_SOCKET=${unit.helper.socket}
|
|
31
|
+
`}EnvironmentFile=-${escapeUnitPath(`${unit.configDir}/runner.env`)}
|
|
29
32
|
Restart=on-failure
|
|
30
33
|
RestartForceExitStatus=75
|
|
31
34
|
RestartSec=30
|
|
@@ -143,7 +146,8 @@ function installService(request, deps) {
|
|
|
143
146
|
configDir: dirname(request.configPath),
|
|
144
147
|
execStart: request.execStart,
|
|
145
148
|
timeLimitMinutes: request.timeLimitMinutes,
|
|
146
|
-
docker: kind === "container" || kind === "vm" || builtinKind(request.hooks.cleanup) === "container" || builtinKind(request.hooks.cleanup) === "vm"
|
|
149
|
+
docker: kind === "container" || kind === "vm" || builtinKind(request.hooks.cleanup) === "container" || builtinKind(request.hooks.cleanup) === "vm",
|
|
150
|
+
...request.helperSocket !== void 0 && request.helperUnit !== void 0 ? { helper: { unit: request.helperUnit, socket: request.helperSocket } } : {}
|
|
147
151
|
});
|
|
148
152
|
if (request.print === true) return outcome(true, "printed", [], unit);
|
|
149
153
|
if (own) return outcome(false, "refused", [OWN_HOOKS]);
|
|
@@ -274,4 +278,4 @@ function uninstallService(request, deps) {
|
|
|
274
278
|
return outcome(true, "removed", lines);
|
|
275
279
|
}
|
|
276
280
|
|
|
277
|
-
export { DEFAULT_UNIT_NAME, RUNNER_RESERVE_BYTES, VM_SERVICE_NAME, checkFit, installService, realTaskScheduler, uninstallService, unitPathFor };
|
|
281
|
+
export { DEFAULT_UNIT_NAME, RUNNER_RESERVE_BYTES, UNIT_MARKER, VM_SERVICE_NAME, checkFit, installService, realTaskScheduler, uninstallService, unitPathFor };
|
|
@@ -30,12 +30,14 @@ var UNKNOWN_TRANSPORT_REASON = "the runner cannot tell how this build reaches it
|
|
|
30
30
|
var COMMAND_LOST_REASON = "the build's command ended without recording an exit code";
|
|
31
31
|
var CONTAINER_STOPPED_REASON = "the build's container stopped while no runner was managing it";
|
|
32
32
|
var UNKNOWN_TRACKING_REASON = "the runner cannot tell how this build is tracked";
|
|
33
|
+
var DOCKER_DESKTOP_REASON = "Docker Desktop is accepted only for a runner in the runner image, so container builds here need Docker Engine: install it (on Windows, inside WSL2), run the runner image, or use builtin:process";
|
|
33
34
|
var RUNNER_WORDED_REASONS = /* @__PURE__ */ new Set([
|
|
34
35
|
MALFORMED_REASON,
|
|
35
36
|
UNKNOWN_TRANSPORT_REASON,
|
|
36
37
|
COMMAND_LOST_REASON,
|
|
37
38
|
CONTAINER_STOPPED_REASON,
|
|
38
|
-
UNKNOWN_TRACKING_REASON
|
|
39
|
+
UNKNOWN_TRACKING_REASON,
|
|
40
|
+
DOCKER_DESKTOP_REASON
|
|
39
41
|
]);
|
|
40
42
|
|
|
41
|
-
export { COMMAND_LOST_REASON, CONTAINER_STOPPED_REASON, JOIN_DIR, JOIN_SOCKET, JOIN_WAIT_MS, MALFORMED_REASON, MAX_MALFORMED_SESSIONS, MAX_OPEN_STREAMS, RELAY_ID, RELAY_USER, RUNNER_WORDED_REASONS, SESSION_WINDOW, STREAM_WINDOW, TARGET_CLAUDE, TARGET_GATEWAY, TARGET_LEASE, TARGET_TUNNEL, UNKNOWN_TRACKING_REASON, UNKNOWN_TRANSPORT_REASON, destinationTarget, targetOfPath };
|
|
43
|
+
export { COMMAND_LOST_REASON, CONTAINER_STOPPED_REASON, DOCKER_DESKTOP_REASON, JOIN_DIR, JOIN_SOCKET, JOIN_WAIT_MS, MALFORMED_REASON, MAX_MALFORMED_SESSIONS, MAX_OPEN_STREAMS, RELAY_ID, RELAY_USER, RUNNER_WORDED_REASONS, SESSION_WINDOW, STREAM_WINDOW, TARGET_CLAUDE, TARGET_GATEWAY, TARGET_LEASE, TARGET_TUNNEL, UNKNOWN_TRACKING_REASON, UNKNOWN_TRANSPORT_REASON, destinationTarget, targetOfPath };
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-
|
|
4
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
5
|
-
import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-
|
|
6
|
-
import { runnerCredentialProblem } from './chunk-
|
|
7
|
-
import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-
|
|
3
|
+
import { detectMachine, supportsContainerBuilds, reachDockerStep, describeMachineDocker, supportsMicroVmBuilds } from './chunk-VNGENFOG.js';
|
|
4
|
+
import { MIN_ENGINE_MAJOR } from './chunk-XHXDCYSK.js';
|
|
5
|
+
import { hasStoredCredential, AGENT_COMMANDS, storeClaudeCredential, credentialFromStdin, isAgentName } from './chunk-ZGMQQWCV.js';
|
|
6
|
+
import { runnerCredentialProblem } from './chunk-JWRX5ZTT.js';
|
|
7
|
+
import { runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-ZI2ZVWKT.js';
|
|
8
8
|
import { existsSync, readFileSync, mkdirSync, writeFileSync } from 'fs';
|
|
9
9
|
import { dirname } from 'path';
|
|
10
10
|
|
|
@@ -22,7 +22,7 @@ function isolationNote(machine) {
|
|
|
22
22
|
}
|
|
23
23
|
function processRefusal(machine) {
|
|
24
24
|
const reach = reachDockerStep(machine);
|
|
25
|
-
const needs = machine.platform === "darwin" ? "Isolated builds on a Mac run in a Linux VM: run this again with --vm." : reach !== void 0 ? `Isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later: ${reach}, then run this again.` : machine.platform === "windows" ? `Isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later inside WSL2: install it there, then run this again from a WSL2 shell.` : `Isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later on Linux or WSL2: install it, then run this again.`;
|
|
25
|
+
const needs = machine.platform === "darwin" ? "Isolated builds on a Mac run in the runner image on Docker Desktop (https://docs.outerlayer.ai/run-the-runner-in-a-container) or in a Linux VM: run this again with --vm." : reach !== void 0 ? `Isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later: ${reach}, then run this again.` : machine.platform === "windows" ? `Isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later inside WSL2: install it there, then run this again from a WSL2 shell.` : `Isolated builds need Docker Engine ${MIN_ENGINE_MAJOR} or later on Linux or WSL2: install it, then run this again.`;
|
|
26
26
|
return `This machine has ${describeMachineDocker(machine)}, so it cannot isolate a build. ${needs} To run builds as processes under this user instead, where a build can read this user's files and the runner's Claude credential, run this again with --allow-process-builds.`;
|
|
27
27
|
}
|
|
28
28
|
function isPlaceholderCommand(command) {
|
|
@@ -102,15 +102,15 @@ function prepareRunnerInit(configPath, opts = {}) {
|
|
|
102
102
|
}
|
|
103
103
|
const hooks = opts.requireContainer !== true && supportsMicroVmBuilds(machine) ? "builtin:vm" : supportsContainerBuilds(machine) ? "builtin:container" : "builtin:process";
|
|
104
104
|
if (hooks === "builtin:process" && opts.allowProcess !== true) throw new RunnerInitError(processRefusal(machine));
|
|
105
|
-
if (agent === "claude" && credential === void 0 && !hasStoredCredential(configPath)) {
|
|
105
|
+
if (agent === "claude" && credential === void 0 && opts.credentialInEnvironment !== true && !hasStoredCredential(configPath)) {
|
|
106
106
|
throw new RunnerInitError(
|
|
107
107
|
"--agent claude needs Claude's credential, and none was piped on stdin or is in the runner.env beside the config. Pipe a token from `claude setup-token`, or an Anthropic API key: printf '%s' \"$CLAUDE_CODE_OAUTH_TOKEN\" | outerlayer runner init --agent claude"
|
|
108
108
|
);
|
|
109
109
|
}
|
|
110
|
-
return { configPath, config, carried, credential, agent, machine, hooks, needsKey };
|
|
110
|
+
return { configPath, config, carried, credential, agent, machine, hooks, needsKey, host: opts.host };
|
|
111
111
|
}
|
|
112
112
|
function writeRunnerInit(prepared, runnerKey) {
|
|
113
|
-
const { configPath, config, carried, credential, agent, machine, hooks } = prepared;
|
|
113
|
+
const { configPath, config, carried, credential, agent, machine, hooks, host } = prepared;
|
|
114
114
|
if (prepared.needsKey && runnerKey === void 0) {
|
|
115
115
|
throw new RunnerInitError(`${configPath}: apiKey is missing, and no runner key was pasted.`);
|
|
116
116
|
}
|
|
@@ -130,10 +130,12 @@ function writeRunnerInit(prepared, runnerKey) {
|
|
|
130
130
|
amend: PLACEHOLDER_COMMAND
|
|
131
131
|
},
|
|
132
132
|
...carried,
|
|
133
|
+
...host === void 0 ? {} : { name: host },
|
|
133
134
|
// The agent was named on this command line, so its commands win over any the hand-off carried.
|
|
134
135
|
...agent === void 0 ? {} : { commands: { ...AGENT_COMMANDS[agent] } },
|
|
135
136
|
hooks: { provision: hooks, cleanup: hooks }
|
|
136
137
|
};
|
|
138
|
+
if (host !== void 0) delete config.runner.host;
|
|
137
139
|
mkdirSync(dirname(configPath), { recursive: true });
|
|
138
140
|
const stored = credential === void 0 ? void 0 : { variable: credential.variable, path: storeClaudeCredential(configPath, credential) };
|
|
139
141
|
writeFileSync(configPath, `${JSON.stringify(config, null, 2)}
|
|
@@ -3,7 +3,7 @@ import { createRequire } from 'node:module';
|
|
|
3
3
|
import { MAX_ALLOW_HOSTS, allowHostProblem } from './chunk-UXYLWVTQ.js';
|
|
4
4
|
import { parseSize } from './chunk-7RQ73DLO.js';
|
|
5
5
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
6
|
-
import { isRefusedInConfig, resolveDestinations, isReservedVariable } from './chunk-
|
|
6
|
+
import { isRefusedInConfig, resolveDestinations, isReservedVariable } from './chunk-2K3TCQHW.js';
|
|
7
7
|
import { existsSync, statSync, accessSync, constants, readFileSync } from 'fs';
|
|
8
8
|
import { hostname } from 'os';
|
|
9
9
|
import { join } from 'path';
|
|
@@ -92,6 +92,7 @@ function runnerVmOf(configPath) {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
var RUNNER_KEYS = [
|
|
95
|
+
"name",
|
|
95
96
|
"host",
|
|
96
97
|
"queues",
|
|
97
98
|
"concurrency",
|
|
@@ -212,6 +213,9 @@ function loadRunnerConfig(configPath) {
|
|
|
212
213
|
if (runner.autoUpdate !== void 0 && typeof runner.autoUpdate !== "boolean") {
|
|
213
214
|
fail(configPath, "runner.autoUpdate", "must be true or false");
|
|
214
215
|
}
|
|
216
|
+
if (runner.name !== void 0 && runner.host !== void 0 && runner.name !== runner.host) {
|
|
217
|
+
fail(configPath, "runner.name", `is "${runner.name}" and runner.host is "${runner.host}"; set runner.name only, since runner.host is its earlier name`);
|
|
218
|
+
}
|
|
215
219
|
const queues = runner.queues && runner.queues.length > 0 ? runner.queues : [...RUNNER_QUEUES];
|
|
216
220
|
for (const queue of queues) {
|
|
217
221
|
if (!RUNNER_QUEUES.includes(queue)) {
|
|
@@ -241,7 +245,7 @@ function loadRunnerConfig(configPath) {
|
|
|
241
245
|
appId: config.appId,
|
|
242
246
|
repos: config.repos,
|
|
243
247
|
scrub: config.scrub,
|
|
244
|
-
host: runner.host ?? hostname(),
|
|
248
|
+
host: runner.name ?? runner.host ?? hostname(),
|
|
245
249
|
queues,
|
|
246
250
|
concurrency: runner.concurrency ?? DEFAULT_CONCURRENCY,
|
|
247
251
|
pollSeconds: runner.pollSeconds ?? DEFAULT_POLL_SECONDS,
|
|
@@ -628,7 +628,7 @@ async function missingControlPlane(cwd, sessionId, home, env) {
|
|
|
628
628
|
cleanupEarlierCopies(dirs);
|
|
629
629
|
}
|
|
630
630
|
if (!contextPossiblyGoverned(cwd, home)) return void 0;
|
|
631
|
-
const { governanceOf } = await import('./control-plane-launch-
|
|
631
|
+
const { governanceOf } = await import('./control-plane-launch-ZFT6SI4N.js');
|
|
632
632
|
if (await governanceOf({ cwd, env, home }) !== "governed") return void 0;
|
|
633
633
|
recordMissingContext(dirs, sessionId, home);
|
|
634
634
|
const launcher = `${cliInvocation()} claude`;
|