@outerlayer/cli 0.26.3 → 0.27.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 +25 -0
- package/README.md +12 -9
- package/dist/{agent-setup-PZYQWN4H.js → agent-setup-UW36TAQM.js} +13 -13
- package/dist/{bridge-5KZ36YDG.js → bridge-B5VJVECY.js} +2 -2
- package/dist/build-TNM7HYCA.js +12 -0
- package/dist/build-info.json +1 -1
- package/dist/{builder-WEGLC2F2.js → builder-LDJGS2JC.js} +6 -6
- package/dist/{check-WJJ325EQ.js → check-JVBAWIN6.js} +44 -43
- package/dist/{chunk-7LVF4E5V.js → chunk-24ID7EQ2.js} +7 -4
- package/dist/{chunk-HXFRJKMU.js → chunk-2F762IXY.js} +2 -2
- package/dist/{chunk-2K3TCQHW.js → chunk-2I3LIRZP.js} +26 -8
- package/dist/{chunk-UKCNOAO6.js → chunk-55GNQPO6.js} +17 -6
- package/dist/{chunk-XSPA5ODY.js → chunk-6BLXUD56.js} +4 -3
- package/dist/{chunk-MWPBF2XG.js → chunk-6KKM7VGZ.js} +32 -4
- package/dist/{chunk-VPEGE3QZ.js → chunk-6TRNCUM4.js} +1 -1
- package/dist/{chunk-MLD2NA7N.js → chunk-7AQ5AM7U.js} +12 -5
- package/dist/{chunk-HBISTTG3.js → chunk-7OUOLGUV.js} +20 -5
- package/dist/{chunk-6FAP657M.js → chunk-ABXQBEYK.js} +1 -1
- package/dist/{chunk-TSW4DGV2.js → chunk-B6K7R5UY.js} +2 -2
- package/dist/chunk-BM7EC3OZ.js +181 -0
- package/dist/{chunk-W3NVHOCS.js → chunk-BPKO76QR.js} +4 -4
- package/dist/{chunk-QRZLUUNN.js → chunk-BWH36FOC.js} +8 -3
- package/dist/{chunk-PYSKSROG.js → chunk-D7ECMB7B.js} +4 -4
- package/dist/{chunk-FO7F6QSV.js → chunk-DJHNEGNM.js} +27 -3
- package/dist/{chunk-TPAF24PK.js → chunk-E5IJ5533.js} +2 -2
- package/dist/{chunk-JWRX5ZTT.js → chunk-EPPIISRD.js} +2 -2
- package/dist/{chunk-6M4LNO22.js → chunk-FP23SVDD.js} +6 -6
- package/dist/{chunk-GOSFARMS.js → chunk-G2JWZDFA.js} +9 -2
- package/dist/{chunk-XFGL53GU.js → chunk-G3EZA6MK.js} +56 -8
- package/dist/{chunk-5PMQDQFV.js → chunk-GFUE5TKO.js} +3 -3
- package/dist/{chunk-XLC7KEUV.js → chunk-GLUKDQS4.js} +1 -1
- package/dist/{chunk-ZLEXMZFW.js → chunk-JH2GQU5T.js} +5 -5
- package/dist/{chunk-YVZJ6GKF.js → chunk-KT4CN6OU.js} +1 -1
- package/dist/{chunk-JKNYTNYD.js → chunk-LOKSLO25.js} +1 -1
- package/dist/{chunk-665QWBNW.js → chunk-M3MHHIUW.js} +1 -1
- package/dist/{chunk-4IFKLYMM.js → chunk-MATUHHN4.js} +1 -1
- package/dist/{chunk-MQ743JX3.js → chunk-MHX7YX7Y.js} +1 -1
- package/dist/{chunk-TEVO3RUV.js → chunk-N4D5TMVU.js} +4 -4
- package/dist/{chunk-EORWWFPA.js → chunk-O2IJTY7L.js} +2 -2
- package/dist/{chunk-EABW6AJQ.js → chunk-PJDQPF5N.js} +18 -5
- package/dist/{chunk-KDDFI5MR.js → chunk-QHH4OSD4.js} +1 -1
- package/dist/{chunk-W7LGHNXT.js → chunk-QIVOTQOQ.js} +5 -5
- package/dist/{chunk-JF572PM5.js → chunk-QKIQ2R7F.js} +3 -3
- package/dist/{chunk-L4CW6LZQ.js → chunk-RHAGBUL5.js} +5 -2
- package/dist/{chunk-TKL74NLB.js → chunk-RHGF73IU.js} +1 -1
- package/dist/{chunk-SKZG7SAN.js → chunk-RK7FWC6B.js} +206 -42
- package/dist/{chunk-6MZSX4M7.js → chunk-STSLH5EJ.js} +3 -1
- package/dist/{chunk-K7FCZCLQ.js → chunk-TXHJ7BGR.js} +13 -13
- package/dist/{chunk-364XDGOK.js → chunk-UQYBCJ2L.js} +3 -3
- package/dist/{chunk-2AKDF6C2.js → chunk-VS27BP3E.js} +5 -5
- package/dist/{chunk-J7BXZLSO.js → chunk-WSYXLLA5.js} +29 -8
- package/dist/{chunk-WX2WEERU.js → chunk-WUL2OP5A.js} +3 -3
- package/dist/{chunk-ZPXI7LMG.js → chunk-WVDP6HVZ.js} +6 -6
- package/dist/{chunk-MXTN35XN.js → chunk-XBPUTQ7E.js} +1 -1
- package/dist/{chunk-UNF7MWEL.js → chunk-XS3FDWSZ.js} +1 -1
- package/dist/{chunk-VJBFQP3H.js → chunk-XZ6Q6ZNR.js} +9 -5
- package/dist/{chunk-F6DIHHBS.js → chunk-Y4OKEFAX.js} +1 -1
- package/dist/{chunk-XDHYZWEK.js → chunk-Y7ZCHBYB.js} +2 -2
- package/dist/chunk-YB3CSYXX.js +95 -0
- package/dist/{chunk-VHVFU6QU.js → chunk-YF56R4DV.js} +86 -31
- package/dist/chunk-YJLHUKYS.js +38 -0
- package/dist/{chunk-XF77SNB4.js → chunk-ZXRWMOJ3.js} +287 -51
- package/dist/{claude-launcher-O2U6P6ZD.js → claude-launcher-TKX4WCUN.js} +8 -4
- package/dist/{cli-2UUJM3AE.js → cli-XVXQDKZT.js} +141 -135
- package/dist/{command-GQBHC53U.js → command-B2T7VR77.js} +33 -32
- package/dist/{config-JJ3EO7SB.js → config-TWS5VZEN.js} +3 -3
- package/dist/{connect-cmd-2JHSLBXK.js → connect-cmd-HGS7YPA2.js} +10 -10
- package/dist/{container-start-AUJHF2BC.js → container-start-JE7HTKZG.js} +32 -31
- package/dist/{control-plane-launch-654RV5PO.js → control-plane-launch-DBQA3KLJ.js} +9 -9
- package/dist/{docker-NYAIIX2F.js → docker-MJEEHUUA.js} +6 -6
- package/dist/{doctor-NV2PUERZ.js → doctor-6ZIF2BRZ.js} +184 -37
- package/dist/{emit-artifact-cmd-XXTCHP6V.js → emit-artifact-cmd-ALDK55Y2.js} +14 -14
- package/dist/{emit-cmd-WQH2NK7H.js → emit-cmd-VAQHRWJR.js} +4 -4
- package/dist/{emit-criteria-cmd-VMZIRJCQ.js → emit-criteria-cmd-Q7SM6VP2.js} +11 -11
- package/dist/{emit-finding-cmd-KMJNYQI7.js → emit-finding-cmd-2NBAPDSV.js} +11 -11
- package/dist/{emit-result-cmd-HRTXGZLK.js → emit-result-cmd-KUSL56RI.js} +14 -14
- package/dist/{emit-step-cmd-AUHA3EXY.js → emit-step-cmd-KD4AKEAT.js} +12 -12
- package/dist/{exec-client-J6L5FDRR.js → exec-client-6WVS7DRZ.js} +3 -3
- package/dist/{governing-source-PTJ6EAA3.js → governing-source-VVUA5TKB.js} +16 -16
- package/dist/{guest-init-CXIHA5VI.js → guest-init-H5K2RW3P.js} +4 -4
- package/dist/{hook-fast-SDFXJEAW.js → hook-fast-3SUJM765.js} +1 -1
- package/dist/{host-key-5TKBNUZ4.js → host-key-XNKZCWTS.js} +3 -3
- package/dist/{image-tag-5SJ6ZKT7.js → image-tag-R34J4O3F.js} +3 -3
- package/dist/index.js +4 -4
- package/dist/init-ETKGFCXR.js +55 -0
- package/dist/{init-UZWRJMPZ.js → init-Q2RPUUVP.js} +33 -32
- package/dist/{init-cmd-SQKWPACS.js → init-cmd-M6MQRGOU.js} +19 -18
- package/dist/{init-update-FJDKY4SJ.js → init-update-N4HTZGVS.js} +59 -30
- package/dist/{inspect-6UYAAXH7.js → inspect-IPFA7AAT.js} +1 -1
- package/dist/{install-QSTTBUHX.js → install-6OIY3KHZ.js} +6 -5
- package/dist/{install-cmd-3DXJJUAA.js → install-cmd-JMT67P35.js} +5 -5
- package/dist/{layout-UOJQGEPW.js → layout-XNFDTOET.js} +2 -2
- package/dist/{login-browser-4OMZFP3U.js → login-browser-EWXSGHM7.js} +3 -3
- package/dist/{logout-cmd-5V5MMBSY.js → logout-cmd-5WE2N5B5.js} +2 -2
- package/dist/{logs-VN2HKDSH.js → logs-XHAS6LMZ.js} +2 -2
- package/dist/loop-2Y4CUFNP.js +79 -0
- package/dist/machine-Z2S47JW7.js +50 -0
- package/dist/machine-skills-RRF4HLAD.js +11 -0
- package/dist/{mcp-install-cmd-GGWB3JJ2.js → mcp-install-cmd-LD7KYAOP.js} +2 -2
- package/dist/{mcp-serve-cmd-U5N5DK3H.js → mcp-serve-cmd-LY5A3CE7.js} +5 -5
- package/dist/{paths-ZC6BMWMT.js → paths-LHSPNORF.js} +2 -2
- package/dist/{pending-54HC7MM3.js → pending-3YZCSKON.js} +3 -3
- package/dist/{pidfile-BY5Z6YH7.js → pidfile-DKMYYXLH.js} +3 -3
- package/dist/{record-K23IN6QN.js → record-3LPTY3G5.js} +3 -3
- package/dist/{runner-env-2D7MPOIJ.js → runner-env-YRRNRKF4.js} +8 -7
- package/dist/{runner-identity-YYENYKDH.js → runner-identity-EX7HXPUE.js} +6 -6
- package/dist/{runner-key-AZVXBQIB.js → runner-key-GO277GW2.js} +32 -31
- package/dist/{session-sender-VH2EKAT5.js → session-sender-SC5PSU2G.js} +15 -15
- package/dist/{spec-cmd-BOUPLX7X.js → spec-cmd-JGYHHJ4P.js} +12 -12
- package/dist/{starter-pack-55EFILC5.js → starter-pack-GPU4X6B7.js} +2 -2
- package/dist/{status-3WC2IGVI.js → status-CJCE2FHD.js} +34 -33
- package/dist/{sync-cmd-GT2WTQRA.js → sync-cmd-ATXJVS7S.js} +14 -14
- package/dist/{watch-JED7SYAA.js → watch-M7NR3DOW.js} +14 -14
- package/dist/{work-claim-cmd-MY4N74HA.js → work-claim-cmd-DNUDZKJA.js} +16 -16
- package/dist/{work-cmd-UQ45HDM4.js → work-cmd-VECTYST6.js} +12 -12
- package/dist/{work-comment-cmd-I7NNSNDP.js → work-comment-cmd-F3NRWKPZ.js} +12 -12
- package/dist/{work-logs-cmd-YIQJVENH.js → work-logs-cmd-QF6P32FE.js} +12 -12
- package/dist/{work-open-pr-cmd-VP5NNTCW.js → work-open-pr-cmd-XE23JA3R.js} +13 -13
- package/dist/{work-pr-cmd-DKTBEFHO.js → work-pr-cmd-BH56GUKN.js} +12 -12
- package/dist/{work-stop-cmd-GN2WX73C.js → work-stop-cmd-C3F5HNUO.js} +12 -12
- package/package.json +1 -1
- package/skill-pack/maintained/outerlayer-cli/SKILL.md +6 -5
- package/skill-pack/shipped.json +1 -0
- package/skill-pack/template/build/SKILL.md +1 -1
- package/dist/build-EBQYXL7Y.js +0 -12
- package/dist/chunk-7RQ73DLO.js +0 -23
- package/dist/init-KIGYMLDM.js +0 -54
- package/dist/loop-OE32U2IZ.js +0 -78
- package/dist/machine-L7INJ4JN.js +0 -49
|
@@ -1,45 +1,46 @@
|
|
|
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-
|
|
3
|
+
import { runRunnerInstall, launcherSummary, restartNote } from './chunk-QKIQ2R7F.js';
|
|
4
|
+
import './chunk-QHH4OSD4.js';
|
|
5
|
+
import { currentLink, execStartCommand } from './chunk-MATUHHN4.js';
|
|
6
|
+
import { detectMachine } from './chunk-UQYBCJ2L.js';
|
|
7
|
+
import { helperSocketPath, ensureFirecrackerAndJailer } from './chunk-YF56R4DV.js';
|
|
8
|
+
import './chunk-WSYXLLA5.js';
|
|
9
|
+
import './chunk-M3MHHIUW.js';
|
|
9
10
|
import './chunk-TQMI335S.js';
|
|
10
|
-
import { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
11
|
+
import { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-7AQ5AM7U.js';
|
|
12
|
+
import './chunk-YB3CSYXX.js';
|
|
13
|
+
import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
|
|
14
|
+
import './chunk-24ID7EQ2.js';
|
|
15
|
+
import './chunk-D7ECMB7B.js';
|
|
13
16
|
import './chunk-JBJTC3UU.js';
|
|
14
17
|
import './chunk-OGFGZQA3.js';
|
|
15
|
-
import { readJobFile } from './chunk-
|
|
16
|
-
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-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-TEVO3RUV.js';
|
|
18
|
+
import { readJobFile } from './chunk-JH2GQU5T.js';
|
|
19
|
+
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-B6K7R5UY.js';
|
|
20
|
+
import './chunk-XBPUTQ7E.js';
|
|
21
|
+
import './chunk-GLUKDQS4.js';
|
|
22
|
+
import './chunk-55GNQPO6.js';
|
|
23
|
+
import './chunk-2F762IXY.js';
|
|
24
|
+
import './chunk-N4D5TMVU.js';
|
|
23
25
|
import './chunk-BUP5N3X6.js';
|
|
24
|
-
import './chunk-
|
|
25
|
-
import './chunk-
|
|
26
|
-
import
|
|
26
|
+
import './chunk-LOKSLO25.js';
|
|
27
|
+
import './chunk-6BLXUD56.js';
|
|
28
|
+
import './chunk-G2JWZDFA.js';
|
|
29
|
+
import { runnerVmOf, loadRunnerConfig, builtinKind } from './chunk-EPPIISRD.js';
|
|
27
30
|
import './chunk-UXYLWVTQ.js';
|
|
28
|
-
import './chunk-
|
|
31
|
+
import './chunk-YJLHUKYS.js';
|
|
29
32
|
import { realLima } from './chunk-77MM5RYD.js';
|
|
30
|
-
import
|
|
31
|
-
import './chunk-
|
|
32
|
-
import './chunk-
|
|
33
|
-
import './chunk-QRZLUUNN.js';
|
|
33
|
+
import './chunk-BPKO76QR.js';
|
|
34
|
+
import './chunk-MHX7YX7Y.js';
|
|
35
|
+
import './chunk-BWH36FOC.js';
|
|
34
36
|
import './chunk-ZJSNLVCE.js';
|
|
35
|
-
import './chunk-
|
|
37
|
+
import './chunk-6TRNCUM4.js';
|
|
36
38
|
import './chunk-HCVLP7XA.js';
|
|
37
39
|
import './chunk-BJ3KTMDH.js';
|
|
40
|
+
import './chunk-7OUOLGUV.js';
|
|
38
41
|
import './chunk-QE3UQAHK.js';
|
|
39
42
|
import './chunk-ANPNT6PM.js';
|
|
40
|
-
import './chunk-
|
|
41
|
-
import './chunk-JKNYTNYD.js';
|
|
42
|
-
import './chunk-HBISTTG3.js';
|
|
43
|
+
import './chunk-PJDQPF5N.js';
|
|
43
44
|
import './chunk-WZBHBH3J.js';
|
|
44
45
|
import './chunk-CRB3POP4.js';
|
|
45
46
|
import './chunk-YQR6E6OV.js';
|
|
@@ -47,9 +48,9 @@ import './chunk-RKOTJQVG.js';
|
|
|
47
48
|
import './chunk-QZBXLLTV.js';
|
|
48
49
|
import './chunk-VNVZDWO3.js';
|
|
49
50
|
import './chunk-RA3O54FC.js';
|
|
50
|
-
import './chunk-
|
|
51
|
-
import { runnerDir } from './chunk-
|
|
52
|
-
import './chunk-
|
|
51
|
+
import './chunk-Y4OKEFAX.js';
|
|
52
|
+
import { runnerDir } from './chunk-RHAGBUL5.js';
|
|
53
|
+
import './chunk-2I3LIRZP.js';
|
|
53
54
|
import './chunk-JGD5TWQ2.js';
|
|
54
55
|
import './chunk-Z5GEFMRW.js';
|
|
55
56
|
import { userInfo, totalmem, tmpdir } from 'os';
|
|
@@ -1,10 +1,10 @@
|
|
|
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-EPPIISRD.js';
|
|
4
4
|
import './chunk-UXYLWVTQ.js';
|
|
5
|
-
import './chunk-
|
|
5
|
+
import './chunk-YJLHUKYS.js';
|
|
6
6
|
import './chunk-VNVZDWO3.js';
|
|
7
|
-
import './chunk-
|
|
7
|
+
import './chunk-2I3LIRZP.js';
|
|
8
8
|
import './chunk-JGD5TWQ2.js';
|
|
9
9
|
import './chunk-Z5GEFMRW.js';
|
|
10
10
|
|
|
@@ -1,24 +1,24 @@
|
|
|
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-N4D5TMVU.js';
|
|
4
4
|
import './chunk-BUP5N3X6.js';
|
|
5
|
-
import './chunk-
|
|
6
|
-
import './chunk-
|
|
7
|
-
import './chunk-
|
|
5
|
+
import './chunk-LOKSLO25.js';
|
|
6
|
+
import './chunk-6BLXUD56.js';
|
|
7
|
+
import './chunk-G2JWZDFA.js';
|
|
8
|
+
import './chunk-BWH36FOC.js';
|
|
8
9
|
import './chunk-BJ3KTMDH.js';
|
|
10
|
+
import './chunk-7OUOLGUV.js';
|
|
9
11
|
import './chunk-QE3UQAHK.js';
|
|
10
12
|
import './chunk-ANPNT6PM.js';
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-JKNYTNYD.js';
|
|
13
|
-
import './chunk-HBISTTG3.js';
|
|
13
|
+
import './chunk-PJDQPF5N.js';
|
|
14
14
|
import './chunk-CRB3POP4.js';
|
|
15
15
|
import './chunk-RKOTJQVG.js';
|
|
16
16
|
import './chunk-QZBXLLTV.js';
|
|
17
17
|
import './chunk-VNVZDWO3.js';
|
|
18
18
|
import './chunk-RA3O54FC.js';
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
19
|
+
import './chunk-Y4OKEFAX.js';
|
|
20
|
+
import './chunk-RHAGBUL5.js';
|
|
21
|
+
import './chunk-2I3LIRZP.js';
|
|
22
22
|
import './chunk-JGD5TWQ2.js';
|
|
23
23
|
import './chunk-Z5GEFMRW.js';
|
|
24
24
|
|
|
@@ -1,43 +1,44 @@
|
|
|
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
|
|
3
|
+
import { RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-QIVOTQOQ.js';
|
|
4
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker } from './chunk-UQYBCJ2L.js';
|
|
5
|
+
import { MIN_ENGINE_MAJOR } from './chunk-YF56R4DV.js';
|
|
6
|
+
import './chunk-WSYXLLA5.js';
|
|
7
|
+
import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-M3MHHIUW.js';
|
|
7
8
|
import './chunk-TQMI335S.js';
|
|
8
|
-
import { isAgentName, AGENT_COMMANDS } from './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import './chunk-
|
|
9
|
+
import { isAgentName, AGENT_COMMANDS } from './chunk-GFUE5TKO.js';
|
|
10
|
+
import './chunk-7AQ5AM7U.js';
|
|
11
|
+
import './chunk-YB3CSYXX.js';
|
|
12
|
+
import './chunk-STSLH5EJ.js';
|
|
13
|
+
import './chunk-24ID7EQ2.js';
|
|
14
|
+
import './chunk-D7ECMB7B.js';
|
|
13
15
|
import './chunk-JBJTC3UU.js';
|
|
14
16
|
import './chunk-OGFGZQA3.js';
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
18
|
-
import './chunk-
|
|
19
|
-
import './chunk-
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-TEVO3RUV.js';
|
|
17
|
+
import './chunk-JH2GQU5T.js';
|
|
18
|
+
import './chunk-B6K7R5UY.js';
|
|
19
|
+
import './chunk-XBPUTQ7E.js';
|
|
20
|
+
import './chunk-GLUKDQS4.js';
|
|
21
|
+
import './chunk-55GNQPO6.js';
|
|
22
|
+
import './chunk-2F762IXY.js';
|
|
23
|
+
import './chunk-N4D5TMVU.js';
|
|
23
24
|
import './chunk-BUP5N3X6.js';
|
|
24
|
-
import './chunk-
|
|
25
|
-
import './chunk-
|
|
26
|
-
import './chunk-
|
|
25
|
+
import './chunk-LOKSLO25.js';
|
|
26
|
+
import './chunk-6BLXUD56.js';
|
|
27
|
+
import './chunk-G2JWZDFA.js';
|
|
28
|
+
import './chunk-EPPIISRD.js';
|
|
27
29
|
import './chunk-UXYLWVTQ.js';
|
|
28
|
-
import './chunk-
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
31
|
-
import './chunk-
|
|
30
|
+
import './chunk-YJLHUKYS.js';
|
|
31
|
+
import './chunk-BPKO76QR.js';
|
|
32
|
+
import './chunk-MHX7YX7Y.js';
|
|
33
|
+
import './chunk-BWH36FOC.js';
|
|
32
34
|
import './chunk-ZJSNLVCE.js';
|
|
33
|
-
import './chunk-
|
|
35
|
+
import './chunk-6TRNCUM4.js';
|
|
34
36
|
import './chunk-HCVLP7XA.js';
|
|
35
37
|
import './chunk-BJ3KTMDH.js';
|
|
38
|
+
import './chunk-7OUOLGUV.js';
|
|
36
39
|
import './chunk-QE3UQAHK.js';
|
|
37
40
|
import './chunk-ANPNT6PM.js';
|
|
38
|
-
import './chunk-
|
|
39
|
-
import './chunk-JKNYTNYD.js';
|
|
40
|
-
import './chunk-HBISTTG3.js';
|
|
41
|
+
import './chunk-PJDQPF5N.js';
|
|
41
42
|
import './chunk-WZBHBH3J.js';
|
|
42
43
|
import './chunk-CRB3POP4.js';
|
|
43
44
|
import './chunk-YQR6E6OV.js';
|
|
@@ -45,9 +46,9 @@ import './chunk-RKOTJQVG.js';
|
|
|
45
46
|
import './chunk-QZBXLLTV.js';
|
|
46
47
|
import './chunk-VNVZDWO3.js';
|
|
47
48
|
import './chunk-RA3O54FC.js';
|
|
48
|
-
import './chunk-
|
|
49
|
-
import './chunk-
|
|
50
|
-
import { CLAUDE_CREDENTIAL_VARIABLES } from './chunk-
|
|
49
|
+
import './chunk-Y4OKEFAX.js';
|
|
50
|
+
import './chunk-RHAGBUL5.js';
|
|
51
|
+
import { CLAUDE_CREDENTIAL_VARIABLES } from './chunk-2I3LIRZP.js';
|
|
51
52
|
import './chunk-JGD5TWQ2.js';
|
|
52
53
|
import './chunk-Z5GEFMRW.js';
|
|
53
54
|
import { existsSync, readFileSync } from 'fs';
|
|
@@ -1,14 +1,14 @@
|
|
|
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-BPKO76QR.js';
|
|
4
|
+
import './chunk-MHX7YX7Y.js';
|
|
5
|
+
import { resolveGatewayCredentials, defaultFetch } from './chunk-BWH36FOC.js';
|
|
6
6
|
import './chunk-ZJSNLVCE.js';
|
|
7
|
-
import { layoutRefusalMessage, unsupportedLayout, sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-
|
|
7
|
+
import { layoutRefusalMessage, unsupportedLayout, sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-6TRNCUM4.js';
|
|
8
8
|
import './chunk-HCVLP7XA.js';
|
|
9
9
|
import { findGitDirs } from './chunk-BJ3KTMDH.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
10
|
+
import './chunk-7OUOLGUV.js';
|
|
11
|
+
import './chunk-PJDQPF5N.js';
|
|
12
12
|
import './chunk-CRB3POP4.js';
|
|
13
13
|
import { cleanupEarlierCopies } from './chunk-VWFOKRYS.js';
|
|
14
14
|
import { readSourceCache, readDeliveryRecord, isSourceCacheFresh, writeDeliveryRecord, writeSourceCache, SOURCE_CACHE_TTL_SUCCESS_MS, clearDegraded, removeLauncherDeliveryRecord } from './chunk-YQR6E6OV.js';
|
|
@@ -17,9 +17,9 @@ import './chunk-RKOTJQVG.js';
|
|
|
17
17
|
import './chunk-QZBXLLTV.js';
|
|
18
18
|
import './chunk-VNVZDWO3.js';
|
|
19
19
|
import './chunk-RA3O54FC.js';
|
|
20
|
-
import './chunk-
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-
|
|
20
|
+
import './chunk-Y4OKEFAX.js';
|
|
21
|
+
import './chunk-RHAGBUL5.js';
|
|
22
|
+
import './chunk-2I3LIRZP.js';
|
|
23
23
|
import './chunk-JGD5TWQ2.js';
|
|
24
24
|
import './chunk-Z5GEFMRW.js';
|
|
25
25
|
import { execFileSync } from 'child_process';
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { childEnvironment, createDockerHost, spawnRun } from './chunk-
|
|
4
|
-
import './chunk-
|
|
5
|
-
import './chunk-
|
|
3
|
+
export { childEnvironment, createDockerHost, spawnRun } from './chunk-JH2GQU5T.js';
|
|
4
|
+
import './chunk-B6K7R5UY.js';
|
|
5
|
+
import './chunk-YJLHUKYS.js';
|
|
6
6
|
import './chunk-QE3UQAHK.js';
|
|
7
7
|
import './chunk-QZBXLLTV.js';
|
|
8
|
-
import './chunk-
|
|
9
|
-
import './chunk-
|
|
10
|
-
import './chunk-
|
|
8
|
+
import './chunk-Y4OKEFAX.js';
|
|
9
|
+
import './chunk-RHAGBUL5.js';
|
|
10
|
+
import './chunk-2I3LIRZP.js';
|
|
11
11
|
import './chunk-JGD5TWQ2.js';
|
|
12
12
|
import './chunk-Z5GEFMRW.js';
|
|
13
13
|
|
|
@@ -1,48 +1,49 @@
|
|
|
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-
|
|
3
|
+
import { launcherCheck } from './chunk-QHH4OSD4.js';
|
|
4
|
+
import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-WVDP6HVZ.js';
|
|
5
|
+
import './chunk-MATUHHN4.js';
|
|
6
6
|
import { freeBytes, formatBytes } from './chunk-YYYRBYWG.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
|
|
8
|
+
import './chunk-QIVOTQOQ.js';
|
|
9
|
+
import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-UQYBCJ2L.js';
|
|
10
|
+
import { MIN_ENGINE_MAJOR, helperFirecrackerNote, probeHelper, helperSocketPath } from './chunk-YF56R4DV.js';
|
|
11
|
+
import './chunk-WSYXLLA5.js';
|
|
12
|
+
import { runnerImageVersion, imageAdvice, readUpdateStatus, imageTag, pullInstruction } from './chunk-M3MHHIUW.js';
|
|
12
13
|
import './chunk-TQMI335S.js';
|
|
13
|
-
import './chunk-
|
|
14
|
-
import './chunk-
|
|
15
|
-
import './chunk-
|
|
16
|
-
import './chunk-
|
|
17
|
-
import './chunk-
|
|
14
|
+
import './chunk-GFUE5TKO.js';
|
|
15
|
+
import './chunk-7AQ5AM7U.js';
|
|
16
|
+
import './chunk-YB3CSYXX.js';
|
|
17
|
+
import './chunk-STSLH5EJ.js';
|
|
18
|
+
import './chunk-24ID7EQ2.js';
|
|
19
|
+
import './chunk-D7ECMB7B.js';
|
|
18
20
|
import './chunk-JBJTC3UU.js';
|
|
19
21
|
import './chunk-OGFGZQA3.js';
|
|
20
|
-
import { resolveDevcontainerCli, buildxState, spawnRun } from './chunk-
|
|
21
|
-
import { locateRecipe, assertBuildable, readRecipe, RecipeError, FIRECRACKER_VERSION, CLAUDE_CODE_VERSION } from './chunk-
|
|
22
|
-
import './chunk-
|
|
23
|
-
import './chunk-
|
|
24
|
-
import './chunk-
|
|
25
|
-
import
|
|
26
|
-
import './chunk-
|
|
27
|
-
import './chunk-TEVO3RUV.js';
|
|
22
|
+
import { resolveDevcontainerCli, buildxState, spawnRun } from './chunk-JH2GQU5T.js';
|
|
23
|
+
import { locateRecipe, assertBuildable, readRecipe, RecipeError, FIRECRACKER_VERSION, CLAUDE_CODE_VERSION } from './chunk-B6K7R5UY.js';
|
|
24
|
+
import './chunk-XBPUTQ7E.js';
|
|
25
|
+
import './chunk-GLUKDQS4.js';
|
|
26
|
+
import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-55GNQPO6.js';
|
|
27
|
+
import './chunk-2F762IXY.js';
|
|
28
|
+
import './chunk-N4D5TMVU.js';
|
|
28
29
|
import './chunk-BUP5N3X6.js';
|
|
29
|
-
import './chunk-
|
|
30
|
-
import './chunk-
|
|
31
|
-
import
|
|
30
|
+
import './chunk-LOKSLO25.js';
|
|
31
|
+
import './chunk-6BLXUD56.js';
|
|
32
|
+
import './chunk-G2JWZDFA.js';
|
|
33
|
+
import { builtinKind } from './chunk-EPPIISRD.js';
|
|
32
34
|
import { allowHostProblem, MAX_ALLOW_HOSTS } from './chunk-UXYLWVTQ.js';
|
|
33
|
-
import { parseSize } from './chunk-
|
|
34
|
-
import { defaultGitRunner } from './chunk-
|
|
35
|
-
import './chunk-
|
|
36
|
-
import { defaultFetch } from './chunk-
|
|
35
|
+
import { parseSize } from './chunk-YJLHUKYS.js';
|
|
36
|
+
import { defaultGitRunner } from './chunk-BPKO76QR.js';
|
|
37
|
+
import './chunk-MHX7YX7Y.js';
|
|
38
|
+
import { defaultFetch } from './chunk-BWH36FOC.js';
|
|
37
39
|
import './chunk-ZJSNLVCE.js';
|
|
38
|
-
import './chunk-
|
|
40
|
+
import './chunk-6TRNCUM4.js';
|
|
39
41
|
import './chunk-HCVLP7XA.js';
|
|
40
42
|
import './chunk-BJ3KTMDH.js';
|
|
43
|
+
import './chunk-7OUOLGUV.js';
|
|
41
44
|
import { compareVersions } from './chunk-QE3UQAHK.js';
|
|
42
45
|
import './chunk-ANPNT6PM.js';
|
|
43
|
-
import './chunk-
|
|
44
|
-
import './chunk-JKNYTNYD.js';
|
|
45
|
-
import './chunk-HBISTTG3.js';
|
|
46
|
+
import './chunk-PJDQPF5N.js';
|
|
46
47
|
import './chunk-WZBHBH3J.js';
|
|
47
48
|
import './chunk-CRB3POP4.js';
|
|
48
49
|
import './chunk-YQR6E6OV.js';
|
|
@@ -50,9 +51,9 @@ import './chunk-RKOTJQVG.js';
|
|
|
50
51
|
import './chunk-QZBXLLTV.js';
|
|
51
52
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
52
53
|
import './chunk-RA3O54FC.js';
|
|
53
|
-
import { loadHostKey } from './chunk-
|
|
54
|
-
import { runnerDir, buildsDir, hostKeyPath, jobsDir } from './chunk-
|
|
55
|
-
import './chunk-
|
|
54
|
+
import { loadHostKey } from './chunk-Y4OKEFAX.js';
|
|
55
|
+
import { runnerDir, buildsDir, hostKeyPath, jobsDir } from './chunk-RHAGBUL5.js';
|
|
56
|
+
import './chunk-2I3LIRZP.js';
|
|
56
57
|
import './chunk-JGD5TWQ2.js';
|
|
57
58
|
import './chunk-Z5GEFMRW.js';
|
|
58
59
|
import { spawnSync } from 'child_process';
|
|
@@ -61,6 +62,136 @@ import { totalmem, tmpdir } from 'os';
|
|
|
61
62
|
import { join } from 'path';
|
|
62
63
|
|
|
63
64
|
createRequire(import.meta.url);
|
|
65
|
+
var NESTED_FILES = [
|
|
66
|
+
{ module: "kvm_intel", feature: "VMX", path: "/sys/module/kvm_intel/parameters/nested" },
|
|
67
|
+
{ module: "kvm_amd", feature: "SVM", path: "/sys/module/kvm_amd/parameters/nested" }
|
|
68
|
+
];
|
|
69
|
+
var VMSCAPE_FILE = "/sys/devices/system/cpu/vulnerabilities/vmscape";
|
|
70
|
+
var readText = (path) => readFileSync(path, "utf8");
|
|
71
|
+
var reasonOf = (err) => err instanceof Error ? err.message : String(err);
|
|
72
|
+
function nestedVirtualizationCheck(probes = {}) {
|
|
73
|
+
const name = "Nested virtualization";
|
|
74
|
+
const read = probes.readHostFile ?? readText;
|
|
75
|
+
const found = NESTED_FILES.flatMap((file) => {
|
|
76
|
+
try {
|
|
77
|
+
return [{ ...file, value: read(file.path).trim() }];
|
|
78
|
+
} catch {
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
const on = found.find((file) => file.value === "Y" || file.value === "1");
|
|
83
|
+
if (on !== void 0) {
|
|
84
|
+
return {
|
|
85
|
+
name,
|
|
86
|
+
status: "warn",
|
|
87
|
+
detail: `${on.module} allows nested virtualization (${on.path} is ${on.value}), so every microVM build sees ${on.feature} and can use the nested-virtualization code in this host's kernel`,
|
|
88
|
+
fix: `add \`options ${on.module} nested=0\` to a file in /etc/modprobe.d, then reboot, or reload ${on.module} while no microVM runs`
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
const odd = found.find((file) => !["N", "0"].includes(file.value));
|
|
92
|
+
if (odd !== void 0) {
|
|
93
|
+
return {
|
|
94
|
+
name,
|
|
95
|
+
status: "warn",
|
|
96
|
+
detail: `${odd.path} holds "${odd.value}", which doctor does not know, so it cannot tell whether microVM builds see ${odd.feature}`,
|
|
97
|
+
fix: `check that the ${odd.module} module is loaded and reports nested as Y, N, 1 or 0`
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
if (found.length === 0) {
|
|
101
|
+
return {
|
|
102
|
+
name,
|
|
103
|
+
status: "warn",
|
|
104
|
+
detail: `doctor could not read either ${NESTED_FILES[0].path} or ${NESTED_FILES[1].path}, so it cannot tell whether microVM builds see VMX or SVM`,
|
|
105
|
+
fix: "check that the kvm_intel or kvm_amd module is loaded"
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
const first = found[0];
|
|
109
|
+
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
|
+
function vmscapeCheck(probes = {}) {
|
|
112
|
+
const name = "VMScape";
|
|
113
|
+
let value;
|
|
114
|
+
try {
|
|
115
|
+
value = (probes.readHostFile ?? readText)(VMSCAPE_FILE).trim();
|
|
116
|
+
} catch (err) {
|
|
117
|
+
if (err.code === "ENOENT") {
|
|
118
|
+
return {
|
|
119
|
+
name,
|
|
120
|
+
status: "skipped",
|
|
121
|
+
detail: `this kernel does not report VMScape, so doctor cannot tell whether this host is exposed. Kernels without the September 2025 fix have no ${VMSCAPE_FILE}`,
|
|
122
|
+
fix: "update the kernel. A kernel with the fix reports VMScape in that file"
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
return unknownVmscape(name, `${VMSCAPE_FILE} cannot be read: ${reasonOf(err)}`);
|
|
126
|
+
}
|
|
127
|
+
if (value === "Not affected" || value.startsWith("Mitigation:")) {
|
|
128
|
+
return { name, status: "pass", detail: `the kernel reports VMScape (CVE-2025-40300) as "${value}"` };
|
|
129
|
+
}
|
|
130
|
+
if (value.startsWith("Vulnerable")) {
|
|
131
|
+
return {
|
|
132
|
+
name,
|
|
133
|
+
status: "warn",
|
|
134
|
+
detail: `the kernel reports VMScape (CVE-2025-40300) as "${value}", so a microVM build can influence branch prediction in the Firecracker process that runs it`,
|
|
135
|
+
fix: "boot without vmscape=off or mitigations=off. Load current CPU microcode. Use a kernel built with the VMScape mitigation"
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
return unknownVmscape(name, `${VMSCAPE_FILE} holds "${value}", which doctor does not know`);
|
|
139
|
+
}
|
|
140
|
+
function unknownVmscape(name, reason) {
|
|
141
|
+
return { name, status: "warn", detail: `${reason}, so doctor cannot tell whether this host is exposed to VMScape (CVE-2025-40300)` };
|
|
142
|
+
}
|
|
143
|
+
function parseRuncVersion(text) {
|
|
144
|
+
const match = /^v?(\d+)\.(\d+)\.(\d+)(?:-rc\.(\d+))?/.exec(text.trim());
|
|
145
|
+
if (match === null) return void 0;
|
|
146
|
+
return { major: Number(match[1]), minor: Number(match[2]), patch: Number(match[3]), candidate: match[4] === void 0 ? Infinity : Number(match[4]) };
|
|
147
|
+
}
|
|
148
|
+
var atLeast = (version, floor) => {
|
|
149
|
+
for (const key of ["major", "minor", "patch", "candidate"]) {
|
|
150
|
+
if (version[key] !== floor[key]) return version[key] > floor[key];
|
|
151
|
+
}
|
|
152
|
+
return true;
|
|
153
|
+
};
|
|
154
|
+
function runcIsFixed(version) {
|
|
155
|
+
if (version.minor === 2) return atLeast(version, { major: 1, minor: 2, patch: 8, candidate: Infinity });
|
|
156
|
+
if (version.minor === 3) return atLeast(version, { major: 1, minor: 3, patch: 3, candidate: Infinity });
|
|
157
|
+
return atLeast(version, { major: 1, minor: 4, patch: 0, candidate: 3 });
|
|
158
|
+
}
|
|
159
|
+
function dockerServerComponents() {
|
|
160
|
+
const result = spawnSync("docker", ["version", "--format", "{{json .Server.Components}}"], { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 15e3 });
|
|
161
|
+
return result.status === 0 ? result.stdout : void 0;
|
|
162
|
+
}
|
|
163
|
+
function runcVersionOf(output) {
|
|
164
|
+
if (output === void 0) return void 0;
|
|
165
|
+
try {
|
|
166
|
+
const components = JSON.parse(output);
|
|
167
|
+
const runc = components.find((c) => c?.Name === "runc");
|
|
168
|
+
return typeof runc?.Version === "string" && runc.Version !== "" ? runc.Version : void 0;
|
|
169
|
+
} catch {
|
|
170
|
+
return void 0;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
function runcCheck(probes = {}) {
|
|
174
|
+
const name = "runc";
|
|
175
|
+
const reported = runcVersionOf((probes.dockerServerComponents ?? dockerServerComponents)());
|
|
176
|
+
const version = reported === void 0 ? void 0 : parseRuncVersion(reported);
|
|
177
|
+
if (version === void 0) {
|
|
178
|
+
return {
|
|
179
|
+
name,
|
|
180
|
+
status: "warn",
|
|
181
|
+
detail: reported === void 0 ? "doctor could not read the version of runc that Docker uses, so it cannot tell whether container builds run under a fixed runc" : `doctor could not read the version of runc that Docker uses: it reports "${reported}"`,
|
|
182
|
+
fix: "check that Docker Engine is reachable and that its default runtime is runc: `docker info --format '{{.DefaultRuntime}}'`"
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
if (runcIsFixed(version)) {
|
|
186
|
+
return { name, status: "pass", detail: `Docker starts containers with runc ${reported}, which fixes CVE-2025-31133, CVE-2025-52565 and CVE-2025-52881` };
|
|
187
|
+
}
|
|
188
|
+
return {
|
|
189
|
+
name,
|
|
190
|
+
status: "warn",
|
|
191
|
+
detail: `Docker starts containers with runc ${reported}. That version is older than the releases that fix the container-escape bugs CVE-2025-31133, CVE-2025-52565 and CVE-2025-52881. Every container build runs under it`,
|
|
192
|
+
fix: "update to runc 1.3.3 or later (runc 1.2.8 on the 1.2 series), for example with Docker's containerd.io package. A distribution package can carry the fix under an older number, so check the distribution's advisory first"
|
|
193
|
+
};
|
|
194
|
+
}
|
|
64
195
|
|
|
65
196
|
// src/runner/microvm/doctor.ts
|
|
66
197
|
var GIB = 1024 ** 3;
|
|
@@ -140,6 +271,14 @@ function helperCheck(facts) {
|
|
|
140
271
|
if (facts.present && facts.firecracker !== FIRECRACKER_VERSION) {
|
|
141
272
|
return { name, status: "warn", detail: helperFirecrackerNote(facts.firecracker), fix: REINSTALL };
|
|
142
273
|
}
|
|
274
|
+
if (facts.present && facts.fdStoreMax === 0) {
|
|
275
|
+
return {
|
|
276
|
+
name,
|
|
277
|
+
status: "warn",
|
|
278
|
+
detail: `microVM builds will not survive a restart of the runner: the service's unit sets FileDescriptorStoreMax=0, so the sockets a build reaches the runner on are lost when the runner stops, and every build ends with its runner`,
|
|
279
|
+
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
|
+
};
|
|
281
|
+
}
|
|
143
282
|
if (facts.present) {
|
|
144
283
|
return {
|
|
145
284
|
name,
|
|
@@ -149,12 +288,12 @@ function helperCheck(facts) {
|
|
|
149
288
|
}
|
|
150
289
|
const reaches = "a build that escaped its microVM would run as the runner's account and reach what that account holds: the Claude credential, the runner key, the host key, the host's `gh` login and its membership of the `docker` group";
|
|
151
290
|
if (facts.reason === "unpinned") {
|
|
152
|
-
return { name, status: "warn", detail: `this release of the CLI pins no root helper, so Firecracker runs as the runner's account: ${reaches}` };
|
|
291
|
+
return { name, status: "warn", detail: `this release of the CLI pins no root helper, so Firecracker runs as the runner's account: ${reaches}. microVM builds will not survive a restart of the runner: a build ends with its runner` };
|
|
153
292
|
}
|
|
154
293
|
return {
|
|
155
294
|
name,
|
|
156
295
|
status: "warn",
|
|
157
|
-
detail: `no usable root helper runs for this runner, so Firecracker runs as the runner's account: ${reaches} (${facts.detail})`,
|
|
296
|
+
detail: `no usable root helper runs for this runner, so Firecracker runs as the runner's account: ${reaches} (${facts.detail}). microVM builds will not survive a restart of the runner: a build ends with its runner`,
|
|
158
297
|
fix: REINSTALL
|
|
159
298
|
};
|
|
160
299
|
}
|
|
@@ -567,7 +706,12 @@ async function helperFactsOf(env) {
|
|
|
567
706
|
if (!probe.ok) return { present: false, reason: probe.reason, detail: probe.detail };
|
|
568
707
|
const builds = buildsDir(env.configPath);
|
|
569
708
|
const stat = statSync(builds, { throwIfNoEntry: false });
|
|
570
|
-
return {
|
|
709
|
+
return {
|
|
710
|
+
present: true,
|
|
711
|
+
firecracker: probe.firecracker,
|
|
712
|
+
...stat !== void 0 && (stat.mode & 18) !== 0 ? { writableBuildsDir: builds } : {},
|
|
713
|
+
...env.service?.fdStoreMax === void 0 ? {} : { fdStoreMax: env.service.fdStoreMax }
|
|
714
|
+
};
|
|
571
715
|
}
|
|
572
716
|
async function runnerHostChecks(env) {
|
|
573
717
|
const dockerAvailable = env.dockerAvailable ?? (() => spawnSync("docker", ["info"], { stdio: "ignore" }).status === 0);
|
|
@@ -594,8 +738,11 @@ async function runnerHostChecks(env) {
|
|
|
594
738
|
kvmCheck(machine(), env.service),
|
|
595
739
|
...env.service === void 0 ? [] : [delegationCheck(env.service)],
|
|
596
740
|
helperCheck(await helperFactsOf(env)),
|
|
741
|
+
nestedVirtualizationCheck(env),
|
|
742
|
+
vmscapeCheck(env),
|
|
597
743
|
...env.runner === void 0 ? [] : [memoryCheck({ concurrency: env.runner.concurrency, buildMemory: env.runner.buildMemory, hostMemory: env.hostMemory ?? totalmem() })]
|
|
598
744
|
] : [],
|
|
745
|
+
...env.hooks !== void 0 && builtinKind(env.hooks.provision) === "container" ? [runcCheck(env)] : [],
|
|
599
746
|
...env.hooks !== void 0 && ["container", "vm"].includes(builtinKind(env.hooks.provision)) ? [imageBuildLimitCheck(await (env.buildx ?? (() => buildxState(spawnRun)))(), env.runner?.buildMemory)] : [],
|
|
600
747
|
...env.runner !== void 0 && env.hooks !== void 0 && ["container", "vm"].includes(builtinKind(env.hooks.provision)) ? [allowHostsCheck(env.configPath, env.runner.allowHosts)] : [],
|
|
601
748
|
...env.runner?.minFreeDisk === void 0 ? [] : [freeDiskCheck(env.configPath, env.runner.minFreeDisk, env.freeBytes ?? freeBytes)],
|
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-VS27BP3E.js';
|
|
4
|
+
import './chunk-O2IJTY7L.js';
|
|
5
5
|
import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
|
|
6
6
|
import './chunk-TBT347UY.js';
|
|
7
|
-
import { detectActiveSession, autoConnect } from './chunk-
|
|
8
|
-
import './chunk-
|
|
7
|
+
import { detectActiveSession, autoConnect } from './chunk-2F762IXY.js';
|
|
8
|
+
import './chunk-N4D5TMVU.js';
|
|
9
9
|
import { readEffectiveArtifactSpoolState, localArtifactIds, isArtifactTombstoned, artifactBlobsDir, appendArtifactRecord, artifactsSpoolPath, findPendingArtifactRecord, sanitizeTerminal, appendArtifactTombstone } from './chunk-BUP5N3X6.js';
|
|
10
|
-
import './chunk-
|
|
11
|
-
import './chunk-
|
|
12
|
-
import
|
|
13
|
-
import './chunk-
|
|
10
|
+
import './chunk-LOKSLO25.js';
|
|
11
|
+
import './chunk-6BLXUD56.js';
|
|
12
|
+
import './chunk-G2JWZDFA.js';
|
|
13
|
+
import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-BWH36FOC.js';
|
|
14
|
+
import './chunk-DJHNEGNM.js';
|
|
14
15
|
import './chunk-ZJSNLVCE.js';
|
|
15
16
|
import './chunk-2O5KA67H.js';
|
|
16
17
|
import './chunk-BKO6JEZI.js';
|
|
17
18
|
import './chunk-HCVLP7XA.js';
|
|
18
19
|
import './chunk-BJ3KTMDH.js';
|
|
20
|
+
import './chunk-7OUOLGUV.js';
|
|
19
21
|
import { resolveRepoIdentity } from './chunk-QE3UQAHK.js';
|
|
20
22
|
import { C } from './chunk-ANPNT6PM.js';
|
|
21
|
-
import './chunk-
|
|
22
|
-
import './chunk-JKNYTNYD.js';
|
|
23
|
-
import './chunk-HBISTTG3.js';
|
|
23
|
+
import './chunk-PJDQPF5N.js';
|
|
24
24
|
import './chunk-T2Q7ISPE.js';
|
|
25
25
|
import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
|
|
26
26
|
import { cliInvocation } from './chunk-CRB3POP4.js';
|
|
@@ -30,9 +30,9 @@ import './chunk-RKOTJQVG.js';
|
|
|
30
30
|
import { ARTIFACT_MAX_CAPTION_LENGTH, ArtifactCriterionIdSchema, ARTIFACT_MAX_FILENAME_LENGTH, mediaTypeForArtifactPath, inferArtifactKind, ARTIFACT_MAX_REPLACES_TARGETS, parseTestSelector, parseJunit, bindTests } from './chunk-QZBXLLTV.js';
|
|
31
31
|
import { homeFromEnv } from './chunk-VNVZDWO3.js';
|
|
32
32
|
import './chunk-RA3O54FC.js';
|
|
33
|
-
import './chunk-
|
|
34
|
-
import './chunk-
|
|
35
|
-
import './chunk-
|
|
33
|
+
import './chunk-Y4OKEFAX.js';
|
|
34
|
+
import './chunk-RHAGBUL5.js';
|
|
35
|
+
import './chunk-2I3LIRZP.js';
|
|
36
36
|
import './chunk-JGD5TWQ2.js';
|
|
37
37
|
import './chunk-Z5GEFMRW.js';
|
|
38
38
|
import { createHash, randomUUID } from 'crypto';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { createRequire } from 'node:module';
|
|
3
|
-
export { EMIT_NOT_NEEDED_NOTICE, EmitError, inspectReplacedOutputs, runEmit } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
export { EMIT_NOT_NEEDED_NOTICE, EmitError, inspectReplacedOutputs, runEmit } from './chunk-WUL2OP5A.js';
|
|
4
|
+
import './chunk-LOKSLO25.js';
|
|
5
|
+
import './chunk-MHX7YX7Y.js';
|
|
6
|
+
import './chunk-7OUOLGUV.js';
|
|
5
7
|
import './chunk-ANPNT6PM.js';
|
|
6
|
-
import './chunk-JKNYTNYD.js';
|
|
7
|
-
import './chunk-HBISTTG3.js';
|
|
8
8
|
import './chunk-CRB3POP4.js';
|
|
9
9
|
import './chunk-RKOTJQVG.js';
|
|
10
10
|
import './chunk-QZBXLLTV.js';
|