@outerlayer/cli 0.34.0-next.20261025133402 → 0.34.0-next.20261025210240
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/dist/{agent-setup-UXUWLV7O.js → agent-setup-FNDKCPUP.js} +8 -9
- package/dist/{bridge-OWCSVCXL.js → bridge-YJBB4YA3.js} +2 -3
- package/dist/build-B4OKU4MV.js +16 -0
- package/dist/{build-disk-5ZQHYBO3.js → build-disk-ZL46AEN3.js} +6 -8
- package/dist/build-info.json +1 -1
- package/dist/{builder-54GLXGFV.js → builder-XFPWE74N.js} +5 -7
- package/dist/{check-4TQZZOIQ.js → check-QULEN437.js} +43 -43
- package/dist/{chunk-CXQCBAKO.js → chunk-25GRRBTH.js} +1 -1
- package/dist/{chunk-4XYC2663.js → chunk-2D6CKNR7.js} +8 -4
- package/dist/{chunk-IHY457PB.js → chunk-2ILU7UAU.js} +1 -1
- package/dist/{chunk-JEOPIRUR.js → chunk-3EJBI5JW.js} +3 -3
- package/dist/{chunk-TVGLNHEB.js → chunk-3N77LUQI.js} +1 -1
- package/dist/{chunk-ES4ULBAL.js → chunk-4UPET3R7.js} +7 -3
- package/dist/{chunk-MPDLZCXM.js → chunk-5AFPP3GZ.js} +238 -14
- package/dist/{chunk-HAEDLXHA.js → chunk-63IVRRIO.js} +3 -3
- package/dist/{chunk-BTG5NZHN.js → chunk-6OLVVAOK.js} +4 -4
- package/dist/{chunk-3M6UYJSR.js → chunk-AVPLEFQR.js} +3 -3
- package/dist/{chunk-TVOZOOIW.js → chunk-BHSSGVOY.js} +3 -3
- package/dist/{chunk-QOUR4CQ7.js → chunk-CAQCDYKF.js} +2 -2
- package/dist/{chunk-SMMNU65K.js → chunk-DNZYXEMY.js} +13 -12
- package/dist/{chunk-LMICI7AY.js → chunk-EGVHFHY4.js} +3 -3
- package/dist/{chunk-RNVBSRZZ.js → chunk-FD5ASWTG.js} +18 -19
- package/dist/{chunk-NW5PDZYA.js → chunk-FDJPDZSR.js} +1 -1
- package/dist/{chunk-XA6PGME5.js → chunk-FVCHHSHB.js} +3 -3
- package/dist/{chunk-YOBQIXX6.js → chunk-G4W4B33M.js} +182 -3
- package/dist/{chunk-T7N3BAOO.js → chunk-GC5PVMIJ.js} +85 -17
- package/dist/{chunk-CCISO7EQ.js → chunk-HHFZXOBC.js} +12 -14
- package/dist/{chunk-AABYHGVO.js → chunk-INOUUSYI.js} +29 -9
- package/dist/{chunk-KDLQGTN6.js → chunk-JBCOUY4M.js} +2 -2
- package/dist/{chunk-POGPX7LI.js → chunk-JQSZTQSK.js} +24 -30
- package/dist/{chunk-JZD2NTRH.js → chunk-K2UAQWYO.js} +3 -3
- package/dist/{chunk-UC2DKBMS.js → chunk-KM2HLQE3.js} +2 -2
- package/dist/{chunk-XLJLR7EK.js → chunk-MOI2KDLH.js} +1 -1
- package/dist/{chunk-BUF6DSSM.js → chunk-NW26E4YU.js} +3 -3
- package/dist/{chunk-ZV2JJPDS.js → chunk-O4Z2MNNL.js} +6 -6
- package/dist/{chunk-2RBIW2PD.js → chunk-OGPEHSNW.js} +1 -1
- package/dist/{chunk-EZ7L5IZU.js → chunk-OQLF3MQQ.js} +3 -4
- package/dist/{chunk-J246WRLZ.js → chunk-OS7DJOQJ.js} +1 -1
- package/dist/{chunk-O5G6VQGZ.js → chunk-PFHTT4PP.js} +5 -5
- package/dist/{chunk-N7LAEN3T.js → chunk-PXGU3GKY.js} +1 -1
- package/dist/{chunk-WIK5KUGK.js → chunk-QANM5COC.js} +6 -6
- package/dist/{chunk-PSXVAOEB.js → chunk-QQP3S5FU.js} +3 -3
- package/dist/{chunk-AVLLJW5D.js → chunk-RFVIQLNB.js} +5 -5
- package/dist/{chunk-Z76GVJGQ.js → chunk-RHV5SRI2.js} +3 -3
- package/dist/{chunk-75KZUBHD.js → chunk-SI6WDF3U.js} +1 -1
- package/dist/chunk-SUOZYOWO.js +51 -0
- package/dist/{chunk-36T6W5RA.js → chunk-SYVRBBLW.js} +1 -1
- package/dist/{chunk-E34FRRSW.js → chunk-TBKV4L2W.js} +4 -4
- package/dist/{chunk-56ZHWIR2.js → chunk-TFPNPS4Q.js} +1 -1
- package/dist/{chunk-DUPM5LVJ.js → chunk-UMYYYF7B.js} +1 -1
- package/dist/{chunk-IW6Z337K.js → chunk-UN3SQTVL.js} +7 -7
- package/dist/{chunk-3NFZN7H6.js → chunk-UO4FQAOX.js} +16 -12
- package/dist/{chunk-ZWLEUSJW.js → chunk-VJ34F55N.js} +55 -39
- package/dist/{chunk-3RAAYBSG.js → chunk-YHKU2NOZ.js} +1 -1
- package/dist/{chunk-ENFBYN4A.js → chunk-YNMVVQOQ.js} +1 -1
- package/dist/{claude-launcher-JEB5BN7Q.js → claude-launcher-OQZNW7XJ.js} +1 -1
- package/dist/{cli-DY3EGPUB.js → cli-VHQPX2B7.js} +123 -117
- package/dist/{command-ZAXYAZCI.js → command-KFYK3WEF.js} +196 -60
- package/dist/{config-UN3X6AP2.js → config-QASNKYM6.js} +7 -9
- package/dist/{connect-cmd-TWM4FEKD.js → connect-cmd-MEDWMW3L.js} +8 -9
- package/dist/{container-start-JUNBJ7MU.js → container-start-2DHCWV73.js} +34 -36
- package/dist/{context-show-cmd-K5LRMDEO.js → context-show-cmd-VSFCG663.js} +9 -10
- package/dist/{control-plane-launch-LHOV2FPA.js → control-plane-launch-XBGHM7DB.js} +5 -6
- package/dist/{docker-YZKRM7IP.js → docker-TAC6G4VU.js} +5 -7
- package/dist/{doctor-YOAF7QPL.js → doctor-LK6E3XOW.js} +66 -41
- package/dist/{emit-artifact-cmd-SCF2FKKS.js → emit-artifact-cmd-L4REOPWX.js} +13 -14
- package/dist/{emit-cmd-7NMNKDK7.js → emit-cmd-7TU3JBJ2.js} +2 -2
- package/dist/{emit-criteria-cmd-B6CKUWTW.js → emit-criteria-cmd-QVFOQARC.js} +10 -11
- package/dist/{emit-demo-cmd-BNWRETMJ.js → emit-demo-cmd-L4B6OOTV.js} +15 -16
- package/dist/{emit-finding-cmd-TPSHNZNE.js → emit-finding-cmd-YXFCIWMU.js} +10 -11
- package/dist/{emit-result-cmd-J5DXIC2Q.js → emit-result-cmd-NI4LCTUM.js} +12 -13
- package/dist/{emit-step-cmd-NPH46KAO.js → emit-step-cmd-HWAUCZZB.js} +10 -11
- package/dist/{exec-client-ANW4KGMN.js → exec-client-QB4OZRGM.js} +3 -4
- package/dist/find-unit-4UR647S4.js +18 -0
- package/dist/{findings-cmd-4FJDCFL3.js → findings-cmd-O2IBO25E.js} +10 -11
- package/dist/{fleet-readiness-OK6534T6.js → fleet-readiness-NJYTQYTA.js} +5 -6
- package/dist/{governing-source-GNKTNM32.js → governing-source-JCI7VDQ6.js} +12 -13
- package/dist/{guest-init-C6M7YT3U.js → guest-init-IF5LXGUL.js} +4 -5
- package/dist/{hook-fast-LVTJWAG3.js → hook-fast-GPUL7T77.js} +1 -1
- package/dist/host-key-5RU322O3.js +9 -0
- package/dist/{image-tag-53DJPMSZ.js → image-tag-SEMBVB5D.js} +3 -4
- package/dist/index.js +4 -4
- package/dist/{init-RAJKTSPJ.js → init-2CEULE3F.js} +25 -27
- package/dist/{init-JGYMAOD5.js → init-FAIF7KOK.js} +25 -27
- package/dist/{init-cmd-IB3KTYCV.js → init-cmd-HZUUMO45.js} +13 -14
- package/dist/{init-update-VPWSWDY7.js → init-update-TTMFFNMB.js} +12 -13
- package/dist/{install-cmd-NP7GULCD.js → install-cmd-5H6M2KJ7.js} +5 -6
- package/dist/{logs-V6AES5FE.js → logs-6CMB3DO6.js} +2 -3
- package/dist/{loop-ZGDZMVFN.js → loop-7U7MVICV.js} +40 -42
- package/dist/{machine-LJ3VMGS3.js → machine-S3JHOX4V.js} +25 -27
- package/dist/{mcp-serve-cmd-DHGCAMJS.js → mcp-serve-cmd-MWGIN6YL.js} +4 -5
- package/dist/{paths-DMKAJVA5.js → paths-T2DEBI62.js} +2 -3
- package/dist/pending-ERXWVLLG.js +9 -0
- package/dist/{pidfile-XCTXBGA3.js → pidfile-EAD2OEM7.js} +3 -4
- package/dist/{record-RQLGRYWG.js → record-IMXQNHPB.js} +3 -4
- package/dist/{runner-env-AUG2OIP4.js → runner-env-BJPUHAKZ.js} +9 -11
- package/dist/{runner-identity-BQA4SBU6.js → runner-identity-ZCPPC2BJ.js} +5 -7
- package/dist/{runner-key-ZIF7M7YN.js → runner-key-CYSUYKSX.js} +25 -27
- package/dist/{session-sender-VQ4LHJ5K.js → session-sender-5T7BXPKC.js} +13 -14
- package/dist/{spec-cmd-PXM4FJ2O.js → spec-cmd-4ABYAFNZ.js} +11 -12
- package/dist/{status-27EFD2WE.js → status-2AP7J2L7.js} +32 -34
- package/dist/{sync-cmd-VAV7TR2A.js → sync-cmd-34CGNA6T.js} +12 -13
- package/dist/{update-steps-7YLAFW3E.js → update-steps-JQOCCDWO.js} +33 -35
- package/dist/{watch-42XJSTTB.js → watch-6HU7LCUY.js} +12 -13
- package/dist/{work-claim-cmd-HSG4OHFI.js → work-claim-cmd-5QKLHSCR.js} +16 -18
- package/dist/{work-cmd-KCBU3RSD.js → work-cmd-3MKUIE2C.js} +10 -11
- package/dist/{work-comment-cmd-QIP2OUJC.js → work-comment-cmd-ESC3DSHI.js} +11 -12
- package/dist/{work-demo-cmd-6IKAG6ES.js → work-demo-cmd-7S23DGYO.js} +10 -11
- package/dist/{work-logs-cmd-RMKJA4AI.js → work-logs-cmd-46UPNN7Q.js} +10 -11
- package/dist/{work-open-pr-cmd-IAVLUUWW.js → work-open-pr-cmd-JNGTGLIP.js} +11 -12
- package/dist/{work-pr-cmd-3U7SVQII.js → work-pr-cmd-2J2LKETD.js} +10 -11
- package/dist/{work-proofs-cmd-6ZY6ZNNE.js → work-proofs-cmd-HRWTHYSS.js} +11 -12
- package/dist/{work-proofs-record-54GBEUJP.js → work-proofs-record-6OKAT3IC.js} +18 -19
- package/dist/{work-stop-cmd-LH5XY4YL.js → work-stop-cmd-Y22XIVQ6.js} +10 -11
- package/package.json +1 -1
- package/dist/build-4HFDZTUX.js +0 -14
- package/dist/chunk-3Z3MPR55.js +0 -226
- package/dist/chunk-HACGUL52.js +0 -183
- package/dist/host-key-DUGGHAGR.js +0 -10
- package/dist/inspect-DNLXTXLA.js +0 -6
- package/dist/install-QJWJFIWB.js +0 -19
- package/dist/pending-B55JZFOV.js +0 -10
- package/dist/{chunk-2AIOOU3A.js → chunk-KPHRRCUY.js} +1 -1
|
@@ -1,50 +1,47 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import { currentLink, execStartCommand } from './chunk-
|
|
6
|
-
import { detectMachine, helperSocketPath, ensureFirecrackerAndJailer } from './chunk-
|
|
3
|
+
import { realOwnership, accountNamed, handOver, runRunnerInstall, launcherSummary, restartNote, accountIdentity } from './chunk-GC5PVMIJ.js';
|
|
4
|
+
import './chunk-OS7DJOQJ.js';
|
|
5
|
+
import { currentLink, execStartCommand } from './chunk-UMYYYF7B.js';
|
|
6
|
+
import { detectMachine, helperSocketPath, ensureFirecrackerAndJailer } from './chunk-JQSZTQSK.js';
|
|
7
7
|
import './chunk-2PGI6RDE.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-3NFZN7H6.js';
|
|
10
|
-
import './chunk-ENFBYN4A.js';
|
|
11
|
-
import './chunk-JBJTC3UU.js';
|
|
8
|
+
import './chunk-UO4FQAOX.js';
|
|
12
9
|
import './chunk-OGFGZQA3.js';
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
10
|
+
import './chunk-2ILU7UAU.js';
|
|
11
|
+
import './chunk-OGPEHSNW.js';
|
|
12
|
+
import './chunk-RFVIQLNB.js';
|
|
13
|
+
import './chunk-SYVRBBLW.js';
|
|
17
14
|
import './chunk-TQMI335S.js';
|
|
18
|
-
import
|
|
19
|
-
import {
|
|
20
|
-
import './chunk-
|
|
21
|
-
import
|
|
22
|
-
import './chunk-
|
|
23
|
-
import { firecrackerArch, MICROVM_ARCHES, FIRECRACKER_VERSION, FIRECRACKER_BINARY_SHA256, JAILER_BINARY_SHA256, HOST_HELPER_SHA256, HOST_HELPER_BASE_URL,
|
|
15
|
+
import './chunk-OQLF3MQQ.js';
|
|
16
|
+
import { unitNameProblem, DEFAULT_UNIT_NAME, checkFit, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-INOUUSYI.js';
|
|
17
|
+
import { runnerVmOf, loadRunnerConfig, builtinKind } from './chunk-2D6CKNR7.js';
|
|
18
|
+
import './chunk-KM2HLQE3.js';
|
|
19
|
+
import { parseSize, readJobFile } from './chunk-5AFPP3GZ.js';
|
|
20
|
+
import { HOST_HELPER_ASSETS_VERSION, builderDiskPinned, hostHelperSupportsSlice, HOST_HELPER_SLICE_SINCE, firecrackerArch, MICROVM_ARCHES, FIRECRACKER_VERSION, FIRECRACKER_BINARY_SHA256, JAILER_BINARY_SHA256, HOST_HELPER_SHA256, HOST_HELPER_BASE_URL, hostHelperPinned } from './chunk-4UPET3R7.js';
|
|
24
21
|
import { realLima } from './chunk-77MM5RYD.js';
|
|
25
22
|
import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
|
|
26
|
-
import './chunk-
|
|
23
|
+
import './chunk-YNMVVQOQ.js';
|
|
24
|
+
import './chunk-JBJTC3UU.js';
|
|
25
|
+
import './chunk-UN3SQTVL.js';
|
|
27
26
|
import './chunk-IP7BIBXJ.js';
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-MECW77XP.js';
|
|
31
|
-
import './chunk-AJYZNISW.js';
|
|
32
|
-
import './chunk-NKOM4JKY.js';
|
|
27
|
+
import './chunk-AVPLEFQR.js';
|
|
28
|
+
import './chunk-FVCHHSHB.js';
|
|
33
29
|
import './chunk-Y5YCX6AL.js';
|
|
34
30
|
import './chunk-G2JWZDFA.js';
|
|
35
31
|
import './chunk-ANPNT6PM.js';
|
|
36
|
-
import './chunk-
|
|
32
|
+
import './chunk-MECW77XP.js';
|
|
33
|
+
import './chunk-NKOM4JKY.js';
|
|
34
|
+
import './chunk-CAQCDYKF.js';
|
|
37
35
|
import './chunk-JWNH4ZTF.js';
|
|
38
|
-
import './chunk-
|
|
36
|
+
import './chunk-3N77LUQI.js';
|
|
39
37
|
import './chunk-PJDQPF5N.js';
|
|
40
|
-
import './chunk-
|
|
41
|
-
import { runnerDir } from './chunk-N7LAEN3T.js';
|
|
42
|
-
import './chunk-YOBQIXX6.js';
|
|
38
|
+
import './chunk-MOI2KDLH.js';
|
|
43
39
|
import './chunk-ZJSNLVCE.js';
|
|
44
40
|
import './chunk-FGF52V4V.js';
|
|
45
41
|
import './chunk-HCVLP7XA.js';
|
|
46
42
|
import './chunk-BJ3KTMDH.js';
|
|
47
43
|
import './chunk-ZQSANKS4.js';
|
|
44
|
+
import './chunk-AJYZNISW.js';
|
|
48
45
|
import './chunk-5BHIBJDA.js';
|
|
49
46
|
import './chunk-CDDED64E.js';
|
|
50
47
|
import './chunk-RA3O54FC.js';
|
|
@@ -54,11 +51,12 @@ import './chunk-YQR6E6OV.js';
|
|
|
54
51
|
import './chunk-FGXT5OXS.js';
|
|
55
52
|
import './chunk-EOTMDIYC.js';
|
|
56
53
|
import './chunk-VNVZDWO3.js';
|
|
57
|
-
import './chunk-
|
|
54
|
+
import { runnerDir, vmAssetsDir } from './chunk-PXGU3GKY.js';
|
|
55
|
+
import { CLAUDE_ENV_FILE } from './chunk-G4W4B33M.js';
|
|
58
56
|
import './chunk-MESOOLF4.js';
|
|
59
57
|
import './chunk-Z5GEFMRW.js';
|
|
60
58
|
import { userInfo, totalmem, tmpdir } from 'os';
|
|
61
|
-
import {
|
|
59
|
+
import { dirname, join } from 'path';
|
|
62
60
|
import { createHash } from 'crypto';
|
|
63
61
|
import { rmSync, existsSync, readdirSync, mkdtempSync, writeFileSync, readFileSync, statSync, lstatSync } from 'fs';
|
|
64
62
|
import { spawnSync } from 'child_process';
|
|
@@ -69,6 +67,7 @@ var ETC = "/etc/outerlayer";
|
|
|
69
67
|
var UID_BASE = 2e9;
|
|
70
68
|
var UID_COUNT = 256;
|
|
71
69
|
var UID_ATTEMPTS = 8;
|
|
70
|
+
var UID_STEP = 65536;
|
|
72
71
|
function helperUnitFor(unitName) {
|
|
73
72
|
return `${unitName}-helper`;
|
|
74
73
|
}
|
|
@@ -84,6 +83,23 @@ function helperConfigPathFor(unitName) {
|
|
|
84
83
|
function helperUnitPathFor(unitName) {
|
|
85
84
|
return `/etc/systemd/system/${helperUnitFor(unitName)}.service`;
|
|
86
85
|
}
|
|
86
|
+
function sliceFor(unitName) {
|
|
87
|
+
return `${unitName}-builds.slice`;
|
|
88
|
+
}
|
|
89
|
+
function slicePathFor(unitName) {
|
|
90
|
+
return `/etc/systemd/system/${sliceFor(unitName)}`;
|
|
91
|
+
}
|
|
92
|
+
function sliceUnitText(unitName, limits) {
|
|
93
|
+
return `${UNIT_MARKER}
|
|
94
|
+
[Unit]
|
|
95
|
+
Description=OuterLayer builds of ${unitName}
|
|
96
|
+
|
|
97
|
+
[Slice]
|
|
98
|
+
${limits.memoryMaxBytes === void 0 ? "" : `MemoryMax=${limits.memoryMaxBytes}
|
|
99
|
+
MemorySwapMax=0
|
|
100
|
+
`}${limits.cpus === void 0 ? "" : `CPUQuota=${Math.round(limits.cpus * 100)}%
|
|
101
|
+
`}`;
|
|
102
|
+
}
|
|
87
103
|
function sha256Of(bytes) {
|
|
88
104
|
return createHash("sha256").update(bytes).digest("hex");
|
|
89
105
|
}
|
|
@@ -119,6 +135,7 @@ function helperConfigText(input) {
|
|
|
119
135
|
socket: helperSocketFor(input.unitName),
|
|
120
136
|
uidBase: input.uidBase,
|
|
121
137
|
uidCount: UID_COUNT,
|
|
138
|
+
...input.slice ? { slice: sliceFor(input.unitName) } : {},
|
|
122
139
|
jailer: { path: `${dir}/jailer`, sha256: input.pins.jailer },
|
|
123
140
|
firecracker: { path: `${dir}/firecracker`, sha256: input.pins.firecracker },
|
|
124
141
|
firecrackerVersion: input.pins.firecrackerVersion
|
|
@@ -153,9 +170,28 @@ async function installHelper(request, deps) {
|
|
|
153
170
|
`no directory that only root can write, below only such directories, is on the same file system as ${buildsRoot}, so the root helper was not installed: it links each build's files into its jail, and a link cannot cross file systems. ${without}`
|
|
154
171
|
]);
|
|
155
172
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
173
|
+
const others = helper.helperRanges().filter((range) => range.helper !== unit);
|
|
174
|
+
const own = helper.helperRanges().find((range) => range.helper === unit);
|
|
175
|
+
const takerOf = (base) => {
|
|
176
|
+
const account = helper.uidRangeTaker(base, UID_COUNT);
|
|
177
|
+
if (account !== void 0) return account;
|
|
178
|
+
const rival = others.find((range) => base < range.uidBase + range.uidCount && range.uidBase < base + UID_COUNT);
|
|
179
|
+
return rival === void 0 ? void 0 : `the root helper ${rival.helper}`;
|
|
180
|
+
};
|
|
181
|
+
const tried = [];
|
|
182
|
+
let uidBase;
|
|
183
|
+
const candidates = own === void 0 ? Array.from({ length: UID_ATTEMPTS + 1 }, (_, i) => UID_BASE + i * UID_STEP) : [own.uidBase, ...Array.from({ length: UID_ATTEMPTS + 1 }, (_, i) => UID_BASE + i * UID_STEP)];
|
|
184
|
+
for (const base of candidates) {
|
|
185
|
+
const taker = takerOf(base);
|
|
186
|
+
if (taker === void 0) {
|
|
187
|
+
uidBase = base;
|
|
188
|
+
break;
|
|
189
|
+
}
|
|
190
|
+
tried.push(`${base} to ${base + UID_COUNT - 1} is used by ${taker}`);
|
|
191
|
+
}
|
|
192
|
+
if (uidBase === void 0) {
|
|
193
|
+
return notInstalled(false, [`every range of ${UID_COUNT} user ids that was tried is taken (${tried.join("; ")}), so the root helper was not installed`]);
|
|
194
|
+
}
|
|
159
195
|
let assets;
|
|
160
196
|
let helperBytes;
|
|
161
197
|
try {
|
|
@@ -167,7 +203,7 @@ async function installHelper(request, deps) {
|
|
|
167
203
|
if (sha256Of(helperBytes) !== helper.pins.helper) {
|
|
168
204
|
return notInstalled(false, [`the root helper that was downloaded has sha256 ${sha256Of(helperBytes)}, not the ${helper.pins.helper} this release pins, so it was not installed`]);
|
|
169
205
|
}
|
|
170
|
-
const config = helperConfigText({ unitName: request.unitName, uid: identity.uid, gid: identity.gid, buildsRoot, jailBase, uidBase, pins: helper.pins });
|
|
206
|
+
const config = helperConfigText({ unitName: request.unitName, uid: identity.uid, gid: identity.gid, buildsRoot, jailBase, uidBase, slice: request.slice !== void 0, pins: helper.pins });
|
|
171
207
|
const unitPath = helperUnitPathFor(request.unitName);
|
|
172
208
|
const existed = deps.systemd.read(unitPath) !== void 0;
|
|
173
209
|
const staged = helper.stage({ "outerlayer-host-helper": helperBytes, "helper.json": config });
|
|
@@ -193,6 +229,9 @@ async function installHelper(request, deps) {
|
|
|
193
229
|
}
|
|
194
230
|
removeFiles();
|
|
195
231
|
};
|
|
232
|
+
const removeNewSlice = () => {
|
|
233
|
+
if (deps.systemd.read(slicePathFor(request.unitName)) !== void 0) deps.systemd.remove(slicePathFor(request.unitName));
|
|
234
|
+
};
|
|
196
235
|
try {
|
|
197
236
|
const copies = [
|
|
198
237
|
{ from: join(staged.dir, "outerlayer-host-helper"), to: `${dir}/outerlayer-host-helper`, pin: helper.pins.helper, what: "helper" },
|
|
@@ -224,15 +263,29 @@ async function installHelper(request, deps) {
|
|
|
224
263
|
} finally {
|
|
225
264
|
staged.remove();
|
|
226
265
|
}
|
|
227
|
-
|
|
266
|
+
const slicePath = slicePathFor(request.unitName);
|
|
228
267
|
try {
|
|
268
|
+
if (request.slice !== void 0) {
|
|
269
|
+
say(`sudo tee ${slicePath}`);
|
|
270
|
+
deps.systemd.write(slicePath, sliceUnitText(request.unitName, request.slice));
|
|
271
|
+
} else if (deps.systemd.read(slicePath)?.startsWith(UNIT_MARKER) === true) {
|
|
272
|
+
say(`sudo rm ${slicePath}`);
|
|
273
|
+
deps.systemd.remove(slicePath);
|
|
274
|
+
}
|
|
275
|
+
say(`sudo tee ${unitPath}`);
|
|
229
276
|
deps.systemd.write(unitPath, helperUnitText(request.unitName));
|
|
230
277
|
} catch (err) {
|
|
231
|
-
if (!existed)
|
|
278
|
+
if (!existed) {
|
|
279
|
+
removeFiles();
|
|
280
|
+
removeNewSlice();
|
|
281
|
+
}
|
|
232
282
|
return notInstalled(false, [...lines, err instanceof Error ? err.message : String(err)]);
|
|
233
283
|
}
|
|
234
284
|
if (!systemctl(["daemon-reload"]) || !systemctl(["enable", "--now", unit]) || existed && !systemctl(["restart", unit])) {
|
|
235
|
-
if (!existed)
|
|
285
|
+
if (!existed) {
|
|
286
|
+
discard();
|
|
287
|
+
removeNewSlice();
|
|
288
|
+
}
|
|
236
289
|
lines.push(`the unit ${unit} did not start, so the root helper is not running: ${without}`);
|
|
237
290
|
return notInstalled(false, lines);
|
|
238
291
|
}
|
|
@@ -272,6 +325,12 @@ function uninstallHelper(request, deps) {
|
|
|
272
325
|
}
|
|
273
326
|
root(["rm", "-rf", dir]);
|
|
274
327
|
root(["rm", "-f", configFile]);
|
|
328
|
+
const slicePath = slicePathFor(request.unitName);
|
|
329
|
+
if (deps.systemd.read(slicePath)?.startsWith(UNIT_MARKER) === true) {
|
|
330
|
+
say(`sudo rm ${slicePath}`);
|
|
331
|
+
deps.systemd.remove(slicePath);
|
|
332
|
+
systemctl(["daemon-reload"]);
|
|
333
|
+
}
|
|
275
334
|
if (jailBase !== void 0) root(["rmdir", `${jailBase}/firecracker`, jailBase]);
|
|
276
335
|
lines.push(`removed the root helper ${unit}`);
|
|
277
336
|
return { ok: true, installed: false, lines };
|
|
@@ -387,28 +446,44 @@ function findJailBase(buildsDir, unitName) {
|
|
|
387
446
|
function overlaps(start, length, base, count) {
|
|
388
447
|
return length > 0 && start < base + count && start + length > base;
|
|
389
448
|
}
|
|
390
|
-
function
|
|
449
|
+
function idRangeTaker(base, count) {
|
|
391
450
|
for (const file of ["/etc/passwd", "/etc/group"]) {
|
|
392
451
|
const text = readText(file);
|
|
393
|
-
if (text === void 0) return
|
|
452
|
+
if (text === void 0) return `${file}, which could not be read`;
|
|
394
453
|
for (const line of text.split("\n")) {
|
|
395
454
|
const fields = line.split(":");
|
|
396
|
-
if (overlaps(Number(fields[2]), 1, base, count)) return
|
|
397
|
-
if (file === "/etc/passwd" && overlaps(Number(fields[3]), 1, base, count)) return
|
|
455
|
+
if (overlaps(Number(fields[2]), 1, base, count)) return `${file === "/etc/passwd" ? "the account" : "the group"} ${fields[0]}`;
|
|
456
|
+
if (file === "/etc/passwd" && overlaps(Number(fields[3]), 1, base, count)) return `the primary group of the account ${fields[0]}`;
|
|
398
457
|
}
|
|
399
458
|
}
|
|
400
459
|
for (const file of ["/etc/subuid", "/etc/subgid"]) {
|
|
401
460
|
for (const line of (readText(file) ?? "").split("\n")) {
|
|
402
461
|
const fields = line.split(":");
|
|
403
|
-
if (overlaps(Number(fields[1]), Number(fields[2]), base, count)) return
|
|
462
|
+
if (overlaps(Number(fields[1]), Number(fields[2]), base, count)) return `the grant to ${fields[0]} in ${file}`;
|
|
404
463
|
}
|
|
405
464
|
}
|
|
406
|
-
return
|
|
465
|
+
return void 0;
|
|
407
466
|
}
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
467
|
+
var HELPER_CONFIG_DIR = "/etc/outerlayer";
|
|
468
|
+
function readHelperRanges(dir = HELPER_CONFIG_DIR) {
|
|
469
|
+
let names;
|
|
470
|
+
try {
|
|
471
|
+
names = readdirSync(dir);
|
|
472
|
+
} catch {
|
|
473
|
+
return [];
|
|
474
|
+
}
|
|
475
|
+
const ranges = [];
|
|
476
|
+
for (const name of names) {
|
|
477
|
+
if (!name.endsWith("-helper.json")) continue;
|
|
478
|
+
const text = readText(join(dir, name));
|
|
479
|
+
if (text === void 0) continue;
|
|
480
|
+
try {
|
|
481
|
+
const config = JSON.parse(text);
|
|
482
|
+
if (typeof config.uidBase === "number" && typeof config.uidCount === "number") ranges.push({ helper: name.slice(0, -".json".length), uidBase: config.uidBase, uidCount: config.uidCount });
|
|
483
|
+
} catch {
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
return ranges;
|
|
412
487
|
}
|
|
413
488
|
function realHelperDeps() {
|
|
414
489
|
const arch = firecrackerArch(process.arch);
|
|
@@ -438,13 +513,10 @@ function realHelperDeps() {
|
|
|
438
513
|
return void 0;
|
|
439
514
|
}
|
|
440
515
|
},
|
|
441
|
-
identity:
|
|
442
|
-
const uid = account === userInfo().username ? userInfo().uid : idOf("-u", account);
|
|
443
|
-
const gid = account === userInfo().username ? userInfo().gid : idOf("-g", account);
|
|
444
|
-
return uid === void 0 || gid === void 0 || uid < 0 || gid < 0 ? void 0 : { uid, gid };
|
|
445
|
-
},
|
|
516
|
+
identity: accountIdentity,
|
|
446
517
|
jailBase: findJailBase,
|
|
447
|
-
|
|
518
|
+
uidRangeTaker: idRangeTaker,
|
|
519
|
+
helperRanges: () => readHelperRanges(),
|
|
448
520
|
stage: (files) => {
|
|
449
521
|
const dir = mkdtempSync(join(tmpdir(), "outerlayer-helper-"));
|
|
450
522
|
for (const [name, content] of Object.entries(files)) writeFileSync(join(dir, name), content, { mode: 493 });
|
|
@@ -479,9 +551,57 @@ function accountCannotStart(account, nodePath, entry, can) {
|
|
|
479
551
|
return void 0;
|
|
480
552
|
}
|
|
481
553
|
function vmArgs(input) {
|
|
482
|
-
return [
|
|
554
|
+
return [
|
|
555
|
+
...input.buildMemoryMax === void 0 ? [] : ["--build-memory-max", input.buildMemoryMax],
|
|
556
|
+
...input.buildCpusMax === void 0 ? [] : ["--build-cpus-max", String(input.buildCpusMax)],
|
|
557
|
+
...input.print === true ? ["--print"] : [],
|
|
558
|
+
...input.replace === true ? ["--replace"] : [],
|
|
559
|
+
...input.allowDowngrade === true ? ["--allow-downgrade"] : [],
|
|
560
|
+
...input.user === void 0 ? [] : ["--user", input.user],
|
|
561
|
+
...input.unitName === void 0 ? [] : ["--unit-name", input.unitName]
|
|
562
|
+
];
|
|
563
|
+
}
|
|
564
|
+
var MAX_BUILD_CPUS = 1024;
|
|
565
|
+
function cpusAreValid(cpus) {
|
|
566
|
+
return Number.isFinite(cpus) && Math.round(cpus * 100) >= 1 && cpus <= MAX_BUILD_CPUS;
|
|
567
|
+
}
|
|
568
|
+
function sliceOf(input, usesVm, helperVersion) {
|
|
569
|
+
if (input.buildMemoryMax === void 0 && input.buildCpusMax === void 0) return {};
|
|
570
|
+
if (!usesVm) return { refusal: "\u2717 --build-memory-max and --build-cpus-max limit microVM builds, and this runner's hooks are not builtin:vm. Nothing is set up" };
|
|
571
|
+
if (!hostHelperSupportsSlice(helperVersion)) {
|
|
572
|
+
return { refusal: `\u2717 the root helper this release pins (guest-${helperVersion}) cannot start builds in a slice, so the limits would not apply. Nothing is set up: update the CLI to a release that pins guest-${HOST_HELPER_SLICE_SINCE} or later, or install without --build-memory-max and --build-cpus-max` };
|
|
573
|
+
}
|
|
574
|
+
const parsedBytes = input.buildMemoryMax === void 0 ? void 0 : parseSize(input.buildMemoryMax);
|
|
575
|
+
const memoryMaxBytes = parsedBytes === void 0 ? void 0 : Math.floor(parsedBytes);
|
|
576
|
+
if (input.buildMemoryMax !== void 0 && (memoryMaxBytes === void 0 || !Number.isSafeInteger(memoryMaxBytes) || memoryMaxBytes <= 0)) return { refusal: `\u2717 --build-memory-max ${input.buildMemoryMax} is not a size such as 16g. Nothing is set up` };
|
|
577
|
+
if (input.buildCpusMax !== void 0 && !cpusAreValid(input.buildCpusMax)) return { refusal: `\u2717 --build-cpus-max ${input.buildCpusMax} is not a number of CPUs from 0.01 to 1024. Nothing is set up` };
|
|
578
|
+
return { limits: { memoryMaxBytes, cpus: input.buildCpusMax } };
|
|
483
579
|
}
|
|
484
580
|
async function installServiceCommand(input, deps = {}) {
|
|
581
|
+
if (input.print === true) return installServiceSteps(input, deps);
|
|
582
|
+
const ownership = deps.ownership ?? realOwnership();
|
|
583
|
+
const account = accountNamed(serviceAccount(input), ownership);
|
|
584
|
+
let result;
|
|
585
|
+
try {
|
|
586
|
+
result = await installServiceSteps(input, deps);
|
|
587
|
+
} finally {
|
|
588
|
+
const configDir = dirname(input.configPath);
|
|
589
|
+
const runner = runnerDir(input.configPath);
|
|
590
|
+
const problem = handOver(
|
|
591
|
+
account,
|
|
592
|
+
[{ path: join(configDir, CLAUDE_ENV_FILE) }, { path: join(configDir, "runner.env") }, { path: runner }, { path: dirname(vmAssetsDir(runner)) }, { path: vmAssetsDir(runner), tree: true }],
|
|
593
|
+
ownership
|
|
594
|
+
);
|
|
595
|
+
if (problem !== void 0 && result !== void 0) result = { ...result, ok: false, state: "refused", lines: [...result.lines, problem] };
|
|
596
|
+
}
|
|
597
|
+
return result;
|
|
598
|
+
}
|
|
599
|
+
function serviceAccount(input) {
|
|
600
|
+
return input.user ?? userInfo().username;
|
|
601
|
+
}
|
|
602
|
+
async function installServiceSteps(input, deps) {
|
|
603
|
+
const nameProblem = input.unitName === void 0 ? void 0 : unitNameProblem(input.unitName);
|
|
604
|
+
if (nameProblem !== void 0) return { ok: false, state: "refused", lines: [nameProblem] };
|
|
485
605
|
const vm = runnerVmOf(input.configPath);
|
|
486
606
|
if (vm !== void 0) {
|
|
487
607
|
const result = await serviceInVm((deps.lima ?? realLima)(), vm.instance, "install", { home: input.home, extraArgs: vmArgs(input) });
|
|
@@ -500,13 +620,15 @@ async function installServiceCommand(input, deps = {}) {
|
|
|
500
620
|
PATH: process.env.PATH,
|
|
501
621
|
replace: input.replace,
|
|
502
622
|
allowDowngrade: input.allowDowngrade,
|
|
503
|
-
command: "runner install --service"
|
|
623
|
+
command: "runner install --service",
|
|
624
|
+
account: serviceAccount(input),
|
|
625
|
+
ownership: deps.ownership
|
|
504
626
|
});
|
|
505
627
|
launcherLines = [launcherSummary(installed.launcher)].filter((line) => line !== void 0);
|
|
506
628
|
launcherNotes = installed.launcher.notes;
|
|
507
629
|
restartLine = restartNote(installed);
|
|
508
630
|
}
|
|
509
|
-
const account = input
|
|
631
|
+
const account = serviceAccount(input);
|
|
510
632
|
const serviceDeps = (deps.service ?? realServiceDeps)();
|
|
511
633
|
if (input.print !== true && account !== userInfo().username && serviceDeps.accountCan !== void 0) {
|
|
512
634
|
const entry = join(currentLink(input.configPath), "node_modules", "@outerlayer", "cli", "dist", "index.js");
|
|
@@ -515,8 +637,17 @@ async function installServiceCommand(input, deps = {}) {
|
|
|
515
637
|
}
|
|
516
638
|
const unitName = input.unitName ?? DEFAULT_UNIT_NAME;
|
|
517
639
|
const usesVm = builtinKind(config.hooks.provision) === "vm";
|
|
518
|
-
const
|
|
640
|
+
const slice = sliceOf(input, usesVm, deps.helperAssetsVersion ?? HOST_HELPER_ASSETS_VERSION);
|
|
641
|
+
if (slice.refusal !== void 0) return { ok: false, state: "refused", lines: [slice.refusal] };
|
|
642
|
+
if (slice.limits?.memoryMaxBytes !== void 0 && input.print !== true) {
|
|
643
|
+
const fit = checkFit({ concurrency: config.concurrency, buildMemory: config.build?.memory ?? "8g", usableBytes: 0, sliceBytes: slice.limits.memoryMaxBytes });
|
|
644
|
+
if (!fit.fits) return { ok: false, state: "refused", lines: [`${fit.message}. Nothing is set up: lower runner.concurrency or runner.build.memory, then run this again`] };
|
|
645
|
+
}
|
|
646
|
+
const helper = input.print !== true && usesVm && serviceDeps.helper !== void 0 && serviceDeps.systemd.running() ? await installHelper({ configPath: input.configPath, unitName, user: account, ...slice.limits === void 0 ? {} : { slice: slice.limits } }, { ...serviceDeps, helper: serviceDeps.helper }) : void 0;
|
|
519
647
|
if (helper !== void 0 && !helper.ok) return { ok: false, state: "refused", lines: helper.lines };
|
|
648
|
+
if (slice.limits !== void 0 && input.print !== true && helper?.installed !== true) {
|
|
649
|
+
return { ok: false, state: "refused", lines: [...helper?.lines ?? [], "\u2717 --build-memory-max and --build-cpus-max need the root helper, and it is not installed, so the limits would not apply. Nothing else is set up"] };
|
|
650
|
+
}
|
|
520
651
|
const outcome = installService(
|
|
521
652
|
{
|
|
522
653
|
configPath: input.configPath,
|
|
@@ -530,7 +661,10 @@ async function installServiceCommand(input, deps = {}) {
|
|
|
530
661
|
print: input.print,
|
|
531
662
|
replace: input.replace,
|
|
532
663
|
restart: input.restart,
|
|
533
|
-
|
|
664
|
+
imageBuild: config.build?.imageBuild,
|
|
665
|
+
builderDiskPinned: builderDiskPinned(),
|
|
666
|
+
...helper?.installed === true ? { helperSocket: helperSocketFor(unitName), helperUnit: helperUnitFor(unitName) } : {},
|
|
667
|
+
...helper?.installed === true && slice.limits?.memoryMaxBytes !== void 0 ? { buildSliceMemoryBytes: slice.limits.memoryMaxBytes } : {}
|
|
534
668
|
},
|
|
535
669
|
serviceDeps
|
|
536
670
|
);
|
|
@@ -538,6 +672,8 @@ async function installServiceCommand(input, deps = {}) {
|
|
|
538
672
|
return { ok: outcome.ok, state: outcome.state, lines: [...helper?.lines ?? [], ...outcome.lines, ...outcome.ok ? [...restartLines, ...launcherLines] : []], unit: outcome.unit, ...launcherNotes.length > 0 ? { notes: launcherNotes } : {} };
|
|
539
673
|
}
|
|
540
674
|
async function uninstallServiceCommand(input, deps = {}) {
|
|
675
|
+
const nameProblem = input.unitName === void 0 ? void 0 : unitNameProblem(input.unitName);
|
|
676
|
+
if (nameProblem !== void 0) return { ok: false, state: "refused", lines: [nameProblem] };
|
|
541
677
|
const vm = runnerVmOf(input.configPath);
|
|
542
678
|
if (vm !== void 0) {
|
|
543
679
|
const result = await serviceInVm((deps.lima ?? realLima)(), vm.instance, "uninstall", { home: input.home, extraArgs: input.unitName === void 0 ? [] : ["--unit-name", input.unitName] });
|
|
@@ -549,4 +685,4 @@ async function uninstallServiceCommand(input, deps = {}) {
|
|
|
549
685
|
return { ok: outcome.ok, state: outcome.state, lines: [...outcome.lines, ...helper?.lines ?? []] };
|
|
550
686
|
}
|
|
551
687
|
|
|
552
|
-
export { installServiceCommand, uninstallServiceCommand };
|
|
688
|
+
export { cpusAreValid, installServiceCommand, uninstallServiceCommand };
|
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
3
|
+
export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, imageBuildOf, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, keepsHostBuilder, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf } from './chunk-2D6CKNR7.js';
|
|
4
|
+
import './chunk-KM2HLQE3.js';
|
|
5
|
+
import './chunk-5AFPP3GZ.js';
|
|
6
|
+
import './chunk-4UPET3R7.js';
|
|
7
|
+
import './chunk-MOI2KDLH.js';
|
|
8
8
|
import './chunk-AJYZNISW.js';
|
|
9
|
-
import './chunk-XLJLR7EK.js';
|
|
10
|
-
import './chunk-N7LAEN3T.js';
|
|
11
|
-
import './chunk-YOBQIXX6.js';
|
|
12
9
|
import './chunk-EOTMDIYC.js';
|
|
13
10
|
import './chunk-VNVZDWO3.js';
|
|
14
|
-
import './chunk-
|
|
11
|
+
import './chunk-PXGU3GKY.js';
|
|
12
|
+
import './chunk-G4W4B33M.js';
|
|
15
13
|
import './chunk-MESOOLF4.js';
|
|
16
14
|
import './chunk-Z5GEFMRW.js';
|
|
17
15
|
|
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { AGENTS_LAYOUT_COMMIT_LINE, COMMIT_LINE, autoConnectedLine, commitCommandsFor, commitLineFor, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-
|
|
4
|
-
import './chunk-MECW77XP.js';
|
|
5
|
-
import './chunk-AJYZNISW.js';
|
|
6
|
-
import './chunk-NKOM4JKY.js';
|
|
3
|
+
export { AGENTS_LAYOUT_COMMIT_LINE, COMMIT_LINE, autoConnectedLine, commitCommandsFor, commitLineFor, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-FVCHHSHB.js';
|
|
7
4
|
import './chunk-Y5YCX6AL.js';
|
|
8
5
|
import './chunk-G2JWZDFA.js';
|
|
9
6
|
import './chunk-ANPNT6PM.js';
|
|
10
|
-
import './chunk-
|
|
7
|
+
import './chunk-MECW77XP.js';
|
|
8
|
+
import './chunk-NKOM4JKY.js';
|
|
9
|
+
import './chunk-3N77LUQI.js';
|
|
11
10
|
import './chunk-PJDQPF5N.js';
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-N7LAEN3T.js';
|
|
14
|
-
import './chunk-YOBQIXX6.js';
|
|
11
|
+
import './chunk-MOI2KDLH.js';
|
|
15
12
|
import './chunk-BJ3KTMDH.js';
|
|
16
13
|
import './chunk-ZQSANKS4.js';
|
|
14
|
+
import './chunk-AJYZNISW.js';
|
|
17
15
|
import './chunk-5BHIBJDA.js';
|
|
18
16
|
import './chunk-CDDED64E.js';
|
|
19
17
|
import './chunk-RA3O54FC.js';
|
|
@@ -21,7 +19,8 @@ import './chunk-CRB3POP4.js';
|
|
|
21
19
|
import './chunk-FGXT5OXS.js';
|
|
22
20
|
import './chunk-EOTMDIYC.js';
|
|
23
21
|
import './chunk-VNVZDWO3.js';
|
|
24
|
-
import './chunk-
|
|
22
|
+
import './chunk-PXGU3GKY.js';
|
|
23
|
+
import './chunk-G4W4B33M.js';
|
|
25
24
|
import './chunk-MESOOLF4.js';
|
|
26
25
|
import './chunk-Z5GEFMRW.js';
|
|
27
26
|
|
|
@@ -1,53 +1,49 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { reportFailedStart, BUILD_MEMORY_VARIABLE } from './chunk-
|
|
4
|
-
import { readOwnContainer } from './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
import { reportFailedStart, BUILD_MEMORY_VARIABLE } from './chunk-O4Z2MNNL.js';
|
|
4
|
+
import { readOwnContainer } from './chunk-RHV5SRI2.js';
|
|
5
|
+
import './chunk-FD5ASWTG.js';
|
|
6
6
|
import './chunk-ZVB57WI6.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-75KZUBHD.js';
|
|
7
|
+
import './chunk-63IVRRIO.js';
|
|
9
8
|
import './chunk-I3LTIAOR.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
9
|
+
import './chunk-JBCOUY4M.js';
|
|
10
|
+
import './chunk-QANM5COC.js';
|
|
11
|
+
import './chunk-EGVHFHY4.js';
|
|
13
12
|
import './chunk-ESVW4MJY.js';
|
|
13
|
+
import './chunk-SI6WDF3U.js';
|
|
14
14
|
import './chunk-TBT347UY.js';
|
|
15
|
-
import { detectMachine, supportsContainerBuilds, MIN_ENGINE_MAJOR, describeMachineDocker, RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-
|
|
15
|
+
import { detectMachine, supportsContainerBuilds, MIN_ENGINE_MAJOR, describeMachineDocker, RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-JQSZTQSK.js';
|
|
16
16
|
import './chunk-2PGI6RDE.js';
|
|
17
|
-
import
|
|
18
|
-
import './chunk-3NFZN7H6.js';
|
|
19
|
-
import './chunk-ENFBYN4A.js';
|
|
20
|
-
import './chunk-JBJTC3UU.js';
|
|
17
|
+
import './chunk-UO4FQAOX.js';
|
|
21
18
|
import './chunk-OGFGZQA3.js';
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
24
|
-
import './chunk-
|
|
25
|
-
import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-
|
|
19
|
+
import './chunk-2ILU7UAU.js';
|
|
20
|
+
import './chunk-OGPEHSNW.js';
|
|
21
|
+
import './chunk-RFVIQLNB.js';
|
|
22
|
+
import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-SYVRBBLW.js';
|
|
26
23
|
import './chunk-TQMI335S.js';
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
30
|
-
import
|
|
31
|
-
import './chunk-
|
|
32
|
-
import './chunk-
|
|
33
|
-
import './chunk-
|
|
24
|
+
import { isAgentName, AGENT_COMMANDS } from './chunk-OQLF3MQQ.js';
|
|
25
|
+
import './chunk-INOUUSYI.js';
|
|
26
|
+
import './chunk-2D6CKNR7.js';
|
|
27
|
+
import './chunk-KM2HLQE3.js';
|
|
28
|
+
import { parseSize } from './chunk-5AFPP3GZ.js';
|
|
29
|
+
import './chunk-4UPET3R7.js';
|
|
30
|
+
import './chunk-YNMVVQOQ.js';
|
|
31
|
+
import './chunk-JBJTC3UU.js';
|
|
32
|
+
import './chunk-UN3SQTVL.js';
|
|
34
33
|
import './chunk-IP7BIBXJ.js';
|
|
35
|
-
import './chunk-
|
|
36
|
-
import './chunk-
|
|
37
|
-
import './chunk-MECW77XP.js';
|
|
38
|
-
import './chunk-AJYZNISW.js';
|
|
39
|
-
import './chunk-NKOM4JKY.js';
|
|
34
|
+
import './chunk-AVPLEFQR.js';
|
|
35
|
+
import './chunk-FVCHHSHB.js';
|
|
40
36
|
import './chunk-Y5YCX6AL.js';
|
|
41
37
|
import './chunk-G2JWZDFA.js';
|
|
42
38
|
import './chunk-ANPNT6PM.js';
|
|
43
|
-
import './chunk-
|
|
39
|
+
import './chunk-MECW77XP.js';
|
|
40
|
+
import './chunk-NKOM4JKY.js';
|
|
41
|
+
import './chunk-CAQCDYKF.js';
|
|
44
42
|
import './chunk-JWNH4ZTF.js';
|
|
45
|
-
import './chunk-
|
|
43
|
+
import './chunk-3N77LUQI.js';
|
|
46
44
|
import './chunk-PJDQPF5N.js';
|
|
47
|
-
import './chunk-
|
|
48
|
-
import './chunk-
|
|
49
|
-
import { readClaudeCredential, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES } from './chunk-YOBQIXX6.js';
|
|
50
|
-
import './chunk-CXQCBAKO.js';
|
|
45
|
+
import './chunk-MOI2KDLH.js';
|
|
46
|
+
import './chunk-25GRRBTH.js';
|
|
51
47
|
import './chunk-ZJSNLVCE.js';
|
|
52
48
|
import './chunk-2O5KA67H.js';
|
|
53
49
|
import './chunk-BKO6JEZI.js';
|
|
@@ -55,6 +51,7 @@ import './chunk-FGF52V4V.js';
|
|
|
55
51
|
import './chunk-HCVLP7XA.js';
|
|
56
52
|
import './chunk-BJ3KTMDH.js';
|
|
57
53
|
import './chunk-ZQSANKS4.js';
|
|
54
|
+
import './chunk-AJYZNISW.js';
|
|
58
55
|
import './chunk-5BHIBJDA.js';
|
|
59
56
|
import './chunk-CDDED64E.js';
|
|
60
57
|
import { resolveVersion } from './chunk-RA3O54FC.js';
|
|
@@ -67,7 +64,8 @@ import './chunk-TUSYOL2O.js';
|
|
|
67
64
|
import './chunk-FGXT5OXS.js';
|
|
68
65
|
import './chunk-EOTMDIYC.js';
|
|
69
66
|
import './chunk-VNVZDWO3.js';
|
|
70
|
-
import './chunk-
|
|
67
|
+
import './chunk-PXGU3GKY.js';
|
|
68
|
+
import { readClaudeCredential, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES } from './chunk-G4W4B33M.js';
|
|
71
69
|
import './chunk-MESOOLF4.js';
|
|
72
70
|
import './chunk-Z5GEFMRW.js';
|
|
73
71
|
import { existsSync, readFileSync, writeFileSync } from 'fs';
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { autoConnect } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-MECW77XP.js';
|
|
6
|
-
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
7
|
-
import './chunk-NKOM4JKY.js';
|
|
3
|
+
import { autoConnect } from './chunk-AVPLEFQR.js';
|
|
4
|
+
import './chunk-FVCHHSHB.js';
|
|
8
5
|
import './chunk-Y5YCX6AL.js';
|
|
9
6
|
import './chunk-G2JWZDFA.js';
|
|
10
7
|
import './chunk-ANPNT6PM.js';
|
|
11
|
-
import
|
|
8
|
+
import './chunk-MECW77XP.js';
|
|
9
|
+
import './chunk-NKOM4JKY.js';
|
|
10
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-3N77LUQI.js';
|
|
12
11
|
import './chunk-PJDQPF5N.js';
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-N7LAEN3T.js';
|
|
15
|
-
import './chunk-YOBQIXX6.js';
|
|
12
|
+
import './chunk-MOI2KDLH.js';
|
|
16
13
|
import './chunk-BJ3KTMDH.js';
|
|
17
14
|
import './chunk-ZQSANKS4.js';
|
|
15
|
+
import { resolveRepoIdentity } from './chunk-AJYZNISW.js';
|
|
18
16
|
import './chunk-5BHIBJDA.js';
|
|
19
17
|
import './chunk-CDDED64E.js';
|
|
20
18
|
import './chunk-RA3O54FC.js';
|
|
@@ -22,7 +20,8 @@ import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
|
22
20
|
import './chunk-FGXT5OXS.js';
|
|
23
21
|
import './chunk-EOTMDIYC.js';
|
|
24
22
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
25
|
-
import './chunk-
|
|
23
|
+
import './chunk-PXGU3GKY.js';
|
|
24
|
+
import './chunk-G4W4B33M.js';
|
|
26
25
|
import './chunk-MESOOLF4.js';
|
|
27
26
|
import './chunk-Z5GEFMRW.js';
|
|
28
27
|
|
|
@@ -1,12 +1,10 @@
|
|
|
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-CAQCDYKF.js';
|
|
4
4
|
import './chunk-JWNH4ZTF.js';
|
|
5
|
-
import { resolveGatewayCredentials, defaultFetch } from './chunk-
|
|
5
|
+
import { resolveGatewayCredentials, defaultFetch } from './chunk-3N77LUQI.js';
|
|
6
6
|
import './chunk-PJDQPF5N.js';
|
|
7
|
-
import './chunk-
|
|
8
|
-
import './chunk-N7LAEN3T.js';
|
|
9
|
-
import './chunk-YOBQIXX6.js';
|
|
7
|
+
import './chunk-MOI2KDLH.js';
|
|
10
8
|
import './chunk-ZJSNLVCE.js';
|
|
11
9
|
import { layoutRefusalMessage, unsupportedLayout, sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-FGF52V4V.js';
|
|
12
10
|
import './chunk-HCVLP7XA.js';
|
|
@@ -22,7 +20,8 @@ import './chunk-TUSYOL2O.js';
|
|
|
22
20
|
import './chunk-FGXT5OXS.js';
|
|
23
21
|
import './chunk-EOTMDIYC.js';
|
|
24
22
|
import './chunk-VNVZDWO3.js';
|
|
25
|
-
import './chunk-
|
|
23
|
+
import './chunk-PXGU3GKY.js';
|
|
24
|
+
import './chunk-G4W4B33M.js';
|
|
26
25
|
import './chunk-MESOOLF4.js';
|
|
27
26
|
import './chunk-Z5GEFMRW.js';
|
|
28
27
|
import { execFileSync } from 'child_process';
|