@outerlayer/cli 0.34.0-next.20261025133402 → 0.34.0-next.20261025180645

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.
Files changed (123) hide show
  1. package/dist/{agent-setup-UXUWLV7O.js → agent-setup-FNDKCPUP.js} +8 -9
  2. package/dist/{bridge-OWCSVCXL.js → bridge-YJBB4YA3.js} +2 -3
  3. package/dist/build-B4OKU4MV.js +16 -0
  4. package/dist/{build-disk-5ZQHYBO3.js → build-disk-ZL46AEN3.js} +6 -8
  5. package/dist/build-info.json +1 -1
  6. package/dist/{builder-54GLXGFV.js → builder-XFPWE74N.js} +5 -7
  7. package/dist/{check-4TQZZOIQ.js → check-QULEN437.js} +43 -43
  8. package/dist/{chunk-CXQCBAKO.js → chunk-25GRRBTH.js} +1 -1
  9. package/dist/{chunk-4XYC2663.js → chunk-2D6CKNR7.js} +8 -4
  10. package/dist/{chunk-IHY457PB.js → chunk-2ILU7UAU.js} +1 -1
  11. package/dist/{chunk-JEOPIRUR.js → chunk-3EJBI5JW.js} +3 -3
  12. package/dist/{chunk-TVGLNHEB.js → chunk-3N77LUQI.js} +1 -1
  13. package/dist/{chunk-ES4ULBAL.js → chunk-4UPET3R7.js} +7 -3
  14. package/dist/{chunk-MPDLZCXM.js → chunk-5AFPP3GZ.js} +238 -14
  15. package/dist/{chunk-HAEDLXHA.js → chunk-63IVRRIO.js} +3 -3
  16. package/dist/{chunk-BTG5NZHN.js → chunk-6OLVVAOK.js} +4 -4
  17. package/dist/{chunk-3M6UYJSR.js → chunk-AVPLEFQR.js} +3 -3
  18. package/dist/{chunk-TVOZOOIW.js → chunk-BHSSGVOY.js} +3 -3
  19. package/dist/{chunk-QOUR4CQ7.js → chunk-CAQCDYKF.js} +2 -2
  20. package/dist/{chunk-SMMNU65K.js → chunk-DNZYXEMY.js} +13 -12
  21. package/dist/{chunk-LMICI7AY.js → chunk-EGVHFHY4.js} +3 -3
  22. package/dist/{chunk-RNVBSRZZ.js → chunk-FD5ASWTG.js} +18 -19
  23. package/dist/{chunk-NW5PDZYA.js → chunk-FDJPDZSR.js} +1 -1
  24. package/dist/{chunk-XA6PGME5.js → chunk-FVCHHSHB.js} +3 -3
  25. package/dist/{chunk-YOBQIXX6.js → chunk-G4W4B33M.js} +182 -3
  26. package/dist/{chunk-CCISO7EQ.js → chunk-HHFZXOBC.js} +12 -14
  27. package/dist/{chunk-AABYHGVO.js → chunk-INOUUSYI.js} +29 -9
  28. package/dist/{chunk-KDLQGTN6.js → chunk-JBCOUY4M.js} +2 -2
  29. package/dist/{chunk-POGPX7LI.js → chunk-JQSZTQSK.js} +24 -30
  30. package/dist/{chunk-JZD2NTRH.js → chunk-K2UAQWYO.js} +3 -3
  31. package/dist/{chunk-UC2DKBMS.js → chunk-KM2HLQE3.js} +2 -2
  32. package/dist/{chunk-T7N3BAOO.js → chunk-LUHIN4UZ.js} +3 -3
  33. package/dist/{chunk-XLJLR7EK.js → chunk-MOI2KDLH.js} +1 -1
  34. package/dist/{chunk-BUF6DSSM.js → chunk-NW26E4YU.js} +3 -3
  35. package/dist/{chunk-ZV2JJPDS.js → chunk-O4Z2MNNL.js} +6 -6
  36. package/dist/{chunk-2RBIW2PD.js → chunk-OGPEHSNW.js} +1 -1
  37. package/dist/{chunk-EZ7L5IZU.js → chunk-OQLF3MQQ.js} +3 -4
  38. package/dist/{chunk-J246WRLZ.js → chunk-OS7DJOQJ.js} +1 -1
  39. package/dist/{chunk-O5G6VQGZ.js → chunk-PFHTT4PP.js} +5 -5
  40. package/dist/{chunk-N7LAEN3T.js → chunk-PXGU3GKY.js} +1 -1
  41. package/dist/{chunk-WIK5KUGK.js → chunk-QANM5COC.js} +6 -6
  42. package/dist/{chunk-PSXVAOEB.js → chunk-QQP3S5FU.js} +3 -3
  43. package/dist/{chunk-AVLLJW5D.js → chunk-RFVIQLNB.js} +5 -5
  44. package/dist/{chunk-Z76GVJGQ.js → chunk-RHV5SRI2.js} +3 -3
  45. package/dist/{chunk-75KZUBHD.js → chunk-SI6WDF3U.js} +1 -1
  46. package/dist/chunk-SUOZYOWO.js +51 -0
  47. package/dist/{chunk-36T6W5RA.js → chunk-SYVRBBLW.js} +1 -1
  48. package/dist/{chunk-E34FRRSW.js → chunk-TBKV4L2W.js} +4 -4
  49. package/dist/{chunk-56ZHWIR2.js → chunk-TFPNPS4Q.js} +1 -1
  50. package/dist/{chunk-DUPM5LVJ.js → chunk-UMYYYF7B.js} +1 -1
  51. package/dist/{chunk-IW6Z337K.js → chunk-UN3SQTVL.js} +7 -7
  52. package/dist/{chunk-3NFZN7H6.js → chunk-UO4FQAOX.js} +16 -12
  53. package/dist/{chunk-ZWLEUSJW.js → chunk-VJ34F55N.js} +55 -39
  54. package/dist/{chunk-3RAAYBSG.js → chunk-YHKU2NOZ.js} +1 -1
  55. package/dist/{chunk-ENFBYN4A.js → chunk-YNMVVQOQ.js} +1 -1
  56. package/dist/{claude-launcher-JEB5BN7Q.js → claude-launcher-OQZNW7XJ.js} +1 -1
  57. package/dist/{cli-DY3EGPUB.js → cli-G3P2B2XE.js} +123 -117
  58. package/dist/{command-ZAXYAZCI.js → command-4XOXVWFW.js} +169 -48
  59. package/dist/{config-UN3X6AP2.js → config-QASNKYM6.js} +7 -9
  60. package/dist/{connect-cmd-TWM4FEKD.js → connect-cmd-MEDWMW3L.js} +8 -9
  61. package/dist/{container-start-JUNBJ7MU.js → container-start-2DHCWV73.js} +34 -36
  62. package/dist/{context-show-cmd-K5LRMDEO.js → context-show-cmd-VSFCG663.js} +9 -10
  63. package/dist/{control-plane-launch-LHOV2FPA.js → control-plane-launch-XBGHM7DB.js} +5 -6
  64. package/dist/{docker-YZKRM7IP.js → docker-TAC6G4VU.js} +5 -7
  65. package/dist/{doctor-YOAF7QPL.js → doctor-LK6E3XOW.js} +66 -41
  66. package/dist/{emit-artifact-cmd-SCF2FKKS.js → emit-artifact-cmd-L4REOPWX.js} +13 -14
  67. package/dist/{emit-cmd-7NMNKDK7.js → emit-cmd-7TU3JBJ2.js} +2 -2
  68. package/dist/{emit-criteria-cmd-B6CKUWTW.js → emit-criteria-cmd-QVFOQARC.js} +10 -11
  69. package/dist/{emit-demo-cmd-BNWRETMJ.js → emit-demo-cmd-L4B6OOTV.js} +15 -16
  70. package/dist/{emit-finding-cmd-TPSHNZNE.js → emit-finding-cmd-YXFCIWMU.js} +10 -11
  71. package/dist/{emit-result-cmd-J5DXIC2Q.js → emit-result-cmd-NI4LCTUM.js} +12 -13
  72. package/dist/{emit-step-cmd-NPH46KAO.js → emit-step-cmd-HWAUCZZB.js} +10 -11
  73. package/dist/{exec-client-ANW4KGMN.js → exec-client-QB4OZRGM.js} +3 -4
  74. package/dist/find-unit-4UR647S4.js +18 -0
  75. package/dist/{findings-cmd-4FJDCFL3.js → findings-cmd-O2IBO25E.js} +10 -11
  76. package/dist/{fleet-readiness-OK6534T6.js → fleet-readiness-NJYTQYTA.js} +5 -6
  77. package/dist/{governing-source-GNKTNM32.js → governing-source-JCI7VDQ6.js} +12 -13
  78. package/dist/{guest-init-C6M7YT3U.js → guest-init-IF5LXGUL.js} +4 -5
  79. package/dist/{hook-fast-LVTJWAG3.js → hook-fast-GPUL7T77.js} +1 -1
  80. package/dist/host-key-5RU322O3.js +9 -0
  81. package/dist/{image-tag-53DJPMSZ.js → image-tag-SEMBVB5D.js} +3 -4
  82. package/dist/index.js +4 -4
  83. package/dist/{init-RAJKTSPJ.js → init-2CEULE3F.js} +25 -27
  84. package/dist/{init-JGYMAOD5.js → init-FAIF7KOK.js} +25 -27
  85. package/dist/{init-cmd-IB3KTYCV.js → init-cmd-HZUUMO45.js} +13 -14
  86. package/dist/{init-update-VPWSWDY7.js → init-update-TTMFFNMB.js} +12 -13
  87. package/dist/{install-cmd-NP7GULCD.js → install-cmd-TWGRGEVL.js} +5 -6
  88. package/dist/{logs-V6AES5FE.js → logs-6CMB3DO6.js} +2 -3
  89. package/dist/{loop-ZGDZMVFN.js → loop-7U7MVICV.js} +40 -42
  90. package/dist/{machine-LJ3VMGS3.js → machine-S3JHOX4V.js} +25 -27
  91. package/dist/{mcp-serve-cmd-DHGCAMJS.js → mcp-serve-cmd-MWGIN6YL.js} +4 -5
  92. package/dist/{paths-DMKAJVA5.js → paths-T2DEBI62.js} +2 -3
  93. package/dist/pending-ERXWVLLG.js +9 -0
  94. package/dist/{pidfile-XCTXBGA3.js → pidfile-EAD2OEM7.js} +3 -4
  95. package/dist/{record-RQLGRYWG.js → record-IMXQNHPB.js} +3 -4
  96. package/dist/{runner-env-AUG2OIP4.js → runner-env-BJPUHAKZ.js} +9 -11
  97. package/dist/{runner-identity-BQA4SBU6.js → runner-identity-ZCPPC2BJ.js} +5 -7
  98. package/dist/{runner-key-ZIF7M7YN.js → runner-key-CYSUYKSX.js} +25 -27
  99. package/dist/{session-sender-VQ4LHJ5K.js → session-sender-5T7BXPKC.js} +13 -14
  100. package/dist/{spec-cmd-PXM4FJ2O.js → spec-cmd-4ABYAFNZ.js} +11 -12
  101. package/dist/{status-27EFD2WE.js → status-2AP7J2L7.js} +32 -34
  102. package/dist/{sync-cmd-VAV7TR2A.js → sync-cmd-34CGNA6T.js} +12 -13
  103. package/dist/{update-steps-7YLAFW3E.js → update-steps-JQOCCDWO.js} +33 -35
  104. package/dist/{watch-42XJSTTB.js → watch-6HU7LCUY.js} +12 -13
  105. package/dist/{work-claim-cmd-HSG4OHFI.js → work-claim-cmd-5QKLHSCR.js} +16 -18
  106. package/dist/{work-cmd-KCBU3RSD.js → work-cmd-3MKUIE2C.js} +10 -11
  107. package/dist/{work-comment-cmd-QIP2OUJC.js → work-comment-cmd-ESC3DSHI.js} +11 -12
  108. package/dist/{work-demo-cmd-6IKAG6ES.js → work-demo-cmd-7S23DGYO.js} +10 -11
  109. package/dist/{work-logs-cmd-RMKJA4AI.js → work-logs-cmd-46UPNN7Q.js} +10 -11
  110. package/dist/{work-open-pr-cmd-IAVLUUWW.js → work-open-pr-cmd-JNGTGLIP.js} +11 -12
  111. package/dist/{work-pr-cmd-3U7SVQII.js → work-pr-cmd-2J2LKETD.js} +10 -11
  112. package/dist/{work-proofs-cmd-6ZY6ZNNE.js → work-proofs-cmd-HRWTHYSS.js} +11 -12
  113. package/dist/{work-proofs-record-54GBEUJP.js → work-proofs-record-6OKAT3IC.js} +18 -19
  114. package/dist/{work-stop-cmd-LH5XY4YL.js → work-stop-cmd-Y22XIVQ6.js} +10 -11
  115. package/package.json +1 -1
  116. package/dist/build-4HFDZTUX.js +0 -14
  117. package/dist/chunk-3Z3MPR55.js +0 -226
  118. package/dist/chunk-HACGUL52.js +0 -183
  119. package/dist/host-key-DUGGHAGR.js +0 -10
  120. package/dist/inspect-DNLXTXLA.js +0 -6
  121. package/dist/install-QJWJFIWB.js +0 -19
  122. package/dist/pending-B55JZFOV.js +0 -10
  123. 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-T7N3BAOO.js';
4
- import './chunk-J246WRLZ.js';
5
- import { currentLink, execStartCommand } from './chunk-DUPM5LVJ.js';
6
- import { detectMachine, helperSocketPath, ensureFirecrackerAndJailer } from './chunk-POGPX7LI.js';
3
+ import { runRunnerInstall, launcherSummary, restartNote } from './chunk-LUHIN4UZ.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-EZ7L5IZU.js';
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-IHY457PB.js';
14
- import './chunk-2RBIW2PD.js';
15
- import './chunk-AVLLJW5D.js';
16
- import './chunk-36T6W5RA.js';
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 { DEFAULT_UNIT_NAME, installService, uninstallService, realTaskScheduler, UNIT_MARKER } from './chunk-AABYHGVO.js';
19
- import { runnerVmOf, loadRunnerConfig, builtinKind } from './chunk-4XYC2663.js';
20
- import './chunk-UC2DKBMS.js';
21
- import { readJobFile } from './chunk-MPDLZCXM.js';
22
- import './chunk-3Z3MPR55.js';
23
- 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-ES4ULBAL.js';
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-IW6Z337K.js';
23
+ import './chunk-YNMVVQOQ.js';
24
+ import './chunk-JBJTC3UU.js';
25
+ import './chunk-UN3SQTVL.js';
27
26
  import './chunk-IP7BIBXJ.js';
28
- import './chunk-3M6UYJSR.js';
29
- import './chunk-XA6PGME5.js';
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-QOUR4CQ7.js';
32
+ import './chunk-MECW77XP.js';
33
+ import './chunk-NKOM4JKY.js';
34
+ import './chunk-CAQCDYKF.js';
37
35
  import './chunk-JWNH4ZTF.js';
38
- import './chunk-TVGLNHEB.js';
36
+ import './chunk-3N77LUQI.js';
39
37
  import './chunk-PJDQPF5N.js';
40
- import './chunk-XLJLR7EK.js';
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,7 +51,8 @@ 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-HACGUL52.js';
54
+ import { runnerDir } from './chunk-PXGU3GKY.js';
55
+ import './chunk-G4W4B33M.js';
58
56
  import './chunk-MESOOLF4.js';
59
57
  import './chunk-Z5GEFMRW.js';
60
58
  import { userInfo, totalmem, tmpdir } from 'os';
@@ -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
- let uidBase = UID_BASE;
157
- for (let attempt = 0; attempt < UID_ATTEMPTS && !helper.uidRangeFree(uidBase, UID_COUNT); attempt++) uidBase += 65536;
158
- if (!helper.uidRangeFree(uidBase, UID_COUNT)) return notInstalled(true, [`every range of ${UID_COUNT} user ids that was tried is used by an account or a group, so the root helper was not installed: ${without}`]);
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
- say(`sudo tee ${unitPath}`);
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) removeFiles();
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) discard();
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,23 +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 idRangeFree(base, count) {
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 false;
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 false;
397
- if (file === "/etc/passwd" && overlaps(Number(fields[3]), 1, base, count)) return false;
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 false;
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 true;
465
+ return void 0;
466
+ }
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;
407
487
  }
408
488
  function idOf(flag, account) {
409
489
  const result = spawnSync("id", [flag, account], { encoding: "utf8" });
@@ -444,7 +524,8 @@ function realHelperDeps() {
444
524
  return uid === void 0 || gid === void 0 || uid < 0 || gid < 0 ? void 0 : { uid, gid };
445
525
  },
446
526
  jailBase: findJailBase,
447
- uidRangeFree: idRangeFree,
527
+ uidRangeTaker: idRangeTaker,
528
+ helperRanges: () => readHelperRanges(),
448
529
  stage: (files) => {
449
530
  const dir = mkdtempSync(join(tmpdir(), "outerlayer-helper-"));
450
531
  for (const [name, content] of Object.entries(files)) writeFileSync(join(dir, name), content, { mode: 493 });
@@ -479,9 +560,35 @@ function accountCannotStart(account, nodePath, entry, can) {
479
560
  return void 0;
480
561
  }
481
562
  function vmArgs(input) {
482
- return [...input.print === true ? ["--print"] : [], ...input.replace === true ? ["--replace"] : [], ...input.allowDowngrade === true ? ["--allow-downgrade"] : [], ...input.user === void 0 ? [] : ["--user", input.user], ...input.unitName === void 0 ? [] : ["--unit-name", input.unitName]];
563
+ return [
564
+ ...input.buildMemoryMax === void 0 ? [] : ["--build-memory-max", input.buildMemoryMax],
565
+ ...input.buildCpusMax === void 0 ? [] : ["--build-cpus-max", String(input.buildCpusMax)],
566
+ ...input.print === true ? ["--print"] : [],
567
+ ...input.replace === true ? ["--replace"] : [],
568
+ ...input.allowDowngrade === true ? ["--allow-downgrade"] : [],
569
+ ...input.user === void 0 ? [] : ["--user", input.user],
570
+ ...input.unitName === void 0 ? [] : ["--unit-name", input.unitName]
571
+ ];
572
+ }
573
+ var MAX_BUILD_CPUS = 1024;
574
+ function cpusAreValid(cpus) {
575
+ return Number.isFinite(cpus) && Math.round(cpus * 100) >= 1 && cpus <= MAX_BUILD_CPUS;
576
+ }
577
+ function sliceOf(input, usesVm, helperVersion) {
578
+ if (input.buildMemoryMax === void 0 && input.buildCpusMax === void 0) return {};
579
+ 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" };
580
+ if (!hostHelperSupportsSlice(helperVersion)) {
581
+ 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` };
582
+ }
583
+ const parsedBytes = input.buildMemoryMax === void 0 ? void 0 : parseSize(input.buildMemoryMax);
584
+ const memoryMaxBytes = parsedBytes === void 0 ? void 0 : Math.floor(parsedBytes);
585
+ 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` };
586
+ 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` };
587
+ return { limits: { memoryMaxBytes, cpus: input.buildCpusMax } };
483
588
  }
484
589
  async function installServiceCommand(input, deps = {}) {
590
+ const nameProblem = input.unitName === void 0 ? void 0 : unitNameProblem(input.unitName);
591
+ if (nameProblem !== void 0) return { ok: false, state: "refused", lines: [nameProblem] };
485
592
  const vm = runnerVmOf(input.configPath);
486
593
  if (vm !== void 0) {
487
594
  const result = await serviceInVm((deps.lima ?? realLima)(), vm.instance, "install", { home: input.home, extraArgs: vmArgs(input) });
@@ -515,8 +622,17 @@ async function installServiceCommand(input, deps = {}) {
515
622
  }
516
623
  const unitName = input.unitName ?? DEFAULT_UNIT_NAME;
517
624
  const usesVm = builtinKind(config.hooks.provision) === "vm";
518
- const helper = input.print !== true && usesVm && serviceDeps.helper !== void 0 && serviceDeps.systemd.running() ? await installHelper({ configPath: input.configPath, unitName, user: account }, { ...serviceDeps, helper: serviceDeps.helper }) : void 0;
625
+ const slice = sliceOf(input, usesVm, deps.helperAssetsVersion ?? HOST_HELPER_ASSETS_VERSION);
626
+ if (slice.refusal !== void 0) return { ok: false, state: "refused", lines: [slice.refusal] };
627
+ if (slice.limits?.memoryMaxBytes !== void 0 && input.print !== true) {
628
+ const fit = checkFit({ concurrency: config.concurrency, buildMemory: config.build?.memory ?? "8g", usableBytes: 0, sliceBytes: slice.limits.memoryMaxBytes });
629
+ 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`] };
630
+ }
631
+ 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
632
  if (helper !== void 0 && !helper.ok) return { ok: false, state: "refused", lines: helper.lines };
633
+ if (slice.limits !== void 0 && input.print !== true && helper?.installed !== true) {
634
+ 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"] };
635
+ }
520
636
  const outcome = installService(
521
637
  {
522
638
  configPath: input.configPath,
@@ -530,7 +646,10 @@ async function installServiceCommand(input, deps = {}) {
530
646
  print: input.print,
531
647
  replace: input.replace,
532
648
  restart: input.restart,
533
- ...helper?.installed === true ? { helperSocket: helperSocketFor(unitName), helperUnit: helperUnitFor(unitName) } : {}
649
+ imageBuild: config.build?.imageBuild,
650
+ builderDiskPinned: builderDiskPinned(),
651
+ ...helper?.installed === true ? { helperSocket: helperSocketFor(unitName), helperUnit: helperUnitFor(unitName) } : {},
652
+ ...helper?.installed === true && slice.limits?.memoryMaxBytes !== void 0 ? { buildSliceMemoryBytes: slice.limits.memoryMaxBytes } : {}
534
653
  },
535
654
  serviceDeps
536
655
  );
@@ -538,6 +657,8 @@ async function installServiceCommand(input, deps = {}) {
538
657
  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
658
  }
540
659
  async function uninstallServiceCommand(input, deps = {}) {
660
+ const nameProblem = input.unitName === void 0 ? void 0 : unitNameProblem(input.unitName);
661
+ if (nameProblem !== void 0) return { ok: false, state: "refused", lines: [nameProblem] };
541
662
  const vm = runnerVmOf(input.configPath);
542
663
  if (vm !== void 0) {
543
664
  const result = await serviceInVm((deps.lima ?? realLima)(), vm.instance, "uninstall", { home: input.home, extraArgs: input.unitName === void 0 ? [] : ["--unit-name", input.unitName] });
@@ -549,4 +670,4 @@ async function uninstallServiceCommand(input, deps = {}) {
549
670
  return { ok: outcome.ok, state: outcome.state, lines: [...outcome.lines, ...helper?.lines ?? []] };
550
671
  }
551
672
 
552
- export { installServiceCommand, uninstallServiceCommand };
673
+ 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-4XYC2663.js';
4
- import './chunk-UC2DKBMS.js';
5
- import './chunk-MPDLZCXM.js';
6
- import './chunk-3Z3MPR55.js';
7
- import './chunk-ES4ULBAL.js';
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-HACGUL52.js';
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-XA6PGME5.js';
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-TVGLNHEB.js';
7
+ import './chunk-MECW77XP.js';
8
+ import './chunk-NKOM4JKY.js';
9
+ import './chunk-3N77LUQI.js';
11
10
  import './chunk-PJDQPF5N.js';
12
- import './chunk-XLJLR7EK.js';
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-HACGUL52.js';
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-ZV2JJPDS.js';
4
- import { readOwnContainer } from './chunk-Z76GVJGQ.js';
5
- import './chunk-RNVBSRZZ.js';
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-HAEDLXHA.js';
8
- import './chunk-75KZUBHD.js';
7
+ import './chunk-63IVRRIO.js';
9
8
  import './chunk-I3LTIAOR.js';
10
- import './chunk-KDLQGTN6.js';
11
- import './chunk-WIK5KUGK.js';
12
- import './chunk-LMICI7AY.js';
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-POGPX7LI.js';
15
+ import { detectMachine, supportsContainerBuilds, MIN_ENGINE_MAJOR, describeMachineDocker, RunnerInitError, prepareRunnerInit, writeRunnerInit } from './chunk-JQSZTQSK.js';
16
16
  import './chunk-2PGI6RDE.js';
17
- import { isAgentName, AGENT_COMMANDS } from './chunk-EZ7L5IZU.js';
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-IHY457PB.js';
23
- import './chunk-2RBIW2PD.js';
24
- import './chunk-AVLLJW5D.js';
25
- import { runnerImageVersion, IMAGE_VERSION_VARIABLE } from './chunk-36T6W5RA.js';
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-AABYHGVO.js';
28
- import './chunk-4XYC2663.js';
29
- import './chunk-UC2DKBMS.js';
30
- import { parseSize } from './chunk-MPDLZCXM.js';
31
- import './chunk-3Z3MPR55.js';
32
- import './chunk-ES4ULBAL.js';
33
- import './chunk-IW6Z337K.js';
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-3M6UYJSR.js';
36
- import './chunk-XA6PGME5.js';
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-QOUR4CQ7.js';
39
+ import './chunk-MECW77XP.js';
40
+ import './chunk-NKOM4JKY.js';
41
+ import './chunk-CAQCDYKF.js';
44
42
  import './chunk-JWNH4ZTF.js';
45
- import './chunk-TVGLNHEB.js';
43
+ import './chunk-3N77LUQI.js';
46
44
  import './chunk-PJDQPF5N.js';
47
- import './chunk-XLJLR7EK.js';
48
- import './chunk-N7LAEN3T.js';
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-HACGUL52.js';
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-3M6UYJSR.js';
4
- import './chunk-XA6PGME5.js';
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 { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-TVGLNHEB.js';
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-XLJLR7EK.js';
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-HACGUL52.js';
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-QOUR4CQ7.js';
3
+ import { parseOwnerRepo, lookupGoverningSource, defaultGitRunner, materializeContext } from './chunk-CAQCDYKF.js';
4
4
  import './chunk-JWNH4ZTF.js';
5
- import { resolveGatewayCredentials, defaultFetch } from './chunk-TVGLNHEB.js';
5
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-3N77LUQI.js';
6
6
  import './chunk-PJDQPF5N.js';
7
- import './chunk-XLJLR7EK.js';
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-HACGUL52.js';
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';
@@ -1,14 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { childEnvironment, createDockerHost, spawnRun } from './chunk-MPDLZCXM.js';
4
- import './chunk-3Z3MPR55.js';
5
- import './chunk-ES4ULBAL.js';
3
+ export { childEnvironment, createDockerHost, spawnRun } from './chunk-5AFPP3GZ.js';
4
+ import './chunk-4UPET3R7.js';
5
+ import './chunk-MOI2KDLH.js';
6
6
  import './chunk-AJYZNISW.js';
7
- import './chunk-XLJLR7EK.js';
8
- import './chunk-N7LAEN3T.js';
9
- import './chunk-YOBQIXX6.js';
10
7
  import './chunk-EOTMDIYC.js';
11
- import './chunk-HACGUL52.js';
8
+ import './chunk-PXGU3GKY.js';
9
+ import './chunk-G4W4B33M.js';
12
10
  import './chunk-MESOOLF4.js';
13
11
  import './chunk-Z5GEFMRW.js';
14
12