@outerlayer/cli 0.27.1 → 0.28.1
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 +32 -0
- package/README.md +6 -0
- package/dist/{agent-setup-UW36TAQM.js → agent-setup-YVR5RO56.js} +17 -14
- package/dist/{bridge-B5VJVECY.js → bridge-WW2V7DTB.js} +3 -2
- package/dist/build-5FRC3RKM.js +13 -0
- package/dist/build-info.json +1 -1
- package/dist/{builder-6Y6ZWGNH.js → builder-4F2XNSFC.js} +7 -6
- package/dist/{check-YTXFVWK7.js → check-NDDOASVO.js} +70 -61
- package/dist/{chunk-VS27BP3E.js → chunk-2YSCKEL2.js} +7 -7
- package/dist/{chunk-BPKO76QR.js → chunk-4XN5FRRJ.js} +4 -4
- package/dist/{chunk-EPPIISRD.js → chunk-55XLX5PA.js} +1 -1
- package/dist/{chunk-LOKSLO25.js → chunk-5B7BEQPR.js} +1 -1
- package/dist/chunk-5BHIBJDA.js +93 -0
- package/dist/{chunk-RHAGBUL5.js → chunk-5K3KB4YR.js} +1 -1
- package/dist/{chunk-ABXQBEYK.js → chunk-66T6XJAB.js} +1 -1
- package/dist/{chunk-LPFOWUHG.js → chunk-6BWJQGTV.js} +20 -13
- package/dist/{chunk-BWH36FOC.js → chunk-7CK2TJFB.js} +20 -4
- package/dist/{chunk-5VMDGJGH.js → chunk-7UGFIWIW.js} +37 -23
- package/dist/{chunk-QKIQ2R7F.js → chunk-ATJOFXTE.js} +3 -3
- package/dist/chunk-CDDED64E.js +13 -0
- package/dist/{chunk-QHH4OSD4.js → chunk-CTYSTE5C.js} +1 -1
- package/dist/{chunk-DJHNEGNM.js → chunk-DKWQMPSL.js} +18 -2
- package/dist/{chunk-IMOB4IOI.js → chunk-DQYMQ47E.js} +3 -2
- package/dist/{chunk-YETTWTAY.js → chunk-E7R2GIAW.js} +4 -4
- package/dist/{chunk-GFUE5TKO.js → chunk-F4FA3ZUT.js} +24 -14
- package/dist/{chunk-6TRNCUM4.js → chunk-FGF52V4V.js} +1 -1
- package/dist/{chunk-MATUHHN4.js → chunk-GUXWQIEY.js} +1 -1
- package/dist/{chunk-2I3LIRZP.js → chunk-HXAEQPZR.js} +101 -10
- package/dist/{chunk-R7SGBXUD.js → chunk-IKXY47R5.js} +107 -56
- package/dist/{chunk-P33PZIWS.js → chunk-ITAIEJ2T.js} +7 -142
- package/dist/{chunk-RHGF73IU.js → chunk-IVX3U7KV.js} +1 -1
- package/dist/{chunk-7OUOLGUV.js → chunk-JGML2VUN.js} +3 -7
- package/dist/{chunk-6VFH52MP.js → chunk-KVDVNOUK.js} +24 -22
- package/dist/{chunk-2F762IXY.js → chunk-LNIFYSNK.js} +3 -3
- package/dist/{chunk-XBPUTQ7E.js → chunk-MHAR6S7B.js} +1 -1
- package/dist/{chunk-7AQ5AM7U.js → chunk-MQHTM4YJ.js} +177 -21
- package/dist/{chunk-6KKM7VGZ.js → chunk-N7WAEEIU.js} +3 -3
- package/dist/{chunk-D7ECMB7B.js → chunk-NUHZV3A4.js} +1 -1
- package/dist/{chunk-MHX7YX7Y.js → chunk-P2RWZCV7.js} +1 -1
- package/dist/chunk-QBQHQEUG.js +300 -0
- package/dist/{chunk-FP23SVDD.js → chunk-QJFDAKRF.js} +5 -5
- package/dist/{chunk-WUL2OP5A.js → chunk-QKXF7CLR.js} +3 -3
- package/dist/{chunk-Y7ZCHBYB.js → chunk-QWAYRAUX.js} +3 -3
- package/dist/{chunk-64GMBWAK.js → chunk-R7SS5RLJ.js} +6 -6
- package/dist/{chunk-XZ6Q6ZNR.js → chunk-SATUCMAJ.js} +3 -2
- package/dist/{chunk-2BTFKNTR.js → chunk-SJZL5F3F.js} +2 -2
- package/dist/{chunk-HWDYLXHH.js → chunk-T2QSWFSU.js} +4 -4
- package/dist/{chunk-B7DJVG25.js → chunk-T57XUI6N.js} +3 -3
- package/dist/{chunk-E5IJ5533.js → chunk-TF7G2PR6.js} +3 -3
- package/dist/{chunk-O2IJTY7L.js → chunk-TVZAC2NP.js} +3 -3
- package/dist/{chunk-QE3UQAHK.js → chunk-UHU7H57K.js} +26 -7
- package/dist/{chunk-WSYXLLA5.js → chunk-USJZ2LDK.js} +6 -6
- package/dist/{chunk-EX5MQYEF.js → chunk-VC5J7QPV.js} +5 -5
- package/dist/{chunk-N4D5TMVU.js → chunk-VU7ZJPIR.js} +5 -5
- package/dist/{chunk-ZFBJUOYT.js → chunk-W3FSGH2M.js} +10 -10
- package/dist/{chunk-GLUKDQS4.js → chunk-WWQVKFN6.js} +1 -1
- package/dist/{chunk-55GNQPO6.js → chunk-X52PMPOM.js} +7 -7
- package/dist/{chunk-YB3CSYXX.js → chunk-XD4ZCMA4.js} +81 -2
- package/dist/{chunk-Y4OKEFAX.js → chunk-YL2VDSNF.js} +1 -1
- package/dist/{chunk-M3MHHIUW.js → chunk-Z3ASAXVU.js} +1 -1
- package/dist/{chunk-XS3FDWSZ.js → chunk-ZTY7HHYB.js} +1 -1
- package/dist/{claude-launcher-NQSZBTQ5.js → claude-launcher-7RGVOYCD.js} +6 -5
- package/dist/{cli-GHEOBXC7.js → cli-QC6ZKHPK.js} +149 -128
- package/dist/cli-update-notice-4DLZ3655.js +9 -0
- package/dist/{command-V7B7GTPZ.js → command-3F6GY4CK.js} +53 -37
- package/dist/{config-TWS5VZEN.js → config-5QYIKYUP.js} +3 -2
- package/dist/{connect-cmd-HGS7YPA2.js → connect-cmd-5TYAOK5M.js} +14 -11
- package/dist/{container-start-FHB2VDC4.js → container-start-P7O5XGOB.js} +37 -36
- package/dist/{control-plane-launch-DBQA3KLJ.js → control-plane-launch-FZMD4MXX.js} +13 -10
- package/dist/{dist-QPHZE47F.js → dist-JFVKLUHL.js} +1 -1
- package/dist/{docker-YT6Z3LXI.js → docker-ZTC4EIU4.js} +7 -6
- package/dist/{doctor-Y4NCNSJM.js → doctor-QPQDF7FB.js} +159 -41
- package/dist/{emit-artifact-cmd-ALDK55Y2.js → emit-artifact-cmd-O3IBUMUY.js} +19 -16
- package/dist/{emit-cmd-VAQHRWJR.js → emit-cmd-QUABLVO6.js} +6 -5
- package/dist/{emit-criteria-cmd-Q7SM6VP2.js → emit-criteria-cmd-JDO2VUG5.js} +15 -12
- package/dist/{emit-finding-cmd-2NBAPDSV.js → emit-finding-cmd-VCQPCLI2.js} +16 -13
- package/dist/{emit-result-cmd-KUSL56RI.js → emit-result-cmd-BNS57DD3.js} +19 -16
- package/dist/{emit-step-cmd-KD4AKEAT.js → emit-step-cmd-XN44BXYU.js} +16 -13
- package/dist/{exec-client-6WVS7DRZ.js → exec-client-VKT2XNB3.js} +4 -3
- package/dist/fleet-readiness-G5X3MKP2.js +29 -0
- package/dist/{governing-source-VVUA5TKB.js → governing-source-B3M2U4BC.js} +21 -18
- package/dist/{guest-init-H5K2RW3P.js → guest-init-QW2DPX7H.js} +5 -4
- package/dist/{hook-fast-3SUJM765.js → hook-fast-EFC44SXV.js} +4 -1
- package/dist/{host-key-XNKZCWTS.js → host-key-AC6LTZDS.js} +4 -3
- package/dist/{image-tag-R34J4O3F.js → image-tag-SS7YKJHN.js} +4 -3
- package/dist/index.js +4 -4
- package/dist/{init-3DAGX7UY.js → init-36XMFFRQ.js} +38 -37
- package/dist/init-HHEAJDPN.js +56 -0
- package/dist/{init-cmd-RIDBVSE4.js → init-cmd-K2IKTSXJ.js} +25 -21
- package/dist/{init-update-ECWNG47R.js → init-update-RWTQSTPE.js} +51 -35
- package/dist/{inspect-IPFA7AAT.js → inspect-L7JIBK3Y.js} +1 -1
- package/dist/{install-6OIY3KHZ.js → install-35SAMY75.js} +5 -5
- package/dist/{install-cmd-JMT67P35.js → install-cmd-GFY4QF72.js} +6 -5
- package/dist/{layout-XNFDTOET.js → layout-BBTQPS6V.js} +4 -3
- package/dist/{login-browser-EWXSGHM7.js → login-browser-WSOSQH2T.js} +2 -2
- package/dist/{logs-XHAS6LMZ.js → logs-X2IRDP5T.js} +3 -2
- package/dist/loop-F5ASKFRJ.js +80 -0
- package/dist/{machine-OOQ2NXC3.js → machine-6STGIRJJ.js} +32 -30
- package/dist/{machine-skills-FLIRJYP7.js → machine-skills-O7W6NMWB.js} +4 -3
- package/dist/{mcp-serve-cmd-LY5A3CE7.js → mcp-serve-cmd-IITCPAAR.js} +9 -6
- package/dist/{paths-LHSPNORF.js → paths-32DWGK35.js} +3 -2
- package/dist/pending-CSIY4Y2I.js +10 -0
- package/dist/{pidfile-DKMYYXLH.js → pidfile-CYCTH6NQ.js} +4 -3
- package/dist/{real-deps-KNNBQC75.js → real-deps-QX5YH7FG.js} +1 -1
- package/dist/{record-3LPTY3G5.js → record-N4WPZCGK.js} +4 -3
- package/dist/{runner-env-YRRNRKF4.js → runner-env-EIB6WFPG.js} +6 -7
- package/dist/{runner-identity-YS2BZXZV.js → runner-identity-S3V6I4I3.js} +7 -6
- package/dist/{runner-key-EFNTZWNX.js → runner-key-Y76QXVNV.js} +36 -35
- package/dist/{session-sender-SC5PSU2G.js → session-sender-LFYMN6TT.js} +20 -17
- package/dist/{spec-cmd-JGYHHJ4P.js → spec-cmd-Z6MGATWC.js} +16 -13
- package/dist/{starter-pack-GPU4X6B7.js → starter-pack-5SOT5V4I.js} +4 -3
- package/dist/{status-7WM7S7JX.js → status-OANG2EM3.js} +39 -37
- package/dist/{sync-cmd-ATXJVS7S.js → sync-cmd-TNOOUPY2.js} +19 -16
- package/dist/{watch-M7NR3DOW.js → watch-HBNNYATF.js} +19 -16
- package/dist/{work-claim-cmd-DNUDZKJA.js → work-claim-cmd-CXALMILD.js} +21 -18
- package/dist/{work-cmd-VECTYST6.js → work-cmd-COESFSHE.js} +16 -13
- package/dist/{work-comment-cmd-F3NRWKPZ.js → work-comment-cmd-A4ZUVCSA.js} +16 -13
- package/dist/{work-logs-cmd-QF6P32FE.js → work-logs-cmd-CTF43MBE.js} +16 -13
- package/dist/{work-open-pr-cmd-XE23JA3R.js → work-open-pr-cmd-EMGYJXVD.js} +17 -14
- package/dist/{work-pr-cmd-BH56GUKN.js → work-pr-cmd-FEXMS6RH.js} +16 -13
- package/dist/{work-stop-cmd-C3F5HNUO.js → work-stop-cmd-NIHAN45R.js} +16 -13
- package/package.json +1 -1
- package/dist/build-HRLACBOZ.js +0 -12
- package/dist/chunk-STSLH5EJ.js +0 -71
- package/dist/init-SWKYV6CL.js +0 -55
- package/dist/loop-AIJZVUNA.js +0 -79
- package/dist/pending-3YZCSKON.js +0 -9
- package/dist/{chunk-6BLXUD56.js → chunk-HOU33DW5.js} +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
export { PLAIN_VERSION, isCommandInTerminal, newerRecordedVersion, recordCliVersion, removeRecordedVersion, staleMachineCopiesContext, updateNoticeContext, updateNoticeLine, updateNoticeSkipped, updateNoticeSuppressed } from './chunk-5BHIBJDA.js';
|
|
4
|
+
import './chunk-CDDED64E.js';
|
|
5
|
+
import './chunk-CRB3POP4.js';
|
|
6
|
+
import './chunk-VNVZDWO3.js';
|
|
7
|
+
import './chunk-Z5GEFMRW.js';
|
|
8
|
+
|
|
9
|
+
createRequire(import.meta.url);
|
|
@@ -1,56 +1,58 @@
|
|
|
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 } from './chunk-
|
|
7
|
-
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
3
|
+
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-ATJOFXTE.js';
|
|
4
|
+
import './chunk-CTYSTE5C.js';
|
|
5
|
+
import { currentLink, execStartCommand } from './chunk-GUXWQIEY.js';
|
|
6
|
+
import { detectMachine } from './chunk-T57XUI6N.js';
|
|
7
|
+
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-IKXY47R5.js';
|
|
8
|
+
import './chunk-MHAR6S7B.js';
|
|
9
|
+
import './chunk-WWQVKFN6.js';
|
|
10
|
+
import './chunk-USJZ2LDK.js';
|
|
11
|
+
import './chunk-Z3ASAXVU.js';
|
|
10
12
|
import './chunk-TQMI335S.js';
|
|
11
|
-
import { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
+
import { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-MQHTM4YJ.js';
|
|
14
|
+
import { runnerVmOf, loadRunnerConfig, builtinKind } from './chunk-55XLX5PA.js';
|
|
15
|
+
import './chunk-UXYLWVTQ.js';
|
|
16
|
+
import { realLima } from './chunk-77MM5RYD.js';
|
|
13
17
|
import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
18
|
+
import './chunk-T2QSWFSU.js';
|
|
19
|
+
import './chunk-NUHZV3A4.js';
|
|
16
20
|
import './chunk-JBJTC3UU.js';
|
|
17
21
|
import './chunk-OGFGZQA3.js';
|
|
18
|
-
import { readJobFile } from './chunk-
|
|
19
|
-
import
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
24
|
-
import './chunk-N4D5TMVU.js';
|
|
22
|
+
import { readJobFile } from './chunk-VC5J7QPV.js';
|
|
23
|
+
import './chunk-YJLHUKYS.js';
|
|
24
|
+
import { firecrackerArch, MICROVM_ARCHES, FIRECRACKER_VERSION, FIRECRACKER_BINARY_SHA256, JAILER_BINARY_SHA256, HOST_HELPER_SHA256, HOST_HELPER_BASE_URL, HOST_HELPER_ASSETS_VERSION, hostHelperPinned } from './chunk-SJZL5F3F.js';
|
|
25
|
+
import './chunk-X52PMPOM.js';
|
|
26
|
+
import './chunk-LNIFYSNK.js';
|
|
27
|
+
import './chunk-VU7ZJPIR.js';
|
|
25
28
|
import './chunk-BUP5N3X6.js';
|
|
26
|
-
import './chunk-
|
|
27
|
-
import './chunk-
|
|
29
|
+
import './chunk-UHU7H57K.js';
|
|
30
|
+
import './chunk-5B7BEQPR.js';
|
|
31
|
+
import './chunk-HOU33DW5.js';
|
|
28
32
|
import './chunk-G2JWZDFA.js';
|
|
29
|
-
import
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
32
|
-
import
|
|
33
|
-
import './chunk-
|
|
34
|
-
import './chunk-
|
|
35
|
-
import './chunk-
|
|
33
|
+
import './chunk-ANPNT6PM.js';
|
|
34
|
+
import './chunk-4XN5FRRJ.js';
|
|
35
|
+
import './chunk-P2RWZCV7.js';
|
|
36
|
+
import './chunk-7CK2TJFB.js';
|
|
37
|
+
import './chunk-PJDQPF5N.js';
|
|
38
|
+
import './chunk-YL2VDSNF.js';
|
|
39
|
+
import { runnerDir } from './chunk-5K3KB4YR.js';
|
|
40
|
+
import './chunk-HXAEQPZR.js';
|
|
36
41
|
import './chunk-ZJSNLVCE.js';
|
|
37
|
-
import './chunk-
|
|
42
|
+
import './chunk-FGF52V4V.js';
|
|
38
43
|
import './chunk-HCVLP7XA.js';
|
|
39
44
|
import './chunk-BJ3KTMDH.js';
|
|
40
|
-
import './chunk-
|
|
41
|
-
import './chunk-
|
|
42
|
-
import './chunk-
|
|
43
|
-
import './chunk-
|
|
45
|
+
import './chunk-JGML2VUN.js';
|
|
46
|
+
import './chunk-5BHIBJDA.js';
|
|
47
|
+
import './chunk-CDDED64E.js';
|
|
48
|
+
import './chunk-RA3O54FC.js';
|
|
44
49
|
import './chunk-WZBHBH3J.js';
|
|
45
50
|
import './chunk-CRB3POP4.js';
|
|
46
51
|
import './chunk-YQR6E6OV.js';
|
|
47
52
|
import './chunk-RKOTJQVG.js';
|
|
48
53
|
import './chunk-QZBXLLTV.js';
|
|
49
54
|
import './chunk-VNVZDWO3.js';
|
|
50
|
-
import './chunk-
|
|
51
|
-
import './chunk-Y4OKEFAX.js';
|
|
52
|
-
import { runnerDir } from './chunk-RHAGBUL5.js';
|
|
53
|
-
import './chunk-2I3LIRZP.js';
|
|
55
|
+
import './chunk-XD4ZCMA4.js';
|
|
54
56
|
import './chunk-JGD5TWQ2.js';
|
|
55
57
|
import './chunk-Z5GEFMRW.js';
|
|
56
58
|
import { userInfo, totalmem, tmpdir } from 'os';
|
|
@@ -304,6 +306,12 @@ function sudoWrite(path, text) {
|
|
|
304
306
|
function realSystemd() {
|
|
305
307
|
return {
|
|
306
308
|
running: () => existsSync("/run/systemd/system"),
|
|
309
|
+
version: () => {
|
|
310
|
+
const result = spawnSync("systemctl", ["--version"], { encoding: "utf8" });
|
|
311
|
+
if (result.status !== 0) return void 0;
|
|
312
|
+
const major = /^systemd (\d+)/.exec((result.stdout ?? "").split("\n")[0] ?? "")?.[1];
|
|
313
|
+
return major === void 0 ? void 0 : Number(major);
|
|
314
|
+
},
|
|
307
315
|
read: readText,
|
|
308
316
|
write: sudoWrite,
|
|
309
317
|
remove: (path) => {
|
|
@@ -315,8 +323,16 @@ function realSystemd() {
|
|
|
315
323
|
}
|
|
316
324
|
};
|
|
317
325
|
}
|
|
326
|
+
function readWslConf() {
|
|
327
|
+
try {
|
|
328
|
+
return { kind: "text", text: readFileSync(WSL_CONF, "utf8") };
|
|
329
|
+
} catch (err) {
|
|
330
|
+
if (err.code === "ENOENT") return { kind: "missing" };
|
|
331
|
+
return { kind: "unreadable", message: err instanceof Error ? err.message : String(err) };
|
|
332
|
+
}
|
|
333
|
+
}
|
|
318
334
|
function realWslConf() {
|
|
319
|
-
return { read:
|
|
335
|
+
return { read: readWslConf, write: (text) => sudoWrite(WSL_CONF, text) };
|
|
320
336
|
}
|
|
321
337
|
function buildsRunningIn(runnerDirPath) {
|
|
322
338
|
const jobs = join(runnerDirPath, "jobs");
|
|
@@ -1,10 +1,11 @@
|
|
|
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, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf } from './chunk-
|
|
3
|
+
export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf } from './chunk-55XLX5PA.js';
|
|
4
4
|
import './chunk-UXYLWVTQ.js';
|
|
5
5
|
import './chunk-YJLHUKYS.js';
|
|
6
|
+
import './chunk-HXAEQPZR.js';
|
|
6
7
|
import './chunk-VNVZDWO3.js';
|
|
7
|
-
import './chunk-
|
|
8
|
+
import './chunk-XD4ZCMA4.js';
|
|
8
9
|
import './chunk-JGD5TWQ2.js';
|
|
9
10
|
import './chunk-Z5GEFMRW.js';
|
|
10
11
|
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { AGENTS_LAYOUT_COMMIT_LINE, COMMIT_LINE, autoConnectedLine, commitLineFor, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-
|
|
3
|
+
export { AGENTS_LAYOUT_COMMIT_LINE, COMMIT_LINE, autoConnectedLine, commitLineFor, listText as factoryListText, slug as factorySlug, fetchFactories, hasUncommittedPolicy, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-VU7ZJPIR.js';
|
|
4
4
|
import './chunk-BUP5N3X6.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-UHU7H57K.js';
|
|
6
|
+
import './chunk-5B7BEQPR.js';
|
|
7
|
+
import './chunk-HOU33DW5.js';
|
|
7
8
|
import './chunk-G2JWZDFA.js';
|
|
8
|
-
import './chunk-BWH36FOC.js';
|
|
9
|
-
import './chunk-BJ3KTMDH.js';
|
|
10
|
-
import './chunk-7OUOLGUV.js';
|
|
11
|
-
import './chunk-QE3UQAHK.js';
|
|
12
9
|
import './chunk-ANPNT6PM.js';
|
|
10
|
+
import './chunk-7CK2TJFB.js';
|
|
13
11
|
import './chunk-PJDQPF5N.js';
|
|
12
|
+
import './chunk-YL2VDSNF.js';
|
|
13
|
+
import './chunk-5K3KB4YR.js';
|
|
14
|
+
import './chunk-HXAEQPZR.js';
|
|
15
|
+
import './chunk-BJ3KTMDH.js';
|
|
16
|
+
import './chunk-JGML2VUN.js';
|
|
17
|
+
import './chunk-5BHIBJDA.js';
|
|
18
|
+
import './chunk-CDDED64E.js';
|
|
19
|
+
import './chunk-RA3O54FC.js';
|
|
14
20
|
import './chunk-CRB3POP4.js';
|
|
15
21
|
import './chunk-RKOTJQVG.js';
|
|
16
22
|
import './chunk-QZBXLLTV.js';
|
|
17
23
|
import './chunk-VNVZDWO3.js';
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-Y4OKEFAX.js';
|
|
20
|
-
import './chunk-RHAGBUL5.js';
|
|
21
|
-
import './chunk-2I3LIRZP.js';
|
|
24
|
+
import './chunk-XD4ZCMA4.js';
|
|
22
25
|
import './chunk-JGD5TWQ2.js';
|
|
23
26
|
import './chunk-Z5GEFMRW.js';
|
|
24
27
|
|
|
@@ -1,54 +1,55 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-
|
|
4
|
-
import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-
|
|
5
|
-
import { MIN_ENGINE_MAJOR } from './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import
|
|
3
|
+
import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-R7SS5RLJ.js';
|
|
4
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-T57XUI6N.js';
|
|
5
|
+
import { MIN_ENGINE_MAJOR } from './chunk-IKXY47R5.js';
|
|
6
|
+
import './chunk-MHAR6S7B.js';
|
|
7
|
+
import './chunk-WWQVKFN6.js';
|
|
8
|
+
import './chunk-USJZ2LDK.js';
|
|
9
|
+
import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-Z3ASAXVU.js';
|
|
8
10
|
import './chunk-TQMI335S.js';
|
|
9
|
-
import { isAgentName, AGENT_COMMANDS } from './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
11
|
+
import { isAgentName, AGENT_COMMANDS } from './chunk-F4FA3ZUT.js';
|
|
12
|
+
import './chunk-MQHTM4YJ.js';
|
|
13
|
+
import './chunk-55XLX5PA.js';
|
|
14
|
+
import './chunk-UXYLWVTQ.js';
|
|
15
|
+
import './chunk-T2QSWFSU.js';
|
|
16
|
+
import './chunk-NUHZV3A4.js';
|
|
15
17
|
import './chunk-JBJTC3UU.js';
|
|
16
18
|
import './chunk-OGFGZQA3.js';
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-N4D5TMVU.js';
|
|
19
|
+
import './chunk-VC5J7QPV.js';
|
|
20
|
+
import './chunk-YJLHUKYS.js';
|
|
21
|
+
import './chunk-SJZL5F3F.js';
|
|
22
|
+
import './chunk-X52PMPOM.js';
|
|
23
|
+
import './chunk-LNIFYSNK.js';
|
|
24
|
+
import './chunk-VU7ZJPIR.js';
|
|
24
25
|
import './chunk-BUP5N3X6.js';
|
|
25
|
-
import './chunk-
|
|
26
|
-
import './chunk-
|
|
26
|
+
import './chunk-UHU7H57K.js';
|
|
27
|
+
import './chunk-5B7BEQPR.js';
|
|
28
|
+
import './chunk-HOU33DW5.js';
|
|
27
29
|
import './chunk-G2JWZDFA.js';
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
32
|
-
import './chunk-
|
|
33
|
-
import './chunk-
|
|
30
|
+
import './chunk-ANPNT6PM.js';
|
|
31
|
+
import './chunk-4XN5FRRJ.js';
|
|
32
|
+
import './chunk-P2RWZCV7.js';
|
|
33
|
+
import './chunk-7CK2TJFB.js';
|
|
34
|
+
import './chunk-PJDQPF5N.js';
|
|
35
|
+
import './chunk-YL2VDSNF.js';
|
|
36
|
+
import './chunk-5K3KB4YR.js';
|
|
37
|
+
import { CLAUDE_CREDENTIAL_VARIABLES, readClaudeCredential } from './chunk-HXAEQPZR.js';
|
|
34
38
|
import './chunk-ZJSNLVCE.js';
|
|
35
|
-
import './chunk-
|
|
39
|
+
import './chunk-FGF52V4V.js';
|
|
36
40
|
import './chunk-HCVLP7XA.js';
|
|
37
41
|
import './chunk-BJ3KTMDH.js';
|
|
38
|
-
import './chunk-
|
|
39
|
-
import './chunk-
|
|
40
|
-
import './chunk-
|
|
41
|
-
import './chunk-
|
|
42
|
+
import './chunk-JGML2VUN.js';
|
|
43
|
+
import './chunk-5BHIBJDA.js';
|
|
44
|
+
import './chunk-CDDED64E.js';
|
|
45
|
+
import './chunk-RA3O54FC.js';
|
|
42
46
|
import './chunk-WZBHBH3J.js';
|
|
43
47
|
import './chunk-CRB3POP4.js';
|
|
44
48
|
import './chunk-YQR6E6OV.js';
|
|
45
49
|
import './chunk-RKOTJQVG.js';
|
|
46
50
|
import './chunk-QZBXLLTV.js';
|
|
47
51
|
import './chunk-VNVZDWO3.js';
|
|
48
|
-
import './chunk-
|
|
49
|
-
import './chunk-Y4OKEFAX.js';
|
|
50
|
-
import './chunk-RHAGBUL5.js';
|
|
51
|
-
import { CLAUDE_CREDENTIAL_VARIABLES } from './chunk-2I3LIRZP.js';
|
|
52
|
+
import './chunk-XD4ZCMA4.js';
|
|
52
53
|
import './chunk-JGD5TWQ2.js';
|
|
53
54
|
import './chunk-Z5GEFMRW.js';
|
|
54
55
|
import { existsSync, readFileSync } from 'fs';
|
|
@@ -122,7 +123,7 @@ async function containerStart(deps) {
|
|
|
122
123
|
if (!isAgentName(agent)) {
|
|
123
124
|
return refuse(`OUTERLAYER_AGENT is ${agent}, and the image writes commands for ${Object.keys(AGENT_COMMANDS).join(", ")} only. Leave it unset to use claude.`);
|
|
124
125
|
}
|
|
125
|
-
if (!CLAUDE_CREDENTIAL_VARIABLES.some((name) => set(env, name) !== void 0)) {
|
|
126
|
+
if (!CLAUDE_CREDENTIAL_VARIABLES.some((name) => set(env, name) !== void 0) && readClaudeCredential(env) === void 0) {
|
|
126
127
|
missing.push(`one Claude credential: ${CLAUDE_CREDENTIAL_VARIABLES.join(", ")}`);
|
|
127
128
|
}
|
|
128
129
|
if (missing.length > 0) {
|
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { parseOwnerRepo, lookupGoverningSource, defaultGitRunner, materializeContext } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import { resolveGatewayCredentials, defaultFetch } from './chunk-
|
|
3
|
+
import { parseOwnerRepo, lookupGoverningSource, defaultGitRunner, materializeContext } from './chunk-4XN5FRRJ.js';
|
|
4
|
+
import './chunk-P2RWZCV7.js';
|
|
5
|
+
import { resolveGatewayCredentials, defaultFetch } from './chunk-7CK2TJFB.js';
|
|
6
|
+
import './chunk-PJDQPF5N.js';
|
|
7
|
+
import './chunk-YL2VDSNF.js';
|
|
8
|
+
import './chunk-5K3KB4YR.js';
|
|
9
|
+
import './chunk-HXAEQPZR.js';
|
|
6
10
|
import './chunk-ZJSNLVCE.js';
|
|
7
|
-
import { layoutRefusalMessage, unsupportedLayout, sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-
|
|
11
|
+
import { layoutRefusalMessage, unsupportedLayout, sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-FGF52V4V.js';
|
|
8
12
|
import './chunk-HCVLP7XA.js';
|
|
9
13
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
14
|
+
import './chunk-JGML2VUN.js';
|
|
15
|
+
import './chunk-5BHIBJDA.js';
|
|
16
|
+
import './chunk-CDDED64E.js';
|
|
17
|
+
import './chunk-RA3O54FC.js';
|
|
12
18
|
import './chunk-CRB3POP4.js';
|
|
13
19
|
import { cleanupEarlierCopies } from './chunk-VWFOKRYS.js';
|
|
14
20
|
import { readSourceCache, readDeliveryRecord, isSourceCacheFresh, writeDeliveryRecord, writeSourceCache, SOURCE_CACHE_TTL_SUCCESS_MS, clearDegraded, removeLauncherDeliveryRecord } from './chunk-YQR6E6OV.js';
|
|
@@ -16,10 +22,7 @@ import './chunk-TUSYOL2O.js';
|
|
|
16
22
|
import './chunk-RKOTJQVG.js';
|
|
17
23
|
import './chunk-QZBXLLTV.js';
|
|
18
24
|
import './chunk-VNVZDWO3.js';
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-Y4OKEFAX.js';
|
|
21
|
-
import './chunk-RHAGBUL5.js';
|
|
22
|
-
import './chunk-2I3LIRZP.js';
|
|
25
|
+
import './chunk-XD4ZCMA4.js';
|
|
23
26
|
import './chunk-JGD5TWQ2.js';
|
|
24
27
|
import './chunk-Z5GEFMRW.js';
|
|
25
28
|
import { execFileSync } from 'child_process';
|
|
@@ -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-UHU7H57K.js';
|
|
4
4
|
import './chunk-QZBXLLTV.js';
|
|
5
5
|
import './chunk-Z5GEFMRW.js';
|
|
6
6
|
|
|
@@ -1,13 +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-2BTFKNTR.js';
|
|
3
|
+
export { childEnvironment, createDockerHost, spawnRun } from './chunk-VC5J7QPV.js';
|
|
5
4
|
import './chunk-YJLHUKYS.js';
|
|
6
|
-
import './chunk-
|
|
5
|
+
import './chunk-SJZL5F3F.js';
|
|
6
|
+
import './chunk-UHU7H57K.js';
|
|
7
|
+
import './chunk-YL2VDSNF.js';
|
|
8
|
+
import './chunk-5K3KB4YR.js';
|
|
9
|
+
import './chunk-HXAEQPZR.js';
|
|
7
10
|
import './chunk-QZBXLLTV.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-RHAGBUL5.js';
|
|
10
|
-
import './chunk-2I3LIRZP.js';
|
|
11
|
+
import './chunk-XD4ZCMA4.js';
|
|
11
12
|
import './chunk-JGD5TWQ2.js';
|
|
12
13
|
import './chunk-Z5GEFMRW.js';
|
|
13
14
|
|
|
@@ -1,65 +1,66 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { launcherCheck } from './chunk-
|
|
4
|
-
import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-
|
|
5
|
-
import './chunk-MATUHHN4.js';
|
|
3
|
+
import { launcherCheck } from './chunk-CTYSTE5C.js';
|
|
4
|
+
import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-W3FSGH2M.js';
|
|
6
5
|
import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
|
|
6
|
+
import './chunk-GUXWQIEY.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, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import
|
|
8
|
+
import './chunk-R7SS5RLJ.js';
|
|
9
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-T57XUI6N.js';
|
|
10
|
+
import { MIN_ENGINE_MAJOR, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-IKXY47R5.js';
|
|
11
|
+
import './chunk-MHAR6S7B.js';
|
|
12
|
+
import './chunk-WWQVKFN6.js';
|
|
13
|
+
import './chunk-USJZ2LDK.js';
|
|
14
|
+
import { runnerImageVersion, imageAdvice, readUpdateStatus, imageTag, pullInstruction } from './chunk-Z3ASAXVU.js';
|
|
13
15
|
import './chunk-TQMI335S.js';
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
16
|
+
import './chunk-F4FA3ZUT.js';
|
|
17
|
+
import './chunk-MQHTM4YJ.js';
|
|
18
|
+
import { builtinKind } from './chunk-55XLX5PA.js';
|
|
19
|
+
import { allowHostProblem, MAX_ALLOW_HOSTS } from './chunk-UXYLWVTQ.js';
|
|
20
|
+
import './chunk-T2QSWFSU.js';
|
|
21
|
+
import './chunk-NUHZV3A4.js';
|
|
20
22
|
import './chunk-JBJTC3UU.js';
|
|
21
23
|
import './chunk-OGFGZQA3.js';
|
|
22
|
-
import { resolveDevcontainerCli, buildxState, spawnRun } from './chunk-
|
|
23
|
-
import {
|
|
24
|
-
import './chunk-
|
|
25
|
-
import './chunk-
|
|
26
|
-
import
|
|
27
|
-
import './chunk-
|
|
28
|
-
import './chunk-N4D5TMVU.js';
|
|
24
|
+
import { resolveDevcontainerCli, buildxState, spawnRun } from './chunk-VC5J7QPV.js';
|
|
25
|
+
import { parseSize } from './chunk-YJLHUKYS.js';
|
|
26
|
+
import { locateRecipe, assertBuildable, readRecipe, RecipeError, FIRECRACKER_VERSION, CLAUDE_CODE_VERSION } from './chunk-SJZL5F3F.js';
|
|
27
|
+
import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-X52PMPOM.js';
|
|
28
|
+
import './chunk-LNIFYSNK.js';
|
|
29
|
+
import './chunk-VU7ZJPIR.js';
|
|
29
30
|
import './chunk-BUP5N3X6.js';
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
31
|
+
import { compareVersions } from './chunk-UHU7H57K.js';
|
|
32
|
+
import './chunk-5B7BEQPR.js';
|
|
33
|
+
import './chunk-HOU33DW5.js';
|
|
32
34
|
import './chunk-G2JWZDFA.js';
|
|
33
|
-
import
|
|
34
|
-
import {
|
|
35
|
-
import
|
|
36
|
-
import {
|
|
37
|
-
import './chunk-
|
|
38
|
-
import {
|
|
35
|
+
import './chunk-ANPNT6PM.js';
|
|
36
|
+
import { defaultGitRunner } from './chunk-4XN5FRRJ.js';
|
|
37
|
+
import './chunk-P2RWZCV7.js';
|
|
38
|
+
import { defaultFetch } from './chunk-7CK2TJFB.js';
|
|
39
|
+
import './chunk-PJDQPF5N.js';
|
|
40
|
+
import { loadHostKey } from './chunk-YL2VDSNF.js';
|
|
41
|
+
import { runnerDir, buildsDir, hostKeyPath, jobsDir } from './chunk-5K3KB4YR.js';
|
|
42
|
+
import './chunk-HXAEQPZR.js';
|
|
39
43
|
import './chunk-ZJSNLVCE.js';
|
|
40
|
-
import './chunk-
|
|
44
|
+
import './chunk-FGF52V4V.js';
|
|
41
45
|
import './chunk-HCVLP7XA.js';
|
|
42
46
|
import './chunk-BJ3KTMDH.js';
|
|
43
|
-
import './chunk-
|
|
44
|
-
import
|
|
45
|
-
import './chunk-
|
|
46
|
-
import './chunk-
|
|
47
|
+
import './chunk-JGML2VUN.js';
|
|
48
|
+
import './chunk-5BHIBJDA.js';
|
|
49
|
+
import './chunk-CDDED64E.js';
|
|
50
|
+
import './chunk-RA3O54FC.js';
|
|
47
51
|
import './chunk-WZBHBH3J.js';
|
|
48
52
|
import './chunk-CRB3POP4.js';
|
|
49
53
|
import './chunk-YQR6E6OV.js';
|
|
50
54
|
import './chunk-RKOTJQVG.js';
|
|
51
55
|
import './chunk-QZBXLLTV.js';
|
|
52
56
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
53
|
-
import './chunk-
|
|
54
|
-
import { loadHostKey } from './chunk-Y4OKEFAX.js';
|
|
55
|
-
import { runnerDir, buildsDir, hostKeyPath, jobsDir } from './chunk-RHAGBUL5.js';
|
|
56
|
-
import './chunk-2I3LIRZP.js';
|
|
57
|
+
import { MIN_SYSTEMD } from './chunk-XD4ZCMA4.js';
|
|
57
58
|
import './chunk-JGD5TWQ2.js';
|
|
58
59
|
import './chunk-Z5GEFMRW.js';
|
|
59
60
|
import { spawnSync } from 'child_process';
|
|
60
|
-
import { existsSync, readdirSync, statSync, readFileSync } from 'fs';
|
|
61
|
+
import { existsSync, readdirSync, statSync, readFileSync, realpathSync } from 'fs';
|
|
61
62
|
import { totalmem, tmpdir } from 'os';
|
|
62
|
-
import { join } from 'path';
|
|
63
|
+
import { join, dirname, basename } from 'path';
|
|
63
64
|
|
|
64
65
|
createRequire(import.meta.url);
|
|
65
66
|
var NESTED_FILES = [
|
|
@@ -108,6 +109,104 @@ function nestedVirtualizationCheck(probes = {}) {
|
|
|
108
109
|
const first = found[0];
|
|
109
110
|
return { name, status: "pass", detail: `${first.module} does not allow nested virtualization (${first.path} is ${first.value}), so no microVM build sees ${first.feature}` };
|
|
110
111
|
}
|
|
112
|
+
function deviceNumber(dev) {
|
|
113
|
+
const [b8, b12, b32, m12, mff] = [BigInt(8), BigInt(12), BigInt(32), BigInt(4095), BigInt(255)];
|
|
114
|
+
const [highMajor, highMinor] = [BigInt(4294963200), BigInt(4294967040)];
|
|
115
|
+
const major = dev >> b8 & m12 | dev >> b32 & highMajor;
|
|
116
|
+
const minor = dev & mff | dev >> b12 & highMinor;
|
|
117
|
+
return `${major}:${minor}`;
|
|
118
|
+
}
|
|
119
|
+
function hostDeviceOf(path, stat = (p) => statSync(p, { bigint: true })) {
|
|
120
|
+
let dir = path;
|
|
121
|
+
for (; ; ) {
|
|
122
|
+
try {
|
|
123
|
+
return deviceNumber(stat(dir).dev);
|
|
124
|
+
} catch {
|
|
125
|
+
const parent = dirname(dir);
|
|
126
|
+
if (parent === dir) return void 0;
|
|
127
|
+
dir = parent;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
function diskSharingCheck(probes = {}) {
|
|
132
|
+
const name = "Disk I/O sharing";
|
|
133
|
+
const read = probes.readHostFile ?? readText;
|
|
134
|
+
const list = probes.listHostDir ?? ((path) => readdirSync(path));
|
|
135
|
+
const real = probes.realHostPath ?? ((path) => realpathSync(path));
|
|
136
|
+
const cannotTell = (why) => ({
|
|
137
|
+
name,
|
|
138
|
+
status: "warn",
|
|
139
|
+
detail: `${why}, so doctor cannot tell whether microVM builds share the disk`,
|
|
140
|
+
fix: "read the scheduler of the disk under the runner's directory by hand: `cat /sys/block/<disk>/queue/scheduler`"
|
|
141
|
+
});
|
|
142
|
+
const device = (probes.deviceOf ?? hostDeviceOf)(probes.buildsDir ?? ".");
|
|
143
|
+
if (device === void 0) return cannotTell("doctor found no device for the directory of the build disks");
|
|
144
|
+
const disks = /* @__PURE__ */ new Map();
|
|
145
|
+
const visit = (entry, depth) => {
|
|
146
|
+
if (depth > 8) throw new Error(`${entry} nests too deep`);
|
|
147
|
+
let path = real(entry);
|
|
148
|
+
let isPartition = true;
|
|
149
|
+
try {
|
|
150
|
+
read(`${entry}/partition`);
|
|
151
|
+
} catch (err) {
|
|
152
|
+
if (err.code !== "ENOENT") throw err;
|
|
153
|
+
isPartition = false;
|
|
154
|
+
}
|
|
155
|
+
if (isPartition) path = dirname(path);
|
|
156
|
+
const disk = basename(path);
|
|
157
|
+
let slaves = [];
|
|
158
|
+
if (!isPartition) {
|
|
159
|
+
try {
|
|
160
|
+
slaves = list(`${entry}/slaves`);
|
|
161
|
+
} catch (err) {
|
|
162
|
+
if (err.code !== "ENOENT") throw err;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (slaves.length > 0) {
|
|
166
|
+
for (const slave of slaves) visit(`/sys/class/block/${slave}`, depth + 1);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
disks.set(disk, read(`/sys/block/${disk}/dev`).trim());
|
|
170
|
+
};
|
|
171
|
+
try {
|
|
172
|
+
visit(`/sys/dev/block/${device}`, 0);
|
|
173
|
+
} catch (err) {
|
|
174
|
+
return cannotTell(`doctor could not find the disk under device ${device}: ${err.code === "ENOENT" ? "no block device entry for it" : reasonOf(err)}`);
|
|
175
|
+
}
|
|
176
|
+
let costLines;
|
|
177
|
+
try {
|
|
178
|
+
costLines = read("/sys/fs/cgroup/io.cost.qos").split("\n");
|
|
179
|
+
} catch (err) {
|
|
180
|
+
if (err.code !== "ENOENT") return cannotTell(`doctor could not read /sys/fs/cgroup/io.cost.qos: ${reasonOf(err)}`);
|
|
181
|
+
costLines = [];
|
|
182
|
+
}
|
|
183
|
+
const facts = [];
|
|
184
|
+
for (const [disk, number] of disks) {
|
|
185
|
+
let scheduler;
|
|
186
|
+
try {
|
|
187
|
+
scheduler = /\[([^\]]+)\]/.exec(read(`/sys/block/${disk}/queue/scheduler`))?.[1];
|
|
188
|
+
} catch {
|
|
189
|
+
scheduler = void 0;
|
|
190
|
+
}
|
|
191
|
+
const iocost = costLines.some((l) => l.startsWith(`${number} `) && /\benable=1\b/.test(l));
|
|
192
|
+
facts.push({ name: disk, number, scheduler, iocost });
|
|
193
|
+
}
|
|
194
|
+
const ignoring = facts.filter((f) => f.scheduler !== "bfq" && !f.iocost);
|
|
195
|
+
if (ignoring.length === 0) {
|
|
196
|
+
const names = facts.map((f) => f.name).join(", ");
|
|
197
|
+
return { name, status: "pass", detail: `${names} acts on I/O weights (BFQ or iocost), so microVM builds share the disk equally` };
|
|
198
|
+
}
|
|
199
|
+
const unread = ignoring.find((f) => f.scheduler === void 0);
|
|
200
|
+
if (unread !== void 0) return cannotTell(`doctor could not read the scheduler of ${unread.name}`);
|
|
201
|
+
const first = ignoring[0];
|
|
202
|
+
const summary = ignoring.map((f) => `${f.name} uses the ${f.scheduler} scheduler and has iocost off`).join("; ");
|
|
203
|
+
return {
|
|
204
|
+
name,
|
|
205
|
+
status: "warn",
|
|
206
|
+
detail: `${summary}. So the kernel ignores each microVM build's I/O weight, and one build can take most of the disk's time`,
|
|
207
|
+
fix: `turn on iocost for the disk: \`echo '${first.number} enable=1' | sudo tee /sys/fs/cgroup/io.cost.qos\`. Do this again at each boot, for example from a systemd unit. Or use the bfq scheduler for the disk`
|
|
208
|
+
};
|
|
209
|
+
}
|
|
111
210
|
function vmscapeCheck(probes = {}) {
|
|
112
211
|
const name = "VMScape";
|
|
113
212
|
let value;
|
|
@@ -271,6 +370,14 @@ function helperCheck(facts) {
|
|
|
271
370
|
if (facts.present && facts.firecracker !== FIRECRACKER_VERSION) {
|
|
272
371
|
return { name, status: "warn", detail: helperFirecrackerNote(facts.firecracker), fix: REINSTALL };
|
|
273
372
|
}
|
|
373
|
+
if (facts.present && facts.systemdVersion !== void 0 && facts.systemdVersion < MIN_SYSTEMD) {
|
|
374
|
+
return {
|
|
375
|
+
name,
|
|
376
|
+
status: "warn",
|
|
377
|
+
detail: `microVM builds will not survive a restart of the runner: this host runs systemd ${facts.systemdVersion}, and the runner keeps a build's sockets in the descriptor store only on systemd ${MIN_SYSTEMD} or later, so every build ends with its runner and an update waits for every build`,
|
|
378
|
+
fix: `upgrade the host's systemd to ${MIN_SYSTEMD} or later, for example with a newer release of the distribution`
|
|
379
|
+
};
|
|
380
|
+
}
|
|
274
381
|
if (facts.present && facts.fdStoreMax === 0) {
|
|
275
382
|
return {
|
|
276
383
|
name,
|
|
@@ -279,6 +386,14 @@ function helperCheck(facts) {
|
|
|
279
386
|
fix: "run `outerlayer runner install --service --replace` to write the unit this CLI generates, which keeps those sockets in the service manager's descriptor store"
|
|
280
387
|
};
|
|
281
388
|
}
|
|
389
|
+
if (facts.present && facts.restartUnit !== void 0) {
|
|
390
|
+
return {
|
|
391
|
+
name,
|
|
392
|
+
status: "warn",
|
|
393
|
+
detail: `microVM builds will not survive a restart of the runner: the running runner started without its unit's descriptor store (its environment lacks NOTIFY_SOCKET or OUTERLAYER_FD_STORE, as a runner started before its unit was replaced does), so it cannot keep a build's sockets in the descriptor store, every build it starts ends with it, and an update waits for every build`,
|
|
394
|
+
fix: `restart the service while no build runs, so it starts under its current unit: sudo systemctl restart ${facts.restartUnit}`
|
|
395
|
+
};
|
|
396
|
+
}
|
|
282
397
|
if (facts.present) {
|
|
283
398
|
return {
|
|
284
399
|
name,
|
|
@@ -710,7 +825,9 @@ async function helperFactsOf(env) {
|
|
|
710
825
|
present: true,
|
|
711
826
|
firecracker: probe.firecracker,
|
|
712
827
|
...stat !== void 0 && (stat.mode & 18) !== 0 ? { writableBuildsDir: builds } : {},
|
|
713
|
-
...env.service?.fdStoreMax === void 0 ? {} : { fdStoreMax: env.service.fdStoreMax }
|
|
828
|
+
...env.service?.fdStoreMax === void 0 ? {} : { fdStoreMax: env.service.fdStoreMax },
|
|
829
|
+
...env.service?.startedWithStore === false ? { restartUnit: env.service.unit } : {},
|
|
830
|
+
...env.service?.systemdVersion === void 0 ? {} : { systemdVersion: env.service.systemdVersion }
|
|
714
831
|
};
|
|
715
832
|
}
|
|
716
833
|
async function runnerHostChecks(env) {
|
|
@@ -740,6 +857,7 @@ async function runnerHostChecks(env) {
|
|
|
740
857
|
helperCheck(await helperFactsOf(env)),
|
|
741
858
|
nestedVirtualizationCheck(env),
|
|
742
859
|
vmscapeCheck(env),
|
|
860
|
+
diskSharingCheck({ ...env, buildsDir: buildsDir(env.configPath) }),
|
|
743
861
|
...env.runner === void 0 ? [] : [memoryCheck({ concurrency: env.runner.concurrency, buildMemory: env.runner.buildMemory, hostMemory: env.hostMemory ?? totalmem() })]
|
|
744
862
|
] : [],
|
|
745
863
|
...env.hooks !== void 0 && builtinKind(env.hooks.provision) === "container" ? [runcCheck(env)] : [],
|