@outerlayer/cli 0.33.0-next.20261021171625 → 0.33.0-next.20261021223634

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 (121) hide show
  1. package/README.md +6 -2
  2. package/dist/{agent-setup-NSUX64RU.js → agent-setup-UY5NBT7C.js} +13 -13
  3. package/dist/{artifact-link-cmd-IGVFGHC2.js → artifact-link-cmd-2MBHG3PO.js} +2 -2
  4. package/dist/{build-HU24C46Z.js → build-SK5BYBER.js} +4 -4
  5. package/dist/build-info.json +1 -1
  6. package/dist/{builder-QECLC243.js → builder-K2XIVSSZ.js} +6 -6
  7. package/dist/{check-4BL6XRWJ.js → check-AXDPZJU4.js} +39 -39
  8. package/dist/chunk-2PGI6RDE.js +90 -0
  9. package/dist/{chunk-ZZSQYOY5.js → chunk-3VGDZ23W.js} +1 -1
  10. package/dist/{chunk-ZAJKEHIE.js → chunk-4IG6EZHU.js} +2 -2
  11. package/dist/{chunk-NJS7JJYN.js → chunk-52C3SSNF.js} +2 -2
  12. package/dist/{chunk-IWYS4ERC.js → chunk-533QGXGZ.js} +1 -1
  13. package/dist/{chunk-LESWVXRE.js → chunk-5RUH3PCG.js} +5 -5
  14. package/dist/{chunk-X2Y3B4JH.js → chunk-6TFTRVOA.js} +3 -3
  15. package/dist/{chunk-YGXKXL4Q.js → chunk-72YES3RL.js} +61 -93
  16. package/dist/{chunk-ZBN4JGTJ.js → chunk-A3H27SYX.js} +1 -1
  17. package/dist/{chunk-3WW2TL7V.js → chunk-AKHGQKNR.js} +64 -4
  18. package/dist/{chunk-XT5SOJRC.js → chunk-AKR32WHV.js} +1 -1
  19. package/dist/{chunk-P7BEZAEU.js → chunk-ALSE7YKX.js} +11 -3
  20. package/dist/{chunk-5T2VOSIL.js → chunk-CHXYLCMA.js} +4 -4
  21. package/dist/{chunk-GXKWPOK6.js → chunk-CMU6QJHE.js} +3 -3
  22. package/dist/{chunk-TZQIEUDE.js → chunk-CNRMP6EN.js} +1 -1
  23. package/dist/{chunk-UJIG5BU7.js → chunk-CV2S5L4J.js} +42 -18
  24. package/dist/{chunk-OF4TFWKR.js → chunk-DE7YSNDX.js} +3 -3
  25. package/dist/{chunk-3H7NZPYG.js → chunk-DM4EGXDO.js} +1 -1
  26. package/dist/{chunk-H6Y5D6J7.js → chunk-EG7KPSSP.js} +7 -7
  27. package/dist/{chunk-KP6R7CV3.js → chunk-ESP5VZBD.js} +4 -1
  28. package/dist/{chunk-RQGHHEM7.js → chunk-HBBCQ5NE.js} +2 -2
  29. package/dist/{chunk-NHXJU7CM.js → chunk-HT7LVCTX.js} +2 -2
  30. package/dist/{chunk-T5TBGOT6.js → chunk-IPJ6HR7E.js} +1 -1
  31. package/dist/{chunk-APSYTJ6I.js → chunk-JT3YO5MH.js} +1 -1
  32. package/dist/{chunk-QNVIGO5X.js → chunk-KDM77TVX.js} +5 -5
  33. package/dist/{chunk-YW4PEGLN.js → chunk-KUTZ6XLS.js} +1 -1
  34. package/dist/{chunk-RHBFNZ7J.js → chunk-LBPK2TPR.js} +24 -8
  35. package/dist/{chunk-X7UUIHGH.js → chunk-LH3KULPL.js} +1 -1
  36. package/dist/{chunk-LK2S5XZH.js → chunk-LHYO4RDP.js} +9 -1
  37. package/dist/{chunk-WXEPMPHK.js → chunk-LN4WDONI.js} +1 -1
  38. package/dist/{chunk-FE3RTGJN.js → chunk-M5OBRUQE.js} +2 -2
  39. package/dist/{chunk-WHSYPR3U.js → chunk-M5ZXOQYS.js} +1 -1
  40. package/dist/{chunk-OX7CHZTJ.js → chunk-N3KK5BKF.js} +7 -7
  41. package/dist/{chunk-4LU7MFJO.js → chunk-NOXK3QW6.js} +4 -4
  42. package/dist/{chunk-2FPEB36J.js → chunk-O6NG67Y7.js} +5 -5
  43. package/dist/{chunk-JUXATN46.js → chunk-OGCG5LOX.js} +1 -1
  44. package/dist/{chunk-XRQ7DABQ.js → chunk-Q2D4M3GC.js} +1 -1
  45. package/dist/{chunk-3RS3RNGH.js → chunk-Q4YVHYHT.js} +3 -3
  46. package/dist/{chunk-INCKTGMM.js → chunk-RQKQTRXM.js} +5 -5
  47. package/dist/{chunk-D73OLAYE.js → chunk-RVWADVBN.js} +4 -4
  48. package/dist/{chunk-6C3ZVE62.js → chunk-RW52CUFX.js} +1 -1
  49. package/dist/{chunk-XFS2TMOB.js → chunk-SFJD4MRY.js} +7 -7
  50. package/dist/{chunk-77F7NGAZ.js → chunk-TA6TFYAN.js} +3 -3
  51. package/dist/{chunk-GI6LOIHS.js → chunk-TNJXCNQ6.js} +4 -4
  52. package/dist/{chunk-BSHUTMXV.js → chunk-TPGHCH2H.js} +45 -19
  53. package/dist/{chunk-X7ML37UF.js → chunk-UIBTEDLA.js} +7 -7
  54. package/dist/{chunk-QCDVKCHA.js → chunk-UWEJ6HGB.js} +2 -2
  55. package/dist/{chunk-F3EF56LQ.js → chunk-VQ2JGZSC.js} +1 -1
  56. package/dist/{chunk-MV52FCSG.js → chunk-X5LFLYSD.js} +1258 -591
  57. package/dist/{chunk-KURUM765.js → chunk-Y3LIJIRH.js} +4 -4
  58. package/dist/{chunk-LRBOBYQI.js → chunk-YH2632RT.js} +6 -6
  59. package/dist/{chunk-JJ4W5LVF.js → chunk-ZRTMS4C7.js} +13 -13
  60. package/dist/{claude-launcher-RNMUZZ3Y.js → claude-launcher-STSKZNW3.js} +5 -5
  61. package/dist/{cli-PNQX4HRX.js → cli-LYJEJTQG.js} +124 -119
  62. package/dist/{command-LA7T5YFX.js → command-2JEY6X6U.js} +29 -28
  63. package/dist/{config-3JRFDYZL.js → config-CUJ3Q4L2.js} +1 -1
  64. package/dist/{connect-cmd-2AXEPDT2.js → connect-cmd-WFHAPGCZ.js} +11 -11
  65. package/dist/{container-start-4LIRN2LX.js → container-start-TTEHOSJK.js} +29 -28
  66. package/dist/{context-cleanup-VSDT77BZ.js → context-cleanup-UBOJHGQM.js} +3 -3
  67. package/dist/{control-plane-launch-DHMD5WBU.js → control-plane-launch-R4X63DYW.js} +9 -9
  68. package/dist/{dist-DY2ZNEBS.js → dist-ADFLG3AY.js} +2 -2
  69. package/dist/{docker-EOP32YLH.js → docker-UYS5N5B7.js} +6 -6
  70. package/dist/{doctor-FDXHHPDJ.js → doctor-3XPT5F2Y.js} +38 -35
  71. package/dist/{emit-artifact-cmd-JY5V6WQI.js → emit-artifact-cmd-FR5PUUJR.js} +16 -16
  72. package/dist/{emit-cmd-T7NIBSF3.js → emit-cmd-JOO6ZTEI.js} +6 -6
  73. package/dist/{emit-criteria-cmd-XRFBNFN7.js → emit-criteria-cmd-DKPZJTIN.js} +12 -12
  74. package/dist/emit-demo-cmd-IVLL6OWZ.js +3027 -0
  75. package/dist/{emit-finding-cmd-5RHKQHE6.js → emit-finding-cmd-VM4KIVEM.js} +13 -13
  76. package/dist/{emit-result-cmd-65KJQ2UM.js → emit-result-cmd-SEKL6HUU.js} +15 -15
  77. package/dist/{emit-step-cmd-YZIN6B6P.js → emit-step-cmd-4YAWK4VE.js} +13 -13
  78. package/dist/{findings-cmd-Z6CKWAG4.js → findings-cmd-RXYIWXY4.js} +13 -13
  79. package/dist/{fleet-readiness-7ROJ54ZF.js → fleet-readiness-VIX76RNL.js} +11 -11
  80. package/dist/{governing-source-NMGGSA6Q.js → governing-source-APGCKDTS.js} +16 -16
  81. package/dist/{hook-fast-WQQYEXO5.js → hook-fast-NVBMSE3N.js} +1 -1
  82. package/dist/{host-key-KAYMYRO3.js → host-key-UEWE4PXB.js} +2 -2
  83. package/dist/{image-tag-NM2YT2J2.js → image-tag-V2LXTKK7.js} +2 -2
  84. package/dist/index.js +4 -4
  85. package/dist/{init-UBDZRWNE.js → init-BR4Z4T2Q.js} +28 -27
  86. package/dist/{init-OV6IOD2G.js → init-XWQJEW6H.js} +28 -27
  87. package/dist/{init-cmd-YP4TVN2S.js → init-cmd-IEMYX6KA.js} +21 -21
  88. package/dist/{init-update-24K7ZZWX.js → init-update-HOTJISWA.js} +20 -20
  89. package/dist/{install-OIRIEOS7.js → install-3DBYJITP.js} +3 -3
  90. package/dist/{install-cmd-IYWVR6WX.js → install-cmd-EELSKBSZ.js} +4 -4
  91. package/dist/{layout-OQ7EJUMH.js → layout-ZI4RJ6MT.js} +4 -4
  92. package/dist/{login-browser-KP7YVYTN.js → login-browser-WUSIVD5E.js} +2 -2
  93. package/dist/{logs-C3RJ3ZTC.js → logs-ET75ZUCN.js} +1 -1
  94. package/dist/{loop-4FEA6E2S.js → loop-3NRAMJA4.js} +39 -39
  95. package/dist/{machine-3BMBF33L.js → machine-LUXL7SFT.js} +24 -23
  96. package/dist/{machine-skills-XWWYFNOZ.js → machine-skills-REHDWINX.js} +4 -4
  97. package/dist/{mcp-serve-cmd-PB4UOTGL.js → mcp-serve-cmd-WYUP263T.js} +3 -3
  98. package/dist/paths-BN7X2YPM.js +9 -0
  99. package/dist/{pending-RKVRYOTF.js → pending-ROAIK5WO.js} +2 -2
  100. package/dist/{pidfile-BMFAUQAI.js → pidfile-52TGLGQH.js} +2 -2
  101. package/dist/{record-26AH6WDB.js → record-BSY4BKJ5.js} +2 -2
  102. package/dist/{runner-env-66RAFIDJ.js → runner-env-H6XLACTG.js} +4 -4
  103. package/dist/{runner-identity-HTQNM5AG.js → runner-identity-DR5I3NBT.js} +6 -6
  104. package/dist/{runner-key-7I5FDQKR.js → runner-key-OLMCAOTD.js} +28 -27
  105. package/dist/{session-sender-MKDKMZJD.js → session-sender-PLQ5NOEW.js} +16 -16
  106. package/dist/{spec-cmd-V7W3UV6X.js → spec-cmd-NIAQWMLE.js} +13 -13
  107. package/dist/{starter-pack-6O7F6P7C.js → starter-pack-OESK7UX2.js} +5 -5
  108. package/dist/{status-TJDVDR4H.js → status-4HNX45UZ.js} +29 -29
  109. package/dist/{sync-cmd-AI4KTJ56.js → sync-cmd-UTESQMDU.js} +15 -15
  110. package/dist/{watch-C7IS6VNS.js → watch-4UC4FGI5.js} +15 -15
  111. package/dist/{work-claim-cmd-GFXIZWMU.js → work-claim-cmd-ODYRE44S.js} +16 -16
  112. package/dist/{work-cmd-UTD4Y7W3.js → work-cmd-QQDUI3YX.js} +13 -13
  113. package/dist/{work-comment-cmd-J3SRBK6A.js → work-comment-cmd-FIOMDPIZ.js} +13 -13
  114. package/dist/{work-logs-cmd-SH7MQPA3.js → work-logs-cmd-DA6MPQ6O.js} +13 -13
  115. package/dist/{work-open-pr-cmd-FIX5QLK7.js → work-open-pr-cmd-QG2FT7OW.js} +14 -14
  116. package/dist/{work-pr-cmd-S4IBR7DE.js → work-pr-cmd-XNXWWLS5.js} +13 -13
  117. package/dist/{work-stop-cmd-NECXJEJN.js → work-stop-cmd-2KLZ2UH2.js} +13 -13
  118. package/package.json +3 -1
  119. package/dist/chunk-YYYRBYWG.js +0 -32
  120. package/dist/emit-demo-cmd-JOVCVXIS.js +0 -888
  121. package/dist/paths-OK2EZS7W.js +0 -9
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { RESERVED_EMIT_NAMES, ARTIFACT_KINDS, ArtifactCriterionIdSchema } from './chunk-3WW2TL7V.js';
3
+ import { RESERVED_EMIT_NAMES, ARTIFACT_KINDS, ArtifactCriterionIdSchema } from './chunk-AKHGQKNR.js';
4
4
  import { __commonJS, __require, __toESM } from './chunk-Z5GEFMRW.js';
5
5
 
6
6
  createRequire(import.meta.url);
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { loadMachineSkillFiles, resolvePackRoot } from './chunk-YW4PEGLN.js';
3
+ import { loadMachineSkillFiles, resolvePackRoot } from './chunk-KUTZ6XLS.js';
4
4
  import { MAINTAINED_SKILLS, maintainedLineVersion } from './chunk-CDDED64E.js';
5
5
  import { resolvePackageVersion } from './chunk-RA3O54FC.js';
6
6
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { LiveUploader } from './chunk-XFS2TMOB.js';
4
- import { CaptureDaemon } from './chunk-XT5SOJRC.js';
5
- import { spoolDir } from './chunk-NHXJU7CM.js';
3
+ import { LiveUploader } from './chunk-SFJD4MRY.js';
4
+ import { CaptureDaemon } from './chunk-AKR32WHV.js';
5
+ import { spoolDir } from './chunk-HT7LVCTX.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,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
4
- import { autoConnect, detectActiveSession } from './chunk-X2Y3B4JH.js';
5
- import { acquireSpoolLockAt } from './chunk-3H7NZPYG.js';
6
- import { resolveRepoIdentity } from './chunk-XT5SOJRC.js';
4
+ import { autoConnect, detectActiveSession } from './chunk-6TFTRVOA.js';
5
+ import { acquireSpoolLockAt } from './chunk-DM4EGXDO.js';
6
+ import { resolveRepoIdentity } from './chunk-AKR32WHV.js';
7
7
  import { C } from './chunk-ANPNT6PM.js';
8
- import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-F3EF56LQ.js';
8
+ import { resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-VQ2JGZSC.js';
9
9
  import { launchedItemForSession } from './chunk-T2Q7ISPE.js';
10
10
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
11
- import { StepNameSchema, StepBodySchema } from './chunk-3WW2TL7V.js';
11
+ import { StepNameSchema, StepBodySchema } from './chunk-AKHGQKNR.js';
12
12
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
13
13
  import { randomUUID } from 'crypto';
14
14
  import { readFileSync, existsSync, mkdirSync, writeFileSync, renameSync, appendFileSync } from 'fs';
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { removeRetiredSkills } from './chunk-FE3RTGJN.js';
4
- import { defaultFetch, resolveGatewayCredentials } from './chunk-F3EF56LQ.js';
3
+ import { removeRetiredSkills } from './chunk-M5OBRUQE.js';
4
+ import { defaultFetch, resolveGatewayCredentials } from './chunk-VQ2JGZSC.js';
5
5
  import { withTokenHeader } from './chunk-HDSDUTX4.js';
6
6
  import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
7
- import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-YW4PEGLN.js';
7
+ import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-KUTZ6XLS.js';
8
8
  import { cliInvocation } from './chunk-CRB3POP4.js';
9
9
  import { writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, writeContextManifest, SOURCE_CACHE_TTL_SUCCESS_MS, readSourceCache, isSourceCacheFresh, clearDegraded } from './chunk-YQR6E6OV.js';
10
- import { normalizeRepoName, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-JUXATN46.js';
10
+ import { normalizeRepoName, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-OGCG5LOX.js';
11
11
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
12
12
  import { execFileSync } from 'child_process';
13
13
  import { existsSync, mkdirSync, writeFileSync, chmodSync, lstatSync, readFileSync, copyFileSync } from 'fs';
@@ -5,7 +5,7 @@ import { C } from './chunk-ANPNT6PM.js';
5
5
  import { readCloudConfigStrict, CloudConfigError, readCloudConfig, writeCloudConfig, cloudConfigPath } from './chunk-PJDQPF5N.js';
6
6
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
8
- import { CLI_LOGIN_MACHINE_NAME_MAX, CliLoginPollResponseSchema, CLI_LOGIN_KIND, CliLoginRefusalSchema, CliLoginStartedSchema } from './chunk-3WW2TL7V.js';
8
+ import { CLI_LOGIN_MACHINE_NAME_MAX, CliLoginPollResponseSchema, CLI_LOGIN_KIND, CliLoginRefusalSchema, CliLoginStartedSchema } from './chunk-AKHGQKNR.js';
9
9
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
10
10
  import { generateKeyPairSync, privateDecrypt, constants, createPrivateKey } from 'crypto';
11
11
  import { spawn } from 'child_process';
@@ -1,15 +1,15 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { uploadSpooledSteps } from './chunk-INCKTGMM.js';
3
+ import { uploadSpooledSteps } from './chunk-RQKQTRXM.js';
4
4
  import { LaunchFilter } from './chunk-ESVW4MJY.js';
5
5
  import { RepoFilter } from './chunk-TBT347UY.js';
6
- import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-3H7NZPYG.js';
7
- import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-XT5SOJRC.js';
6
+ import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-DM4EGXDO.js';
7
+ import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-AKR32WHV.js';
8
8
  import { C } from './chunk-ANPNT6PM.js';
9
- import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-F3EF56LQ.js';
9
+ import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-VQ2JGZSC.js';
10
10
  import { readCloudConfig, cloudConfigPath, writeCloudConfig } from './chunk-PJDQPF5N.js';
11
- import { signerFor, signRunnerRequest } from './chunk-APSYTJ6I.js';
12
- import { writeSyncStatus, spoolDir } from './chunk-NHXJU7CM.js';
11
+ import { signerFor, signRunnerRequest } from './chunk-JT3YO5MH.js';
12
+ import { writeSyncStatus, spoolDir } from './chunk-HT7LVCTX.js';
13
13
  import { readLatestProvenanceForSession, readContextProvenance } from './chunk-ZJSNLVCE.js';
14
14
  import { hookExecSpoolPath } from './chunk-2O5KA67H.js';
15
15
  import { applyReportedCost } from './chunk-BKO6JEZI.js';
@@ -17,7 +17,7 @@ import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.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
- import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-3WW2TL7V.js';
20
+ import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-AKHGQKNR.js';
21
21
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
22
22
  import { dirname, basename, join, sep } from 'path';
23
23
  import { statSync, readFileSync, readdirSync, mkdirSync, writeFileSync, renameSync, existsSync, rmSync } from 'fs';
@@ -1,9 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { launcherPath, writeLauncher, LauncherWriteError, pathNotes } from './chunk-ZBN4JGTJ.js';
4
- import { currentVersion, currentLink, isInLayout, packageRootIn, versionDir, switchCurrent, execStartLine } from './chunk-ZZSQYOY5.js';
3
+ import { launcherPath, writeLauncher, LauncherWriteError, pathNotes } from './chunk-A3H27SYX.js';
4
+ import { currentVersion, currentLink, isInLayout, packageRootIn, versionDir, switchCurrent, execStartLine } from './chunk-3VGDZ23W.js';
5
5
  import { compareVersions } from './chunk-TQMI335S.js';
6
- import { RUNNER_DIR_MODE } from './chunk-KP6R7CV3.js';
6
+ import { RUNNER_DIR_MODE } from './chunk-ESP5VZBD.js';
7
7
  import { realpathSync, readFileSync, mkdirSync, rmSync, cpSync, existsSync } from 'fs';
8
8
  import { dirname, sep, join } from 'path';
9
9
 
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { isAgentsMdLayout, discoverOuterlayerPaths, isForeignTree, toRepoRelative } from './chunk-ZAJKEHIE.js';
3
+ import { isAgentsMdLayout, discoverOuterlayerPaths, isForeignTree, toRepoRelative } from './chunk-4IG6EZHU.js';
4
4
  import { C } from './chunk-ANPNT6PM.js';
5
- import { retiredSkillPaths, removeRetiredSkills } from './chunk-FE3RTGJN.js';
6
- import { maintainedFilesForExistingSkills, loadMaintainedFiles, writeMaintainedFiles } from './chunk-YW4PEGLN.js';
5
+ import { retiredSkillPaths, removeRetiredSkills } from './chunk-M5OBRUQE.js';
6
+ import { maintainedFilesForExistingSkills, loadMaintainedFiles, writeMaintainedFiles } from './chunk-KUTZ6XLS.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
8
- import { emitTree, generatedHeaderSource, parseOuterlayerConfig, classifyTree } from './chunk-JUXATN46.js';
8
+ import { emitTree, generatedHeaderSource, parseOuterlayerConfig, classifyTree } from './chunk-OGCG5LOX.js';
9
9
  import { existsSync, readFileSync, mkdirSync, writeFileSync, copyFileSync, unlinkSync, rmdirSync, readdirSync } from 'fs';
10
10
  import { join, dirname } from 'path';
11
11
 
@@ -1,13 +1,13 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { claimPidFile, RunnerAlreadyRunningError, releasePidFile } from './chunk-T5TBGOT6.js';
3
+ import { claimPidFile, RunnerAlreadyRunningError, releasePidFile } from './chunk-IPJ6HR7E.js';
4
4
  import { startTimeOf } from './chunk-JBJTC3UU.js';
5
5
  import { RecipeError, locateRecipe, readRecipe, assertBuildable, writeSanitizedRecipe, classifyProperties, SANITIZED_NAME } from './chunk-3Z3MPR55.js';
6
- import { CLAUDE_CODE_VERSION, NODE_IMAGE, DEFAULT_BASE_IMAGE, MEDIA_PINS, TINI_VERSION, GH_VERSION, VOICE_PACK_FILES, VOICE_PACK_VERSION, FFMPEG_STATIC, FFMPEG_BUILD_TAG, GH_SHA256, TINI_SHA256 } from './chunk-LK2S5XZH.js';
7
- import { RUNNER_DIR_MODE, repoCacheDir, imagesDir, attemptStamp, runnerDir, rootfsPathFor, RUNNER_FILE_MODE } from './chunk-KP6R7CV3.js';
8
- import { withGitConfig, tokenHeader, PROXY_WARNING_FLAG } from './chunk-HDSDUTX4.js';
6
+ 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 } from './chunk-LHYO4RDP.js';
7
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE, repoCacheDir, imagesDir, attemptStamp, runnerDir, rootfsPathFor } from './chunk-ESP5VZBD.js';
8
+ import { PROXY_WARNING_FLAG, withGitConfig, tokenHeader } from './chunk-HDSDUTX4.js';
9
9
  import { RELAY_ID, RELAY_USER } from './chunk-MESOOLF4.js';
10
- import { mkdirSync, rmSync, existsSync, mkdtempSync, cpSync, readFileSync, writeFileSync, readdirSync, lstatSync, readlinkSync } from 'fs';
10
+ import { mkdirSync, rmSync, writeFileSync, existsSync, mkdtempSync, cpSync, readFileSync, readdirSync, lstatSync, readlinkSync } from 'fs';
11
11
  import { tmpdir } from 'os';
12
12
  import { dirname, join } from 'path';
13
13
  import { execFile } from 'child_process';
@@ -147,6 +147,11 @@ async function cloneRepository(remote, dest, timeoutMs = CLONE_TIMEOUT_MS) {
147
147
  }
148
148
 
149
149
  // src/runner/image/dockerfiles.ts
150
+ var FETCHED_DIR = "fetched";
151
+ var FETCHED_VOICE_DIR = "voice";
152
+ var FETCHED_FFMPEG = "ffmpeg.tar.xz";
153
+ var FETCHED_GH = "gh.tgz";
154
+ var FETCHED_TINI = "tini";
150
155
  function plain(name, value, allowed) {
151
156
  if (!allowed.test(value)) throw new Error(`${name} holds a character a Dockerfile line cannot carry safely: ${JSON.stringify(value)}`);
152
157
  return value;
@@ -185,26 +190,31 @@ function toolsDockerfile(parts) {
185
190
  const stream = `NODE_USE_ENV_PROXY=1 node ${PROXY_WARNING_FLAG} -e 'const{pipeline}=require("stream/promises"),{Readable}=require("stream"),fs=require("fs");fetch(process.argv[1]).then((r)=>{if(!r.ok)throw new Error(process.argv[1]+" "+r.status);return pipeline(Readable.fromWeb(r.body),fs.createWriteStream(process.argv[2]))})'`;
186
191
  const voiceDir = `/out/opt/outerlayer/voice/${VOICE_PACK_VERSION}`;
187
192
  const checks = VOICE_PACK_FILES.map((file) => `echo "${file.sha256} ${voiceDir}/${file.name}" | sha256sum -c -`);
188
- return [
193
+ const fetched = parts.fetched === true;
194
+ const voice = fetched ? [`FROM ${nodeImage} AS voice`, `COPY ${FETCHED_DIR}/${FETCHED_VOICE_DIR}/ ${voiceDir}/`, `RUN ${checks.join(" \\\n && ")} \\`, " && chmod -R a+rX /out"] : [
189
195
  // The voice pack streams to disk, one pinned file at a time, because a 300 MB model must not sit in a build's memory. Its own stage keeps it cached when the CLI changes.
190
196
  `FROM ${nodeImage} AS voice`,
191
197
  `RUN mkdir -p ${voiceDir} \\`,
192
198
  ...VOICE_PACK_FILES.map((file) => ` && ${stream} ${file.url} ${voiceDir}/${file.name} \\`),
193
199
  ...checks.map((check) => ` && ${check} \\`),
194
- " && chmod -R a+rX /out",
200
+ " && chmod -R a+rX /out"
201
+ ];
202
+ return [
203
+ ...voice,
195
204
  // ffmpeg and ffprobe are static LGPL builds. espeak-ng comes from the stage image's own package, with the libraries and loader it needs, and runs as a separate program.
196
205
  `FROM ${nodeImage} AS media`,
197
206
  "ARG TARGETARCH",
198
207
  "RUN apt-get update \\",
199
208
  " && apt-get install -y --no-install-recommends ca-certificates espeak-ng xz-utils \\",
200
209
  " && rm -rf /var/lib/apt/lists/*",
210
+ ...fetched ? [`COPY ${FETCHED_DIR}/${FETCHED_FFMPEG} /tmp/ffmpeg.tar.xz`] : [],
201
211
  "RUN set -eu \\",
202
212
  ` && case "$TARGETARCH" in \\`,
203
213
  ` amd64) ffmpeg_file=${FFMPEG_STATIC.amd64.file}; ffmpeg_sha=${FFMPEG_STATIC.amd64.sha256} ;; \\`,
204
214
  ` arm64) ffmpeg_file=${FFMPEG_STATIC.arm64.file}; ffmpeg_sha=${FFMPEG_STATIC.arm64.sha256} ;; \\`,
205
215
  ` *) echo "no pinned ffmpeg for $TARGETARCH" >&2; exit 1 ;; \\`,
206
216
  " esac \\",
207
- ` && ${download} https://github.com/BtbN/FFmpeg-Builds/releases/download/${FFMPEG_BUILD_TAG}/$ffmpeg_file /tmp/ffmpeg.tar.xz \\`,
217
+ ...fetched ? [] : [` && ${download} https://github.com/BtbN/FFmpeg-Builds/releases/download/${FFMPEG_BUILD_TAG}/$ffmpeg_file /tmp/ffmpeg.tar.xz \\`],
208
218
  ' && echo "$ffmpeg_sha /tmp/ffmpeg.tar.xz" | sha256sum -c - \\',
209
219
  " && tar -xJf /tmp/ffmpeg.tar.xz -C /tmp \\",
210
220
  " && mkdir -p /out/usr/local/bin /out/opt/outerlayer/media/lib \\",
@@ -239,16 +249,17 @@ function toolsDockerfile(parts) {
239
249
  "RUN chmod 0755 /out/opt/outerlayer/bin/outerlayer-guest \\",
240
250
  " && mkdir -p /out/outerlayer/job /out/outerlayer/judge /out/run /out/proc /out/sys /out/dev"
241
251
  ] : [],
252
+ ...fetched ? [`COPY ${FETCHED_DIR}/${FETCHED_TINI} /tmp/tini`, `COPY ${FETCHED_DIR}/${FETCHED_GH} /tmp/gh.tgz`] : [],
242
253
  `RUN set -eu \\`,
243
254
  ` && case "$TARGETARCH" in \\`,
244
255
  ` amd64) gh_sha=${GH_SHA256.amd64}; tini_sha=${TINI_SHA256.amd64} ;; \\`,
245
256
  ` arm64) gh_sha=${GH_SHA256.arm64}; tini_sha=${TINI_SHA256.arm64} ;; \\`,
246
257
  ` *) echo "no pinned gh and tini for $TARGETARCH" >&2; exit 1 ;; \\`,
247
258
  " esac \\",
248
- ` && ${download} https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-static-$TARGETARCH /tmp/tini \\`,
259
+ ...fetched ? [] : [` && ${download} https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-static-$TARGETARCH /tmp/tini \\`],
249
260
  ' && echo "$tini_sha /tmp/tini" | sha256sum -c - \\',
250
261
  " && install -m 0755 /tmp/tini /out/opt/outerlayer/bin/tini \\",
251
- ` && ${download} https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_$TARGETARCH.tar.gz /tmp/gh.tgz \\`,
262
+ ...fetched ? [] : [` && ${download} https://github.com/cli/cli/releases/download/v${GH_VERSION}/gh_${GH_VERSION}_linux_$TARGETARCH.tar.gz /tmp/gh.tgz \\`],
252
263
  ' && echo "$gh_sha /tmp/gh.tgz" | sha256sum -c - \\',
253
264
  " && tar -xzf /tmp/gh.tgz -C /tmp \\",
254
265
  ` && install -m 0755 /tmp/gh_${GH_VERSION}_linux_$TARGETARCH/bin/gh /out/usr/local/bin/gh`,
@@ -362,15 +373,18 @@ async function fetchPinnedCommit(opts) {
362
373
  if (!fetched.ok) throw new RecipeError("repository_unreadable", `cannot read ${opts.repository}: ${fetched.reason}`);
363
374
  return { dir: opts.dir, defaultBranch: opts.ref, commit: opts.commit };
364
375
  }
365
- function metadataOf(image) {
376
+ function metadataFromLabels(labels) {
366
377
  try {
367
- const parsed = JSON.parse(image.labels["devcontainer.metadata"] ?? "[]");
378
+ const parsed = JSON.parse(labels["devcontainer.metadata"] ?? "[]");
368
379
  const entries = Array.isArray(parsed) ? parsed : [parsed];
369
380
  return entries.filter((e) => typeof e === "object" && e !== null && !Array.isArray(e));
370
381
  } catch {
371
382
  return [];
372
383
  }
373
384
  }
385
+ function metadataOf(image) {
386
+ return metadataFromLabels(image.labels);
387
+ }
374
388
  function readReport(recordDir) {
375
389
  try {
376
390
  return JSON.parse(readFileSync(join(recordDir, "recipe.json"), "utf8"));
@@ -386,8 +400,7 @@ function writeRecord(recordDir, report, builtAt) {
386
400
  writeFileSync(join(recordDir, "recipe.json"), `${JSON.stringify(report, null, 2)}
387
401
  `, { mode: RUNNER_FILE_MODE });
388
402
  }
389
- async function buildRepositoryImage(opts, ports) {
390
- const { host } = ports;
403
+ async function prepareImageBuild(opts) {
391
404
  const { full: repository, owner, name } = splitRepository(opts.repository);
392
405
  if (!existsSync(join(opts.cli.distDir, "index.js"))) {
393
406
  throw new Error(`${opts.cli.distDir} holds no index.js: the tools layer copies the built CLI, so run this from a build (yarn workspace @outerlayer/cli build)`);
@@ -396,7 +409,6 @@ async function buildRepositoryImage(opts, ports) {
396
409
  const claudeCodeVersion = opts.claudeCodeVersion ?? CLAUDE_CODE_VERSION;
397
410
  const nodeImage = opts.nodeImage ?? NODE_IMAGE;
398
411
  const baseImage = opts.defaultBaseImage ?? DEFAULT_BASE_IMAGE;
399
- const scratchRoot = opts.tmpDir ?? tmpdir();
400
412
  const cacheDir = repoCacheDir(opts.configPath, owner, name);
401
413
  const repoRecords = join(imagesDir(opts.configPath), owner, name);
402
414
  const logPath = join(repoRecords, "builds", `${attemptStamp(now())}.log`);
@@ -411,6 +423,7 @@ async function buildRepositoryImage(opts, ports) {
411
423
  }
412
424
  throw err;
413
425
  }
426
+ const release = () => releasePidFile(lockPath, self);
414
427
  try {
415
428
  const remote = opts.remote ?? `https://github.com/${owner}/${name}.git`;
416
429
  const checkout = opts.pinned === void 0 ? await fetchDefaultBranch({ remote, dir: cacheDir, token: opts.readToken, repository }) : await fetchPinnedCommit({ remote, dir: cacheDir, token: opts.readToken, repository, ...opts.pinned });
@@ -421,8 +434,21 @@ async function buildRepositoryImage(opts, ports) {
421
434
  const rKey = recipeKey(checkout.dir, location, defaultText);
422
435
  const tKey = toolsKey({ buildId: opts.cli.buildId, claudeCodeVersion, nodeImage, ghVersion: GH_VERSION, tiniVersion: TINI_VERSION, guestHelperSha256: opts.guestHelper?.sha256, mediaPins: MEDIA_PINS });
423
436
  const recordDir = join(repoRecords, `${rKey.slice(0, KEY_PREFIX)}-${tKey.slice(0, KEY_PREFIX)}`);
424
- const buildTag = `${TAG_HOST}/build/${repository}:${rKey.slice(0, KEY_PREFIX)}-${tKey.slice(0, KEY_PREFIX)}`;
425
- const recipeTag = `${TAG_HOST}/recipe/${repository}:${rKey.slice(0, KEY_PREFIX)}`;
437
+ return { repository, owner, name, repoRecords, recordDir, checkout, location, recipe, recipeKey: rKey, toolsKey: tKey, defaultText, claudeCodeVersion, nodeImage, logPath, release };
438
+ } catch (err) {
439
+ release();
440
+ throw err;
441
+ }
442
+ }
443
+ async function buildRepositoryImage(opts, ports) {
444
+ const { host } = ports;
445
+ const now = opts.now ?? (() => /* @__PURE__ */ new Date());
446
+ const scratchRoot = opts.tmpDir ?? tmpdir();
447
+ const prepared = await prepareImageBuild(opts);
448
+ const { repository, repoRecords, checkout, location, recipe, recipeKey: rKey, toolsKey: tKey, defaultText, claudeCodeVersion, nodeImage, recordDir, logPath } = prepared;
449
+ const buildTag = `${TAG_HOST}/build/${repository}:${rKey.slice(0, KEY_PREFIX)}-${tKey.slice(0, KEY_PREFIX)}`;
450
+ const recipeTag = `${TAG_HOST}/recipe/${repository}:${rKey.slice(0, KEY_PREFIX)}`;
451
+ try {
426
452
  const existing = await host.list(repository);
427
453
  const labelled = existing.find((i) => i.labels[KIND2] === "recipe" && i.labels[RECIPE_KEY2] === rKey);
428
454
  const recipeImageBefore = labelled !== void 0 && (await host.inspect(recipeTag))?.id === labelled.id ? labelled : void 0;
@@ -538,7 +564,7 @@ async function buildRepositoryImage(opts, ports) {
538
564
  removed
539
565
  };
540
566
  } finally {
541
- releasePidFile(lockPath, self);
567
+ prepared.release();
542
568
  }
543
569
  }
544
570
  async function prune(host, repository, repoRecords, keep, runnerDirPath) {
@@ -564,4 +590,4 @@ async function prune(host, repository, repoRecords, keep, runnerDirPath) {
564
590
  return removed;
565
591
  }
566
592
 
567
- export { buildRepositoryImage, cloneRepository, diffBetween, fetchCommit, readBranchHead, readDefaultBranchHead };
593
+ export { FETCHED_DIR, FETCHED_FFMPEG, FETCHED_GH, FETCHED_TINI, FETCHED_VOICE_DIR, KEY_PREFIX, TAG_HOST, buildRepositoryImage, cloneRepository, diffBetween, fetchCommit, metadataFromLabels, prepareImageBuild, readBranchHead, readDefaultBranchHead, toolsDockerfile, writeRecord };
@@ -1,12 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { detectActiveSession, autoConnect } from './chunk-X2Y3B4JH.js';
4
- import { workPageUrl } from './chunk-LESWVXRE.js';
5
- import { sanitizeTerminal } from './chunk-3H7NZPYG.js';
6
- import { resolveRepoIdentity } from './chunk-XT5SOJRC.js';
3
+ import { detectActiveSession, autoConnect } from './chunk-6TFTRVOA.js';
4
+ import { workPageUrl } from './chunk-5RUH3PCG.js';
5
+ import { sanitizeTerminal } from './chunk-DM4EGXDO.js';
6
+ import { resolveRepoIdentity } from './chunk-AKR32WHV.js';
7
7
  import { C } from './chunk-ANPNT6PM.js';
8
- import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-F3EF56LQ.js';
9
- import { signRunnerRequest } from './chunk-APSYTJ6I.js';
8
+ import { resolveGatewayCredentials, unauthorizedMessage, defaultFetch } from './chunk-VQ2JGZSC.js';
9
+ import { signRunnerRequest } from './chunk-JT3YO5MH.js';
10
10
  import { readRepoConnection } from './chunk-BJ3KTMDH.js';
11
11
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
12
12
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
@@ -441,7 +441,7 @@ async function runWorkLinkSession(opts) {
441
441
  return await linkSession(opts);
442
442
  } catch (err) {
443
443
  if (opts.logFailures) {
444
- const { logHookError } = await import('./hook-fast-WQQYEXO5.js');
444
+ const { logHookError } = await import('./hook-fast-NVBMSE3N.js');
445
445
  const reason = err instanceof Error ? err.message : String(err);
446
446
  logHookError(opts.home ?? homeFromEnv(opts.env ?? process.env), new Error(`work link-session #${opts.number} failed: ${reason}`));
447
447
  }
@@ -1,11 +1,11 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { C } from './chunk-ANPNT6PM.js';
4
- import { resolvePackRoot, OUTERLAYER_SKILLS_BASE, loadTemplateFiles, AGENTS_SKILLS_BASE, loadMaintainedFiles, rewriteSkillPaths, TEMPLATE_SKILLS, skillDir, writeMaintainedFiles, MACHINE_SKILL_PATH } from './chunk-YW4PEGLN.js';
4
+ import { resolvePackRoot, OUTERLAYER_SKILLS_BASE, loadTemplateFiles, AGENTS_SKILLS_BASE, loadMaintainedFiles, rewriteSkillPaths, TEMPLATE_SKILLS, skillDir, writeMaintainedFiles, MACHINE_SKILL_PATH } from './chunk-KUTZ6XLS.js';
5
5
  import { MAINTAINED_SKILLS } from './chunk-CDDED64E.js';
6
6
  import { resolvePackageVersion } from './chunk-RA3O54FC.js';
7
7
  import { cliInvocation } from './chunk-CRB3POP4.js';
8
- import { linkedAgentsPath } from './chunk-WXEPMPHK.js';
8
+ import { linkedAgentsPath } from './chunk-LN4WDONI.js';
9
9
  import { readFileSync, existsSync, mkdirSync, writeFileSync } from 'fs';
10
10
  import { join, dirname } from 'path';
11
11
 
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
3
  import { readCloudConfigStrict, readCloudConfig, cloudConfigPath } from './chunk-PJDQPF5N.js';
4
- import { signRunnerRequest, signerFor } from './chunk-APSYTJ6I.js';
4
+ import { signRunnerRequest, signerFor } from './chunk-JT3YO5MH.js';
5
5
  import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
6
6
  import { PLAIN_VERSION, recordCliVersion, removeRecordedVersion } from './chunk-5BHIBJDA.js';
7
7
  import { resolvePackageVersion } from './chunk-RA3O54FC.js';