@outerlayer/cli 0.17.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +36 -2
  3. package/dist/agent-setup-TPR4BBFV.js +27 -0
  4. package/dist/{artifact-link-cmd-2F47LT7F.js → artifact-link-cmd-W7XF5BFB.js} +4 -3
  5. package/dist/{build-BG2YENGK.js → build-TQ6X5PYN.js} +5 -4
  6. package/dist/build-info.json +1 -1
  7. package/dist/{builder-2D3WSOOY.js → builder-C4QNTYMS.js} +5 -6
  8. package/dist/{check-5XE7XMC4.js → check-UWQAL2MN.js} +56 -52
  9. package/dist/{chunk-R7PF5OOU.js → chunk-3CWUOFV6.js} +21 -14
  10. package/dist/{chunk-4NPZVMJU.js → chunk-3UZTIRLF.js} +60 -4
  11. package/dist/chunk-452TM7J4.js +502 -0
  12. package/dist/{chunk-NNRTPG7X.js → chunk-5GHGAF6P.js} +4 -4
  13. package/dist/{chunk-WVUIRTWA.js → chunk-5MYFOW5V.js} +196 -37
  14. package/dist/{chunk-HGECYFEI.js → chunk-5TN7GLYX.js} +138 -109
  15. package/dist/{chunk-VQYBXPI7.js → chunk-6D7GT22T.js} +5 -5
  16. package/dist/{chunk-G5NPRL2K.js → chunk-6U3MV7TZ.js} +687 -76
  17. package/dist/{chunk-42ZI52JW.js → chunk-6X4SQ5MY.js} +4 -3
  18. package/dist/{chunk-MAK5LYRF.js → chunk-7KSSBQTS.js} +278 -535
  19. package/dist/{chunk-NWQTTSBB.js → chunk-7SJPQWBM.js} +41 -16
  20. package/dist/{chunk-J5M7BSJQ.js → chunk-7VUK5RFS.js} +23 -4
  21. package/dist/{chunk-OZGHL5Y5.js → chunk-7YP7T6GV.js} +2 -2
  22. package/dist/{chunk-TI7B7UEO.js → chunk-AMFWYESY.js} +1 -1
  23. package/dist/{chunk-YRYMNBGQ.js → chunk-ANPNT6PM.js} +2 -1
  24. package/dist/{chunk-4KSQKQXE.js → chunk-BM63HB2M.js} +20 -16
  25. package/dist/{chunk-4Q7OMKAT.js → chunk-BQXFBI7T.js} +81 -5
  26. package/dist/{chunk-ADJRGVZC.js → chunk-BWSUPRDK.js} +1 -1
  27. package/dist/{chunk-3NSNIIBE.js → chunk-CG36IONK.js} +18 -17
  28. package/dist/chunk-CJJDJ7AT.js +56 -0
  29. package/dist/chunk-CRB3POP4.js +34 -0
  30. package/dist/{chunk-LWSJQJC6.js → chunk-DADWEUH3.js} +7 -7
  31. package/dist/{chunk-KG5ECZGJ.js → chunk-DJ3ZUSC3.js} +11 -11
  32. package/dist/{chunk-F47JBIAW.js → chunk-DSF2FWAZ.js} +2 -1
  33. package/dist/{chunk-N5FOE5PS.js → chunk-ECODQ7II.js} +4 -33
  34. package/dist/{chunk-HHJDN6AU.js → chunk-ESVW4MJY.js} +1 -1
  35. package/dist/{chunk-YO4PSLVB.js → chunk-FVMYKL6L.js} +1 -1
  36. package/dist/chunk-G2YNJIGF.js +44 -0
  37. package/dist/{chunk-WUYTWNMA.js → chunk-G3IJ3N6F.js} +5 -3
  38. package/dist/{chunk-QKFB4K7X.js → chunk-GGOMT6KF.js} +1 -1
  39. package/dist/{chunk-N6LURUEF.js → chunk-GOSFARMS.js} +1 -1
  40. package/dist/{chunk-S3NYLI2P.js → chunk-HPJNLETG.js} +93 -38
  41. package/dist/{chunk-IP7BIBXJ.js → chunk-IF2OSI5T.js} +35 -1
  42. package/dist/{chunk-C5Y5ZJJZ.js → chunk-IXYZUUYQ.js} +5 -4
  43. package/dist/chunk-JBJTC3UU.js +35 -0
  44. package/dist/chunk-KYS3TQAG.js +296 -0
  45. package/dist/chunk-LLM3I5YU.js +89 -0
  46. package/dist/{chunk-YU3VKZ5F.js → chunk-LRG3ZMZD.js} +6 -7
  47. package/dist/{chunk-V7NIVOFD.js → chunk-M2ZWWTWZ.js} +1 -1
  48. package/dist/{chunk-ERI5GBNI.js → chunk-MLAAT4S6.js} +3 -3
  49. package/dist/{chunk-O765JR4W.js → chunk-MTP2QEVO.js} +1 -1
  50. package/dist/{chunk-ZM2IMMYN.js → chunk-N2PXGQRL.js} +9 -1
  51. package/dist/{chunk-BWQ66M6N.js → chunk-NFIR3GEE.js} +98 -24
  52. package/dist/{chunk-POJMEEJJ.js → chunk-NNLA7LLQ.js} +1 -1
  53. package/dist/{chunk-PLMTLGYH.js → chunk-NTRCK4NH.js} +5 -4
  54. package/dist/{chunk-22RMZBGW.js → chunk-P53VEAOF.js} +1 -1
  55. package/dist/{chunk-RLYZLUQ7.js → chunk-QEFKA2QD.js} +2 -2
  56. package/dist/{chunk-JXYVA45C.js → chunk-QNLX477Q.js} +1200 -322
  57. package/dist/{chunk-UGP76IZ5.js → chunk-S5PCA3SN.js} +1 -1
  58. package/dist/{chunk-RMWLBUCJ.js → chunk-SADUQSO4.js} +1 -1
  59. package/dist/{chunk-GQD22KKN.js → chunk-T2Q7ISPE.js} +2 -1
  60. package/dist/chunk-TUSYOL2O.js +113 -0
  61. package/dist/{chunk-NBGDBTO2.js → chunk-TWF3RICI.js} +9 -8
  62. package/dist/{chunk-ONKJUM6R.js → chunk-UVG35MWF.js} +1 -1
  63. package/dist/{chunk-KMDLFI4P.js → chunk-VMJPFQNE.js} +1 -1
  64. package/dist/chunk-VRRGENS4.js +144 -0
  65. package/dist/{chunk-PTW6W5NR.js → chunk-VYAL7PUE.js} +1 -1
  66. package/dist/{chunk-OHVJA253.js → chunk-WFSUUUAN.js} +47 -30
  67. package/dist/{chunk-RSNSZ2LJ.js → chunk-X5H2WYMB.js} +1 -1
  68. package/dist/{chunk-HYZRY4KZ.js → chunk-XNGMQ27R.js} +16 -6
  69. package/dist/chunk-XSZD4AZ6.js +490 -0
  70. package/dist/chunk-YQR6E6OV.js +109 -0
  71. package/dist/{chunk-XCK2YAY5.js → chunk-YVZJ6GKF.js} +3 -2
  72. package/dist/{chunk-2MNPHL23.js → chunk-ZHAUSEEN.js} +38 -15
  73. package/dist/claude-launcher-FPPHZPMR.js +115 -0
  74. package/dist/{cli-A76AXELQ.js → cli-HROW5T7X.js} +567 -285
  75. package/dist/{command-R2QCVX55.js → command-OEAV7BVX.js} +42 -40
  76. package/dist/{config-N3C6DFQA.js → config-CLSGABD5.js} +2 -3
  77. package/dist/{connect-cmd-JBKAQNSF.js → connect-cmd-UNYKGDAL.js} +10 -9
  78. package/dist/context-cleanup-HSVYDGMI.js +9 -0
  79. package/dist/control-plane-launch-NYVDJESK.js +216 -0
  80. package/dist/{dist-LKDWQWZ7.js → dist-WO7NOJNG.js} +2 -2
  81. package/dist/{docker-4J77Q2BF.js → docker-BFU3AQGY.js} +7 -8
  82. package/dist/{doctor-4TAIARIG.js → doctor-23BBJWBX.js} +48 -42
  83. package/dist/{emit-artifact-cmd-MPZVR56N.js → emit-artifact-cmd-O6SCM7TV.js} +27 -24
  84. package/dist/emit-cmd-7SP3I6UZ.js +14 -0
  85. package/dist/{emit-criteria-cmd-EFGYI23V.js → emit-criteria-cmd-LQNERZRV.js} +17 -16
  86. package/dist/{emit-finding-cmd-5GF3V4LR.js → emit-finding-cmd-AJPKHIOV.js} +18 -17
  87. package/dist/{emit-result-cmd-I4OADKMD.js → emit-result-cmd-RUICOKWQ.js} +22 -19
  88. package/dist/emit-step-cmd-347XNGPQ.js +26 -0
  89. package/dist/{exec-client-CQV746UF.js → exec-client-7UMESIE2.js} +3 -4
  90. package/dist/governing-source-V5EEGPTA.js +34 -0
  91. package/dist/guest-init-KPBQOFE5.js +9 -0
  92. package/dist/{hook-fast-R4FVSZ2H.js → hook-fast-YAZG5MDX.js} +5 -2
  93. package/dist/host-key-U4B5QETR.js +8 -0
  94. package/dist/{import-capture-cmd-EQ35EARA.js → import-capture-cmd-KKFFOGWP.js} +7 -5
  95. package/dist/{import-ruler-cmd-BGAZXCQM.js → import-ruler-cmd-5P6JOXQN.js} +5 -3
  96. package/dist/index.js +8 -4
  97. package/dist/{init-PWU5YVL7.js → init-LWHDMZQG.js} +40 -38
  98. package/dist/init-MOINY2DD.js +53 -0
  99. package/dist/{init-cmd-XAVO7HYZ.js → init-cmd-HSMRID6A.js} +75 -30
  100. package/dist/{init-update-CVCWD6VS.js → init-update-LWX5MPPR.js} +29 -29
  101. package/dist/{install-HDBIPHTX.js → install-4SEFIIW2.js} +4 -5
  102. package/dist/{install-cmd-5HYMXLEW.js → install-cmd-QDOTR4OM.js} +5 -4
  103. package/dist/{login-browser-QZCS3WW6.js → login-browser-DX35MARZ.js} +5 -4
  104. package/dist/{logout-cmd-QAUFDJ6J.js → logout-cmd-5V5MMBSY.js} +3 -2
  105. package/dist/{logs-H55NWW4H.js → logs-AMLKC3VP.js} +3 -1
  106. package/dist/loop-SYYPVFYW.js +77 -0
  107. package/dist/machine-6X63G2KH.js +48 -0
  108. package/dist/{mcp-install-cmd-FDTPQQS6.js → mcp-install-cmd-GGWB3JJ2.js} +3 -2
  109. package/dist/{mcp-serve-cmd-3KVYEUXG.js → mcp-serve-cmd-N3UTY6EE.js} +11 -9
  110. package/dist/paths-7XP63OAX.js +7 -0
  111. package/dist/pending-532ABZYC.js +8 -0
  112. package/dist/{pidfile-UZRH774M.js → pidfile-3DM4OBKO.js} +4 -2
  113. package/dist/{record-C43U4PKS.js → record-3WP6V2K5.js} +3 -2
  114. package/dist/{runner-env-EN7YE7QX.js → runner-env-FRZFFHDF.js} +5 -6
  115. package/dist/{runner-key-6SLBI7PP.js → runner-key-276SJU5R.js} +40 -38
  116. package/dist/session-sender-GGIY5OAX.js +36 -0
  117. package/dist/{pending-MXLSRYMO.js → shell-function-NRD4KVUK.js} +1 -2
  118. package/dist/spec-cmd-SIZBRN7D.js +115 -0
  119. package/dist/{starter-pack-KF66HGZR.js → starter-pack-6LQVLBIA.js} +7 -5
  120. package/dist/{status-7VNQN5PW.js → status-NAK6DYSF.js} +46 -42
  121. package/dist/{statusline-fast-SVTMBMD7.js → statusline-fast-KN3BX67H.js} +2 -1
  122. package/dist/sync-cmd-G7GF4UTW.js +35 -0
  123. package/dist/{watch-23HSAEI6.js → watch-EVM5GSMP.js} +22 -15
  124. package/dist/{work-claim-cmd-LKL3GHFQ.js → work-claim-cmd-3J3QW56U.js} +26 -29
  125. package/dist/work-cmd-5EPPD33Y.js +24 -0
  126. package/dist/{work-comment-cmd-AWHP56M2.js → work-comment-cmd-2ACOZQAE.js} +16 -15
  127. package/dist/{work-launch-R5HTAP6X.js → work-launch-LEQ2MPM3.js} +3 -1
  128. package/dist/work-logs-cmd-QDD2NMJL.js +60 -0
  129. package/dist/{work-open-pr-cmd-IOM4AVQQ.js → work-open-pr-cmd-XNCEI4ZM.js} +18 -17
  130. package/dist/work-pr-cmd-H4OQR26N.js +25 -0
  131. package/package.json +3 -2
  132. package/skill-pack/maintained/outerlayer-amend/SKILL.md +4 -2
  133. package/skill-pack/maintained/outerlayer-cli/SKILL.md +9 -2
  134. package/skill-pack/maintained/outerlayer-cli/references/find-out-why-a-build-ended.md +76 -0
  135. package/skill-pack/shipped.json +18 -2
  136. package/skill-pack/template/build/SKILL.md +23 -10
  137. package/skill-pack/template/build/references/agent-briefs.md +3 -1
  138. package/skill-pack/template/build/references/criteria-judge.md +27 -0
  139. package/skill-pack/template/build/references/release.md +22 -29
  140. package/skill-pack/template/spec/SKILL.md +35 -10
  141. package/skill-pack/validators/acceptance-criteria.yaml +25 -26
  142. package/dist/agent-setup-T624CWPD.js +0 -27
  143. package/dist/chunk-6Y5RUTHO.js +0 -39
  144. package/dist/chunk-BYT5O5RV.js +0 -61
  145. package/dist/chunk-WTE3MQML.js +0 -133
  146. package/dist/chunk-XCCLFVXM.js +0 -401
  147. package/dist/chunk-YZ5F4PIS.js +0 -797
  148. package/dist/context-adopt-NFHCLVUB.js +0 -108
  149. package/dist/context-materialize-IV2TUUFO.js +0 -22
  150. package/dist/emit-cmd-IJ3GVRFD.js +0 -12
  151. package/dist/guest-init-LJP5GPZF.js +0 -9
  152. package/dist/host-key-YMLXY6QB.js +0 -7
  153. package/dist/init-6XPDRDTC.js +0 -51
  154. package/dist/loop-FK3LPMMZ.js +0 -73
  155. package/dist/machine-SQXEBAM2.js +0 -46
  156. package/dist/paths-OYKMVYJP.js +0 -6
  157. package/dist/session-sender-FO3LCREV.js +0 -29
  158. package/dist/sync-cmd-GVPPFZ3G.js +0 -28
  159. package/dist/work-cmd-Z2WXLZPH.js +0 -23
  160. package/dist/work-pr-cmd-HNEUIEN7.js +0 -24
@@ -1,55 +1,57 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { readJobFile } from './chunk-RMWLBUCJ.js';
4
- import { runRunnerInstall, launcherSummary, restartNote } from './chunk-ERI5GBNI.js';
3
+ import { readJobFile } from './chunk-SADUQSO4.js';
4
+ import { runRunnerInstall, launcherSummary, restartNote } from './chunk-MLAAT4S6.js';
5
5
  import './chunk-I2UOAV7X.js';
6
- import './chunk-PTW6W5NR.js';
7
- import { currentLink, execStartCommand } from './chunk-TI7B7UEO.js';
8
- import { detectMachine } from './chunk-ONKJUM6R.js';
9
- import './chunk-MAK5LYRF.js';
10
- import './chunk-KMDLFI4P.js';
11
- import './chunk-QKFB4K7X.js';
12
- import './chunk-RSNSZ2LJ.js';
13
- import { installService, uninstallService, realTaskScheduler } from './chunk-RLYZLUQ7.js';
14
- import './chunk-S3NYLI2P.js';
15
- import './chunk-6Y5RUTHO.js';
16
- import './chunk-IP7BIBXJ.js';
17
- import { runnerVmOf, loadRunnerConfig } from './chunk-22RMZBGW.js';
6
+ import './chunk-VYAL7PUE.js';
7
+ import { currentLink, execStartCommand } from './chunk-AMFWYESY.js';
8
+ import { detectMachine } from './chunk-UVG35MWF.js';
9
+ import './chunk-7KSSBQTS.js';
10
+ import './chunk-OGFGZQA3.js';
11
+ import './chunk-VMJPFQNE.js';
12
+ import './chunk-3UZTIRLF.js';
13
+ import './chunk-GGOMT6KF.js';
14
+ import './chunk-X5H2WYMB.js';
15
+ import './chunk-XSZD4AZ6.js';
16
+ import { installService, uninstallService, realTaskScheduler } from './chunk-QEFKA2QD.js';
17
+ import './chunk-HPJNLETG.js';
18
+ import './chunk-IF2OSI5T.js';
19
+ import './chunk-CG36IONK.js';
20
+ import './chunk-G3IJ3N6F.js';
21
+ import './chunk-BM63HB2M.js';
22
+ import { runnerVmOf, loadRunnerConfig } from './chunk-P53VEAOF.js';
18
23
  import './chunk-UXYLWVTQ.js';
24
+ import './chunk-7RQ73DLO.js';
19
25
  import { realLima } from './chunk-77MM5RYD.js';
20
26
  import { writeLaunchAgent, launchAgentPath } from './chunk-LF6MLJCY.js';
21
- import './chunk-R7PF5OOU.js';
27
+ import './chunk-3CWUOFV6.js';
22
28
  import './chunk-QOZKPLVJ.js';
23
- import './chunk-N5FOE5PS.js';
24
- import './chunk-OGFGZQA3.js';
25
- import './chunk-4NPZVMJU.js';
26
- import './chunk-7RQ73DLO.js';
27
- import './chunk-4Q7OMKAT.js';
28
29
  import './chunk-CX22S5BA.js';
29
- import './chunk-3NSNIIBE.js';
30
- import './chunk-WUYTWNMA.js';
31
- import './chunk-JXYVA45C.js';
32
- import './chunk-4KSQKQXE.js';
33
- import './chunk-N6LURUEF.js';
34
- import './chunk-YRYMNBGQ.js';
30
+ import './chunk-ECODQ7II.js';
31
+ import './chunk-JBJTC3UU.js';
32
+ import './chunk-QNLX477Q.js';
33
+ import './chunk-GOSFARMS.js';
34
+ import './chunk-ANPNT6PM.js';
35
35
  import './chunk-WZBHBH3J.js';
36
- import './chunk-YZ5F4PIS.js';
37
- import './chunk-WTE3MQML.js';
38
- import './chunk-C5Y5ZJJZ.js';
36
+ import './chunk-LLM3I5YU.js';
37
+ import './chunk-452TM7J4.js';
38
+ import './chunk-IXYZUUYQ.js';
39
+ import './chunk-FVMYKL6L.js';
40
+ import './chunk-NTRCK4NH.js';
39
41
  import './chunk-ZJSNLVCE.js';
40
- import './chunk-YO4PSLVB.js';
41
- import './chunk-BYT5O5RV.js';
42
- import './chunk-POJMEEJJ.js';
43
- import './chunk-OHVJA253.js';
44
- import './chunk-PLMTLGYH.js';
45
- import './chunk-J5M7BSJQ.js';
46
- import './chunk-EABW6AJQ.js';
47
- import './chunk-RA3O54FC.js';
48
- import './chunk-V7NIVOFD.js';
49
- import './chunk-ZM2IMMYN.js';
50
- import './chunk-XCCLFVXM.js';
51
42
  import './chunk-BJ3KTMDH.js';
43
+ import './chunk-G2YNJIGF.js';
44
+ import './chunk-NNLA7LLQ.js';
45
+ import './chunk-WFSUUUAN.js';
46
+ import './chunk-7VUK5RFS.js';
47
+ import './chunk-EABW6AJQ.js';
48
+ import './chunk-CRB3POP4.js';
49
+ import './chunk-YQR6E6OV.js';
52
50
  import './chunk-VNVZDWO3.js';
51
+ import './chunk-RA3O54FC.js';
52
+ import './chunk-M2ZWWTWZ.js';
53
+ import './chunk-N2PXGQRL.js';
54
+ import './chunk-BQXFBI7T.js';
53
55
  import './chunk-Z5GEFMRW.js';
54
56
  import { userInfo, totalmem } from 'os';
55
57
  import { join } from 'path';
@@ -1,11 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf } from './chunk-22RMZBGW.js';
3
+ export { DEFAULT_CHECK_TIME_LIMIT_MINUTES, DEFAULT_UPDATE_MAX_WAIT_HOURS, RunnerConfigError, builtinKind, checkHooks, defaultRunnerConfigPath, hasRunnerBlock, isBuiltinContainer, isBuiltinProcess, isBuiltinVm, loadRunnerConfig, resolveBuild, resolveHousekeeping, runnerCredentialProblem, runnerVmOf } from './chunk-P53VEAOF.js';
4
4
  import './chunk-UXYLWVTQ.js';
5
5
  import './chunk-7RQ73DLO.js';
6
- import './chunk-4Q7OMKAT.js';
7
- import './chunk-BYT5O5RV.js';
8
6
  import './chunk-VNVZDWO3.js';
7
+ import './chunk-BQXFBI7T.js';
9
8
  import './chunk-Z5GEFMRW.js';
10
9
 
11
10
  createRequire(import.meta.url);
@@ -1,15 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { COMMIT_LINE, autoConnectedLine, listText as factoryListText, slug as factorySlug, fetchFactories, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-3NSNIIBE.js';
4
- import './chunk-WUYTWNMA.js';
5
- import './chunk-JXYVA45C.js';
6
- import './chunk-4KSQKQXE.js';
7
- import './chunk-N6LURUEF.js';
8
- import './chunk-YRYMNBGQ.js';
9
- import './chunk-PLMTLGYH.js';
10
- import './chunk-J5M7BSJQ.js';
11
- import './chunk-EABW6AJQ.js';
3
+ export { COMMIT_LINE, autoConnectedLine, listText as factoryListText, slug as factorySlug, fetchFactories, promptOnTerminal, realConnectDeps, runConnect, runConnectCommand, saveFactoryConnection, selectFactory } from './chunk-CG36IONK.js';
4
+ import './chunk-G3IJ3N6F.js';
5
+ import './chunk-BM63HB2M.js';
6
+ import './chunk-QNLX477Q.js';
7
+ import './chunk-GOSFARMS.js';
8
+ import './chunk-ANPNT6PM.js';
9
+ import './chunk-NTRCK4NH.js';
12
10
  import './chunk-BJ3KTMDH.js';
11
+ import './chunk-7VUK5RFS.js';
12
+ import './chunk-EABW6AJQ.js';
13
+ import './chunk-CRB3POP4.js';
13
14
  import './chunk-VNVZDWO3.js';
14
15
  import './chunk-Z5GEFMRW.js';
15
16
 
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { cleanupEarlierCopies } from './chunk-VRRGENS4.js';
4
+ import './chunk-YQR6E6OV.js';
5
+ import './chunk-TUSYOL2O.js';
6
+ import './chunk-VNVZDWO3.js';
7
+ import './chunk-Z5GEFMRW.js';
8
+
9
+ createRequire(import.meta.url);
@@ -0,0 +1,216 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import { sharedSkillNames, skillConflictMessage, composeDelivery } from './chunk-LLM3I5YU.js';
4
+ import { parseOwnerRepo, lookupGoverningSource, defaultGitRunner, materializeContext } from './chunk-452TM7J4.js';
5
+ import './chunk-IXYZUUYQ.js';
6
+ import { defaultFetch } from './chunk-FVMYKL6L.js';
7
+ import { resolveGatewayCredentials } from './chunk-NTRCK4NH.js';
8
+ import './chunk-ZJSNLVCE.js';
9
+ import { findGitDirs } from './chunk-BJ3KTMDH.js';
10
+ import './chunk-G2YNJIGF.js';
11
+ import './chunk-NNLA7LLQ.js';
12
+ import './chunk-WFSUUUAN.js';
13
+ import './chunk-7VUK5RFS.js';
14
+ import './chunk-EABW6AJQ.js';
15
+ import './chunk-CRB3POP4.js';
16
+ import { cleanupEarlierCopies } from './chunk-VRRGENS4.js';
17
+ import { readSourceCache, readDeliveryRecord, isSourceCacheFresh, writeDeliveryRecord, writeSourceCache, SOURCE_CACHE_TTL_SUCCESS_MS, clearDegraded, removeLauncherDeliveryRecord } from './chunk-YQR6E6OV.js';
18
+ import './chunk-TUSYOL2O.js';
19
+ import './chunk-VNVZDWO3.js';
20
+ import './chunk-RA3O54FC.js';
21
+ import './chunk-M2ZWWTWZ.js';
22
+ import './chunk-N2PXGQRL.js';
23
+ import './chunk-BQXFBI7T.js';
24
+ import './chunk-Z5GEFMRW.js';
25
+ import { execFileSync } from 'child_process';
26
+ import { existsSync, mkdirSync, mkdtempSync, cpSync, renameSync, rmSync, readdirSync } from 'fs';
27
+ import { join } from 'path';
28
+
29
+ createRequire(import.meta.url);
30
+ var GOVERNANCE_LOOKUP = { timeoutMs: 5e3, attempts: 1 };
31
+ function laptopDeliveryDir(home, repository, sha) {
32
+ if (!/^[A-Za-z0-9_.-]+\/[A-Za-z0-9_.-]+$/.test(repository) || repository.split("/").some((part) => part === "." || part === "..") || !/^[0-9a-f]{7,64}$/.test(sha)) {
33
+ throw new Error(`cannot name a directory for ${repository} at ${sha}`);
34
+ }
35
+ return join(home, ".outerlayer", "context", ...repository.split("/"), sha);
36
+ }
37
+ function gitOutput(cwd, args) {
38
+ try {
39
+ return execFileSync("git", args, { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], timeout: 5e3 }).trim();
40
+ } catch {
41
+ return void 0;
42
+ }
43
+ }
44
+ function committedSkillNames(repoRoot) {
45
+ const entry = gitOutput(repoRoot, ["ls-files", "-s", "--", ".claude/skills"]) ?? "";
46
+ if (entry.startsWith("120000 ")) {
47
+ try {
48
+ return new Set(readdirSync(join(repoRoot, ".claude", "skills")));
49
+ } catch {
50
+ return /* @__PURE__ */ new Set();
51
+ }
52
+ }
53
+ const out = gitOutput(repoRoot, ["ls-files", "-z", "--", ".claude/skills"]) ?? "";
54
+ const names = /* @__PURE__ */ new Set();
55
+ for (const path of out.split("\0")) {
56
+ const name = path.split("/")[2];
57
+ if (name !== void 0 && name !== "") names.add(name);
58
+ }
59
+ return names;
60
+ }
61
+ async function storeCopy(input) {
62
+ const staging = join(input.home, ".outerlayer", "context", ".staging");
63
+ mkdirSync(staging, { recursive: true });
64
+ const work = mkdtempSync(join(staging, "launch-"));
65
+ try {
66
+ const tree = join(work, "tree");
67
+ mkdirSync(tree);
68
+ for (const args of [
69
+ ["init", "-q", "--initial-branch=main", tree],
70
+ ["-C", tree, "remote", "add", "origin", input.originUrl]
71
+ ]) {
72
+ const done = defaultGitRunner(args, { cwd: work, timeoutMs: 1e4 });
73
+ if (!done.ok) return `the scratch directory could not be prepared: ${done.stderr.trim().split("\n")[0] ?? ""}`;
74
+ }
75
+ const result = await materializeContext({ cwd: tree, home: input.home, pinnedSource: input.source, fetchImpl: input.fetchImpl });
76
+ if (result.status !== "materialized") return result.message ?? `the control plane was not fetched (${result.status})`;
77
+ composeDelivery({ tree, dir: input.dir });
78
+ const composed = join(work, "composed");
79
+ mkdirSync(composed);
80
+ for (const entry of ["AGENTS.md", "CLAUDE.md", "settings.json", ".claude", ".outerlayer"]) {
81
+ if (existsSync(join(tree, entry))) cpSync(join(tree, entry), join(composed, entry), { recursive: true });
82
+ }
83
+ mkdirSync(join(input.dir, ".."), { recursive: true });
84
+ try {
85
+ renameSync(composed, input.dir);
86
+ } catch (err) {
87
+ if (!existsSync(join(input.dir, "settings.json"))) throw err;
88
+ }
89
+ return void 0;
90
+ } catch (err) {
91
+ return err instanceof Error ? err.message : String(err);
92
+ } finally {
93
+ rmSync(work, { recursive: true, force: true });
94
+ }
95
+ }
96
+ async function askGovernance(input) {
97
+ const { gitCommonDir, credentials, now } = input;
98
+ const answer = await lookupGoverningSource({ url: credentials.url, apiKey: credentials.credential, appId: credentials.appId }, input.ownName, input.fetchImpl, input.lookup);
99
+ const named = answer.kind === "answered" ? answer.source : void 0;
100
+ if (named === null) {
101
+ writeSourceCache(gitCommonDir, { checkedAt: new Date(now).toISOString(), status: "self", ttlMs: SOURCE_CACHE_TTL_SUCCESS_MS });
102
+ clearDegraded(gitCommonDir);
103
+ removeLauncherDeliveryRecord(gitCommonDir);
104
+ return { kind: "self" };
105
+ }
106
+ if (named !== void 0) {
107
+ writeSourceCache(gitCommonDir, { checkedAt: new Date(now).toISOString(), status: "governed", repository: named.repository, ref: named.ref, sha: named.sha, ttlMs: SOURCE_CACHE_TTL_SUCCESS_MS });
108
+ clearDegraded(gitCommonDir);
109
+ return { kind: "governed", source: named };
110
+ }
111
+ if (answer.kind === "answered") return { kind: "unknown", why: "the gateway is too old to name the control plane" };
112
+ if (answer.kind === "rejected") return { kind: "unknown", why: "the gateway rejected the saved login or key" };
113
+ return { kind: "unknown", why: describeFailure(answer.failure) };
114
+ }
115
+ async function governanceOf(input) {
116
+ const dirs = findGitDirs(input.cwd);
117
+ if (dirs === void 0) return "self";
118
+ const cache = readSourceCache(dirs.gitCommonDir);
119
+ if (cache?.status === "governed" || readDeliveryRecord(dirs.gitCommonDir) !== void 0) return "governed";
120
+ if (cache?.status === "self" && cache.unanswered === void 0 && isSourceCacheFresh(cache, Date.now())) return "self";
121
+ const credentials = resolveGatewayCredentials({ home: input.home, env: input.env, cwd: dirs.repoRoot });
122
+ const originUrl = gitOutput(dirs.repoRoot, ["config", "--get", "remote.origin.url"]);
123
+ const ownName = originUrl === void 0 ? void 0 : parseOwnerRepo(originUrl);
124
+ if (!credentials.ok || ownName === void 0) return "self";
125
+ const governance = await askGovernance({
126
+ gitCommonDir: dirs.gitCommonDir,
127
+ credentials,
128
+ ownName,
129
+ fetchImpl: input.fetchImpl ?? defaultFetch,
130
+ lookup: input.lookup ?? { timeoutMs: 2e3, attempts: 1 },
131
+ now: Date.now()
132
+ });
133
+ return governance.kind;
134
+ }
135
+ async function resolveLaunchPlane(deps) {
136
+ const dirs = findGitDirs(deps.cwd);
137
+ if (dirs === void 0) return { kind: "none" };
138
+ const { repoRoot, gitCommonDir } = dirs;
139
+ cleanupEarlierCopies({ repoRoot, gitCommonDir });
140
+ const credentials = resolveGatewayCredentials({ home: deps.home, env: deps.env, cwd: repoRoot });
141
+ if (!credentials.ok) return { kind: "none" };
142
+ const originUrl = gitOutput(repoRoot, ["config", "--get", "remote.origin.url"]);
143
+ const ownName = originUrl === void 0 ? void 0 : parseOwnerRepo(originUrl);
144
+ if (originUrl === void 0 || ownName === void 0) return { kind: "none" };
145
+ const now = Date.now();
146
+ const cache = readSourceCache(gitCommonDir);
147
+ if (cache?.status === "self" && cache.unanswered === void 0 && isSourceCacheFresh(cache, now)) return { kind: "none" };
148
+ const fetchImpl = deps.fetchImpl ?? defaultFetch;
149
+ const governance = await askGovernance({ gitCommonDir, credentials, ownName, fetchImpl, lookup: GOVERNANCE_LOOKUP, now });
150
+ if (governance.kind === "self") {
151
+ if (existsSync(join(repoRoot, ".outerlayer-pin.json"))) {
152
+ deps.stderr(`outerlayer claude: no control plane governs ${ownName} any more; starting Claude Code without one. The committed .outerlayer-pin.json is no longer used and can be deleted
153
+ `);
154
+ }
155
+ return { kind: "none" };
156
+ }
157
+ const source = governance.kind === "governed" ? governance.source : void 0;
158
+ const whyNoAnswer = governance.kind === "unknown" ? governance.why : "";
159
+ const last = readDeliveryRecord(gitCommonDir);
160
+ if (source === void 0) {
161
+ const lastCopy = last !== void 0 && existsSync(last.dir) ? last : void 0;
162
+ const knownGoverned = cache?.status === "governed" || last !== void 0;
163
+ if (!knownGoverned) {
164
+ deps.stderr(`outerlayer claude: ${whyNoAnswer}, so whether a control plane governs this repository is unknown; starting Claude Code without one
165
+ `);
166
+ return { kind: "none" };
167
+ }
168
+ if (lastCopy === void 0) {
169
+ return { kind: "refused", message: `outerlayer claude: the control plane could not be fetched: ${whyNoAnswer}, and no copy of it is stored on this machine
170
+ ` };
171
+ }
172
+ deps.stderr(`outerlayer claude: ${whyNoAnswer}; starting with the control plane copy from ${lastCopy.sha.slice(0, 7)}, which may be out of date
173
+ `);
174
+ return finish(lastCopy, repoRoot, gitCommonDir, ownName);
175
+ }
176
+ let dir;
177
+ try {
178
+ dir = laptopDeliveryDir(deps.home, source.repository, source.sha);
179
+ } catch (err) {
180
+ return { kind: "refused", message: `outerlayer claude: the control plane could not be fetched: ${err instanceof Error ? err.message : String(err)}
181
+ ` };
182
+ }
183
+ if (!existsSync(join(dir, "settings.json"))) {
184
+ const problem = await storeCopy({ home: deps.home, dir, originUrl, source, fetchImpl });
185
+ if (problem !== void 0) {
186
+ if (last !== void 0 && existsSync(last.dir)) {
187
+ deps.stderr(`outerlayer claude: the control plane could not be fetched (${problem}); starting with the copy from ${last.sha.slice(0, 7)}, which may be out of date
188
+ `);
189
+ return finish(last, repoRoot, gitCommonDir, ownName);
190
+ }
191
+ return { kind: "refused", message: `outerlayer claude: the control plane could not be fetched: ${problem}
192
+ ` };
193
+ }
194
+ }
195
+ return finish({ schemaVersion: 1, repository: source.repository, ref: source.ref, sha: source.sha, dir }, repoRoot, gitCommonDir, ownName);
196
+ }
197
+ function describeFailure(failure) {
198
+ if (failure.kind === "timeout") return `the gateway did not answer within ${(failure.timeoutMs ?? 0) / 1e3} seconds`;
199
+ if (failure.kind === "status") return `the gateway answered ${failure.status}`;
200
+ return `the gateway could not be reached (${failure.message ?? "network error"})`;
201
+ }
202
+ function finish(record, repoRoot, gitCommonDir, ownName) {
203
+ const own = committedSkillNames(repoRoot);
204
+ const clash = sharedSkillNames(record.dir).find((name) => own.has(name));
205
+ if (clash !== void 0) {
206
+ return {
207
+ kind: "refused",
208
+ message: `outerlayer claude: ${skillConflictMessage({ skill: clash, repository: ownName, controlPlane: record.repository })}, and would replace it in this session; rename or remove it from the repository
209
+ `
210
+ };
211
+ }
212
+ writeDeliveryRecord(gitCommonDir, { ...record, launcher: true });
213
+ return { kind: "attach", dir: record.dir };
214
+ }
215
+
216
+ export { governanceOf, resolveLaunchPlane };
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { CaptureDaemon, PRICE_TABLE_SOURCE, SECRET_PATTERNS, SOURCE_ADAPTERS, SUPPORTED_VERSIONS, StatuslineAggregator, WARNING_CODES, claudeCodeAdapter, codexAdapter, codexSessionIdFromPath, compareVersions, completePrefix, computeStatuslineState, costOfUsage, cursorAdapter, cursorChatIdFromPath, defaultCodexSessionsDir, defaultCursorChatsDir, defaultCursorProjectsDir, defaultProjectsDir, defaultRawDir, enrichSessionRepo, findCodexRollouts, findCursorChats, findTranscripts, isNewerThanSupported, isPriceKnown, normalizeErrorSignature, normalizeRemote, parseCodexRollout, parseCursorChat, parseTranscript, readStatuslineState, readSyncWatermarkMs, remoteLookupFailed, resolvePrice, resolveRepoIdentity, rootChildIds, scanAll, scrubDeep, scrubText, sessionIdFromPath, setCustomScrubbers, setLocalIdentity, setRepoRoot, statuslineStatePath, tailTranscript, workspacesByHash, writeStatuslineState } from './chunk-JXYVA45C.js';
4
- import './chunk-J5M7BSJQ.js';
3
+ export { CaptureDaemon, PRICE_TABLE_SOURCE, SECRET_PATTERNS, SOURCE_ADAPTERS, SUPPORTED_VERSIONS, StatuslineAggregator, WARNING_CODES, claudeCodeAdapter, codexAdapter, codexSessionIdFromPath, compareVersions, completePrefix, computeStatuslineState, costOfUsage, cursorAdapter, cursorChatIdFromPath, defaultCodexSessionsDir, defaultCursorChatsDir, defaultCursorProjectsDir, defaultProjectsDir, defaultRawDir, enrichSessionRepo, findCodexRollouts, findCursorChats, findTranscripts, isNewerThanSupported, isPriceKnown, normalizeErrorSignature, normalizeRemote, parseCodexRollout, parseCursorChat, parseTranscript, readStatuslineState, readSyncWatermarkMs, remoteLookupFailed, resolvePrice, resolveRepoIdentity, rootChildIds, scanAll, scrubDeep, scrubText, sessionIdFromPath, setCustomScrubbers, setLocalIdentity, setRepoRoot, statuslineStatePath, tailTranscript, workspacesByHash, writeStatuslineState } from './chunk-QNLX477Q.js';
4
+ import './chunk-7VUK5RFS.js';
5
5
  import './chunk-Z5GEFMRW.js';
6
6
 
7
7
  createRequire(import.meta.url);
@@ -1,15 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { childEnvironment, createDockerHost, spawnRun } from './chunk-KMDLFI4P.js';
4
- import './chunk-QOZKPLVJ.js';
5
- import './chunk-4NPZVMJU.js';
3
+ export { childEnvironment, createDockerHost, spawnRun } from './chunk-VMJPFQNE.js';
4
+ import './chunk-3UZTIRLF.js';
6
5
  import './chunk-7RQ73DLO.js';
7
- import './chunk-4Q7OMKAT.js';
6
+ import './chunk-QOZKPLVJ.js';
8
7
  import './chunk-CX22S5BA.js';
9
- import './chunk-JXYVA45C.js';
10
- import './chunk-BYT5O5RV.js';
11
- import './chunk-J5M7BSJQ.js';
12
- import './chunk-ZM2IMMYN.js';
8
+ import './chunk-QNLX477Q.js';
9
+ import './chunk-7VUK5RFS.js';
10
+ import './chunk-N2PXGQRL.js';
11
+ import './chunk-BQXFBI7T.js';
13
12
  import './chunk-Z5GEFMRW.js';
14
13
 
15
14
  createRequire(import.meta.url);
@@ -1,56 +1,58 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-LWSJQJC6.js';
3
+ import { needsClaudeCredential, claudeCredentialCheck, missingPermissionOf, missingPermissionFix } from './chunk-DADWEUH3.js';
4
4
  import { freeBytes, formatBytes } from './chunk-YYYRBYWG.js';
5
- import { launcherCheck } from './chunk-PTW6W5NR.js';
6
- import './chunk-TI7B7UEO.js';
5
+ import { launcherCheck } from './chunk-VYAL7PUE.js';
6
+ import './chunk-AMFWYESY.js';
7
7
  import { RepoFilter } from './chunk-TBT347UY.js';
8
- import './chunk-VQYBXPI7.js';
9
- import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-ONKJUM6R.js';
10
- import { MIN_ENGINE_MAJOR } from './chunk-MAK5LYRF.js';
11
- import { resolveDevcontainerCli, spawnRun } from './chunk-KMDLFI4P.js';
12
- import './chunk-QKFB4K7X.js';
13
- import './chunk-RSNSZ2LJ.js';
14
- import './chunk-OZGHL5Y5.js';
15
- import './chunk-RLYZLUQ7.js';
8
+ import './chunk-6D7GT22T.js';
9
+ import './chunk-7YP7T6GV.js';
10
+ import { detectMachine, supportsContainerBuilds, describeMachineDocker, reachDockerStep, supportsMicroVmBuilds, microVmArchSupported, microVmAssetsPinned } from './chunk-UVG35MWF.js';
11
+ import { MIN_ENGINE_MAJOR } from './chunk-7KSSBQTS.js';
12
+ import './chunk-OGFGZQA3.js';
13
+ import { resolveDevcontainerCli, spawnRun } from './chunk-VMJPFQNE.js';
14
+ import { buildxState } from './chunk-3UZTIRLF.js';
15
+ import './chunk-GGOMT6KF.js';
16
+ import './chunk-X5H2WYMB.js';
17
+ import './chunk-XSZD4AZ6.js';
18
+ import './chunk-QEFKA2QD.js';
16
19
  import './chunk-6MZSX4M7.js';
17
- import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-S3NYLI2P.js';
18
- import './chunk-6Y5RUTHO.js';
19
- import './chunk-IP7BIBXJ.js';
20
- import { builtinKind } from './chunk-22RMZBGW.js';
20
+ import { getJson, WorkCommandError, signatureRefusalMessage } from './chunk-HPJNLETG.js';
21
+ import './chunk-IF2OSI5T.js';
22
+ import './chunk-CG36IONK.js';
23
+ import './chunk-G3IJ3N6F.js';
24
+ import './chunk-BM63HB2M.js';
25
+ import { builtinKind } from './chunk-P53VEAOF.js';
21
26
  import { allowHostProblem, MAX_ALLOW_HOSTS } from './chunk-UXYLWVTQ.js';
22
- import './chunk-R7PF5OOU.js';
23
- import { locateRecipe, assertBuildable, readRecipe, RecipeError } from './chunk-QOZKPLVJ.js';
24
- import './chunk-N5FOE5PS.js';
25
- import './chunk-OGFGZQA3.js';
26
- import { buildxState } from './chunk-4NPZVMJU.js';
27
27
  import { parseSize } from './chunk-7RQ73DLO.js';
28
- import './chunk-4Q7OMKAT.js';
28
+ import './chunk-3CWUOFV6.js';
29
+ import { locateRecipe, assertBuildable, readRecipe, RecipeError } from './chunk-QOZKPLVJ.js';
29
30
  import { CLAUDE_CODE_VERSION } from './chunk-CX22S5BA.js';
30
- import './chunk-3NSNIIBE.js';
31
- import './chunk-WUYTWNMA.js';
32
- import { compareVersions } from './chunk-JXYVA45C.js';
33
- import './chunk-4KSQKQXE.js';
34
- import './chunk-N6LURUEF.js';
35
- import './chunk-YRYMNBGQ.js';
31
+ import './chunk-ECODQ7II.js';
32
+ import './chunk-JBJTC3UU.js';
33
+ import { compareVersions } from './chunk-QNLX477Q.js';
34
+ import './chunk-GOSFARMS.js';
35
+ import './chunk-ANPNT6PM.js';
36
36
  import './chunk-WZBHBH3J.js';
37
- import { defaultGitRunner } from './chunk-YZ5F4PIS.js';
38
- import './chunk-WTE3MQML.js';
39
- import './chunk-C5Y5ZJJZ.js';
37
+ import './chunk-LLM3I5YU.js';
38
+ import { defaultGitRunner } from './chunk-452TM7J4.js';
39
+ import './chunk-IXYZUUYQ.js';
40
+ import { defaultFetch } from './chunk-FVMYKL6L.js';
41
+ import './chunk-NTRCK4NH.js';
40
42
  import './chunk-ZJSNLVCE.js';
41
- import { defaultFetch } from './chunk-YO4PSLVB.js';
42
- import './chunk-BYT5O5RV.js';
43
- import './chunk-POJMEEJJ.js';
44
- import './chunk-OHVJA253.js';
45
- import './chunk-PLMTLGYH.js';
46
- import './chunk-J5M7BSJQ.js';
47
- import './chunk-EABW6AJQ.js';
48
- import './chunk-RA3O54FC.js';
49
- import { loadHostKey } from './chunk-V7NIVOFD.js';
50
- import { runnerDir, hostKeyPath, jobsDir } from './chunk-ZM2IMMYN.js';
51
- import './chunk-XCCLFVXM.js';
52
43
  import './chunk-BJ3KTMDH.js';
44
+ import './chunk-G2YNJIGF.js';
45
+ import './chunk-NNLA7LLQ.js';
46
+ import './chunk-WFSUUUAN.js';
47
+ import './chunk-7VUK5RFS.js';
48
+ import './chunk-EABW6AJQ.js';
49
+ import './chunk-CRB3POP4.js';
50
+ import './chunk-YQR6E6OV.js';
53
51
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
52
+ import './chunk-RA3O54FC.js';
53
+ import { loadHostKey } from './chunk-M2ZWWTWZ.js';
54
+ import { runnerDir, hostKeyPath, jobsDir } from './chunk-N2PXGQRL.js';
55
+ import './chunk-BQXFBI7T.js';
54
56
  import './chunk-Z5GEFMRW.js';
55
57
  import { spawnSync } from 'child_process';
56
58
  import { existsSync, readdirSync, statSync, readFileSync } from 'fs';
@@ -404,7 +406,11 @@ async function controlPlaneAccessCheck(env, fetchImpl) {
404
406
  try {
405
407
  const { data } = await getJson(env.gateway.url, `/v1/context/source?repo=${encodeURIComponent(repository)}`, env.gateway.apiKey, env.gateway.appId, fetchImpl, signer);
406
408
  const answer = data;
407
- sources = answer.source === void 0 ? answer.sources ?? [] : answer.source === null ? [] : [{ repository: answer.source.repository, ref: answer.source.ref }];
409
+ if (answer.source === void 0) {
410
+ warnings.push(`the gateway is too old to say which repository governs ${repository}`);
411
+ continue;
412
+ }
413
+ sources = answer.source === null ? [] : [{ repository: answer.source.repository, ref: answer.source.ref }];
408
414
  } catch (err) {
409
415
  warnings.push(`could not ask the gateway which repository governs ${repository}: ${err instanceof Error ? err.message : String(err)}`);
410
416
  continue;
@@ -1,32 +1,35 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-NWQTTSBB.js';
4
- import { launchRefusalForSession } from './chunk-HHJDN6AU.js';
3
+ import { staleBuildRefusal, staleBuildWarning, detectCi } from './chunk-7SJPQWBM.js';
4
+ import './chunk-KYS3TQAG.js';
5
+ import { launchRefusalForSession } from './chunk-ESVW4MJY.js';
5
6
  import './chunk-TBT347UY.js';
6
- import { autoConnect } from './chunk-6Y5RUTHO.js';
7
- import { detectActiveSession } from './chunk-IP7BIBXJ.js';
7
+ import { detectActiveSession, autoConnect } from './chunk-IF2OSI5T.js';
8
+ import './chunk-CG36IONK.js';
9
+ import { readEffectiveArtifactSpoolState, localArtifactIds, isArtifactTombstoned, artifactBlobsDir, appendArtifactRecord, artifactsSpoolPath, findPendingArtifactRecord, sanitizeTerminal, appendArtifactTombstone } from './chunk-G3IJ3N6F.js';
10
+ import './chunk-BM63HB2M.js';
11
+ import './chunk-NFIR3GEE.js';
8
12
  import './chunk-F7CU5ABH.js';
9
13
  import './chunk-BKO6JEZI.js';
10
- import './chunk-3NSNIIBE.js';
11
- import { readEffectiveArtifactSpoolState, localArtifactIds, isArtifactTombstoned, artifactBlobsDir, appendArtifactRecord, artifactsSpoolPath, findPendingArtifactRecord, sanitizeTerminal, appendArtifactTombstone } from './chunk-WUYTWNMA.js';
12
- import { resolveRepoIdentity } from './chunk-JXYVA45C.js';
13
- import './chunk-4KSQKQXE.js';
14
- import './chunk-N6LURUEF.js';
15
- import { C } from './chunk-YRYMNBGQ.js';
16
- import './chunk-GQD22KKN.js';
14
+ import { resolveRepoIdentity } from './chunk-QNLX477Q.js';
15
+ import './chunk-GOSFARMS.js';
16
+ import { C } from './chunk-ANPNT6PM.js';
17
+ import './chunk-T2Q7ISPE.js';
17
18
  import { parseTrackerNumber, trackerNumberError } from './chunk-WZBHBH3J.js';
18
19
  import './chunk-5QRP3MVS.js';
20
+ import { defaultFetch } from './chunk-FVMYKL6L.js';
21
+ import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-NTRCK4NH.js';
19
22
  import './chunk-ZJSNLVCE.js';
20
- import { defaultFetch } from './chunk-YO4PSLVB.js';
21
- import { resolveGatewayCredentials, unauthorizedMessage } from './chunk-PLMTLGYH.js';
22
- import { ARTIFACT_MAX_CAPTION_LENGTH, ArtifactCriterionIdSchema, ARTIFACT_MAX_FILENAME_LENGTH, mediaTypeForArtifactPath, inferArtifactKind, ARTIFACT_MAX_REPLACES_TARGETS, parseTestSelector, parseJunit, bindTests } from './chunk-J5M7BSJQ.js';
23
- import './chunk-EABW6AJQ.js';
24
- import './chunk-V7NIVOFD.js';
25
- import './chunk-ZM2IMMYN.js';
26
- import './chunk-BWQ66M6N.js';
27
- import './chunk-XCCLFVXM.js';
28
23
  import './chunk-BJ3KTMDH.js';
24
+ import './chunk-G2YNJIGF.js';
25
+ import { ARTIFACT_MAX_CAPTION_LENGTH, ArtifactCriterionIdSchema, ARTIFACT_MAX_FILENAME_LENGTH, mediaTypeForArtifactPath, inferArtifactKind, ARTIFACT_MAX_REPLACES_TARGETS, parseTestSelector, parseJunit, bindTests } from './chunk-7VUK5RFS.js';
26
+ import './chunk-EABW6AJQ.js';
27
+ import { cliInvocation } from './chunk-CRB3POP4.js';
28
+ import './chunk-TUSYOL2O.js';
29
29
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
30
+ import './chunk-M2ZWWTWZ.js';
31
+ import './chunk-N2PXGQRL.js';
32
+ import './chunk-BQXFBI7T.js';
30
33
  import './chunk-Z5GEFMRW.js';
31
34
  import { createHash, randomUUID } from 'crypto';
32
35
  import { statSync, readFileSync, mkdirSync, existsSync, writeFileSync, renameSync, unlinkSync } from 'fs';
@@ -174,7 +177,7 @@ async function runEmitArtifact(opts) {
174
177
  appendArtifactTombstone(targetId, home, now);
175
178
  } catch (err) {
176
179
  if (!opts.quiet) {
177
- const consequence = correctionCarriesReplaces ? "the correction still names it, so the server supersedes it once both upload" : "it is still queued locally and will upload on the next outerlayer sync \u2014 nothing on the wire links it to this correction";
180
+ const consequence = correctionCarriesReplaces ? "the correction still names it, so the server supersedes it once both upload" : `it is still queued locally and will upload on the next ${cliInvocation()} sync \u2014 nothing on the wire links it to this correction`;
178
181
  process.stderr.write(
179
182
  `${C.yellow}!${C.reset} could not cancel replaced artifact ${targetId} locally: ${String(err)} \u2014 ${consequence}
180
183
  `
@@ -210,20 +213,20 @@ async function runEmitArtifact(opts) {
210
213
  if (entry === void 0) {
211
214
  if (localIds.has(target)) {
212
215
  throw new EmitArtifactError(
213
- `--replaces "${target}" is still waiting in the local spool \u2014 run \`outerlayer sync\` first, then retry the correction.`
216
+ `--replaces "${target}" is still waiting in the local spool \u2014 run \`${cliInvocation()} sync\` first, then retry the correction.`
214
217
  );
215
218
  }
216
219
  continue;
217
220
  }
218
221
  if (entry.state === "held" || entry.state === "pending") {
219
222
  throw new EmitArtifactError(
220
- `--replaces "${target}" is still waiting in the local spool \u2014 run \`outerlayer sync\` first, then retry the correction.`
223
+ `--replaces "${target}" is still waiting in the local spool \u2014 run \`${cliInvocation()} sync\` first, then retry the correction.`
221
224
  );
222
225
  }
223
226
  if (entry.state === "dropped" && !entry.reachedServer) {
224
227
  if (isArtifactTombstoned(target, home)) {
225
228
  throw new EmitArtifactError(
226
- `--replaces "${target}" has already been dropped locally, or its upload was never confirmed \u2014 run \`outerlayer sync\` first, then retry the correction.`
229
+ `--replaces "${target}" has already been dropped locally, or its upload was never confirmed \u2014 run \`${cliInvocation()} sync\` first, then retry the correction.`
227
230
  );
228
231
  }
229
232
  throw new EmitArtifactError(
@@ -303,7 +306,7 @@ async function runEmitArtifact(opts) {
303
306
  cancelReplacedTargetLocally(target, true);
304
307
  }
305
308
  }
306
- const output2 = opts.json ? JSON.stringify({ spooled: true, record }) : `${C.green}\u2713${C.reset} artifact spooled ${C.dim}\xB7${C.reset} id ${record.artifactId} ${C.dim}\xB7${C.reset} ${kind} ${filename} ${C.dim}\xB7${C.reset} session ${sessionId.slice(0, 8)}${replacesSuffix(replacesTargets)} ${C.dim}\xB7${C.reset} uploads on the next ${C.yellow}outerlayer sync${C.reset}, which prints its link`;
309
+ const output2 = opts.json ? JSON.stringify({ spooled: true, record }) : `${C.green}\u2713${C.reset} artifact spooled ${C.dim}\xB7${C.reset} id ${record.artifactId} ${C.dim}\xB7${C.reset} ${kind} ${filename} ${C.dim}\xB7${C.reset} session ${sessionId.slice(0, 8)}${replacesSuffix(replacesTargets)} ${C.dim}\xB7${C.reset} uploads on the next ${C.yellow}${cliInvocation()} sync${C.reset}, which prints its link`;
307
310
  if (!opts.quiet) process.stdout.write(output2 + "\n");
308
311
  return { spooled: true, record, output: output2 };
309
312
  }
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { EmitError, runEmit } from './chunk-ZHAUSEEN.js';
4
+ import './chunk-ANPNT6PM.js';
5
+ import './chunk-IXYZUUYQ.js';
6
+ import './chunk-NNLA7LLQ.js';
7
+ import './chunk-WFSUUUAN.js';
8
+ import './chunk-7VUK5RFS.js';
9
+ import './chunk-CRB3POP4.js';
10
+ import './chunk-VNVZDWO3.js';
11
+ import './chunk-RA3O54FC.js';
12
+ import './chunk-Z5GEFMRW.js';
13
+
14
+ createRequire(import.meta.url);