@outerlayer/cli 0.34.0-next.20261027121359 → 0.34.0-next.20261027174501

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 (124) hide show
  1. package/dist/{agent-setup-UPRMGVB7.js → agent-setup-THDNZ5ME.js} +6 -6
  2. package/dist/{bridge-GVZUP3NU.js → bridge-MLB57JP6.js} +2 -2
  3. package/dist/build-25GDCEZ7.js +18 -0
  4. package/dist/{build-disk-WMIRA4RD.js → build-disk-NFMQCZM3.js} +8 -8
  5. package/dist/build-info.json +1 -1
  6. package/dist/{builder-XTAHDFV5.js → builder-OWDGC3VQ.js} +7 -7
  7. package/dist/{check-FAG4QKIX.js → check-IFHLERRX.js} +39 -39
  8. package/dist/{chunk-Q3ATWA2U.js → chunk-2YPOSVC7.js} +3 -3
  9. package/dist/{chunk-M6YTST7G.js → chunk-36M4KVBT.js} +2 -2
  10. package/dist/{chunk-W5EKMK37.js → chunk-3FTIUB7I.js} +1 -1
  11. package/dist/{chunk-L4DCIEVT.js → chunk-3RRYEZAC.js} +4 -4
  12. package/dist/{chunk-I2GHZ2VA.js → chunk-3VJYDWFV.js} +1 -1
  13. package/dist/{chunk-XEJ5USHY.js → chunk-4HA4S3U2.js} +6 -6
  14. package/dist/{chunk-CHDWAWQA.js → chunk-4QQJTJUN.js} +1 -1
  15. package/dist/{chunk-6SJ3DJDH.js → chunk-5ARXP3BP.js} +3 -3
  16. package/dist/{chunk-SGT7YU3X.js → chunk-5FHBVV25.js} +104 -59
  17. package/dist/{chunk-T375XV3H.js → chunk-62URQYCB.js} +1 -1
  18. package/dist/{chunk-NGZBVN6F.js → chunk-6IMQXBTZ.js} +6 -6
  19. package/dist/{chunk-66TKWWTX.js → chunk-7Q7GQELE.js} +5 -5
  20. package/dist/{chunk-B7LPFCIN.js → chunk-7SJNVGVC.js} +6 -6
  21. package/dist/{chunk-JKOONI3H.js → chunk-7TLGRE5F.js} +2 -2
  22. package/dist/{chunk-OOD5NDQA.js → chunk-A6PJSNP6.js} +349 -94
  23. package/dist/{chunk-LUYTNCMS.js → chunk-ANFNZCXZ.js} +5 -5
  24. package/dist/{chunk-LHUZVM3L.js → chunk-AV5T7HV3.js} +1 -1
  25. package/dist/{chunk-RMJSYOSV.js → chunk-BS3OYFAD.js} +1 -1
  26. package/dist/{chunk-PBZODW5X.js → chunk-BS4CZMT6.js} +1 -1
  27. package/dist/{chunk-HO4XRLAZ.js → chunk-CFJOONWM.js} +1 -1
  28. package/dist/{chunk-UC4OSOQS.js → chunk-CMMEJJTL.js} +10 -35
  29. package/dist/{chunk-YIBHQR3B.js → chunk-EYJRVHBN.js} +3 -3
  30. package/dist/{chunk-UYWGR35C.js → chunk-FLHBUQ2W.js} +7 -6
  31. package/dist/{chunk-N752ZNZ5.js → chunk-FVVHQIZR.js} +1 -1
  32. package/dist/{chunk-Z7THNFUU.js → chunk-GMKDAF37.js} +25 -6
  33. package/dist/{chunk-XZGURZHF.js → chunk-GPO7F757.js} +1 -1
  34. package/dist/{chunk-KFXPH7SJ.js → chunk-HJCNWEQK.js} +3 -3
  35. package/dist/{chunk-3NMDGGZS.js → chunk-JO4SAEHH.js} +3 -3
  36. package/dist/{chunk-ZV6GOXYA.js → chunk-JVNQNKHV.js} +1 -1
  37. package/dist/{chunk-RO2NZJHZ.js → chunk-JWMJMQRF.js} +4 -4
  38. package/dist/{chunk-ARPPH7VS.js → chunk-LSFP57LI.js} +257 -79
  39. package/dist/{chunk-TS2YACAQ.js → chunk-LYX2RRSF.js} +2 -2
  40. package/dist/{chunk-WS5E73JO.js → chunk-MXAYUZJF.js} +6 -6
  41. package/dist/{chunk-L7RPNSAA.js → chunk-NO6E72RM.js} +2 -2
  42. package/dist/{chunk-UXGWAAGQ.js → chunk-OHTMTMFX.js} +4 -4
  43. package/dist/{chunk-XSUM3E67.js → chunk-OP2L7OXA.js} +3 -3
  44. package/dist/{chunk-UDRBQI5J.js → chunk-PMIW6OGQ.js} +10 -10
  45. package/dist/{chunk-YGX72FUQ.js → chunk-QRIE4JZE.js} +3 -3
  46. package/dist/{chunk-QBBZGVZJ.js → chunk-RCAMBC3H.js} +3 -3
  47. package/dist/{chunk-KDSKFXPE.js → chunk-RJZZFAXS.js} +1 -1
  48. package/dist/{chunk-LTMFHECB.js → chunk-S5U6RKQX.js} +20 -20
  49. package/dist/{chunk-W774NREK.js → chunk-SKAML7GB.js} +3 -3
  50. package/dist/{chunk-QTAADTIO.js → chunk-T6ALNN3H.js} +1 -1
  51. package/dist/{chunk-DUG3JXAT.js → chunk-UZIAZXXO.js} +1 -1
  52. package/dist/{chunk-LXOBWRVC.js → chunk-W246VXU4.js} +3 -3
  53. package/dist/{chunk-J2X5CTYY.js → chunk-WR2GRWK3.js} +1 -1
  54. package/dist/{chunk-QUOITPN7.js → chunk-WX2HW2G2.js} +8 -1
  55. package/dist/{chunk-HDLON3RJ.js → chunk-X7M73LKT.js} +9 -2
  56. package/dist/{chunk-4IB5WUY2.js → chunk-Y4WJ4BLX.js} +6 -6
  57. package/dist/{chunk-SJY6A6EH.js → chunk-Y7MF32DM.js} +36 -22
  58. package/dist/{chunk-FRETDGET.js → chunk-Z4LFCJT6.js} +3 -3
  59. package/dist/{claude-launcher-SGZSOGKZ.js → claude-launcher-LYGS66AC.js} +1 -1
  60. package/dist/{cli-6QN7TH6U.js → cli-7S4PEKAV.js} +114 -113
  61. package/dist/{command-6T6RI5XY.js → command-GQVFZHJ2.js} +27 -27
  62. package/dist/{config-CWYMIXTV.js → config-5NWSCHIO.js} +9 -9
  63. package/dist/{connect-cmd-MY6SR4OK.js → connect-cmd-HB3K3AHE.js} +6 -6
  64. package/dist/{container-start-FDXR4QND.js → container-start-WRD3YZQR.js} +33 -33
  65. package/dist/{context-show-cmd-WRTV3ACH.js → context-show-cmd-RJIQS2KF.js} +7 -7
  66. package/dist/{control-plane-launch-UM4IHOJQ.js → control-plane-launch-TS4DFJF4.js} +5 -5
  67. package/dist/{demo-record-cmd-XBWTORVM.js → demo-record-cmd-VVZGUCWB.js} +4 -4
  68. package/dist/{demo-voice-cmd-FLU4GDKS.js → demo-voice-cmd-3ADGIWK6.js} +13 -13
  69. package/dist/{dist-ADKRGE7I.js → dist-BUSLJNSZ.js} +1 -1
  70. package/dist/{docker-IUPWQ2RK.js → docker-5VGCFZV2.js} +7 -7
  71. package/dist/{doctor-5VNZ2BLY.js → doctor-N4I6IEKP.js} +28 -28
  72. package/dist/{emit-artifact-cmd-RDXIWRFU.js → emit-artifact-cmd-WJT7AXTZ.js} +11 -11
  73. package/dist/{emit-criteria-cmd-EDJOWGKL.js → emit-criteria-cmd-45IYB535.js} +8 -8
  74. package/dist/{emit-demo-cmd-W3BXFFU3.js → emit-demo-cmd-AIIQNPXS.js} +13 -13
  75. package/dist/{emit-finding-cmd-TMZIOQIP.js → emit-finding-cmd-6YTJK2NA.js} +8 -8
  76. package/dist/{emit-result-cmd-P55JBD2W.js → emit-result-cmd-TZGFY743.js} +10 -10
  77. package/dist/{emit-step-cmd-Y7LKI7L3.js → emit-step-cmd-LGBTIAXC.js} +8 -8
  78. package/dist/{exec-client-FB3OBHOJ.js → exec-client-LR67CA24.js} +3 -3
  79. package/dist/find-unit-YGDFVHVU.js +19 -0
  80. package/dist/{findings-cmd-D64BYS7Z.js → findings-cmd-ETJXUDQI.js} +8 -8
  81. package/dist/{fleet-readiness-75KQEZ6E.js → fleet-readiness-MYIMDBF7.js} +5 -5
  82. package/dist/{governing-source-YYEU46PP.js → governing-source-GBJTVMK2.js} +10 -10
  83. package/dist/{guest-init-SGF6ZVZN.js → guest-init-GXPOW53F.js} +4 -4
  84. package/dist/{hook-fast-XX5HZOCR.js → hook-fast-5WOGLR7V.js} +1 -1
  85. package/dist/{host-checks-VKBAGGWH.js → host-checks-33ZTDTSH.js} +31 -31
  86. package/dist/{pending-GEDI4K7P.js → host-key-GAZM4EOH.js} +3 -3
  87. package/dist/{image-tag-MRWNQGXA.js → image-tag-OYHGRHVV.js} +3 -3
  88. package/dist/index.js +4 -4
  89. package/dist/{init-B5S5LMIL.js → init-2YOAKLDN.js} +24 -24
  90. package/dist/{init-BB2TLXVB.js → init-OXCOPKHP.js} +24 -24
  91. package/dist/{init-cmd-I2Z4VZSG.js → init-cmd-BUWWUQKM.js} +11 -11
  92. package/dist/{init-update-TIZILQXL.js → init-update-TXQHBY3H.js} +9 -9
  93. package/dist/{install-cmd-X4OHS36T.js → install-cmd-VZGXSS73.js} +5 -5
  94. package/dist/{logs-BPEOYWRW.js → logs-42QPBCMC.js} +2 -2
  95. package/dist/{loop-XULUT5HL.js → loop-M3XDFD6O.js} +38 -38
  96. package/dist/{machine-UYFUUSEQ.js → machine-3BI2SGAK.js} +24 -24
  97. package/dist/{mcp-serve-cmd-NCPWJJDZ.js → mcp-serve-cmd-LYJQO6U4.js} +4 -4
  98. package/dist/{paths-WXGOFVCF.js → paths-QLFRPIKS.js} +2 -2
  99. package/dist/{host-key-CNCHVNDC.js → pending-6DDSCXUD.js} +3 -3
  100. package/dist/{pidfile-MYLBUG2I.js → pidfile-WLZ427QQ.js} +3 -3
  101. package/dist/{record-Y2JIOP56.js → record-WGCMQLQS.js} +3 -3
  102. package/dist/{runner-env-Y2PBG7TR.js → runner-env-6FSJOSWS.js} +11 -11
  103. package/dist/{runner-identity-PL442M57.js → runner-identity-XODZ7YBP.js} +7 -7
  104. package/dist/{runner-key-L6LXC4QA.js → runner-key-KMTC4NCQ.js} +24 -24
  105. package/dist/{session-sender-AXROAZSC.js → session-sender-U54EQJNR.js} +11 -11
  106. package/dist/{spec-cmd-JG4QLGGJ.js → spec-cmd-EM24GTAM.js} +9 -9
  107. package/dist/{status-VOGNQ3NG.js → status-WVCQCBDQ.js} +31 -31
  108. package/dist/{sync-cmd-B3KQZJZO.js → sync-cmd-Y5RKWVF7.js} +10 -10
  109. package/dist/{update-steps-RSYFLNTL.js → update-steps-2D4YQAW2.js} +32 -32
  110. package/dist/{watch-IHZRBUYV.js → watch-X5VYY4LH.js} +10 -10
  111. package/dist/{work-claim-cmd-YEMHNW3H.js → work-claim-cmd-IU3YJQKR.js} +15 -15
  112. package/dist/{work-cmd-OWZS3ZXL.js → work-cmd-LUKJHAMH.js} +8 -8
  113. package/dist/{work-comment-cmd-ESBYAE4K.js → work-comment-cmd-BDNFAVKL.js} +9 -9
  114. package/dist/{work-demo-cmd-FT3FQWM7.js → work-demo-cmd-GPDJHU6F.js} +8 -8
  115. package/dist/{work-logs-cmd-K6NTURGR.js → work-logs-cmd-B6EX4RPE.js} +8 -8
  116. package/dist/{work-open-pr-cmd-NGD4Z2TO.js → work-open-pr-cmd-TRXDCMSG.js} +9 -9
  117. package/dist/{work-pr-cmd-274YUPQB.js → work-pr-cmd-5GUR5SIU.js} +8 -8
  118. package/dist/{work-proofs-cmd-JLSQHVKO.js → work-proofs-cmd-5BYAAW3H.js} +9 -9
  119. package/dist/{work-proofs-record-AYUWUFBE.js → work-proofs-record-USD4JWFP.js} +16 -16
  120. package/dist/{work-stop-cmd-VQLLLJ3H.js → work-stop-cmd-J47GZB2N.js} +8 -8
  121. package/package.json +1 -1
  122. package/skill-pack/maintained/outerlayer-build/SKILL.md +15 -0
  123. package/dist/build-ZDYL7ZGP.js +0 -18
  124. package/dist/find-unit-R4I5GJCH.js +0 -19
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { readNewestDemo } from './chunk-ER6KQCVJ.js';
4
- import { runEmitArtifact } from './chunk-L4DCIEVT.js';
4
+ import { runEmitArtifact } from './chunk-3RRYEZAC.js';
5
5
  import { VoiceDownloadError, downloadPinned, sha256OfFile } from './chunk-2PGI6RDE.js';
6
- import { VOICE_PACK_FILES, VOICE_PACK_VERSION } from './chunk-QUOITPN7.js';
6
+ import { VOICE_PACK_FILES, VOICE_PACK_VERSION } from './chunk-WX2HW2G2.js';
7
7
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
8
- import { autoConnect } from './chunk-YIBHQR3B.js';
8
+ import { autoConnect } from './chunk-EYJRVHBN.js';
9
9
  import { C } from './chunk-ANPNT6PM.js';
10
- import { defaultFetch, resolveGatewayCredentials } from './chunk-T375XV3H.js';
11
- import { resolveRepoIdentity } from './chunk-OOD5NDQA.js';
10
+ import { defaultFetch, resolveGatewayCredentials } from './chunk-62URQYCB.js';
11
+ import { resolveRepoIdentity } from './chunk-A6PJSNP6.js';
12
12
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
13
13
  import { ARTIFACT_MAX_BYTES, ARTIFACT_MAX_CAPTION_LENGTH, DEMO_RECORD_MEDIA_TYPE, ARTIFACT_MAX_REPLACES_TARGETS, DEMO_MANIFEST_LATEST_VERSION, DemoManifestSchema, ARTIFACT_KINDS } from './chunk-DINRXUQA.js';
14
14
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { currentLink } from './chunk-J2X5CTYY.js';
3
+ import { currentLink } from './chunk-WR2GRWK3.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';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RELAY_PORT, GATEWAY_SOCKET, GATEWAY_PORT, CLAUDE_SOCKET, CLAUDE_PORT, DESTINATION_BASE_PORT } from './chunk-Z7THNFUU.js';
3
+ import { RELAY_PORT, GATEWAY_SOCKET, GATEWAY_PORT, CLAUDE_SOCKET, CLAUDE_PORT, DESTINATION_BASE_PORT } from './chunk-GMKDAF37.js';
4
4
  import { symlinkSync, unlinkSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -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-I2GHZ2VA.js';
3
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-3VJYDWFV.js';
4
4
  import { readFileSync, mkdirSync, writeFileSync, renameSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -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-I2GHZ2VA.js';
4
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-3VJYDWFV.js';
5
5
  import { readFileSync, mkdirSync, writeFileSync, renameSync } from 'fs';
6
6
  import { join } from 'path';
7
7
 
@@ -1,11 +1,17 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { GH_VERSION, VOICE_PACK_FILES, VOICE_PACK_VERSION, FFMPEG_STATIC, FFMPEG_BUILD_TAG, GH_SHA256, TINI_SHA256, TINI_VERSION, HEADLESS_SHELL_REVISION, HEADLESS_SHELL_BASE_URL, PLAYWRIGHT_FFMPEG_BASE_URL, PLAYWRIGHT_FFMPEG_REVISION, HEADLESS_SHELL, PLAYWRIGHT_FFMPEG, PLAYWRIGHT_VERSION } from './chunk-QUOITPN7.js';
4
- import { PROXY_WARNING_FLAG } from './chunk-Z7THNFUU.js';
3
+ import { GH_VERSION, VOICE_PACK_FILES, VOICE_PACK_VERSION, FFMPEG_STATIC, FFMPEG_BUILD_TAG, GH_SHA256, TINI_SHA256, TINI_VERSION, HEADLESS_SHELL_REVISION, HEADLESS_SHELL_BASE_URL, PLAYWRIGHT_FFMPEG_BASE_URL, PLAYWRIGHT_FFMPEG_REVISION, HEADLESS_SHELL, PLAYWRIGHT_FFMPEG, PLAYWRIGHT_VERSION } from './chunk-WX2HW2G2.js';
4
+ import { PROXY_WARNING_FLAG } from './chunk-GMKDAF37.js';
5
5
  import { RELAY_ID, RELAY_USER } from './chunk-MESOOLF4.js';
6
6
 
7
7
  createRequire(import.meta.url);
8
8
 
9
+ // src/runner/image/claude-wrapper.ts
10
+ function claudeWrapperScript(opts) {
11
+ const path = opts.universal ? 'PATH="$PATH:/opt/outerlayer/bin"' : "PATH=/opt/outerlayer/bin:$PATH";
12
+ return ["#!/bin/sh", path, "export PATH", 'exec /opt/outerlayer/claude/bin/claude "$@"', ""].join("\n");
13
+ }
14
+
9
15
  // src/runner/image/dockerfiles.ts
10
16
  var FETCHED_DIR = "fetched";
11
17
  var FETCHED_VOICE_DIR = "voice";
@@ -30,37 +36,6 @@ function plain(name, value, allowed) {
30
36
  if (!allowed.test(value)) throw new Error(`${name} holds a character a Dockerfile line cannot carry safely: ${JSON.stringify(value)}`);
31
37
  return value;
32
38
  }
33
- var DEFAULT_PACKAGES = ["git", "ca-certificates", "curl", "build-essential", "python3", "python3-pip", "python3-venv", "unzip", "jq"];
34
- function defaultDockerfile(baseImage, nodeImage) {
35
- return [
36
- ubuntuWithNode(baseImage, nodeImage, DEFAULT_PACKAGES),
37
- // The browsers live in one shared folder so any user finds them. A build container's root filesystem is
38
- // read-only, so the build user cannot add to this folder: a repository that needs another Playwright version
39
- // installs that version's Chromium into a writable folder by setting PLAYWRIGHT_BROWSERS_PATH.
40
- // `install --with-deps` runs apt-get as root and works on amd64 and arm64.
41
- "ENV PLAYWRIGHT_BROWSERS_PATH=/ms-playwright",
42
- "RUN mkdir -p /ms-playwright \\",
43
- ` && npx -y playwright@${plain("the Playwright version", PLAYWRIGHT_VERSION, /^[0-9.]+$/)} install --with-deps chromium \\`,
44
- " && chmod -R a+rX /ms-playwright \\",
45
- " && rm -rf /var/lib/apt/lists/* /root/.npm",
46
- ""
47
- ].join("\n");
48
- }
49
- function ubuntuWithNode(baseImage, nodeImage, packages) {
50
- return [
51
- `FROM ${baseImage}`,
52
- "ENV DEBIAN_FRONTEND=noninteractive",
53
- "RUN apt-get update \\",
54
- ` && apt-get install -y --no-install-recommends ${packages.join(" ")} \\`,
55
- " && rm -rf /var/lib/apt/lists/*",
56
- `COPY --from=${nodeImage} /usr/local/bin/node /usr/local/bin/node`,
57
- `COPY --from=${nodeImage} /usr/local/lib/node_modules /usr/local/lib/node_modules`,
58
- "RUN ln -s ../lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm \\",
59
- " && ln -s ../lib/node_modules/npm/bin/npx-cli.js /usr/local/bin/npx \\",
60
- " && ln -s ../lib/node_modules/corepack/dist/corepack.js /usr/local/bin/corepack",
61
- ""
62
- ].join("\n");
63
- }
64
39
  function toolsDockerfile(parts) {
65
40
  const recipeImage = plain("the recipe image", parts.recipeImage, /^[A-Za-z0-9_.:@/-]+$/);
66
41
  const nodeImage = plain("the Node image", parts.nodeImage, /^[A-Za-z0-9_.:@/-]+$/);
@@ -131,7 +106,7 @@ function toolsDockerfile(parts) {
131
106
  "RUN mkdir -p /out/opt/outerlayer/bin /out/usr/local/bin /out/etc/claude-code /out/build \\",
132
107
  " && cp /usr/local/bin/node /out/opt/outerlayer/bin/node \\",
133
108
  ` && printf '%s\\n' '#!/bin/sh' 'exec /opt/outerlayer/bin/node /opt/outerlayer/cli/dist/index.js "$@"' > /out/usr/local/bin/outerlayer \\`,
134
- ` && printf '%s\\n' '#!/bin/sh' 'PATH=/opt/outerlayer/bin:$PATH' 'export PATH' 'exec /opt/outerlayer/claude/bin/claude "$@"' > /out/usr/local/bin/claude \\`,
109
+ ` && printf '%s\\n' ${claudeWrapperScript({ universal: parts.universal === true }).trimEnd().split("\n").map((line) => `'${line}'`).join(" ")} > /out/usr/local/bin/claude \\`,
135
110
  ` && printf '%s\\n' '${tools}' > /out/opt/outerlayer/tools.json \\`,
136
111
  ` && printf '%s\\n' '${managedSettings}' > /out/etc/claude-code/managed-settings.json \\`,
137
112
  " && chmod 0755 /out/usr/local/bin/outerlayer /out/usr/local/bin/claude \\",
@@ -298,4 +273,4 @@ function browserStage(parts) {
298
273
  ];
299
274
  }
300
275
 
301
- export { FETCHED_DIR, FETCHED_FFMPEG, FETCHED_GH, FETCHED_HEADLESS_SHELL, FETCHED_PLAYWRIGHT_FFMPEG, FETCHED_TINI, FETCHED_VOICE_DIR, IMAGE_BROWSER, defaultDockerfile, toolsDockerfile };
276
+ export { FETCHED_DIR, FETCHED_FFMPEG, FETCHED_GH, FETCHED_HEADLESS_SHELL, FETCHED_PLAYWRIGHT_FFMPEG, FETCHED_TINI, FETCHED_VOICE_DIR, IMAGE_BROWSER, toolsDockerfile };
@@ -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-L7RPNSAA.js';
4
- import { resolveGatewayCredentials } from './chunk-T375XV3H.js';
3
+ import { fetchFactories, selectFactory, saveFactoryConnection, autoConnectedLine } from './chunk-NO6E72RM.js';
4
+ import { resolveGatewayCredentials } from './chunk-62URQYCB.js';
5
5
  import { readCloudConfig } from './chunk-PJDQPF5N.js';
6
6
  import { findGitDirs, readRepoConnection } from './chunk-BJ3KTMDH.js';
7
- import { resolveRepoIdentity } from './chunk-OOD5NDQA.js';
7
+ import { resolveRepoIdentity } from './chunk-A6PJSNP6.js';
8
8
  import { cliInvocation } from './chunk-CRB3POP4.js';
9
9
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
10
10
 
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { resolveDevcontainerCli, devcontainerBuildInvocation, RecipeError } from './chunk-HDLON3RJ.js';
4
- import { BUILDKIT_IMAGE } from './chunk-QUOITPN7.js';
5
- import { ensureHostKey } from './chunk-KDSKFXPE.js';
6
- import { compareVersions } from './chunk-OOD5NDQA.js';
7
- import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-I2GHZ2VA.js';
8
- import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-Z7THNFUU.js';
3
+ import { resolveDevcontainerCli, devcontainerBuildInvocation, universalImagePending, RecipeError } from './chunk-X7M73LKT.js';
4
+ import { universalImagePinned, UNIVERSAL_IMAGE, BUILDKIT_IMAGE } from './chunk-WX2HW2G2.js';
5
+ import { ensureHostKey } from './chunk-RJZZFAXS.js';
6
+ import { compareVersions } from './chunk-A6PJSNP6.js';
7
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, runnerDir, jobsDir } from './chunk-3VJYDWFV.js';
8
+ import { CLAUDE_PORT, JOB_MOUNT, GATEWAY_PORT, GATEWAY_SOCKET, CLAUDE_SOCKET, RELAY_PORT, DESTINATION_BASE_PORT } from './chunk-GMKDAF37.js';
9
9
  import { JOIN_DIR, RELAY_ID, JOIN_SOCKET, TARGET_GATEWAY, TARGET_CLAUDE, destinationTarget, RELAY_USER } from './chunk-MESOOLF4.js';
10
10
  import { createHash } from 'crypto';
11
11
  import { mkdirSync, createWriteStream, rmSync, existsSync, readFileSync, chmodSync, writeFileSync, realpathSync, readdirSync, renameSync } from 'fs';
@@ -207,6 +207,7 @@ function createDockerHost(deps = {}) {
207
207
  },
208
208
  async buildDockerfile(req) {
209
209
  const builder = builderFor();
210
+ if (!universalImagePinned() && req.dockerfile.includes(UNIVERSAL_IMAGE)) throw universalImagePending();
210
211
  if (req.layoutOut !== void 0) {
211
212
  rmSync(req.layoutOut, { recursive: true, force: true });
212
213
  }
@@ -5,7 +5,7 @@ import { addStdioMcpEntryIfAbsent, addDocsMcpEntryIfAbsent, DOCS_MCP_SERVER_NAME
5
5
  import { installStarterPack } from './chunk-J7EJMIDR.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
7
  import { AGENTS_MD_LAYOUT, declareAgentsMdLayout, linkClaudeSkills, SKILLS_LINK_PATH, describeSkillsLink, isAgentsMdLayout, holdsTodaysLayoutSources, discoverOuterlayerPaths } from './chunk-LYCJQOO2.js';
8
- import { resolveGitCommonDir, defaultGitRunner } from './chunk-M6YTST7G.js';
8
+ import { resolveGitCommonDir, defaultGitRunner } from './chunk-36M4KVBT.js';
9
9
  import { loadTemplateFiles, loadMaintainedFiles, skillDir, AGENTS_SKILLS_BASE } from './chunk-OVNF4LLC.js';
10
10
  import { cliInvocation } from './chunk-CRB3POP4.js';
11
11
  import { linkedAgentsPath } from './chunk-UPA5KOOX.js';
@@ -887,7 +887,19 @@ function withProxyWarningHidden(options) {
887
887
  if (given.split(/\s+/).includes(PROXY_WARNING_FLAG)) return given;
888
888
  return given === "" ? PROXY_WARNING_FLAG : `${given} ${PROXY_WARNING_FLAG}`;
889
889
  }
890
- function runnerLiterals(repository, repositories = []) {
890
+ function withoutProxyWarningFlag(options) {
891
+ return options.split(/\s+/).filter((option) => option !== "" && option !== PROXY_WARNING_FLAG).join(" ");
892
+ }
893
+ function nodeAcceptsProxyWarningFlag(version) {
894
+ const match = /^v?(\d+)\.(\d+)/.exec(version.trim());
895
+ if (match === null) return true;
896
+ const major = Number(match[1]);
897
+ const minor = Number(match[2]);
898
+ if (major === 20) return minor >= 11;
899
+ if (major === 21) return minor >= 3;
900
+ return major >= 22;
901
+ }
902
+ function runnerLiterals(repository, repositories = [], unpinnedRuntimes) {
891
903
  return {
892
904
  OUTERLAYER_JOB_DIR: JOB_MOUNT,
893
905
  HOME: BUILD_HOME,
@@ -902,7 +914,9 @@ function runnerLiterals(repository, repositories = []) {
902
914
  OUTERLAYER_REPOSITORIES: JSON.stringify(
903
915
  repositories.map((entry) => ({ repository: entry.repository, path: checkoutPath(entry), branch: entry.branch, primary: entry.primary }))
904
916
  )
905
- }
917
+ },
918
+ // What the build's command reads to find the runtimes each repository uses but does not pin, on the universal image.
919
+ ...unpinnedRuntimes === void 0 ? {} : { OUTERLAYER_UNPINNED_RUNTIMES: JSON.stringify(unpinnedRuntimes) }
906
920
  };
907
921
  }
908
922
  function containerBuiltInAddress(name) {
@@ -962,8 +976,13 @@ function buildEnvironment(input) {
962
976
  }
963
977
  const nodeOptions = {};
964
978
  if (input.imageEnv !== void 0) {
965
- if (passed.NODE_OPTIONS !== void 0) passed.NODE_OPTIONS = withProxyWarningHidden(passed.NODE_OPTIONS);
966
- else nodeOptions.NODE_OPTIONS = withProxyWarningHidden(recipe.NODE_OPTIONS ?? input.imageEnv.NODE_OPTIONS);
979
+ const hide = input.proxyWarning !== false;
980
+ const apply = (value) => hide ? withProxyWarningHidden(value) : value === void 0 ? void 0 : withoutProxyWarningFlag(value);
981
+ if (passed.NODE_OPTIONS !== void 0) passed.NODE_OPTIONS = apply(passed.NODE_OPTIONS);
982
+ else {
983
+ const value = apply(recipe.NODE_OPTIONS ?? input.imageEnv.NODE_OPTIONS);
984
+ if (value !== void 0) nodeOptions.NODE_OPTIONS = value;
985
+ }
967
986
  }
968
987
  const mavenLiterals = {};
969
988
  const notices = [];
@@ -993,7 +1012,7 @@ function buildEnvironment(input) {
993
1012
  ...nodeOptions,
994
1013
  ...mavenLiterals,
995
1014
  ...destinations,
996
- ...runnerLiterals(input.repository, repositoriesOf({ repositories: input.repositories, repository: input.repository, branch: input.branch })),
1015
+ ...runnerLiterals(input.repository, repositoriesOf({ repositories: input.repositories, repository: input.repository, branch: input.branch }), input.unpinnedRuntimes),
997
1016
  ...builtInLiterals,
998
1017
  ...authored,
999
1018
  ...hooks
@@ -1066,4 +1085,4 @@ function routesOf(counts) {
1066
1085
  return routes.length === 0 ? {} : { routes };
1067
1086
  }
1068
1087
 
1069
- 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 };
1088
+ 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, nodeAcceptsProxyWarningFlag, 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,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RELAY_PORT, BUILD_HOME } from './chunk-Z7THNFUU.js';
3
+ import { RELAY_PORT, BUILD_HOME } from './chunk-GMKDAF37.js';
4
4
  import { createServer, connect } from 'net';
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 { resolveCredentials, postJson, getJson } from './chunk-NGZBVN6F.js';
3
+ import { resolveCredentials, postJson, getJson } from './chunk-6IMQXBTZ.js';
4
4
  import { detectActiveSession } from './chunk-IP7BIBXJ.js';
5
5
  import { C } from './chunk-ANPNT6PM.js';
6
6
  import { sanitizeTerminal } from './chunk-IXPH4EXK.js';
7
- import { defaultFetch } from './chunk-T375XV3H.js';
8
- import { resolveRepoIdentity } from './chunk-OOD5NDQA.js';
7
+ import { defaultFetch } from './chunk-62URQYCB.js';
8
+ import { resolveRepoIdentity } from './chunk-A6PJSNP6.js';
9
9
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
10
10
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
11
11
  import { randomUUID } from 'crypto';
@@ -2,11 +2,11 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
4
4
  import { detectActiveSession, transcriptPathForSession } from './chunk-IP7BIBXJ.js';
5
- import { autoConnect } from './chunk-YIBHQR3B.js';
5
+ import { autoConnect } from './chunk-EYJRVHBN.js';
6
6
  import { C } from './chunk-ANPNT6PM.js';
7
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-T375XV3H.js';
7
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-62URQYCB.js';
8
8
  import { readLatestProvenanceForSession } from './chunk-ZJSNLVCE.js';
9
- import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-OOD5NDQA.js';
9
+ import { resolveRepoIdentity, defaultProjectsDir, findTranscripts, sessionIdFromPath, scrubText } from './chunk-A6PJSNP6.js';
10
10
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
11
11
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
12
12
  import { cliInvocation } from './chunk-CRB3POP4.js';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { EXEC_PORT } from './chunk-RMJSYOSV.js';
3
+ import { EXEC_PORT } from './chunk-BS3OYFAD.js';
4
4
  import { createConnection } from 'net';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -1,10 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-TS2YACAQ.js';
4
- import { parseSize } from './chunk-UYWGR35C.js';
5
- import { builderDiskPinned } from './chunk-QUOITPN7.js';
3
+ import { DEFAULT_CACHE_DISK, DEFAULT_BUILD_DISK } from './chunk-LYX2RRSF.js';
4
+ import { parseSize } from './chunk-FLHBUQ2W.js';
5
+ import { builderDiskPinned } from './chunk-WX2HW2G2.js';
6
6
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
7
- import { isRefusedInConfig, resolveDestinations, isReservedVariable } from './chunk-Z7THNFUU.js';
7
+ import { isRefusedInConfig, resolveDestinations, isReservedVariable } from './chunk-GMKDAF37.js';
8
8
  import { existsSync, statSync, accessSync, constants, readFileSync } from 'fs';
9
9
  import { hostname } from 'os';
10
10
  import { join } from 'path';