@outerlayer/cli 0.7.0 → 0.8.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.
Files changed (74) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +5 -5
  3. package/dist/{agent-setup-TXLDY5RV.js → agent-setup-K6RD2Z4P.js} +4 -4
  4. package/dist/{build-JF5UOWKJ.js → build-MS34XEGN.js} +2 -1
  5. package/dist/build-info.json +1 -1
  6. package/dist/builder-IG6FNA54.js +13 -0
  7. package/dist/{check-ASZL5BEO.js → check-GX5ND6RO.js} +26 -22
  8. package/dist/chunk-2BRSMBBB.js +264 -0
  9. package/dist/{chunk-PUN7LMNS.js → chunk-4ACZCY4I.js} +2 -2
  10. package/dist/{chunk-2VO25HHO.js → chunk-4FPWKV7L.js} +3 -3
  11. package/dist/{chunk-AII7CKTH.js → chunk-5ODHQP6O.js} +68 -145
  12. package/dist/chunk-7RQ73DLO.js +23 -0
  13. package/dist/{chunk-7FTNIAHS.js → chunk-AX23QKHS.js} +7 -3
  14. package/dist/{chunk-6ZZHWY2Z.js → chunk-BF4KKEFY.js} +4 -4
  15. package/dist/{chunk-5FWNEQNZ.js → chunk-BQFNZOMQ.js} +1 -1
  16. package/dist/chunk-CX22S5BA.js +45 -0
  17. package/dist/{chunk-D6FXM5OW.js → chunk-GAYWY4GI.js} +8 -8
  18. package/dist/{chunk-MQPRB5K7.js → chunk-HSN5QNS5.js} +8 -8
  19. package/dist/chunk-I2UOAV7X.js +133 -0
  20. package/dist/chunk-I7CJIRMM.js +93 -0
  21. package/dist/{chunk-SSU747O6.js → chunk-ILEA3YHM.js} +1 -1
  22. package/dist/{chunk-OUUINEYB.js → chunk-JKIWMRFH.js} +1 -1
  23. package/dist/{chunk-JPR2WHHF.js → chunk-KSLNQOOS.js} +1 -1
  24. package/dist/{chunk-DGAIVMMN.js → chunk-KV47VQJZ.js} +5 -5
  25. package/dist/{chunk-E4PIFIC3.js → chunk-M4ERCYDB.js} +133 -159
  26. package/dist/chunk-PTW6W5NR.js +127 -0
  27. package/dist/{chunk-DTXOJDEH.js → chunk-PWBILI5P.js} +3 -2
  28. package/dist/{chunk-X2FSFU4C.js → chunk-PXFEYBDE.js} +3 -3
  29. package/dist/{chunk-6IYLDODX.js → chunk-Q4432IZT.js} +5 -5
  30. package/dist/{chunk-AJKEHABI.js → chunk-QB5JQH5V.js} +255 -54
  31. package/dist/{chunk-AQ54MKSQ.js → chunk-QNRSFEGY.js} +2 -2
  32. package/dist/{chunk-774HEQL6.js → chunk-TEKZRTM3.js} +91 -8
  33. package/dist/{chunk-CEBIA5FD.js → chunk-TTNFGMHO.js} +42 -50
  34. package/dist/{chunk-F6GFZXZ3.js → chunk-UXYLWVTQ.js} +1 -18
  35. package/dist/{chunk-M5POMKKW.js → chunk-V7NIVOFD.js} +5 -5
  36. package/dist/{chunk-BCLJSQCV.js → chunk-YO4PSLVB.js} +1 -1
  37. package/dist/{chunk-6QWV3YDJ.js → chunk-Z2THOHPP.js} +2 -2
  38. package/dist/{cli-LEVCGAQV.js → cli-X5ONGYNY.js} +128 -78
  39. package/dist/{command-FLSYCGIB.js → command-7NFU3IPO.js} +38 -20
  40. package/dist/{config-I3TVFYLH.js → config-Z3USDBLU.js} +3 -2
  41. package/dist/{connect-cmd-MJMUONDY.js → connect-cmd-PNZ6IJLJ.js} +2 -2
  42. package/dist/{context-adopt-CE4KDXS3.js → context-adopt-D2Z7F7PB.js} +3 -3
  43. package/dist/{context-materialize-QL33HDJN.js → context-materialize-4PMTDS6K.js} +3 -3
  44. package/dist/{dist-PXBSA7QX.js → dist-3ZTZF2TP.js} +1 -1
  45. package/dist/docker-PRHRSJM5.js +15 -0
  46. package/dist/{doctor-FVDT3KJZ.js → doctor-KALLPCRB.js} +39 -16
  47. package/dist/{emit-artifact-cmd-7RPMRSVP.js → emit-artifact-cmd-D5GMVWNC.js} +7 -7
  48. package/dist/{emit-criteria-cmd-MKI7WETO.js → emit-criteria-cmd-IE7VIM64.js} +5 -5
  49. package/dist/{emit-finding-cmd-RMLGZASB.js → emit-finding-cmd-46PTPN3A.js} +5 -5
  50. package/dist/{emit-result-cmd-MTXAZ2GV.js → emit-result-cmd-KXHHP6HX.js} +7 -7
  51. package/dist/{hook-fast-XBOZ3N6L.js → hook-fast-5H5QBJKT.js} +1 -1
  52. package/dist/{host-key-KDYZ5ECC.js → host-key-YMLXY6QB.js} +1 -1
  53. package/dist/index.js +3 -3
  54. package/dist/{init-VLW7H6RW.js → init-B4CECVOX.js} +25 -18
  55. package/dist/{init-BACXESVV.js → init-S4DH6PWW.js} +16 -13
  56. package/dist/{init-cmd-VJFB5L7X.js → init-cmd-P4MVCBCZ.js} +8 -8
  57. package/dist/{install-NMAPLLBQ.js → install-FHTVJZS6.js} +5 -4
  58. package/dist/{install-cmd-B5SEU3G7.js → install-cmd-BEC7XTNG.js} +3 -1
  59. package/dist/{loop-D3243JKT.js → loop-ODMRE3CW.js} +26 -22
  60. package/dist/{machine-EB3GEVI4.js → machine-J4SAB3Z2.js} +15 -12
  61. package/dist/{mcp-serve-cmd-N6UD2KBX.js → mcp-serve-cmd-CT47P4YQ.js} +2 -2
  62. package/dist/{session-sender-LMACEJJS.js → session-sender-V46VPWQ5.js} +6 -6
  63. package/dist/{status-F4THTJJK.js → status-QBKSH3QE.js} +19 -16
  64. package/dist/{sync-cmd-M6JA3OEE.js → sync-cmd-RJR77V4O.js} +5 -5
  65. package/dist/{watch-NB5TGPEZ.js → watch-YNZTFLEY.js} +5 -5
  66. package/dist/{work-claim-cmd-UHMWOS3G.js → work-claim-cmd-KAD3ZAH7.js} +10 -9
  67. package/dist/{work-cmd-6UMCFTAW.js → work-cmd-CNWPTH7W.js} +6 -6
  68. package/dist/{work-comment-cmd-E4LEUIXZ.js → work-comment-cmd-HH45S6UE.js} +6 -6
  69. package/dist/{work-open-pr-cmd-OPZWGSEQ.js → work-open-pr-cmd-5KR3KFCN.js} +7 -7
  70. package/dist/{work-pr-cmd-IDIAFFRU.js → work-pr-cmd-TTEGCP76.js} +6 -6
  71. package/package.json +2 -2
  72. package/skill-pack/maintained/amend/SKILL.md +22 -6
  73. package/dist/chunk-Q5G2ODUZ.js +0 -54
  74. package/dist/docker-NEGDLU6D.js +0 -7
@@ -1,47 +1,52 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { runRunnerInstall } from './chunk-Q5G2ODUZ.js';
4
- import { currentLink, execStartCommand } from './chunk-TI7B7UEO.js';
3
+ import { runRunnerInstall, launcherSummary } from './chunk-I7CJIRMM.js';
4
+ import './chunk-I2UOAV7X.js';
5
5
  import { readJobFile } from './chunk-T6OIJQRT.js';
6
- import { installService, uninstallService, realTaskScheduler } from './chunk-7FTNIAHS.js';
6
+ import './chunk-PTW6W5NR.js';
7
+ import { currentLink, execStartCommand } from './chunk-TI7B7UEO.js';
8
+ import { detectMachine } from './chunk-QNRSFEGY.js';
9
+ import './chunk-M4ERCYDB.js';
10
+ import { installService, uninstallService, realTaskScheduler } from './chunk-AX23QKHS.js';
7
11
  import './chunk-FBTE2A2X.js';
8
- import './chunk-OUUINEYB.js';
12
+ import './chunk-JKIWMRFH.js';
9
13
  import { realLima } from './chunk-77MM5RYD.js';
10
14
  import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
11
- import { detectMachine } from './chunk-AQ54MKSQ.js';
12
- import './chunk-E4PIFIC3.js';
13
- import './chunk-CEBIA5FD.js';
15
+ import './chunk-TTNFGMHO.js';
14
16
  import './chunk-N5FOE5PS.js';
15
17
  import './chunk-OGFGZQA3.js';
16
- import './chunk-774HEQL6.js';
18
+ import './chunk-TEKZRTM3.js';
17
19
  import './chunk-QOZKPLVJ.js';
20
+ import './chunk-2BRSMBBB.js';
21
+ import './chunk-CX22S5BA.js';
18
22
  import './chunk-ZOAEPWGL.js';
19
23
  import './chunk-R7STSBLC.js';
20
- import './chunk-DGAIVMMN.js';
21
- import './chunk-PUN7LMNS.js';
24
+ import './chunk-KV47VQJZ.js';
25
+ import './chunk-4ACZCY4I.js';
22
26
  import './chunk-BFESLKPP.js';
23
- import './chunk-SSU747O6.js';
27
+ import './chunk-ILEA3YHM.js';
24
28
  import './chunk-ZYHKJKSU.js';
25
- import './chunk-D6FXM5OW.js';
29
+ import './chunk-GAYWY4GI.js';
26
30
  import './chunk-USO2DKBD.js';
27
31
  import './chunk-N6LURUEF.js';
28
32
  import './chunk-YRYMNBGQ.js';
29
- import { runnerVmOf, loadRunnerConfig } from './chunk-DTXOJDEH.js';
30
- import './chunk-F6GFZXZ3.js';
33
+ import { runnerVmOf, loadRunnerConfig } from './chunk-PWBILI5P.js';
34
+ import './chunk-UXYLWVTQ.js';
35
+ import './chunk-7RQ73DLO.js';
31
36
  import './chunk-OD2VTIHN.js';
32
37
  import './chunk-HKMPVPO7.js';
33
38
  import './chunk-WZBHBH3J.js';
34
- import './chunk-5FWNEQNZ.js';
39
+ import './chunk-BQFNZOMQ.js';
35
40
  import './chunk-ZJSNLVCE.js';
36
41
  import './chunk-ZZXLM64C.js';
37
42
  import './chunk-VXLJORHL.js';
38
43
  import './chunk-7ZR5UPMB.js';
39
- import './chunk-BCLJSQCV.js';
44
+ import './chunk-YO4PSLVB.js';
40
45
  import './chunk-BOLTI6LR.js';
41
46
  import './chunk-YNJEOGDL.js';
42
47
  import './chunk-EABW6AJQ.js';
43
48
  import './chunk-RA3O54FC.js';
44
- import './chunk-M5POMKKW.js';
49
+ import './chunk-V7NIVOFD.js';
45
50
  import './chunk-ZM2IMMYN.js';
46
51
  import './chunk-XCCLFVXM.js';
47
52
  import './chunk-BJ3KTMDH.js';
@@ -138,7 +143,7 @@ function accountCannotStart(account, nodePath, entry, can) {
138
143
  return void 0;
139
144
  }
140
145
  function vmArgs(input) {
141
- return [...input.print === true ? ["--print"] : [], ...input.replace === true ? ["--replace"] : [], ...input.user === void 0 ? [] : ["--user", input.user], ...input.unitName === void 0 ? [] : ["--unit-name", input.unitName]];
146
+ 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]];
142
147
  }
143
148
  async function installServiceCommand(input, deps = {}) {
144
149
  const vm = runnerVmOf(input.configPath);
@@ -147,8 +152,21 @@ async function installServiceCommand(input, deps = {}) {
147
152
  return { ok: result.ok, state: "vm", lines: result.lines };
148
153
  }
149
154
  const config = loadRunnerConfig(input.configPath);
155
+ let launcherLines = [];
156
+ let launcherNotes = [];
150
157
  if (input.print !== true && input.layoutInstalled !== true) {
151
- runRunnerInstall({ configPath: input.configPath, entryPath: input.entryPath, nodePath: input.nodePath });
158
+ const installed = runRunnerInstall({
159
+ configPath: input.configPath,
160
+ entryPath: input.entryPath,
161
+ nodePath: input.nodePath,
162
+ home: input.home,
163
+ PATH: process.env.PATH,
164
+ replace: input.replace,
165
+ allowDowngrade: input.allowDowngrade,
166
+ command: "runner install --service"
167
+ });
168
+ launcherLines = [launcherSummary(installed.launcher)].filter((line) => line !== void 0);
169
+ launcherNotes = installed.launcher.notes;
152
170
  }
153
171
  const account = input.user ?? userInfo().username;
154
172
  const serviceDeps = (deps.service ?? realServiceDeps)();
@@ -172,7 +190,7 @@ async function installServiceCommand(input, deps = {}) {
172
190
  },
173
191
  serviceDeps
174
192
  );
175
- return { ok: outcome.ok, state: outcome.state, lines: outcome.lines, unit: outcome.unit };
193
+ return { ok: outcome.ok, state: outcome.state, lines: [...outcome.lines, ...outcome.ok ? launcherLines : []], unit: outcome.unit, ...launcherNotes.length > 0 ? { notes: launcherNotes } : {} };
176
194
  }
177
195
  async function uninstallServiceCommand(input, deps = {}) {
178
196
  const vm = runnerVmOf(input.configPath);
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, runnerVmOf } from './chunk-DTXOJDEH.js';
4
- import './chunk-F6GFZXZ3.js';
3
+ export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerVmOf } from './chunk-PWBILI5P.js';
4
+ import './chunk-UXYLWVTQ.js';
5
+ import './chunk-7RQ73DLO.js';
5
6
  import './chunk-OD2VTIHN.js';
6
7
  import './chunk-HKMPVPO7.js';
7
8
  import './chunk-VNVZDWO3.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { connectedLine, fetchFactories, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-SSU747O6.js';
3
+ export { connectedLine, fetchFactories, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-ILEA3YHM.js';
4
4
  import './chunk-ZYHKJKSU.js';
5
- import './chunk-D6FXM5OW.js';
5
+ import './chunk-GAYWY4GI.js';
6
6
  import './chunk-USO2DKBD.js';
7
7
  import './chunk-N6LURUEF.js';
8
8
  import './chunk-YRYMNBGQ.js';
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { defaultGitRunner, hasSymlinkComponent } from './chunk-5FWNEQNZ.js';
3
+ import { defaultGitRunner, hasSymlinkComponent } from './chunk-BQFNZOMQ.js';
4
4
  import './chunk-ZJSNLVCE.js';
5
5
  import { writeContextManifest, writePinIfChanged, touchLastCheck, clearDegraded, writeSourceCache, SOURCE_CACHE_TTL_SUCCESS_MS, writeBuildHold } from './chunk-ZZXLM64C.js';
6
6
  import './chunk-VXLJORHL.js';
7
7
  import './chunk-7ZR5UPMB.js';
8
- import './chunk-BCLJSQCV.js';
8
+ import './chunk-YO4PSLVB.js';
9
9
  import './chunk-BOLTI6LR.js';
10
10
  import './chunk-YNJEOGDL.js';
11
11
  import './chunk-EABW6AJQ.js';
12
12
  import './chunk-RA3O54FC.js';
13
- import './chunk-M5POMKKW.js';
13
+ import './chunk-V7NIVOFD.js';
14
14
  import './chunk-ZM2IMMYN.js';
15
15
  import { ensureContextExcludes, installPreCommitGuardInGitDir } from './chunk-XCCLFVXM.js';
16
16
  import './chunk-BJ3KTMDH.js';
@@ -1,16 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { defaultGitRunner, hasSymlinkComponent, materializeContext, parseOwnerRepo, parseRemoteHost, resolveGitCommonDir } from './chunk-5FWNEQNZ.js';
3
+ export { defaultGitRunner, hasSymlinkComponent, materializeContext, parseOwnerRepo, parseRemoteHost, resolveGitCommonDir } from './chunk-BQFNZOMQ.js';
4
4
  import './chunk-ZJSNLVCE.js';
5
5
  import './chunk-ZZXLM64C.js';
6
6
  import './chunk-VXLJORHL.js';
7
7
  import './chunk-7ZR5UPMB.js';
8
- import './chunk-BCLJSQCV.js';
8
+ import './chunk-YO4PSLVB.js';
9
9
  import './chunk-BOLTI6LR.js';
10
10
  import './chunk-YNJEOGDL.js';
11
11
  import './chunk-EABW6AJQ.js';
12
12
  import './chunk-RA3O54FC.js';
13
- import './chunk-M5POMKKW.js';
13
+ import './chunk-V7NIVOFD.js';
14
14
  import './chunk-ZM2IMMYN.js';
15
15
  import './chunk-XCCLFVXM.js';
16
16
  import './chunk-BJ3KTMDH.js';
@@ -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-D6FXM5OW.js';
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-GAYWY4GI.js';
4
4
  import './chunk-YNJEOGDL.js';
5
5
  import './chunk-Z5GEFMRW.js';
6
6
 
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { childEnvironment, createDockerHost, spawnRun } from './chunk-TEKZRTM3.js';
4
+ import './chunk-QOZKPLVJ.js';
5
+ import './chunk-2BRSMBBB.js';
6
+ import './chunk-CX22S5BA.js';
7
+ import './chunk-GAYWY4GI.js';
8
+ import './chunk-7RQ73DLO.js';
9
+ import './chunk-OD2VTIHN.js';
10
+ import './chunk-HKMPVPO7.js';
11
+ import './chunk-YNJEOGDL.js';
12
+ import './chunk-ZM2IMMYN.js';
13
+ import './chunk-Z5GEFMRW.js';
14
+
15
+ createRequire(import.meta.url);
@@ -1,47 +1,52 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-6IYLDODX.js';
3
+ import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-Q4432IZT.js';
4
+ import { launcherCheck } from './chunk-PTW6W5NR.js';
5
+ import './chunk-TI7B7UEO.js';
4
6
  import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
5
7
  import { RepoFilter } from './chunk-TBT347UY.js';
6
- import './chunk-6QWV3YDJ.js';
7
- import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-AQ54MKSQ.js';
8
- import { MIN_ENGINE_MAJOR } from './chunk-E4PIFIC3.js';
9
- import { CLAUDE_CODE_VERSION } from './chunk-CEBIA5FD.js';
8
+ import './chunk-Z2THOHPP.js';
9
+ import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-QNRSFEGY.js';
10
+ import { MIN_ENGINE_MAJOR } from './chunk-M4ERCYDB.js';
11
+ import './chunk-TTNFGMHO.js';
10
12
  import './chunk-N5FOE5PS.js';
11
13
  import './chunk-OGFGZQA3.js';
12
- import { resolveDevcontainerCli } from './chunk-774HEQL6.js';
14
+ import { resolveDevcontainerCli, spawnRun } from './chunk-TEKZRTM3.js';
13
15
  import { locateRecipe, assertBuildable, readRecipe, RecipeError } from './chunk-QOZKPLVJ.js';
16
+ import { buildxState } from './chunk-2BRSMBBB.js';
17
+ import { CLAUDE_CODE_VERSION } from './chunk-CX22S5BA.js';
14
18
  import './chunk-ZOAEPWGL.js';
15
19
  import './chunk-R7STSBLC.js';
16
- import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-DGAIVMMN.js';
17
- import './chunk-PUN7LMNS.js';
20
+ import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-KV47VQJZ.js';
21
+ import './chunk-4ACZCY4I.js';
18
22
  import './chunk-BFESLKPP.js';
19
- import './chunk-SSU747O6.js';
23
+ import './chunk-ILEA3YHM.js';
20
24
  import './chunk-ZYHKJKSU.js';
21
- import { compareVersions } from './chunk-D6FXM5OW.js';
25
+ import { compareVersions } from './chunk-GAYWY4GI.js';
22
26
  import './chunk-USO2DKBD.js';
23
27
  import './chunk-N6LURUEF.js';
24
28
  import './chunk-YRYMNBGQ.js';
25
- import { builtinKind } from './chunk-DTXOJDEH.js';
26
- import { parseSize } from './chunk-F6GFZXZ3.js';
29
+ import { builtinKind } from './chunk-PWBILI5P.js';
30
+ import './chunk-UXYLWVTQ.js';
31
+ import { parseSize } from './chunk-7RQ73DLO.js';
27
32
  import './chunk-OD2VTIHN.js';
28
33
  import './chunk-HKMPVPO7.js';
29
34
  import './chunk-WZBHBH3J.js';
30
- import { defaultGitRunner } from './chunk-5FWNEQNZ.js';
35
+ import { defaultGitRunner } from './chunk-BQFNZOMQ.js';
31
36
  import './chunk-ZJSNLVCE.js';
32
37
  import './chunk-ZZXLM64C.js';
33
38
  import './chunk-VXLJORHL.js';
34
39
  import './chunk-7ZR5UPMB.js';
35
- import { defaultFetch } from './chunk-BCLJSQCV.js';
40
+ import { defaultFetch } from './chunk-YO4PSLVB.js';
36
41
  import './chunk-BOLTI6LR.js';
37
42
  import './chunk-YNJEOGDL.js';
38
43
  import './chunk-EABW6AJQ.js';
39
44
  import './chunk-RA3O54FC.js';
40
- import { loadHostKey } from './chunk-M5POMKKW.js';
45
+ import { loadHostKey } from './chunk-V7NIVOFD.js';
41
46
  import { runnerDir, hostKeyPath } from './chunk-ZM2IMMYN.js';
42
47
  import './chunk-XCCLFVXM.js';
43
48
  import './chunk-BJ3KTMDH.js';
44
- import './chunk-VNVZDWO3.js';
49
+ import { homeFromEnv } from './chunk-VNVZDWO3.js';
45
50
  import './chunk-Z5GEFMRW.js';
46
51
  import { spawnSync } from 'child_process';
47
52
  import { existsSync, readdirSync, statSync } from 'fs';
@@ -417,6 +422,18 @@ async function controlPlaneAccessCheck(env, fetchImpl) {
417
422
  detail: readable.length > 0 ? `this host's git login reads ${[...new Set(readable)].join(", ")}` : repositories.length === 0 ? "the factory has no repositories this runner builds" : `no control plane governs ${repositories.length === 1 ? "the repository" : "any of the repositories"} ${listFactory ? "connected to the factory" : "in repos.include"}`
418
423
  };
419
424
  }
425
+ function imageBuildLimitCheck(state, buildMemory) {
426
+ const name = "Image build limit";
427
+ if (state === "usable") {
428
+ return { name, status: "pass", detail: `image builds run in the runner's own builder${buildMemory === void 0 ? "" : `, limited to runner.build.memory (${buildMemory})`}` };
429
+ }
430
+ return {
431
+ name,
432
+ status: "fail",
433
+ detail: `image builds cannot be limited, so this runner claims nothing: ${state.problem}`,
434
+ fix: "install Docker's Buildx plugin: docker-buildx-plugin (Docker's apt repository) or docker-buildx (Ubuntu's own packages), then run outerlayer doctor again; the runner takes work again by itself"
435
+ };
436
+ }
420
437
  function freeDiskCheck(configPath, minFreeDisk, freeBytes2) {
421
438
  const name = "Free disk";
422
439
  const free = freeBytes2(runnerDir(configPath));
@@ -429,9 +446,13 @@ function freeDiskCheck(configPath, minFreeDisk, freeBytes2) {
429
446
  fix: "free disk space on the runner's file system, or lower runner.housekeeping.minFreeDisk; the runner takes work again by itself once there is room"
430
447
  };
431
448
  }
449
+ function launcherCheckOf(env) {
450
+ return launcherCheck({ home: env.home ?? homeFromEnv(), PATH: env.PATH ?? process.env.PATH });
451
+ }
432
452
  async function runnerHostChecks(env) {
433
453
  const dockerAvailable = env.dockerAvailable ?? (() => spawnSync("docker", ["info"], { stdio: "ignore" }).status === 0);
434
454
  const devcontainerRunnable = env.devcontainerRunnable ?? (() => devcontainerCliRunnable());
455
+ const pathCheck = launcherCheckOf(env);
435
456
  const reposDir = join(runnerDir(env.configPath), "repos");
436
457
  const recipes = existsSync(reposDir) ? directories(reposDir).flatMap(
437
458
  (owner) => directories(join(reposDir, owner)).filter((name) => existsSync(join(reposDir, owner, name, ".git"))).map((name) => recipeCheck(reposDir, owner, name))
@@ -449,10 +470,12 @@ async function runnerHostChecks(env) {
449
470
  ...env.service === void 0 ? [] : [delegationCheck(env.service)],
450
471
  ...env.runner === void 0 ? [] : [memoryCheck({ concurrency: env.runner.concurrency, buildMemory: env.runner.buildMemory, hostMemory: env.hostMemory ?? totalmem() })]
451
472
  ] : [],
473
+ ...env.hooks !== void 0 && ["container", "vm"].includes(builtinKind(env.hooks.provision)) ? [imageBuildLimitCheck(await (env.buildx ?? (() => buildxState(spawnRun)))(), env.runner?.buildMemory)] : [],
452
474
  ...env.runner?.minFreeDisk === void 0 ? [] : [freeDiskCheck(env.configPath, env.runner.minFreeDisk, env.freeBytes ?? freeBytes)],
453
475
  ...env.hooks !== void 0 && needsClaudeCredential(env.hooks) ? [claudeCredentialCheck(env.env ?? process.env, env.service === void 0 ? { shell: true } : { service: { unit: env.service.unit, variables: env.service.credentialVariables } })] : [],
454
476
  ...env.gateway === void 0 ? [] : [await hostKeyBindingCheck(env.configPath, env.gateway, env.fetchImpl ?? defaultFetch)],
455
477
  ...env.gateway === void 0 || env.hooks === void 0 || !["container", "vm"].includes(builtinKind(env.hooks.provision)) ? [] : [await controlPlaneAccessCheck({ ...env, gateway: env.gateway }, env.fetchImpl ?? defaultFetch)],
478
+ ...pathCheck === void 0 ? [] : [pathCheck],
456
479
  devcontainerRunnable() ? { name: "Devcontainer CLI", status: "pass", detail: "installed beside the outerlayer CLI" } : {
457
480
  name: "Devcontainer CLI",
458
481
  status: "fail",
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-6ZZHWY2Z.js';
3
+ import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-BF4KKEFY.js';
4
4
  import { launchRefusalForSession } from './chunk-HHJDN6AU.js';
5
5
  import './chunk-TBT347UY.js';
6
6
  import './chunk-F7CU5ABH.js';
7
7
  import './chunk-BKO6JEZI.js';
8
- import { autoConnect } from './chunk-PUN7LMNS.js';
8
+ import { autoConnect } from './chunk-4ACZCY4I.js';
9
9
  import { detectActiveSession } from './chunk-BFESLKPP.js';
10
- import './chunk-SSU747O6.js';
10
+ import './chunk-ILEA3YHM.js';
11
11
  import { readEffectiveArtifactSpoolState, localArtifactIds, isArtifactTombstoned, artifactBlobsDir, appendArtifactRecord, artifactsSpoolPath, findPendingArtifactRecord, appendArtifactTombstone } from './chunk-ZYHKJKSU.js';
12
- import { resolveRepoIdentity } from './chunk-D6FXM5OW.js';
12
+ import { resolveRepoIdentity } from './chunk-GAYWY4GI.js';
13
13
  import './chunk-USO2DKBD.js';
14
14
  import './chunk-N6LURUEF.js';
15
15
  import './chunk-YRYMNBGQ.js';
@@ -17,13 +17,13 @@ import './chunk-GQD22KKN.js';
17
17
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
18
18
  import './chunk-5QRP3MVS.js';
19
19
  import './chunk-ZJSNLVCE.js';
20
- import { defaultFetch } from './chunk-BCLJSQCV.js';
20
+ import { defaultFetch } from './chunk-YO4PSLVB.js';
21
21
  import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-BOLTI6LR.js';
22
22
  import { ARTIFACT_MAX_CAPTION_LENGTH, ArtifactCriterionIdSchema, ARTIFACT_MAX_FILENAME_LENGTH, mediaTypeForArtifactPath, inferArtifactKind, ARTIFACT_MAX_REPLACES_TARGETS, parseTestSelector, parseJunit, bindTests } from './chunk-YNJEOGDL.js';
23
23
  import './chunk-EABW6AJQ.js';
24
- import './chunk-M5POMKKW.js';
24
+ import './chunk-V7NIVOFD.js';
25
25
  import './chunk-ZM2IMMYN.js';
26
- import './chunk-JPR2WHHF.js';
26
+ import './chunk-KSLNQOOS.js';
27
27
  import './chunk-XCCLFVXM.js';
28
28
  import './chunk-BJ3KTMDH.js';
29
29
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,21 +1,21 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-HHJDN6AU.js';
4
- import { autoConnect } from './chunk-PUN7LMNS.js';
4
+ import { autoConnect } from './chunk-4ACZCY4I.js';
5
5
  import { detectActiveSession } from './chunk-BFESLKPP.js';
6
- import './chunk-SSU747O6.js';
6
+ import './chunk-ILEA3YHM.js';
7
7
  import './chunk-ZYHKJKSU.js';
8
- import { resolveRepoIdentity } from './chunk-D6FXM5OW.js';
8
+ import { resolveRepoIdentity } from './chunk-GAYWY4GI.js';
9
9
  import './chunk-USO2DKBD.js';
10
10
  import './chunk-N6LURUEF.js';
11
11
  import './chunk-YRYMNBGQ.js';
12
12
  import { launchedItemForSession } from './chunk-GQD22KKN.js';
13
13
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
14
- import { defaultFetch } from './chunk-BCLJSQCV.js';
14
+ import { defaultFetch } from './chunk-YO4PSLVB.js';
15
15
  import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-BOLTI6LR.js';
16
16
  import { CriteriaListSchema } from './chunk-YNJEOGDL.js';
17
17
  import './chunk-EABW6AJQ.js';
18
- import './chunk-M5POMKKW.js';
18
+ import './chunk-V7NIVOFD.js';
19
19
  import './chunk-ZM2IMMYN.js';
20
20
  import './chunk-BJ3KTMDH.js';
21
21
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,22 +1,22 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-HHJDN6AU.js';
4
- import { autoConnect } from './chunk-PUN7LMNS.js';
4
+ import { autoConnect } from './chunk-4ACZCY4I.js';
5
5
  import { detectActiveSession } from './chunk-BFESLKPP.js';
6
- import './chunk-SSU747O6.js';
6
+ import './chunk-ILEA3YHM.js';
7
7
  import './chunk-ZYHKJKSU.js';
8
- import { resolveRepoIdentity } from './chunk-D6FXM5OW.js';
8
+ import { resolveRepoIdentity } from './chunk-GAYWY4GI.js';
9
9
  import './chunk-USO2DKBD.js';
10
10
  import './chunk-N6LURUEF.js';
11
11
  import './chunk-YRYMNBGQ.js';
12
12
  import { launchedItemForSession } from './chunk-GQD22KKN.js';
13
13
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
14
14
  import { readLatestProvenanceForSession } from './chunk-ZJSNLVCE.js';
15
- import { defaultFetch } from './chunk-BCLJSQCV.js';
15
+ import { defaultFetch } from './chunk-YO4PSLVB.js';
16
16
  import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-BOLTI6LR.js';
17
17
  import { FindingBatchSchema } from './chunk-YNJEOGDL.js';
18
18
  import './chunk-EABW6AJQ.js';
19
- import './chunk-M5POMKKW.js';
19
+ import './chunk-V7NIVOFD.js';
20
20
  import './chunk-ZM2IMMYN.js';
21
21
  import './chunk-BJ3KTMDH.js';
22
22
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { detectCi } from './chunk-6ZZHWY2Z.js';
3
+ import { detectCi } from './chunk-BF4KKEFY.js';
4
4
  import { launchRefusalForSession } from './chunk-HHJDN6AU.js';
5
5
  import './chunk-TBT347UY.js';
6
6
  import './chunk-F7CU5ABH.js';
7
7
  import './chunk-BKO6JEZI.js';
8
- import { autoConnect } from './chunk-PUN7LMNS.js';
8
+ import { autoConnect } from './chunk-4ACZCY4I.js';
9
9
  import { detectActiveSession } from './chunk-BFESLKPP.js';
10
- import './chunk-SSU747O6.js';
10
+ import './chunk-ILEA3YHM.js';
11
11
  import './chunk-ZYHKJKSU.js';
12
- import { resolveRepoIdentity } from './chunk-D6FXM5OW.js';
12
+ import { resolveRepoIdentity } from './chunk-GAYWY4GI.js';
13
13
  import './chunk-USO2DKBD.js';
14
14
  import './chunk-N6LURUEF.js';
15
15
  import './chunk-YRYMNBGQ.js';
@@ -17,13 +17,13 @@ import './chunk-GQD22KKN.js';
17
17
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
18
18
  import './chunk-5QRP3MVS.js';
19
19
  import './chunk-ZJSNLVCE.js';
20
- import { defaultFetch } from './chunk-BCLJSQCV.js';
20
+ import { defaultFetch } from './chunk-YO4PSLVB.js';
21
21
  import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-BOLTI6LR.js';
22
22
  import { EmittedNameSchema, EMITTED_RESULT_MAX_LINK_LENGTH, EMITTED_RESULTS, EMITTED_RESULT_MAX_BODY_LENGTH } from './chunk-YNJEOGDL.js';
23
23
  import './chunk-EABW6AJQ.js';
24
- import './chunk-M5POMKKW.js';
24
+ import './chunk-V7NIVOFD.js';
25
25
  import './chunk-ZM2IMMYN.js';
26
- import './chunk-JPR2WHHF.js';
26
+ import './chunk-KSLNQOOS.js';
27
27
  import './chunk-XCCLFVXM.js';
28
28
  import './chunk-BJ3KTMDH.js';
29
29
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { AUTO_SYNC_DEBOUNCE_MS, WORK_LEASE_RENEW_DEBOUNCE_MS, WORK_LINK_RETRIES, contextPossiblyGoverned, handleWorkLaunch, handleWorkSessionEnd, hookFiredMarkerPath, logHookError, maybeAutoSync, maybeRenewWorkLease, recordLinkExitFailure, runHookFast, spoolDir } from './chunk-JPR2WHHF.js';
3
+ export { AUTO_SYNC_DEBOUNCE_MS, WORK_LEASE_RENEW_DEBOUNCE_MS, WORK_LINK_RETRIES, contextPossiblyGoverned, handleWorkLaunch, handleWorkSessionEnd, hookFiredMarkerPath, logHookError, maybeAutoSync, maybeRenewWorkLease, recordLinkExitFailure, runHookFast, spoolDir } from './chunk-KSLNQOOS.js';
4
4
  import './chunk-XCCLFVXM.js';
5
5
  import './chunk-BJ3KTMDH.js';
6
6
  import './chunk-VNVZDWO3.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { ensureHostKey, loadHostKey, signerFor } from './chunk-M5POMKKW.js';
3
+ export { ensureHostKey, loadHostKey, signerFor } from './chunk-V7NIVOFD.js';
4
4
  import './chunk-ZM2IMMYN.js';
5
5
  import './chunk-Z5GEFMRW.js';
6
6
 
package/dist/index.js CHANGED
@@ -6,7 +6,7 @@ createRequire(import.meta.url);
6
6
  // src/index.ts
7
7
  var argv = process.argv.slice(2);
8
8
  if (argv[0] === "hook") {
9
- const { runHookFast } = await import('./hook-fast-XBOZ3N6L.js');
9
+ const { runHookFast } = await import('./hook-fast-5H5QBJKT.js');
10
10
  await runHookFast(argv[1]);
11
11
  process.exit(0);
12
12
  }
@@ -21,6 +21,6 @@ if (argv[0] === "statusline") {
21
21
  await runStatuslineFast(argv.slice(1));
22
22
  process.exit(0);
23
23
  }
24
- (await import('./hook-fast-XBOZ3N6L.js')).recordLinkExitFailure(argv);
25
- var { runCli } = await import('./cli-LEVCGAQV.js');
24
+ (await import('./hook-fast-5H5QBJKT.js')).recordLinkExitFailure(argv);
25
+ var { runCli } = await import('./cli-X5ONGYNY.js');
26
26
  await runCli(process.argv);
@@ -1,43 +1,46 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { readConfigObject, RunnerInitError } from './chunk-6QWV3YDJ.js';
3
+ import { readConfigObject, RunnerInitError } from './chunk-Z2THOHPP.js';
4
+ import './chunk-QNRSFEGY.js';
5
+ import './chunk-M4ERCYDB.js';
4
6
  import { VM_SERVICE_NAME } from './chunk-FBTE2A2X.js';
5
- import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-OUUINEYB.js';
7
+ import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-JKIWMRFH.js';
6
8
  import { writeLaunchAgent } from './chunk-LF6MLJCY.js';
7
- import './chunk-AQ54MKSQ.js';
8
- import './chunk-E4PIFIC3.js';
9
- import './chunk-CEBIA5FD.js';
9
+ import './chunk-TTNFGMHO.js';
10
10
  import './chunk-N5FOE5PS.js';
11
11
  import './chunk-OGFGZQA3.js';
12
- import './chunk-774HEQL6.js';
12
+ import './chunk-TEKZRTM3.js';
13
13
  import './chunk-QOZKPLVJ.js';
14
+ import './chunk-2BRSMBBB.js';
15
+ import './chunk-CX22S5BA.js';
14
16
  import './chunk-ZOAEPWGL.js';
15
17
  import './chunk-R7STSBLC.js';
16
- import './chunk-DGAIVMMN.js';
17
- import './chunk-PUN7LMNS.js';
18
+ import './chunk-KV47VQJZ.js';
19
+ import './chunk-4ACZCY4I.js';
18
20
  import './chunk-BFESLKPP.js';
19
- import './chunk-SSU747O6.js';
21
+ import './chunk-ILEA3YHM.js';
20
22
  import './chunk-ZYHKJKSU.js';
21
- import './chunk-D6FXM5OW.js';
23
+ import './chunk-GAYWY4GI.js';
22
24
  import './chunk-USO2DKBD.js';
23
25
  import './chunk-N6LURUEF.js';
24
26
  import './chunk-YRYMNBGQ.js';
25
- import { resolveBuild } from './chunk-DTXOJDEH.js';
26
- import { parseSize } from './chunk-F6GFZXZ3.js';
27
+ import { resolveBuild, resolveHousekeeping } from './chunk-PWBILI5P.js';
28
+ import './chunk-UXYLWVTQ.js';
29
+ import { parseSize } from './chunk-7RQ73DLO.js';
27
30
  import './chunk-OD2VTIHN.js';
28
31
  import './chunk-HKMPVPO7.js';
29
32
  import './chunk-WZBHBH3J.js';
30
- import './chunk-5FWNEQNZ.js';
33
+ import './chunk-BQFNZOMQ.js';
31
34
  import './chunk-ZJSNLVCE.js';
32
35
  import './chunk-ZZXLM64C.js';
33
36
  import './chunk-VXLJORHL.js';
34
37
  import './chunk-7ZR5UPMB.js';
35
- import './chunk-BCLJSQCV.js';
38
+ import './chunk-YO4PSLVB.js';
36
39
  import './chunk-BOLTI6LR.js';
37
40
  import './chunk-YNJEOGDL.js';
38
41
  import './chunk-EABW6AJQ.js';
39
42
  import './chunk-RA3O54FC.js';
40
- import './chunk-M5POMKKW.js';
43
+ import './chunk-V7NIVOFD.js';
41
44
  import { hostKeyPath } from './chunk-ZM2IMMYN.js';
42
45
  import './chunk-XCCLFVXM.js';
43
46
  import './chunk-BJ3KTMDH.js';
@@ -59,11 +62,14 @@ function guestUsableBytes(memoryGiB) {
59
62
  function wantedMemoryGiB(build, concurrency) {
60
63
  return Math.ceil((gib(build.memory) * concurrency + RUNNER_RESERVE_BYTES / GIB) / GUEST_MEMORY_SHARE);
61
64
  }
62
- function sizeVm(build, concurrency, host) {
65
+ function sizeVm(build, concurrency, host, housekeeping) {
66
+ const disk = parseSize(build.disk);
67
+ const cache = housekeeping.buildCacheMax === "off" ? 0 : housekeeping.buildCacheMax;
68
+ const builds = disk * Math.max(0, Math.ceil(concurrency) - 1) + Math.max(disk, housekeeping.minFreeDisk);
63
69
  return {
64
70
  cpus: Math.max(1, Math.min(Math.ceil(build.cpus * concurrency) + EXTRA_CPUS, host.cpus)),
65
71
  memoryGiB: Math.max(1, Math.min(wantedMemoryGiB(build, concurrency), Math.floor(host.memoryBytes / GIB))),
66
- diskGiB: Math.ceil(gib(build.disk) * concurrency) + EXTRA_DISK_GIB
72
+ diskGiB: Math.ceil((builds + cache) / GIB) + EXTRA_DISK_GIB
67
73
  };
68
74
  }
69
75
 
@@ -111,7 +117,8 @@ async function runVmInit(configPath, deps) {
111
117
  }
112
118
  const build = resolveBuild(configPath, carried.build);
113
119
  const concurrency = typeof carried.concurrency === "number" ? carried.concurrency : 1;
114
- const size = sizeVm(build, concurrency, { cpus: deps.hostCpus, memoryBytes: deps.hostMemoryBytes });
120
+ const housekeeping = resolveHousekeeping(configPath, carried.housekeeping, build.disk);
121
+ const size = sizeVm(build, concurrency, { cpus: deps.hostCpus, memoryBytes: deps.hostMemoryBytes }, housekeeping);
115
122
  const fit = checkFit({ concurrency, buildMemory: build.memory, usableBytes: guestUsableBytes(size.memoryGiB) });
116
123
  if (!fit.fits) {
117
124
  throw new RunnerInitError(`${configPath}: the VM this Mac can give the runner is ${size.memoryGiB} GiB, and ${fit.message}. Lower runner.concurrency or runner.build.memory, then run this again.`);