@outerlayer/cli 0.7.0 → 0.8.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -5
  3. package/dist/{build-JF5UOWKJ.js → build-MS34XEGN.js} +2 -1
  4. package/dist/build-info.json +1 -1
  5. package/dist/builder-G52A6GW2.js +13 -0
  6. package/dist/{check-ASZL5BEO.js → check-FOF3PUKI.js} +21 -18
  7. package/dist/{chunk-2VO25HHO.js → chunk-3S4P55NE.js} +2 -2
  8. package/dist/{chunk-MQPRB5K7.js → chunk-4A5E2G4E.js} +6 -6
  9. package/dist/{chunk-PUN7LMNS.js → chunk-4ACZCY4I.js} +2 -2
  10. package/dist/{chunk-DGAIVMMN.js → chunk-5QLNZGAQ.js} +2 -2
  11. package/dist/chunk-5TNS3PL7.js +263 -0
  12. package/dist/chunk-7RQ73DLO.js +23 -0
  13. package/dist/{chunk-AJKEHABI.js → chunk-7VNURP6M.js} +248 -50
  14. package/dist/{chunk-6ZZHWY2Z.js → chunk-AIL2R4SI.js} +1 -1
  15. package/dist/{chunk-7FTNIAHS.js → chunk-AX23QKHS.js} +7 -3
  16. package/dist/{chunk-E4PIFIC3.js → chunk-CM5QTKM4.js} +58 -149
  17. package/dist/chunk-CX22S5BA.js +45 -0
  18. package/dist/{chunk-D6FXM5OW.js → chunk-GAYWY4GI.js} +8 -8
  19. package/dist/{chunk-AII7CKTH.js → chunk-IJBVPLZZ.js} +54 -16
  20. package/dist/{chunk-SSU747O6.js → chunk-ILEA3YHM.js} +1 -1
  21. package/dist/{chunk-6IYLDODX.js → chunk-IRCBTGWF.js} +4 -4
  22. package/dist/{chunk-OUUINEYB.js → chunk-JKIWMRFH.js} +1 -1
  23. package/dist/{chunk-X2FSFU4C.js → chunk-K35RW5HP.js} +2 -2
  24. package/dist/{chunk-6QWV3YDJ.js → chunk-NALVDFIS.js} +2 -2
  25. package/dist/{chunk-Q5G2ODUZ.js → chunk-OEK4JEB3.js} +33 -4
  26. package/dist/chunk-PTW6W5NR.js +127 -0
  27. package/dist/{chunk-DTXOJDEH.js → chunk-PWBILI5P.js} +3 -2
  28. package/dist/{chunk-CEBIA5FD.js → chunk-TTNFGMHO.js} +42 -50
  29. package/dist/{chunk-AQ54MKSQ.js → chunk-TUUMW4TC.js} +2 -2
  30. package/dist/{chunk-774HEQL6.js → chunk-U3GOI2B4.js} +91 -8
  31. package/dist/{chunk-F6GFZXZ3.js → chunk-UXYLWVTQ.js} +1 -18
  32. package/dist/{cli-LEVCGAQV.js → cli-AOJPAVFX.js} +94 -68
  33. package/dist/{command-FLSYCGIB.js → command-SY3SVLAI.js} +31 -16
  34. package/dist/{config-I3TVFYLH.js → config-Z3USDBLU.js} +3 -2
  35. package/dist/{connect-cmd-MJMUONDY.js → connect-cmd-PNZ6IJLJ.js} +2 -2
  36. package/dist/{dist-PXBSA7QX.js → dist-3ZTZF2TP.js} +1 -1
  37. package/dist/docker-676FD3CQ.js +15 -0
  38. package/dist/{doctor-FVDT3KJZ.js → doctor-WR6TRPSU.js} +36 -13
  39. package/dist/{emit-artifact-cmd-7RPMRSVP.js → emit-artifact-cmd-AVM4YXMQ.js} +4 -4
  40. package/dist/{emit-criteria-cmd-MKI7WETO.js → emit-criteria-cmd-LDBE4YDS.js} +3 -3
  41. package/dist/{emit-finding-cmd-RMLGZASB.js → emit-finding-cmd-6R5WBPCH.js} +3 -3
  42. package/dist/{emit-result-cmd-MTXAZ2GV.js → emit-result-cmd-2DMN6O6U.js} +4 -4
  43. package/dist/index.js +1 -1
  44. package/dist/{init-BACXESVV.js → init-KDK5QLQZ.js} +13 -10
  45. package/dist/{init-VLW7H6RW.js → init-R2FJ5KNS.js} +22 -15
  46. package/dist/{init-cmd-VJFB5L7X.js → init-cmd-BYZYAJ5P.js} +5 -5
  47. package/dist/{install-NMAPLLBQ.js → install-FHTVJZS6.js} +5 -4
  48. package/dist/{install-cmd-B5SEU3G7.js → install-cmd-DCF7TVXD.js} +2 -1
  49. package/dist/{loop-D3243JKT.js → loop-AG3PLXPO.js} +21 -18
  50. package/dist/{machine-EB3GEVI4.js → machine-LV6WBRRK.js} +12 -9
  51. package/dist/{session-sender-LMACEJJS.js → session-sender-Q5HAMOL2.js} +3 -3
  52. package/dist/{status-F4THTJJK.js → status-HH4OSOHR.js} +15 -12
  53. package/dist/{sync-cmd-M6JA3OEE.js → sync-cmd-CAEPJR7B.js} +2 -2
  54. package/dist/{watch-NB5TGPEZ.js → watch-LAAZFBHH.js} +2 -2
  55. package/dist/{work-claim-cmd-UHMWOS3G.js → work-claim-cmd-ARIYZARE.js} +8 -7
  56. package/dist/{work-cmd-6UMCFTAW.js → work-cmd-B3FOXZAL.js} +4 -4
  57. package/dist/{work-comment-cmd-E4LEUIXZ.js → work-comment-cmd-O5WGRI6K.js} +4 -4
  58. package/dist/{work-open-pr-cmd-OPZWGSEQ.js → work-open-pr-cmd-M6CQW7KW.js} +5 -5
  59. package/dist/{work-pr-cmd-IDIAFFRU.js → work-pr-cmd-C4YEGKD6.js} +4 -4
  60. package/package.json +1 -1
  61. package/dist/docker-NEGDLU6D.js +0 -7
  62. package/dist/{agent-setup-TXLDY5RV.js → agent-setup-C7PLRXZO.js} +1 -1
@@ -1,29 +1,34 @@
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-IRCBTGWF.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-NALVDFIS.js';
9
+ import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-TUUMW4TC.js';
10
+ import { MIN_ENGINE_MAJOR } from './chunk-CM5QTKM4.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-U3GOI2B4.js';
13
15
  import { locateRecipe, assertBuildable, readRecipe, RecipeError } from './chunk-QOZKPLVJ.js';
16
+ import { buildxState } from './chunk-5TNS3PL7.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-5QLNZGAQ.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';
@@ -41,7 +46,7 @@ import { loadHostKey } from './chunk-M5POMKKW.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-AIL2R4SI.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';
@@ -1,11 +1,11 @@
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';
@@ -1,11 +1,11 @@
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';
@@ -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-AIL2R4SI.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';
package/dist/index.js CHANGED
@@ -22,5 +22,5 @@ if (argv[0] === "statusline") {
22
22
  process.exit(0);
23
23
  }
24
24
  (await import('./hook-fast-XBOZ3N6L.js')).recordLinkExitFailure(argv);
25
- var { runCli } = await import('./cli-LEVCGAQV.js');
25
+ var { runCli } = await import('./cli-AOJPAVFX.js');
26
26
  await runCli(process.argv);
@@ -1,25 +1,28 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, readConfigObject, runRunnerInit } from './chunk-6QWV3YDJ.js';
4
- import './chunk-AQ54MKSQ.js';
5
- import './chunk-E4PIFIC3.js';
6
- import './chunk-CEBIA5FD.js';
3
+ export { PLACEHOLDER_MARKER, RunnerInitError, isPlaceholderCommand, readConfigObject, runRunnerInit } from './chunk-NALVDFIS.js';
4
+ import './chunk-TUUMW4TC.js';
5
+ import './chunk-CM5QTKM4.js';
6
+ import './chunk-TTNFGMHO.js';
7
7
  import './chunk-N5FOE5PS.js';
8
8
  import './chunk-OGFGZQA3.js';
9
- import './chunk-774HEQL6.js';
9
+ import './chunk-U3GOI2B4.js';
10
10
  import './chunk-QOZKPLVJ.js';
11
+ import './chunk-5TNS3PL7.js';
12
+ import './chunk-CX22S5BA.js';
11
13
  import './chunk-ZOAEPWGL.js';
12
14
  import './chunk-R7STSBLC.js';
13
- import './chunk-DGAIVMMN.js';
14
- import './chunk-PUN7LMNS.js';
15
+ import './chunk-5QLNZGAQ.js';
16
+ import './chunk-4ACZCY4I.js';
15
17
  import './chunk-BFESLKPP.js';
16
- import './chunk-SSU747O6.js';
18
+ import './chunk-ILEA3YHM.js';
17
19
  import './chunk-ZYHKJKSU.js';
18
- import './chunk-D6FXM5OW.js';
20
+ import './chunk-GAYWY4GI.js';
19
21
  import './chunk-USO2DKBD.js';
20
22
  import './chunk-N6LURUEF.js';
21
23
  import './chunk-YRYMNBGQ.js';
22
- import './chunk-F6GFZXZ3.js';
24
+ import './chunk-UXYLWVTQ.js';
25
+ import './chunk-7RQ73DLO.js';
23
26
  import './chunk-OD2VTIHN.js';
24
27
  import './chunk-HKMPVPO7.js';
25
28
  import './chunk-WZBHBH3J.js';
@@ -1,29 +1,32 @@
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-NALVDFIS.js';
4
+ import './chunk-TUUMW4TC.js';
5
+ import './chunk-CM5QTKM4.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-U3GOI2B4.js';
13
13
  import './chunk-QOZKPLVJ.js';
14
+ import './chunk-5TNS3PL7.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-5QLNZGAQ.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';
@@ -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.`);
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { summarizeChecks, summaryText, renderDoctorText } from './chunk-MQPRB5K7.js';
3
+ import { summarizeChecks, summaryText, renderDoctorText } from './chunk-4A5E2G4E.js';
4
4
  import './chunk-F47JBIAW.js';
5
5
  import './chunk-BKO6JEZI.js';
6
- import './chunk-DGAIVMMN.js';
7
- import './chunk-PUN7LMNS.js';
6
+ import './chunk-5QLNZGAQ.js';
7
+ import './chunk-4ACZCY4I.js';
8
8
  import './chunk-BFESLKPP.js';
9
- import { runConnect } from './chunk-SSU747O6.js';
9
+ import { runConnect } from './chunk-ILEA3YHM.js';
10
10
  import './chunk-ZYHKJKSU.js';
11
- import './chunk-D6FXM5OW.js';
11
+ import './chunk-GAYWY4GI.js';
12
12
  import './chunk-USO2DKBD.js';
13
13
  import './chunk-N6LURUEF.js';
14
14
  import { C } from './chunk-YRYMNBGQ.js';
@@ -1,10 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { DEFAULT_UNIT_NAME, installService, uninstallService, unitPathFor } from './chunk-7FTNIAHS.js';
3
+ export { DEFAULT_UNIT_NAME, installService, uninstallService, unitPathFor } from './chunk-AX23QKHS.js';
4
4
  import './chunk-FBTE2A2X.js';
5
- import './chunk-OUUINEYB.js';
6
- import './chunk-DTXOJDEH.js';
7
- import './chunk-F6GFZXZ3.js';
5
+ import './chunk-JKIWMRFH.js';
6
+ import './chunk-PWBILI5P.js';
7
+ import './chunk-UXYLWVTQ.js';
8
+ import './chunk-7RQ73DLO.js';
8
9
  import './chunk-OD2VTIHN.js';
9
10
  import './chunk-HKMPVPO7.js';
10
11
  import './chunk-ZM2IMMYN.js';
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RunnerInstallError, runRunnerInstall } from './chunk-Q5G2ODUZ.js';
3
+ export { RunnerInstallError, launcherSummary, runRunnerInstall } from './chunk-OEK4JEB3.js';
4
+ import './chunk-PTW6W5NR.js';
4
5
  import './chunk-TI7B7UEO.js';
5
6
  import './chunk-ZM2IMMYN.js';
6
7
  import './chunk-Z5GEFMRW.js';
@@ -1,43 +1,46 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-AII7CKTH.js';
3
+ export { RunnerStartError, listJobFiles, probeCredentials, requestStop, runnerProcessState, start, tick, watchTick } from './chunk-IJBVPLZZ.js';
4
4
  import './chunk-ABIWDUMS.js';
5
- import './chunk-TI7B7UEO.js';
6
- import './chunk-AJKEHABI.js';
5
+ import './chunk-7VNURP6M.js';
7
6
  import './chunk-T6OIJQRT.js';
8
7
  import './chunk-AIW6GLET.js';
9
8
  import './chunk-UGP76IZ5.js';
10
- import './chunk-2VO25HHO.js';
9
+ import './chunk-3S4P55NE.js';
11
10
  import './chunk-WVGSB3Z2.js';
12
- import './chunk-6ZZHWY2Z.js';
11
+ import './chunk-AIL2R4SI.js';
13
12
  import './chunk-HHJDN6AU.js';
14
- import './chunk-6IYLDODX.js';
13
+ import './chunk-IRCBTGWF.js';
14
+ import './chunk-TI7B7UEO.js';
15
15
  import './chunk-YYYRBYWG.js';
16
16
  import './chunk-TBT347UY.js';
17
- import './chunk-6QWV3YDJ.js';
18
- import './chunk-OUUINEYB.js';
19
- import './chunk-AQ54MKSQ.js';
20
- import './chunk-E4PIFIC3.js';
21
- import './chunk-CEBIA5FD.js';
17
+ import './chunk-NALVDFIS.js';
18
+ import './chunk-TUUMW4TC.js';
19
+ import './chunk-CM5QTKM4.js';
20
+ import './chunk-JKIWMRFH.js';
21
+ import './chunk-TTNFGMHO.js';
22
22
  import './chunk-N5FOE5PS.js';
23
23
  import './chunk-OGFGZQA3.js';
24
- import './chunk-774HEQL6.js';
24
+ import './chunk-U3GOI2B4.js';
25
25
  import './chunk-QOZKPLVJ.js';
26
+ import './chunk-5TNS3PL7.js';
27
+ import './chunk-CX22S5BA.js';
26
28
  import './chunk-ZOAEPWGL.js';
27
29
  import './chunk-R7STSBLC.js';
28
30
  import './chunk-F7CU5ABH.js';
29
31
  import './chunk-BKO6JEZI.js';
30
- import './chunk-DGAIVMMN.js';
31
- import './chunk-PUN7LMNS.js';
32
+ import './chunk-5QLNZGAQ.js';
33
+ import './chunk-4ACZCY4I.js';
32
34
  import './chunk-BFESLKPP.js';
33
- import './chunk-SSU747O6.js';
35
+ import './chunk-ILEA3YHM.js';
34
36
  import './chunk-ZYHKJKSU.js';
35
- import './chunk-D6FXM5OW.js';
37
+ import './chunk-GAYWY4GI.js';
36
38
  import './chunk-USO2DKBD.js';
37
39
  import './chunk-N6LURUEF.js';
38
40
  import './chunk-YRYMNBGQ.js';
39
- import './chunk-DTXOJDEH.js';
40
- import './chunk-F6GFZXZ3.js';
41
+ import './chunk-PWBILI5P.js';
42
+ import './chunk-UXYLWVTQ.js';
43
+ import './chunk-7RQ73DLO.js';
41
44
  import './chunk-OD2VTIHN.js';
42
45
  import './chunk-HKMPVPO7.js';
43
46
  import './chunk-GQD22KKN.js';
@@ -1,24 +1,27 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-AQ54MKSQ.js';
4
- import './chunk-E4PIFIC3.js';
5
- import './chunk-CEBIA5FD.js';
3
+ export { describeMachineDocker, detectMachine, microVmArchSupported, microVmAssetsPinned, reachDockerStep, supportsContainerBuilds, supportsMicroVmBuilds } from './chunk-TUUMW4TC.js';
4
+ import './chunk-CM5QTKM4.js';
5
+ import './chunk-TTNFGMHO.js';
6
6
  import './chunk-N5FOE5PS.js';
7
7
  import './chunk-OGFGZQA3.js';
8
- import './chunk-774HEQL6.js';
8
+ import './chunk-U3GOI2B4.js';
9
9
  import './chunk-QOZKPLVJ.js';
10
+ import './chunk-5TNS3PL7.js';
11
+ import './chunk-CX22S5BA.js';
10
12
  import './chunk-ZOAEPWGL.js';
11
13
  import './chunk-R7STSBLC.js';
12
- import './chunk-DGAIVMMN.js';
13
- import './chunk-PUN7LMNS.js';
14
+ import './chunk-5QLNZGAQ.js';
15
+ import './chunk-4ACZCY4I.js';
14
16
  import './chunk-BFESLKPP.js';
15
- import './chunk-SSU747O6.js';
17
+ import './chunk-ILEA3YHM.js';
16
18
  import './chunk-ZYHKJKSU.js';
17
- import './chunk-D6FXM5OW.js';
19
+ import './chunk-GAYWY4GI.js';
18
20
  import './chunk-USO2DKBD.js';
19
21
  import './chunk-N6LURUEF.js';
20
22
  import './chunk-YRYMNBGQ.js';
21
- import './chunk-F6GFZXZ3.js';
23
+ import './chunk-UXYLWVTQ.js';
24
+ import './chunk-7RQ73DLO.js';
22
25
  import './chunk-OD2VTIHN.js';
23
26
  import './chunk-HKMPVPO7.js';
24
27
  import './chunk-WZBHBH3J.js';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { runSessionSender, senderPidfile, startSessionSender } from './chunk-2VO25HHO.js';
4
- import './chunk-6ZZHWY2Z.js';
3
+ export { runSessionSender, senderPidfile, startSessionSender } from './chunk-3S4P55NE.js';
4
+ import './chunk-AIL2R4SI.js';
5
5
  import './chunk-HHJDN6AU.js';
6
6
  import './chunk-TBT347UY.js';
7
7
  import './chunk-F7CU5ABH.js';
8
8
  import './chunk-BKO6JEZI.js';
9
9
  import './chunk-BFESLKPP.js';
10
10
  import './chunk-ZYHKJKSU.js';
11
- import './chunk-D6FXM5OW.js';
11
+ import './chunk-GAYWY4GI.js';
12
12
  import './chunk-YRYMNBGQ.js';
13
13
  import './chunk-GQD22KKN.js';
14
14
  import './chunk-WZBHBH3J.js';
@@ -1,34 +1,37 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-AJKEHABI.js';
3
+ import { LEASE_SECONDS, RENEW_INTERVAL_SECONDS } from './chunk-7VNURP6M.js';
4
4
  import './chunk-T6OIJQRT.js';
5
- import './chunk-2VO25HHO.js';
5
+ import './chunk-3S4P55NE.js';
6
6
  import './chunk-WVGSB3Z2.js';
7
- import './chunk-6ZZHWY2Z.js';
7
+ import './chunk-AIL2R4SI.js';
8
8
  import './chunk-HHJDN6AU.js';
9
9
  import { formatBytes } from './chunk-YYYRBYWG.js';
10
10
  import './chunk-TBT347UY.js';
11
- import { formatDuration, formatClock, relativeToRunner } from './chunk-E4PIFIC3.js';
12
- import './chunk-CEBIA5FD.js';
11
+ import { formatDuration, formatClock, relativeToRunner } from './chunk-CM5QTKM4.js';
12
+ import './chunk-TTNFGMHO.js';
13
13
  import './chunk-N5FOE5PS.js';
14
14
  import './chunk-OGFGZQA3.js';
15
- import './chunk-774HEQL6.js';
15
+ import './chunk-U3GOI2B4.js';
16
16
  import './chunk-QOZKPLVJ.js';
17
+ import './chunk-5TNS3PL7.js';
18
+ import './chunk-CX22S5BA.js';
17
19
  import './chunk-ZOAEPWGL.js';
18
20
  import './chunk-R7STSBLC.js';
19
21
  import './chunk-F7CU5ABH.js';
20
22
  import './chunk-BKO6JEZI.js';
21
- import './chunk-DGAIVMMN.js';
22
- import './chunk-PUN7LMNS.js';
23
+ import './chunk-5QLNZGAQ.js';
24
+ import './chunk-4ACZCY4I.js';
23
25
  import './chunk-BFESLKPP.js';
24
- import './chunk-SSU747O6.js';
26
+ import './chunk-ILEA3YHM.js';
25
27
  import './chunk-ZYHKJKSU.js';
26
- import './chunk-D6FXM5OW.js';
28
+ import './chunk-GAYWY4GI.js';
27
29
  import './chunk-USO2DKBD.js';
28
30
  import './chunk-N6LURUEF.js';
29
31
  import './chunk-YRYMNBGQ.js';
30
- import './chunk-DTXOJDEH.js';
31
- import './chunk-F6GFZXZ3.js';
32
+ import './chunk-PWBILI5P.js';
33
+ import './chunk-UXYLWVTQ.js';
34
+ import './chunk-7RQ73DLO.js';
32
35
  import './chunk-OD2VTIHN.js';
33
36
  import './chunk-HKMPVPO7.js';
34
37
  import './chunk-GQD22KKN.js';
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, detectCi, isLoopbackUrl, resolveTier, runSync } from './chunk-6ZZHWY2Z.js';
3
+ export { CHUNK_PART_TARGET_BYTES, RETRYABLE_STATUSES, SyncConfigError, SyncTransportError, detectCi, isLoopbackUrl, resolveTier, runSync } from './chunk-AIL2R4SI.js';
4
4
  import './chunk-HHJDN6AU.js';
5
5
  import './chunk-TBT347UY.js';
6
6
  import './chunk-F7CU5ABH.js';
7
7
  import './chunk-BKO6JEZI.js';
8
8
  import './chunk-BFESLKPP.js';
9
9
  import './chunk-ZYHKJKSU.js';
10
- import './chunk-D6FXM5OW.js';
10
+ import './chunk-GAYWY4GI.js';
11
11
  import './chunk-YRYMNBGQ.js';
12
12
  import './chunk-GQD22KKN.js';
13
13
  import './chunk-WZBHBH3J.js';
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-6ZZHWY2Z.js';
3
+ import { LiveUploader } from './chunk-AIL2R4SI.js';
4
4
  import './chunk-HHJDN6AU.js';
5
5
  import './chunk-TBT347UY.js';
6
6
  import './chunk-F7CU5ABH.js';
7
7
  import './chunk-BKO6JEZI.js';
8
8
  import './chunk-BFESLKPP.js';
9
9
  import './chunk-ZYHKJKSU.js';
10
- import { StatuslineAggregator, CaptureDaemon } from './chunk-D6FXM5OW.js';
10
+ import { StatuslineAggregator, CaptureDaemon } from './chunk-GAYWY4GI.js';
11
11
  import './chunk-YRYMNBGQ.js';
12
12
  import './chunk-GQD22KKN.js';
13
13
  import './chunk-WZBHBH3J.js';
@@ -1,18 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { RUNNER_PROTOCOL } from './chunk-AIW6GLET.js';
4
- import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-DGAIVMMN.js';
5
- export { WorkCommandError } from './chunk-DGAIVMMN.js';
6
- import './chunk-PUN7LMNS.js';
4
+ import { resolveCredentials, WorkCommandError, parsePositiveInt, postJson, resolveRepository, findLiveItem } from './chunk-5QLNZGAQ.js';
5
+ export { WorkCommandError } from './chunk-5QLNZGAQ.js';
6
+ import './chunk-4ACZCY4I.js';
7
7
  import './chunk-BFESLKPP.js';
8
- import './chunk-SSU747O6.js';
8
+ import './chunk-ILEA3YHM.js';
9
9
  import './chunk-ZYHKJKSU.js';
10
- import './chunk-D6FXM5OW.js';
10
+ import './chunk-GAYWY4GI.js';
11
11
  import './chunk-USO2DKBD.js';
12
12
  import './chunk-N6LURUEF.js';
13
13
  import './chunk-YRYMNBGQ.js';
14
- import { defaultRunnerConfigPath } from './chunk-DTXOJDEH.js';
15
- import './chunk-F6GFZXZ3.js';
14
+ import { defaultRunnerConfigPath } from './chunk-PWBILI5P.js';
15
+ import './chunk-UXYLWVTQ.js';
16
+ import './chunk-7RQ73DLO.js';
16
17
  import './chunk-OD2VTIHN.js';
17
18
  import './chunk-HKMPVPO7.js';
18
19
  import './chunk-WZBHBH3J.js';
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { WorkCommandError, findLiveItem, getJson, parsePositiveInt, postJson, resolveCredentials, resolveRepository, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-DGAIVMMN.js';
4
- import './chunk-PUN7LMNS.js';
3
+ export { WorkCommandError, findLiveItem, getJson, parsePositiveInt, postJson, resolveCredentials, resolveRepository, runWorkBuild, runWorkLinkSession, runWorkList, runWorkRemove, runWorkStatus } from './chunk-5QLNZGAQ.js';
4
+ import './chunk-4ACZCY4I.js';
5
5
  import './chunk-BFESLKPP.js';
6
- import './chunk-SSU747O6.js';
6
+ import './chunk-ILEA3YHM.js';
7
7
  import './chunk-ZYHKJKSU.js';
8
- import './chunk-D6FXM5OW.js';
8
+ import './chunk-GAYWY4GI.js';
9
9
  import './chunk-USO2DKBD.js';
10
10
  import './chunk-N6LURUEF.js';
11
11
  import './chunk-YRYMNBGQ.js';
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, getJson } from './chunk-DGAIVMMN.js';
4
- import './chunk-PUN7LMNS.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-5QLNZGAQ.js';
4
+ import './chunk-4ACZCY4I.js';
5
5
  import { detectActiveSession } from './chunk-BFESLKPP.js';
6
- import './chunk-SSU747O6.js';
6
+ import './chunk-ILEA3YHM.js';
7
7
  import { sanitizeTerminal } from './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';