@outerlayer/cli 0.34.0-next.20261026145838 → 0.34.0-next.20261026161241

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 (119) hide show
  1. package/README.md +6 -0
  2. package/dist/{agent-setup-FNDKCPUP.js → agent-setup-WOEZELVB.js} +6 -6
  3. package/dist/{bridge-YJBB4YA3.js → bridge-F5FBQSPZ.js} +2 -2
  4. package/dist/{build-ZJK6CPNH.js → build-UDOBVX5J.js} +7 -7
  5. package/dist/{build-disk-7HS4UF7O.js → build-disk-C3WIAHCL.js} +6 -6
  6. package/dist/build-info.json +1 -1
  7. package/dist/{builder-MHZKDI4H.js → builder-YNXWVH2V.js} +5 -5
  8. package/dist/{check-4W4QUBMP.js → check-ERYYVAEM.js} +37 -37
  9. package/dist/{chunk-2ILU7UAU.js → chunk-3VZTNXK5.js} +1 -1
  10. package/dist/{chunk-AE3OTPUU.js → chunk-4G4IH4A7.js} +102 -53
  11. package/dist/{chunk-4YFMNF5Y.js → chunk-4J2FF5HZ.js} +3 -3
  12. package/dist/{chunk-CAQCDYKF.js → chunk-5JGPTYLT.js} +2 -2
  13. package/dist/{chunk-OGPEHSNW.js → chunk-6KFJIU73.js} +1 -1
  14. package/dist/{chunk-3EJBI5JW.js → chunk-7FQYTM7M.js} +1 -1
  15. package/dist/{chunk-3N77LUQI.js → chunk-7QAJQDHS.js} +1 -1
  16. package/dist/{chunk-SI6WDF3U.js → chunk-CFFVCI2I.js} +1 -1
  17. package/dist/{chunk-7P3H4RY2.js → chunk-CNZRUVZ5.js} +102 -36
  18. package/dist/{chunk-PWSUNS6Y.js → chunk-E6OVLJTR.js} +98 -30
  19. package/dist/{chunk-WMNPKBX5.js → chunk-ELO5XEES.js} +4 -4
  20. package/dist/{chunk-PP6OX4OT.js → chunk-EPFFYDNX.js} +5 -5
  21. package/dist/{chunk-35JMYSUD.js → chunk-EUQZAH2W.js} +2 -2
  22. package/dist/{chunk-YZ375YBI.js → chunk-FZ4G6CMK.js} +4 -4
  23. package/dist/{chunk-WHDS6MEG.js → chunk-GHFI5GBF.js} +3 -3
  24. package/dist/{chunk-PXGU3GKY.js → chunk-GJ4KBHBD.js} +1 -1
  25. package/dist/{chunk-VVOSUGEF.js → chunk-H47VGSCW.js} +4 -4
  26. package/dist/{chunk-TFPNPS4Q.js → chunk-HOUFCUMH.js} +1 -1
  27. package/dist/{chunk-7JE2WFNK.js → chunk-HVPW272H.js} +3 -3
  28. package/dist/{chunk-M3ME6TLQ.js → chunk-HVQMIZ22.js} +4 -4
  29. package/dist/{chunk-7DXVL7TN.js → chunk-IO2BBKG4.js} +3 -3
  30. package/dist/{chunk-UONH72CJ.js → chunk-IWVGALDC.js} +2 -2
  31. package/dist/{chunk-ZP7GKJSM.js → chunk-JC6AQ6PC.js} +39 -6
  32. package/dist/{chunk-6JZXIWX7.js → chunk-JKNOJKVD.js} +34 -9
  33. package/dist/{chunk-GEQT3RPN.js → chunk-JSZRBQY3.js} +3 -3
  34. package/dist/{chunk-MOI2KDLH.js → chunk-L5VHGRQE.js} +1 -1
  35. package/dist/{chunk-SKVA4KWD.js → chunk-LD3BHLK7.js} +3 -3
  36. package/dist/{chunk-YNMVVQOQ.js → chunk-LQHCNXPK.js} +1 -1
  37. package/dist/{chunk-YHKU2NOZ.js → chunk-LTYBHCL4.js} +1 -1
  38. package/dist/{chunk-PAK5P2ND.js → chunk-MH6QLXUO.js} +1 -1
  39. package/dist/{chunk-OS7DJOQJ.js → chunk-MN3PP45X.js} +1 -1
  40. package/dist/{chunk-25GRRBTH.js → chunk-NHEU5CON.js} +1 -1
  41. package/dist/{chunk-IM6IL3F4.js → chunk-OQT7RT5I.js} +3 -3
  42. package/dist/{chunk-63IVRRIO.js → chunk-P3NPTFLF.js} +3 -3
  43. package/dist/{chunk-GC5PVMIJ.js → chunk-RR3VDM7M.js} +3 -3
  44. package/dist/{chunk-G4W4B33M.js → chunk-SDAEXUIX.js} +25 -10
  45. package/dist/{chunk-SYVRBBLW.js → chunk-SDELQEG4.js} +1 -1
  46. package/dist/{chunk-FDJPDZSR.js → chunk-TS3EFB7S.js} +1 -1
  47. package/dist/{chunk-CY5TCVBS.js → chunk-U6AWVO6L.js} +6 -6
  48. package/dist/{chunk-EMH2LNIE.js → chunk-V2VJYK46.js} +4 -4
  49. package/dist/{chunk-KAVZAB3E.js → chunk-VEJWLQ4G.js} +10 -10
  50. package/dist/{chunk-XTYYF6P7.js → chunk-VUQKGBIQ.js} +14 -7
  51. package/dist/{chunk-KRTD2F3I.js → chunk-VWZHOFBP.js} +3 -3
  52. package/dist/{chunk-3RLKILPT.js → chunk-WE4C3ODP.js} +2 -2
  53. package/dist/{chunk-QEIA5Q35.js → chunk-XL2MPORM.js} +4 -4
  54. package/dist/{chunk-VGRCZE6U.js → chunk-XSFR76J7.js} +3 -3
  55. package/dist/{chunk-UMYYYF7B.js → chunk-YL3RWW7X.js} +1 -1
  56. package/dist/{chunk-GSSVJNP2.js → chunk-Z7WMU3RA.js} +3 -2
  57. package/dist/{chunk-3EHDZTRT.js → chunk-ZIKZZ4LK.js} +3 -3
  58. package/dist/{claude-launcher-OQZNW7XJ.js → claude-launcher-6KGANL7E.js} +1 -1
  59. package/dist/{cli-PFWJD5QM.js → cli-LXKVCFD7.js} +112 -111
  60. package/dist/{command-CM22HPN5.js → command-VQPQDPCZ.js} +24 -24
  61. package/dist/{config-W2XWNR4C.js → config-WSZIWPP4.js} +7 -7
  62. package/dist/{connect-cmd-TOWE4P45.js → connect-cmd-LI34HS5Q.js} +6 -6
  63. package/dist/{container-start-D2OEPMUO.js → container-start-IL74XEC5.js} +30 -30
  64. package/dist/{context-show-cmd-5UJUWBJL.js → context-show-cmd-X27GMOT6.js} +7 -7
  65. package/dist/{control-plane-launch-XBGHM7DB.js → control-plane-launch-74EIIB5Z.js} +5 -5
  66. package/dist/dist-HVXLUMRV.js +7 -0
  67. package/dist/{docker-GA63DVME.js → docker-KZ3OQTPW.js} +5 -5
  68. package/dist/{doctor-GVWQBHBC.js → doctor-KPKLFIJH.js} +24 -24
  69. package/dist/{emit-artifact-cmd-TUOLSGHB.js → emit-artifact-cmd-BJICHW2E.js} +11 -11
  70. package/dist/{emit-criteria-cmd-VEUMA7MZ.js → emit-criteria-cmd-MUWPT25P.js} +8 -8
  71. package/dist/{emit-demo-cmd-YLEZB6FG.js → emit-demo-cmd-YQN7VKQH.js} +12 -12
  72. package/dist/{emit-finding-cmd-BX3FWGSX.js → emit-finding-cmd-NPBWVY44.js} +8 -8
  73. package/dist/{emit-result-cmd-AYXGCIPR.js → emit-result-cmd-7CJZZQGK.js} +10 -10
  74. package/dist/{emit-step-cmd-CU6GQ3WW.js → emit-step-cmd-ZPLHZAMA.js} +8 -8
  75. package/dist/{exec-client-QB4OZRGM.js → exec-client-LXHTMVIB.js} +3 -3
  76. package/dist/find-unit-UKH6JH4S.js +18 -0
  77. package/dist/{findings-cmd-G4V4M3PO.js → findings-cmd-DZ4ESTHX.js} +8 -8
  78. package/dist/{fleet-readiness-NJYTQYTA.js → fleet-readiness-YSI4NOHT.js} +5 -5
  79. package/dist/{governing-source-JQV3ZKD7.js → governing-source-JPRMOB3O.js} +10 -10
  80. package/dist/{guest-init-IF5LXGUL.js → guest-init-WWL2WL7R.js} +4 -4
  81. package/dist/{hook-fast-GPUL7T77.js → hook-fast-6EW2MGA2.js} +1 -1
  82. package/dist/{pending-ERXWVLLG.js → host-key-TSOKVSZX.js} +3 -3
  83. package/dist/{image-tag-SEMBVB5D.js → image-tag-BTXKIH73.js} +3 -3
  84. package/dist/index.js +4 -4
  85. package/dist/{init-FY3HP73H.js → init-MN3MNG7V.js} +21 -21
  86. package/dist/{init-3NT4YX2X.js → init-V6Y2VNKW.js} +21 -21
  87. package/dist/{init-cmd-RXHHEAOT.js → init-cmd-QCWLJDIF.js} +11 -11
  88. package/dist/{init-update-RHS6HWLI.js → init-update-GTFLPDEL.js} +9 -9
  89. package/dist/{install-cmd-5H6M2KJ7.js → install-cmd-RGO7NWKP.js} +5 -5
  90. package/dist/{logs-6CMB3DO6.js → logs-LEVH6VAI.js} +2 -2
  91. package/dist/{loop-V3GED2WX.js → loop-A4CB4IFF.js} +36 -36
  92. package/dist/{machine-HLZLH327.js → machine-XG54XYYZ.js} +21 -21
  93. package/dist/{mcp-serve-cmd-MWGIN6YL.js → mcp-serve-cmd-4O5INM77.js} +4 -4
  94. package/dist/{paths-T2DEBI62.js → paths-AQ47ZRHK.js} +2 -2
  95. package/dist/{host-key-5RU322O3.js → pending-UWFDVFOA.js} +3 -3
  96. package/dist/{pidfile-EAD2OEM7.js → pidfile-PCG2H5T4.js} +3 -3
  97. package/dist/{record-IMXQNHPB.js → record-SVCNFCGQ.js} +3 -3
  98. package/dist/{runner-env-V52JUOD5.js → runner-env-YPXWTNP3.js} +9 -9
  99. package/dist/{runner-identity-J4NCBSBU.js → runner-identity-XPZO3TG4.js} +5 -5
  100. package/dist/{runner-key-ZUHMQCHZ.js → runner-key-B5EJH25Z.js} +21 -21
  101. package/dist/{session-sender-XDKMK4SF.js → session-sender-XED7CKHP.js} +11 -11
  102. package/dist/{spec-cmd-XQV7EIJW.js → spec-cmd-TRXAGQYM.js} +9 -9
  103. package/dist/{status-ZJJEJ52D.js → status-6V2S63DS.js} +28 -28
  104. package/dist/{sync-cmd-BG2M536W.js → sync-cmd-UQVENF25.js} +10 -10
  105. package/dist/{update-steps-I5JLERXS.js → update-steps-CSC2QVJF.js} +29 -29
  106. package/dist/{watch-7A63565I.js → watch-EZGDDRTQ.js} +10 -10
  107. package/dist/{work-claim-cmd-OVPMBIRR.js → work-claim-cmd-YSAJ7DAK.js} +14 -14
  108. package/dist/{work-cmd-KVFRK24I.js → work-cmd-V5FHLWJM.js} +8 -8
  109. package/dist/{work-comment-cmd-GC3WAFM7.js → work-comment-cmd-KLEMDYI4.js} +9 -9
  110. package/dist/{work-demo-cmd-IOB5UDGQ.js → work-demo-cmd-XYRKFP4G.js} +8 -8
  111. package/dist/{work-logs-cmd-7II6D2JJ.js → work-logs-cmd-DOGPK7Q6.js} +8 -8
  112. package/dist/{work-open-pr-cmd-FYKRKCDL.js → work-open-pr-cmd-UAUEEP3V.js} +9 -9
  113. package/dist/{work-pr-cmd-KP3RI7TV.js → work-pr-cmd-LYWL7ZLF.js} +8 -8
  114. package/dist/{work-proofs-cmd-TVU6QFZN.js → work-proofs-cmd-YMLIJDJZ.js} +9 -9
  115. package/dist/{work-proofs-record-XANZE3K4.js → work-proofs-record-NK3ULOUQ.js} +15 -15
  116. package/dist/{work-stop-cmd-5V3DV3HJ.js → work-stop-cmd-MRLJEQRP.js} +8 -8
  117. package/package.json +1 -1
  118. package/dist/dist-IOPJIQWK.js +0 -7
  119. package/dist/find-unit-GGBRYOSO.js +0 -18
@@ -2,10 +2,10 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
4
4
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
5
- import { autoConnect } from './chunk-7DXVL7TN.js';
5
+ import { autoConnect } from './chunk-IO2BBKG4.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-3N77LUQI.js';
8
- import { resolveRepoIdentity } from './chunk-GSSVJNP2.js';
7
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-7QAJQDHS.js';
8
+ import { resolveRepoIdentity } from './chunk-Z7WMU3RA.js';
9
9
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
10
10
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
11
11
  import { CriteriaListSchema } from './chunk-EOTMDIYC.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { BUILD_HOME } from './chunk-G4W4B33M.js';
3
+ import { BUILD_HOME } from './chunk-SDAEXUIX.js';
4
4
  import { join, dirname } from 'path';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RecipeError, locateRecipe, readRecipe, assertBuildable, runnerLabelValue, writeSanitizedRecipe, classifyProperties, SANITIZED_NAME } from './chunk-M3ME6TLQ.js';
3
+ import { RecipeError, locateRecipe, readRecipe, assertBuildable, runnerLabelValue, writeSanitizedRecipe, classifyProperties, SANITIZED_NAME } from './chunk-HVQMIZ22.js';
4
4
  import { GH_VERSION, VOICE_PACK_FILES, VOICE_PACK_VERSION, FFMPEG_STATIC, FFMPEG_BUILD_TAG, GH_SHA256, TINI_SHA256, TINI_VERSION, CLAUDE_CODE_VERSION, NODE_IMAGE, DEFAULT_BASE_IMAGE, MEDIA_PINS, PLAYWRIGHT_VERSION } from './chunk-4UPET3R7.js';
5
- import { claimPidFile, RunnerAlreadyRunningError, releasePidFile } from './chunk-YNMVVQOQ.js';
5
+ import { claimPidFile, RunnerAlreadyRunningError, releasePidFile } from './chunk-LQHCNXPK.js';
6
6
  import { startTimeOf } from './chunk-JBJTC3UU.js';
7
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, repoCacheDir, imagesDir, imageBuildLogsDir, attemptStamp, runnerDir, rootfsPathFor } from './chunk-PXGU3GKY.js';
8
- import { PROXY_WARNING_FLAG, withGitConfig, tokenHeader } from './chunk-G4W4B33M.js';
7
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, repoCacheDir, imagesDir, imageBuildLogsDir, attemptStamp, runnerDir, rootfsPathFor } from './chunk-GJ4KBHBD.js';
8
+ import { PROXY_WARNING_FLAG, withGitConfig, tokenHeader } from './chunk-SDAEXUIX.js';
9
9
  import { RELAY_ID, RELAY_USER } from './chunk-MESOOLF4.js';
10
10
  import { mkdirSync, rmSync, writeFileSync, existsSync, mkdtempSync, cpSync, readFileSync, readdirSync, lstatSync, readlinkSync } from 'fs';
11
11
  import { tmpdir } from 'os';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-PXGU3GKY.js';
3
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-GJ4KBHBD.js';
4
4
  import { readFileSync, existsSync, rmSync, mkdirSync, writeFileSync, renameSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { DEFAULT_UNIT_NAME } from './chunk-EMH2LNIE.js';
4
- import { RUNNER_FILE_MODE } from './chunk-PXGU3GKY.js';
5
- import { claudeEnvPath, withoutCredentialLines, parseRunnerEnv } from './chunk-G4W4B33M.js';
3
+ import { DEFAULT_UNIT_NAME } from './chunk-V2VJYK46.js';
4
+ import { RUNNER_FILE_MODE } from './chunk-GJ4KBHBD.js';
5
+ import { claudeEnvPath, withoutCredentialLines, parseRunnerEnv } from './chunk-SDAEXUIX.js';
6
6
  import { existsSync, readFileSync, writeFileSync, renameSync, rmSync } from 'fs';
7
7
  import { join, dirname } from 'path';
8
8
 
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { BUILDKIT_IMAGE } from './chunk-4UPET3R7.js';
4
- import { ensureHostKey } from './chunk-MOI2KDLH.js';
5
- import { compareVersions } from './chunk-GSSVJNP2.js';
6
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-PXGU3GKY.js';
7
- import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-G4W4B33M.js';
4
+ import { ensureHostKey } from './chunk-L5VHGRQE.js';
5
+ import { compareVersions } from './chunk-Z7WMU3RA.js';
6
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-GJ4KBHBD.js';
7
+ import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-SDAEXUIX.js';
8
8
  import { JOIN_DIR, RELAY_ID, JOIN_SOCKET, TARGET_GATEWAY, TARGET_CLAUDE, destinationTarget, RELAY_USER } from './chunk-MESOOLF4.js';
9
9
  import { createHash } from 'crypto';
10
10
  import { existsSync, readdirSync, readFileSync, lstatSync, realpathSync, writeFileSync, mkdirSync, createWriteStream, rmSync, chmodSync, renameSync } from 'fs';
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-35JMYSUD.js';
4
- import { resolveGatewayCredentials } from './chunk-3N77LUQI.js';
3
+ import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-EUQZAH2W.js';
4
+ import { resolveGatewayCredentials } from './chunk-7QAJQDHS.js';
5
5
  import { readCloudConfig } from './chunk-PJDQPF5N.js';
6
6
  import { findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
7
- import { resolveRepoIdentity } from './chunk-GSSVJNP2.js';
7
+ import { resolveRepoIdentity } from './chunk-Z7WMU3RA.js';
8
8
  import { cliInvocation } from './chunk-CRB3POP4.js';
9
9
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
10
10
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { parseSize, BUILD_LABEL, RUNNER_LABEL, runnerLabelValue } from './chunk-M3ME6TLQ.js';
4
- import { buildsDir, rootfsDir, runnerDir, imagesDir, builderCacheDiskPath } from './chunk-PXGU3GKY.js';
3
+ import { parseSize, BUILD_LABEL, RUNNER_LABEL, runnerLabelValue } from './chunk-HVQMIZ22.js';
4
+ import { buildsDir, rootfsDir, runnerDir, imagesDir, builderCacheDiskPath } from './chunk-GJ4KBHBD.js';
5
5
  import { spawnSync } from 'child_process';
6
6
  import { statfsSync, statSync, existsSync, readdirSync } from 'fs';
7
7
  import { dirname, join } from 'path';
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { placeholderQueues, placeholderProblem } from './chunk-7P3H4RY2.js';
4
- import { checkFit } from './chunk-EMH2LNIE.js';
5
- import { builtinKind, imageBuildOf, keepsHostBuilder } from './chunk-3EHDZTRT.js';
6
- import { realBuildDiskProbe, checkDiskFit, DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-UONH72CJ.js';
3
+ import { placeholderQueues, placeholderProblem } from './chunk-CNZRUVZ5.js';
4
+ import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-V2VJYK46.js';
5
+ import { builtinKind, imageBuildOf, keepsHostBuilder } from './chunk-ZIKZZ4LK.js';
6
+ import { realBuildDiskProbe, checkDiskFit, DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-IWVGALDC.js';
7
7
  import { builderDiskPinned } from './chunk-4UPET3R7.js';
8
- import { FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, claudeCredentialVariablesSet, claudeCredential, claudeEnvPath, parseRunnerEnv, BUILD_SLICE_MEMORY_ENV } from './chunk-G4W4B33M.js';
8
+ import { BUILD_SLICE_MEMORY_ENV, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, claudeCredentialVariablesSet, claudeCredential, claudeEnvPath, parseRunnerEnv } from './chunk-SDAEXUIX.js';
9
9
  import { closeSync, openSync, constants, readFileSync } from 'fs';
10
10
  import { join, dirname } from 'path';
11
11
  import { totalmem } from 'os';
@@ -156,5 +156,38 @@ function checkBlockedWithSlots(config, probes) {
156
156
  }
157
157
  return { slots };
158
158
  }
159
+ var GIB = 1024 ** 3;
160
+ function largeBuildMemoryBytes() {
161
+ return 16 * GIB;
162
+ }
163
+ var LARGE_BUILD_DISK_BYTES = 3e10;
164
+ function checkManagedRoom(input) {
165
+ const availableBytes = input.sliceBytes ?? Math.max(0, input.totalMemoryBytes - RUNNER_RESERVE_BYTES);
166
+ if (input.runningMemoryBytes + largeBuildMemoryBytes() > availableBytes) {
167
+ const where = input.sliceBytes === void 0 ? "the host's memory less the runner's reserve" : "the memory limit of the runner's build slice";
168
+ return {
169
+ fits: false,
170
+ resource: "memory",
171
+ reason: `one more Large build needs ${gib(largeBuildMemoryBytes())} of memory, and the running builds hold ${gib(input.runningMemoryBytes)} of the ${gib(availableBytes)} in ${where}`
172
+ };
173
+ }
174
+ if (input.freeDiskBytes !== void 0) {
175
+ const diskBytes = input.freeDiskBytes + input.heldDiskBytes;
176
+ if (input.runningDiskBytes + LARGE_BUILD_DISK_BYTES > diskBytes) {
177
+ return {
178
+ fits: false,
179
+ resource: "disk",
180
+ reason: `one more Large build needs a ${gb(LARGE_BUILD_DISK_BYTES)} build disk beside the ${gb(input.runningDiskBytes)} the running builds' disks may grow to, and the runner's file system has ${gb(diskBytes)} free or held by them`
181
+ };
182
+ }
183
+ }
184
+ return { fits: true };
185
+ }
186
+ function gib(bytes) {
187
+ return `${(bytes / GIB).toFixed(1)} GiB`;
188
+ }
189
+ function gb(bytes) {
190
+ return `${(bytes / 1e9).toFixed(1)} GB`;
191
+ }
159
192
 
160
- export { checkBlockedWithSlots, managedFactsOf, managedProblems, realBlockedProbes };
193
+ export { LARGE_BUILD_DISK_BYTES, checkBlockedWithSlots, checkManagedRoom, largeBuildMemoryBytes, managedFactsOf, managedProblems, realBlockedProbes, sliceMemoryOf };
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
4
- import { autoConnect } from './chunk-7DXVL7TN.js';
5
- import { workPageUrl } from './chunk-35JMYSUD.js';
4
+ import { autoConnect } from './chunk-IO2BBKG4.js';
5
+ import { workPageUrl } from './chunk-EUQZAH2W.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
7
  import { sanitizeTerminal } from './chunk-MECW77XP.js';
8
- import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-3N77LUQI.js';
9
- import { signRunnerRequest } from './chunk-MOI2KDLH.js';
8
+ import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-7QAJQDHS.js';
9
+ import { signRunnerRequest } from './chunk-L5VHGRQE.js';
10
10
  import { readRepoConnection } from './chunk-BJ3KTMDH.js';
11
- import { resolveRepoIdentity } from './chunk-GSSVJNP2.js';
11
+ import { resolveRepoIdentity } from './chunk-Z7WMU3RA.js';
12
12
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
13
13
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
14
14
 
@@ -379,6 +379,21 @@ function tokenWarning(data) {
379
379
  return `
380
380
  ${C.yellow}!${C.reset} a container host will fail this build: ${why}`;
381
381
  }
382
+ var RUNNER_KINDS = ["managed", "self-hosted"];
383
+ function isManagedRefusal(code) {
384
+ return code === "managed_builds_off" || code === "managed_credential_missing";
385
+ }
386
+ function parseRunnerKind(raw) {
387
+ if (raw === void 0) return void 0;
388
+ const kind = RUNNER_KINDS.find((k) => k === raw);
389
+ if (kind === void 0) throw new WorkCommandError(`--runner takes ${RUNNER_KINDS.join(" or ")}, not "${sanitizeTerminal(raw)}"`);
390
+ return kind;
391
+ }
392
+ function runnerLabel(data, named) {
393
+ const kind = data.runner === "managed" || data.runner === "self-hosted" ? data.runner : named;
394
+ if (kind !== "managed" && named === void 0) return "";
395
+ return ` ${C.dim}\xB7${C.reset} on a ${kind} runner`;
396
+ }
382
397
  function itemLabel(data) {
383
398
  return data.number != null ? `item #${data.number}` : `item ${sanitizeTerminal(String(data.workItemId))}`;
384
399
  }
@@ -401,6 +416,10 @@ async function runWorkBuild(opts) {
401
416
  "--instructions applies to host builds: with --local you build the item yourself, so give your instructions in your own session"
402
417
  );
403
418
  }
419
+ const runner = parseRunnerKind(opts.runner);
420
+ if (opts.local && runner !== void 0) {
421
+ throw new WorkCommandError("--runner applies to host builds: with --local you build the item yourself, so no runner takes it");
422
+ }
404
423
  await connectIfOneFits(opts);
405
424
  const { url, apiKey, appId } = resolveCredentials(opts);
406
425
  const fetchImpl = opts.fetchImpl ?? defaultFetch;
@@ -428,15 +447,21 @@ async function runWorkBuild(opts) {
428
447
  return { data: data2, output: output2 };
429
448
  }
430
449
  const instructions = opts.instructions !== void 0 ? { instructions: opts.instructions } : {};
431
- const body = itemNumber !== void 0 ? { workItemId: String(itemNumber), note: opts.note, ...instructions, ...facts } : {
450
+ const body = itemNumber !== void 0 ? { workItemId: String(itemNumber), note: opts.note, ...instructions, runner, ...facts } : {
432
451
  subject: resolveWorkSubject({ issue: opts.issue, tracker: opts.tracker, repo: opts.repo, cwd }),
433
452
  note: opts.note,
434
453
  ...instructions,
454
+ runner,
435
455
  ...facts
436
456
  };
437
- const { data } = await postJsonWithRetry(url, "/v1/work-items/build", apiKey, appId, body, fetchImpl, retries, sleep);
457
+ const { data } = await postJsonWithRetry(url, "/v1/work-items/build", apiKey, appId, body, fetchImpl, retries, sleep).catch((err) => {
458
+ if (err instanceof WorkCommandError && isManagedRefusal(err.code)) {
459
+ throw new WorkCommandError(`${err.message} (${err.code})`, false, err.status, err.code);
460
+ }
461
+ throw err;
462
+ });
438
463
  const page = itemPageUrl(home, cwd, appId, data.workItemId, data.number);
439
- const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} build requested ${C.dim}\xB7${C.reset} ${itemLabel(data)}${"subject" in body ? ` (${issueLabel(body.subject)})` : ""} ${C.dim}\xB7${C.reset} by ${data.attestor}` + (page !== void 0 ? `
464
+ const output = opts.json ? JSON.stringify(data) : `${C.green}\u2713${C.reset} build requested ${C.dim}\xB7${C.reset} ${itemLabel(data)}${"subject" in body ? ` (${issueLabel(body.subject)})` : ""}${runnerLabel(data, runner)} ${C.dim}\xB7${C.reset} by ${data.attestor}` + (page !== void 0 ? `
440
465
  ${page}` : "") + tokenWarning(data);
441
466
  if (!opts.quiet) process.stdout.write(output + "\n");
442
467
  return { data, output };
@@ -446,7 +471,7 @@ async function runWorkLinkSession(opts) {
446
471
  return await linkSession(opts);
447
472
  } catch (err) {
448
473
  if (opts.logFailures) {
449
- const { logHookError } = await import('./hook-fast-GPUL7T77.js');
474
+ const { logHookError } = await import('./hook-fast-6EW2MGA2.js');
450
475
  const reason = err instanceof Error ? err.message : String(err);
451
476
  logHookError(opts.home ?? homeFromEnv(opts.env ?? process.env), new Error(`work link-session #${opts.number} failed: ${reason}`));
452
477
  }
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveCredentials, postJson, getJson } from './chunk-6JZXIWX7.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-JKNOJKVD.js';
4
4
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
5
5
  import { C } from './chunk-ANPNT6PM.js';
6
6
  import { sanitizeTerminal } from './chunk-MECW77XP.js';
7
- import { defaultFetch } from './chunk-3N77LUQI.js';
8
- import { resolveRepoIdentity } from './chunk-GSSVJNP2.js';
7
+ import { defaultFetch } from './chunk-7QAJQDHS.js';
8
+ import { resolveRepoIdentity } from './chunk-Z7WMU3RA.js';
9
9
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
10
10
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
11
11
  import { randomUUID } from 'crypto';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { hostKeyPath, runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-PXGU3GKY.js';
3
+ import { hostKeyPath, runnerDir, RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-GJ4KBHBD.js';
4
4
  import { generateKeyPairSync, createPrivateKey, createPublicKey, sign } from 'crypto';
5
5
  import { existsSync, mkdirSync, writeFileSync, readFileSync } from 'fs';
6
6
 
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-XTYYF6P7.js';
4
- import { spoolDir } from './chunk-25GRRBTH.js';
5
- import { CaptureDaemon } from './chunk-GSSVJNP2.js';
3
+ import { LiveUploader } from './chunk-VUQKGBIQ.js';
4
+ import { spoolDir } from './chunk-NHEU5CON.js';
5
+ import { CaptureDaemon } from './chunk-Z7WMU3RA.js';
6
6
  import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
7
7
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
8
8
  import { mkdirSync, writeFileSync, rmSync } from 'fs';
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { isSameProcess } from './chunk-JBJTC3UU.js';
4
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-PXGU3GKY.js';
4
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-GJ4KBHBD.js';
5
5
  import { existsSync, readFileSync, mkdirSync, writeFileSync, rmSync } from 'fs';
6
6
  import { dirname } from 'path';
7
7
 
@@ -2,7 +2,7 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { sanitizeTerminal } from './chunk-MECW77XP.js';
4
4
  import { isAgentsMdLayout } from './chunk-NKOM4JKY.js';
5
- import { resolveGatewayCredentials, defaultFetch } from './chunk-3N77LUQI.js';
5
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-7QAJQDHS.js';
6
6
  import { versionAtLeast } from './chunk-HCVLP7XA.js';
7
7
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
8
8
  import { machineSkillsState, staleClaudeSkills } from './chunk-RCRE42V6.js';
@@ -4,6 +4,6 @@ import { createRequire } from 'node:module';
4
4
  createRequire(import.meta.url);
5
5
 
6
6
  // src/runner/protocol.ts
7
- var RUNNER_PROTOCOL = 32;
7
+ var RUNNER_PROTOCOL = 33;
8
8
 
9
9
  export { RUNNER_PROTOCOL };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { currentLink } from './chunk-UMYYYF7B.js';
3
+ import { currentLink } from './chunk-YL3RWW7X.js';
4
4
  import { readFileSync, statSync, chmodSync, mkdirSync, writeFileSync, renameSync, rmSync, existsSync, lstatSync, accessSync, constants, realpathSync } from 'fs';
5
5
  import { randomBytes } from 'crypto';
6
6
  import { join, dirname, delimiter, resolve } from 'path';
@@ -684,7 +684,7 @@ async function missingControlPlane(cwd, sessionId, home, env) {
684
684
  cleanupEarlierCopies(dirs);
685
685
  }
686
686
  if (!contextPossiblyGoverned(cwd, home)) return void 0;
687
- const { governanceOf } = await import('./control-plane-launch-XBGHM7DB.js');
687
+ const { governanceOf } = await import('./control-plane-launch-74EIIB5Z.js');
688
688
  if (await governanceOf({ cwd, env, home }) !== "governed") return void 0;
689
689
  recordMissingContext(dirs, sessionId, home);
690
690
  const launcher = `${cliInvocation()} claude`;
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
4
- import { autoConnect } from './chunk-7DXVL7TN.js';
4
+ import { autoConnect } from './chunk-IO2BBKG4.js';
5
5
  import { C } from './chunk-ANPNT6PM.js';
6
- import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-3N77LUQI.js';
7
- import { resolveRepoIdentity } from './chunk-GSSVJNP2.js';
6
+ import { defaultFetch, unauthorizedMessage, resolveGatewayCredentials } from './chunk-7QAJQDHS.js';
7
+ import { resolveRepoIdentity } from './chunk-Z7WMU3RA.js';
8
8
  import { parseWorkItemEnv } from './chunk-T2Q7ISPE.js';
9
9
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
10
10
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { TUNNEL_PORT, BRIDGE_ADDRESS, BRIDGE_CIDR } from './chunk-SI6WDF3U.js';
4
- import { EXEC_PORT } from './chunk-OGPEHSNW.js';
3
+ import { TUNNEL_PORT, BRIDGE_ADDRESS, BRIDGE_CIDR } from './chunk-CFFVCI2I.js';
4
+ import { EXEC_PORT } from './chunk-6KFJIU73.js';
5
5
  import { startTimeOf } from './chunk-JBJTC3UU.js';
6
- import { RELAY_PORT } from './chunk-G4W4B33M.js';
6
+ import { RELAY_PORT } from './chunk-SDAEXUIX.js';
7
7
  import { spawn, spawnSync } from 'child_process';
8
8
  import { symlinkSync, lstatSync, writeFileSync, chmodSync, mkdirSync, existsSync } from 'fs';
9
9
 
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { launcherPath, pathNotes, writeLauncher, LauncherWriteError } from './chunk-OS7DJOQJ.js';
4
- import { currentVersion, currentLink, versionDir, execStartLine, isInLayout, packageRootIn, switchCurrent } from './chunk-UMYYYF7B.js';
3
+ import { launcherPath, pathNotes, writeLauncher, LauncherWriteError } from './chunk-MN3PP45X.js';
4
+ import { currentVersion, currentLink, versionDir, execStartLine, isInLayout, packageRootIn, switchCurrent } from './chunk-YL3RWW7X.js';
5
5
  import { compareVersions } from './chunk-TQMI335S.js';
6
- import { runnerDir, RUNNER_DIR_MODE } from './chunk-PXGU3GKY.js';
6
+ import { runnerDir, RUNNER_DIR_MODE } from './chunk-GJ4KBHBD.js';
7
7
  import { lchownSync, lstatSync, realpathSync, readFileSync, mkdirSync, rmSync, cpSync, existsSync, readdirSync } from 'fs';
8
8
  import { dirname, sep, join } from 'path';
9
9
  import { spawnSync } from 'child_process';
@@ -776,6 +776,9 @@ function repositoriesOf(input) {
776
776
  function primaryOf(repositories) {
777
777
  return repositories.find((entry) => entry.primary) ?? repositories[0];
778
778
  }
779
+
780
+ // src/scrub-env.ts
781
+ var SCRUB_ENV_VARIABLE = "OUTERLAYER_SCRUB_ENV";
779
782
  var MAVEN_DIR = "maven";
780
783
  var MAVEN_SETTINGS_FILE = "settings.xml";
781
784
  var MAVEN_NO_PROXY_NOTE = "MAVEN_ARGS names its own global settings file, so the build's Maven gets no proxy from the runner";
@@ -918,6 +921,7 @@ function isReservedVariable(name) {
918
921
  function isRefusedInConfig(name) {
919
922
  return isReservedVariable(name) && !githubVariables().has(name);
920
923
  }
924
+ var NO_VARIABLES = [];
921
925
  function buildEnvironment(input) {
922
926
  const authored = authorEnvironment(input.identity?.author);
923
927
  const recipe = {};
@@ -934,16 +938,26 @@ function buildEnvironment(input) {
934
938
  };
935
939
  const variables = [];
936
940
  const skippedTokenVariables = [];
937
- for (const name of input.config.build?.variables ?? []) {
938
- if (tokenVariables().includes(name)) {
939
- skippedTokenVariables.push(name);
940
- continue;
941
+ if (input.factoryVariables !== void 0) {
942
+ for (const { name, value } of input.factoryVariables) {
943
+ if (isReservedVariable(name) || name in authored) continue;
944
+ if (builtIns && CLAUDE_CREDENTIAL_VARIABLES.includes(name)) continue;
945
+ passed[name] = value;
946
+ variables.push(name);
947
+ }
948
+ if (variables.length > 0) passed[SCRUB_ENV_VARIABLE] = variables.join(",");
949
+ } else {
950
+ for (const name of input.config.build?.variables ?? NO_VARIABLES) {
951
+ if (tokenVariables().includes(name)) {
952
+ skippedTokenVariables.push(name);
953
+ continue;
954
+ }
955
+ const value = input.hostEnv[name];
956
+ if (value === void 0 || isReservedVariable(name) || name in authored) continue;
957
+ if (builtIns && CLAUDE_CREDENTIAL_VARIABLES.includes(name)) continue;
958
+ passed[name] = value;
959
+ variables.push(name);
941
960
  }
942
- const value = input.hostEnv[name];
943
- if (value === void 0 || isReservedVariable(name) || name in authored) continue;
944
- if (builtIns && CLAUDE_CREDENTIAL_VARIABLES.includes(name)) continue;
945
- passed[name] = value;
946
- variables.push(name);
947
961
  }
948
962
  const nodeOptions = {};
949
963
  if (input.imageEnv !== void 0) {
@@ -999,6 +1013,7 @@ function checkEnvironment(input) {
999
1013
  containerEnv: input.containerEnv,
1000
1014
  builtIns: false,
1001
1015
  imageEnv: input.imageEnv,
1016
+ factoryVariables: input.factoryVariables,
1002
1017
  // A check container is given no settings file, so a `MAVEN_ARGS` naming one would break the check's Maven.
1003
1018
  mavenProxy: false
1004
1019
  });
@@ -1050,4 +1065,4 @@ function routesOf(counts) {
1050
1065
  return routes.length === 0 ? {} : { routes };
1051
1066
  }
1052
1067
 
1053
- export { AGENT_CREDENTIAL_MISSING, BUILD_HOME, BUILD_SLICE_MEMORY_ENV, BUILT_IN_NAMES, CHECKOUT_DIR, CHECK_ITEMS_FILE, CLAUDE_CREDENTIAL_ID, CLAUDE_CREDENTIAL_VARIABLES, CLAUDE_ENV_FILE, CLAUDE_PORT, CLAUDE_SOCKET, DESTINATION_BASE_PORT, EVAL_INPUT_DIR, FD_SLOTS_PER_BUILD, FD_STORE_ENV, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, GATEWAY_PORT, GATEWAY_SOCKET, JOB_MOUNT, MAVEN_NO_PROXY_NOTE, MAVEN_SETTINGS_FILE, MAVEN_SPACE_NOTE, MIN_SYSTEMD, PROXY_WARNING_FLAG, RELAY_PORT, authorEnvironment, buildEnvironment, buildMavenSettingsXml, builtInEnvironment, checkEnvironment, checkoutPath, claudeCredential, claudeCredentialVariablesSet, claudeEnvPath, commitIdentityRecord, containerLocalAddress, credentialLineIn, currentClaudeCredential, destinationEnvironment, fdName, headerVariables, heldClaudeCredential, inspectService, isRefusedInConfig, isReservedVariable, lifecycleWorkdir, managedClaudeCredential, mavenArgs, mavenSettingsXml, namesGlobalSettings, parseClaimIdentity, parseClaimedRepositories, parseIsolation, parseRunnerEnv, parseUnreachable, primaryOf, proxyEnvironment, readClaudeCredential, realFdStorePort, realInspectProbes, removedClaudeCredentialValues, repositoriesOf, repositoryPath, resolveDestinations, sharedUserEnvironment, startBuildServices, takeClaudeCredential, tokenHeader, withGitConfig, withHooksPath, withProxyWarningHidden, withTokenHeader, withTunnelRecord, withoutCredentialLines, writeBuildMavenSettings, writeMavenSettings };
1068
+ export { AGENT_CREDENTIAL_MISSING, BUILD_HOME, BUILD_SLICE_MEMORY_ENV, BUILT_IN_NAMES, CHECKOUT_DIR, CHECK_ITEMS_FILE, CLAUDE_CREDENTIAL_ID, CLAUDE_CREDENTIAL_VARIABLES, CLAUDE_ENV_FILE, CLAUDE_PORT, CLAUDE_SOCKET, DESTINATION_BASE_PORT, EVAL_INPUT_DIR, FD_SLOTS_PER_BUILD, FD_STORE_ENV, FORWARDED_CLAUDE_CREDENTIAL_VARIABLES, GATEWAY_PORT, GATEWAY_SOCKET, JOB_MOUNT, MAVEN_NO_PROXY_NOTE, MAVEN_SETTINGS_FILE, MAVEN_SPACE_NOTE, MIN_SYSTEMD, PROXY_WARNING_FLAG, RELAY_PORT, SCRUB_ENV_VARIABLE, authorEnvironment, buildEnvironment, buildMavenSettingsXml, builtInEnvironment, checkEnvironment, checkoutPath, claudeCredential, claudeCredentialVariablesSet, claudeEnvPath, commitIdentityRecord, containerLocalAddress, credentialLineIn, currentClaudeCredential, destinationEnvironment, fdName, headerVariables, heldClaudeCredential, inspectService, isRefusedInConfig, isReservedVariable, lifecycleWorkdir, managedClaudeCredential, mavenArgs, mavenSettingsXml, namesGlobalSettings, parseClaimIdentity, parseClaimedRepositories, parseIsolation, parseRunnerEnv, parseUnreachable, primaryOf, proxyEnvironment, readClaudeCredential, realFdStorePort, realInspectProbes, removedClaudeCredentialValues, repositoriesOf, repositoryPath, resolveDestinations, sharedUserEnvironment, startBuildServices, takeClaudeCredential, tokenHeader, withGitConfig, withHooksPath, withProxyWarningHidden, withTokenHeader, withTunnelRecord, withoutCredentialLines, writeBuildMavenSettings, writeMavenSettings };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { isVersion, compareVersions } from './chunk-TQMI335S.js';
4
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-PXGU3GKY.js';
4
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-GJ4KBHBD.js';
5
5
  import { readFileSync, mkdirSync, writeFileSync, renameSync } from 'fs';
6
6
  import { join } from 'path';
7
7
 
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-PXGU3GKY.js';
3
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-GJ4KBHBD.js';
4
4
  import { readFileSync, mkdirSync, writeFileSync, renameSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { scrubReason, stripTerminalControls } from './chunk-AE3OTPUU.js';
4
- import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-EMH2LNIE.js';
5
- import { RunnerAlreadyRunningError, readPidFile } from './chunk-YNMVVQOQ.js';
3
+ import { scrubReason, stripTerminalControls } from './chunk-4G4IH4A7.js';
4
+ import { checkFit, RUNNER_RESERVE_BYTES } from './chunk-V2VJYK46.js';
5
+ import { RunnerAlreadyRunningError, readPidFile } from './chunk-LQHCNXPK.js';
6
6
  import { isSameProcess } from './chunk-JBJTC3UU.js';
7
- import { isSignatureRefusal, postJson } from './chunk-6JZXIWX7.js';
8
- import { signerFor } from './chunk-MOI2KDLH.js';
9
- import { pidFilePath } from './chunk-PXGU3GKY.js';
7
+ import { isSignatureRefusal, postJson } from './chunk-JKNOJKVD.js';
8
+ import { signerFor } from './chunk-L5VHGRQE.js';
9
+ import { pidFilePath } from './chunk-GJ4KBHBD.js';
10
10
  import { readFileSync } from 'fs';
11
11
 
12
12
  createRequire(import.meta.url);
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { builtinKind, keepsHostBuilder } from './chunk-3EHDZTRT.js';
4
- import { parseSize } from './chunk-M3ME6TLQ.js';
5
- import { runnerDir } from './chunk-PXGU3GKY.js';
6
- import { FD_SLOTS_PER_BUILD, FD_STORE_ENV, BUILD_SLICE_MEMORY_ENV, CLAUDE_CREDENTIAL_ID, CLAUDE_ENV_FILE, credentialLineIn, withoutCredentialLines } from './chunk-G4W4B33M.js';
3
+ import { builtinKind, keepsHostBuilder } from './chunk-ZIKZZ4LK.js';
4
+ import { parseSize } from './chunk-HVQMIZ22.js';
5
+ import { runnerDir } from './chunk-GJ4KBHBD.js';
6
+ import { FD_SLOTS_PER_BUILD, FD_STORE_ENV, BUILD_SLICE_MEMORY_ENV, CLAUDE_CREDENTIAL_ID, CLAUDE_ENV_FILE, credentialLineIn, withoutCredentialLines } from './chunk-SDAEXUIX.js';
7
7
  import { existsSync, readFileSync, writeFileSync, chmodSync, renameSync } from 'fs';
8
8
  import { dirname, join } from 'path';
9
9
  import { spawnSync } from 'child_process';
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { checkStarterFiles, contextIsGoverned } from './chunk-XKJOIQ2Q.js';
4
- import { resolveCredentials, getJson, WorkCommandError } from './chunk-6JZXIWX7.js';
5
- import { isLinkedRepository } from './chunk-35JMYSUD.js';
4
+ import { resolveCredentials, getJson, WorkCommandError } from './chunk-JKNOJKVD.js';
5
+ import { isLinkedRepository } from './chunk-EUQZAH2W.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
- import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences, checkIgnoredSkillFolders } from './chunk-YHKU2NOZ.js';
7
+ import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences, checkIgnoredSkillFolders } from './chunk-LTYBHCL4.js';
8
8
  import { sanitizeTerminal } from './chunk-MECW77XP.js';
9
9
  import { checkFormerSkillNames } from './chunk-JWNH4ZTF.js';
10
- import { resolveGatewayCredentials, defaultFetch } from './chunk-3N77LUQI.js';
11
- import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-25GRRBTH.js';
10
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-7QAJQDHS.js';
11
+ import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-NHEU5CON.js';
12
12
  import { readStatuslineState, STATE_FRESH_MS } from './chunk-I7RZHMXW.js';
13
13
  import { hookCommandEscapesControlPlane, CONTROL_PLANE_DIR_VARIABLE } from './chunk-HCVLP7XA.js';
14
14
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
15
- import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-GSSVJNP2.js';
15
+ import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-Z7WMU3RA.js';
16
16
  import { cliInvocation } from './chunk-CRB3POP4.js';
17
17
  import { readSettings, settingsPath, isOurStatuslineSlot, statuslineWrappedOriginal, REGISTERED_EVENTS, isOurHookCommand, ourCommandBins, cliBinResolvable, ourDirectScriptBins, wrappedOriginalCommand } from './chunk-URIZRCRY.js';
18
18
  import { readDeliveryRecord, readDegraded, readSourceCache } from './chunk-YQR6E6OV.js';
@@ -1195,8 +1195,8 @@ function doctorExitCode(checks) {
1195
1195
 
1196
1196
  // src/doctor-report.ts
1197
1197
  async function gatherDoctorChecks() {
1198
- const { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK } = await import('./build-disk-7HS4UF7O.js');
1199
- const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-W2XWNR4C.js');
1198
+ const { DEFAULT_BUILD_DISK, DEFAULT_CACHE_DISK } = await import('./build-disk-C3WIAHCL.js');
1199
+ const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-WSZIWPP4.js');
1200
1200
  const configPath = defaultRunnerConfigPath();
1201
1201
  const runnerHost = hasRunnerBlock(configPath);
1202
1202
  const hooks = (() => {
@@ -1217,7 +1217,7 @@ async function gatherDoctorChecks() {
1217
1217
  const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
1218
1218
  checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
1219
1219
  } else if (hasRunnerBlock(configPath)) {
1220
- const { runnerHostChecks } = await import('./doctor-GVWQBHBC.js');
1220
+ const { runnerHostChecks } = await import('./doctor-KPKLFIJH.js');
1221
1221
  const gateway = (() => {
1222
1222
  try {
1223
1223
  const { url, apiKey, appId } = loadRunnerConfig(configPath);
@@ -1244,7 +1244,7 @@ async function gatherDoctorChecks() {
1244
1244
  const service = await (async () => {
1245
1245
  const { existsSync: existsSync3 } = await import('fs');
1246
1246
  if (process.platform !== "linux" || !existsSync3("/run/systemd/system")) return void 0;
1247
- const { inspectRunnerService } = await import('./find-unit-GGBRYOSO.js');
1247
+ const { inspectRunnerService } = await import('./find-unit-UKH6JH4S.js');
1248
1248
  return inspectRunnerService(configPath);
1249
1249
  })();
1250
1250
  checks.push(...await runnerHostChecks({ configPath, hooks, gateway, repos, runner, service }));
@@ -1,24 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { uploadSpooledSteps } from './chunk-VGRCZE6U.js';
3
+ import { uploadSpooledSteps } from './chunk-XSFR76J7.js';
4
4
  import { LaunchFilter } from './chunk-ESVW4MJY.js';
5
5
  import { RepoFilter } from './chunk-TBT347UY.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
7
  import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-MECW77XP.js';
8
- import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-3N77LUQI.js';
8
+ import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-7QAJQDHS.js';
9
9
  import { readCloudConfig, cloudConfigPath, writeCloudConfig } from './chunk-PJDQPF5N.js';
10
- import { signerFor, signRunnerRequest } from './chunk-MOI2KDLH.js';
11
- import { writeSyncStatus, spoolDir } from './chunk-25GRRBTH.js';
10
+ import { signerFor, signRunnerRequest } from './chunk-L5VHGRQE.js';
11
+ import { writeSyncStatus, spoolDir } from './chunk-NHEU5CON.js';
12
12
  import { readLatestProvenanceForSession, readContextProvenance } from './chunk-ZJSNLVCE.js';
13
13
  import { hookExecSpoolPath } from './chunk-2O5KA67H.js';
14
14
  import { applyReportedCost } from './chunk-BKO6JEZI.js';
15
15
  import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
16
- import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-GSSVJNP2.js';
16
+ import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-Z7WMU3RA.js';
17
17
  import { readLaunchSpoolState, launchStatusIsDecisive, launchedItemsBySession, launchesPath } from './chunk-T2Q7ISPE.js';
18
18
  import { cliInvocation } from './chunk-CRB3POP4.js';
19
19
  import { removeJournalHooks } from './chunk-TUSYOL2O.js';
20
20
  import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-EOTMDIYC.js';
21
21
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
22
+ import { SCRUB_ENV_VARIABLE } from './chunk-SDAEXUIX.js';
22
23
  import { dirname, basename, join, sep } from 'path';
23
24
  import { statSync, readFileSync, readdirSync, mkdirSync, writeFileSync, renameSync, existsSync, rmSync } from 'fs';
24
25
  import { execFileSync } from 'child_process';
@@ -37,8 +38,14 @@ function gitGlobalConfig(key) {
37
38
  return void 0;
38
39
  }
39
40
  }
40
- function installScrubContext(home, scrub) {
41
- setCustomScrubbers(scrub);
41
+ function withNamedEnvValues(scrub, env) {
42
+ const names = (env[SCRUB_ENV_VARIABLE] ?? "").split(",");
43
+ const values = names.map((name) => env[name]).filter((value) => value !== void 0 && value !== "");
44
+ if (values.length === 0) return scrub;
45
+ return { ...scrub, literals: [...scrub?.literals ?? [], ...values] };
46
+ }
47
+ function installScrubContext(home, scrub, env = process.env) {
48
+ setCustomScrubbers(withNamedEnvValues(scrub, env));
42
49
  setLocalIdentity({
43
50
  name: gitGlobalConfig("user.name"),
44
51
  email: gitGlobalConfig("user.email"),