@outerlayer/cli 0.27.1 → 0.28.1

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 (128) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +6 -0
  3. package/dist/{agent-setup-UW36TAQM.js → agent-setup-YVR5RO56.js} +17 -14
  4. package/dist/{bridge-B5VJVECY.js → bridge-WW2V7DTB.js} +3 -2
  5. package/dist/build-5FRC3RKM.js +13 -0
  6. package/dist/build-info.json +1 -1
  7. package/dist/{builder-6Y6ZWGNH.js → builder-4F2XNSFC.js} +7 -6
  8. package/dist/{check-YTXFVWK7.js → check-NDDOASVO.js} +70 -61
  9. package/dist/{chunk-VS27BP3E.js → chunk-2YSCKEL2.js} +7 -7
  10. package/dist/{chunk-BPKO76QR.js → chunk-4XN5FRRJ.js} +4 -4
  11. package/dist/{chunk-EPPIISRD.js → chunk-55XLX5PA.js} +1 -1
  12. package/dist/{chunk-LOKSLO25.js → chunk-5B7BEQPR.js} +1 -1
  13. package/dist/chunk-5BHIBJDA.js +93 -0
  14. package/dist/{chunk-RHAGBUL5.js → chunk-5K3KB4YR.js} +1 -1
  15. package/dist/{chunk-ABXQBEYK.js → chunk-66T6XJAB.js} +1 -1
  16. package/dist/{chunk-LPFOWUHG.js → chunk-6BWJQGTV.js} +20 -13
  17. package/dist/{chunk-BWH36FOC.js → chunk-7CK2TJFB.js} +20 -4
  18. package/dist/{chunk-5VMDGJGH.js → chunk-7UGFIWIW.js} +37 -23
  19. package/dist/{chunk-QKIQ2R7F.js → chunk-ATJOFXTE.js} +3 -3
  20. package/dist/chunk-CDDED64E.js +13 -0
  21. package/dist/{chunk-QHH4OSD4.js → chunk-CTYSTE5C.js} +1 -1
  22. package/dist/{chunk-DJHNEGNM.js → chunk-DKWQMPSL.js} +18 -2
  23. package/dist/{chunk-IMOB4IOI.js → chunk-DQYMQ47E.js} +3 -2
  24. package/dist/{chunk-YETTWTAY.js → chunk-E7R2GIAW.js} +4 -4
  25. package/dist/{chunk-GFUE5TKO.js → chunk-F4FA3ZUT.js} +24 -14
  26. package/dist/{chunk-6TRNCUM4.js → chunk-FGF52V4V.js} +1 -1
  27. package/dist/{chunk-MATUHHN4.js → chunk-GUXWQIEY.js} +1 -1
  28. package/dist/{chunk-2I3LIRZP.js → chunk-HXAEQPZR.js} +101 -10
  29. package/dist/{chunk-R7SGBXUD.js → chunk-IKXY47R5.js} +107 -56
  30. package/dist/{chunk-P33PZIWS.js → chunk-ITAIEJ2T.js} +7 -142
  31. package/dist/{chunk-RHGF73IU.js → chunk-IVX3U7KV.js} +1 -1
  32. package/dist/{chunk-7OUOLGUV.js → chunk-JGML2VUN.js} +3 -7
  33. package/dist/{chunk-6VFH52MP.js → chunk-KVDVNOUK.js} +24 -22
  34. package/dist/{chunk-2F762IXY.js → chunk-LNIFYSNK.js} +3 -3
  35. package/dist/{chunk-XBPUTQ7E.js → chunk-MHAR6S7B.js} +1 -1
  36. package/dist/{chunk-7AQ5AM7U.js → chunk-MQHTM4YJ.js} +177 -21
  37. package/dist/{chunk-6KKM7VGZ.js → chunk-N7WAEEIU.js} +3 -3
  38. package/dist/{chunk-D7ECMB7B.js → chunk-NUHZV3A4.js} +1 -1
  39. package/dist/{chunk-MHX7YX7Y.js → chunk-P2RWZCV7.js} +1 -1
  40. package/dist/chunk-QBQHQEUG.js +300 -0
  41. package/dist/{chunk-FP23SVDD.js → chunk-QJFDAKRF.js} +5 -5
  42. package/dist/{chunk-WUL2OP5A.js → chunk-QKXF7CLR.js} +3 -3
  43. package/dist/{chunk-Y7ZCHBYB.js → chunk-QWAYRAUX.js} +3 -3
  44. package/dist/{chunk-64GMBWAK.js → chunk-R7SS5RLJ.js} +6 -6
  45. package/dist/{chunk-XZ6Q6ZNR.js → chunk-SATUCMAJ.js} +3 -2
  46. package/dist/{chunk-2BTFKNTR.js → chunk-SJZL5F3F.js} +2 -2
  47. package/dist/{chunk-HWDYLXHH.js → chunk-T2QSWFSU.js} +4 -4
  48. package/dist/{chunk-B7DJVG25.js → chunk-T57XUI6N.js} +3 -3
  49. package/dist/{chunk-E5IJ5533.js → chunk-TF7G2PR6.js} +3 -3
  50. package/dist/{chunk-O2IJTY7L.js → chunk-TVZAC2NP.js} +3 -3
  51. package/dist/{chunk-QE3UQAHK.js → chunk-UHU7H57K.js} +26 -7
  52. package/dist/{chunk-WSYXLLA5.js → chunk-USJZ2LDK.js} +6 -6
  53. package/dist/{chunk-EX5MQYEF.js → chunk-VC5J7QPV.js} +5 -5
  54. package/dist/{chunk-N4D5TMVU.js → chunk-VU7ZJPIR.js} +5 -5
  55. package/dist/{chunk-ZFBJUOYT.js → chunk-W3FSGH2M.js} +10 -10
  56. package/dist/{chunk-GLUKDQS4.js → chunk-WWQVKFN6.js} +1 -1
  57. package/dist/{chunk-55GNQPO6.js → chunk-X52PMPOM.js} +7 -7
  58. package/dist/{chunk-YB3CSYXX.js → chunk-XD4ZCMA4.js} +81 -2
  59. package/dist/{chunk-Y4OKEFAX.js → chunk-YL2VDSNF.js} +1 -1
  60. package/dist/{chunk-M3MHHIUW.js → chunk-Z3ASAXVU.js} +1 -1
  61. package/dist/{chunk-XS3FDWSZ.js → chunk-ZTY7HHYB.js} +1 -1
  62. package/dist/{claude-launcher-NQSZBTQ5.js → claude-launcher-7RGVOYCD.js} +6 -5
  63. package/dist/{cli-GHEOBXC7.js → cli-QC6ZKHPK.js} +149 -128
  64. package/dist/cli-update-notice-4DLZ3655.js +9 -0
  65. package/dist/{command-V7B7GTPZ.js → command-3F6GY4CK.js} +53 -37
  66. package/dist/{config-TWS5VZEN.js → config-5QYIKYUP.js} +3 -2
  67. package/dist/{connect-cmd-HGS7YPA2.js → connect-cmd-5TYAOK5M.js} +14 -11
  68. package/dist/{container-start-FHB2VDC4.js → container-start-P7O5XGOB.js} +37 -36
  69. package/dist/{control-plane-launch-DBQA3KLJ.js → control-plane-launch-FZMD4MXX.js} +13 -10
  70. package/dist/{dist-QPHZE47F.js → dist-JFVKLUHL.js} +1 -1
  71. package/dist/{docker-YT6Z3LXI.js → docker-ZTC4EIU4.js} +7 -6
  72. package/dist/{doctor-Y4NCNSJM.js → doctor-QPQDF7FB.js} +159 -41
  73. package/dist/{emit-artifact-cmd-ALDK55Y2.js → emit-artifact-cmd-O3IBUMUY.js} +19 -16
  74. package/dist/{emit-cmd-VAQHRWJR.js → emit-cmd-QUABLVO6.js} +6 -5
  75. package/dist/{emit-criteria-cmd-Q7SM6VP2.js → emit-criteria-cmd-JDO2VUG5.js} +15 -12
  76. package/dist/{emit-finding-cmd-2NBAPDSV.js → emit-finding-cmd-VCQPCLI2.js} +16 -13
  77. package/dist/{emit-result-cmd-KUSL56RI.js → emit-result-cmd-BNS57DD3.js} +19 -16
  78. package/dist/{emit-step-cmd-KD4AKEAT.js → emit-step-cmd-XN44BXYU.js} +16 -13
  79. package/dist/{exec-client-6WVS7DRZ.js → exec-client-VKT2XNB3.js} +4 -3
  80. package/dist/fleet-readiness-G5X3MKP2.js +29 -0
  81. package/dist/{governing-source-VVUA5TKB.js → governing-source-B3M2U4BC.js} +21 -18
  82. package/dist/{guest-init-H5K2RW3P.js → guest-init-QW2DPX7H.js} +5 -4
  83. package/dist/{hook-fast-3SUJM765.js → hook-fast-EFC44SXV.js} +4 -1
  84. package/dist/{host-key-XNKZCWTS.js → host-key-AC6LTZDS.js} +4 -3
  85. package/dist/{image-tag-R34J4O3F.js → image-tag-SS7YKJHN.js} +4 -3
  86. package/dist/index.js +4 -4
  87. package/dist/{init-3DAGX7UY.js → init-36XMFFRQ.js} +38 -37
  88. package/dist/init-HHEAJDPN.js +56 -0
  89. package/dist/{init-cmd-RIDBVSE4.js → init-cmd-K2IKTSXJ.js} +25 -21
  90. package/dist/{init-update-ECWNG47R.js → init-update-RWTQSTPE.js} +51 -35
  91. package/dist/{inspect-IPFA7AAT.js → inspect-L7JIBK3Y.js} +1 -1
  92. package/dist/{install-6OIY3KHZ.js → install-35SAMY75.js} +5 -5
  93. package/dist/{install-cmd-JMT67P35.js → install-cmd-GFY4QF72.js} +6 -5
  94. package/dist/{layout-XNFDTOET.js → layout-BBTQPS6V.js} +4 -3
  95. package/dist/{login-browser-EWXSGHM7.js → login-browser-WSOSQH2T.js} +2 -2
  96. package/dist/{logs-XHAS6LMZ.js → logs-X2IRDP5T.js} +3 -2
  97. package/dist/loop-F5ASKFRJ.js +80 -0
  98. package/dist/{machine-OOQ2NXC3.js → machine-6STGIRJJ.js} +32 -30
  99. package/dist/{machine-skills-FLIRJYP7.js → machine-skills-O7W6NMWB.js} +4 -3
  100. package/dist/{mcp-serve-cmd-LY5A3CE7.js → mcp-serve-cmd-IITCPAAR.js} +9 -6
  101. package/dist/{paths-LHSPNORF.js → paths-32DWGK35.js} +3 -2
  102. package/dist/pending-CSIY4Y2I.js +10 -0
  103. package/dist/{pidfile-DKMYYXLH.js → pidfile-CYCTH6NQ.js} +4 -3
  104. package/dist/{real-deps-KNNBQC75.js → real-deps-QX5YH7FG.js} +1 -1
  105. package/dist/{record-3LPTY3G5.js → record-N4WPZCGK.js} +4 -3
  106. package/dist/{runner-env-YRRNRKF4.js → runner-env-EIB6WFPG.js} +6 -7
  107. package/dist/{runner-identity-YS2BZXZV.js → runner-identity-S3V6I4I3.js} +7 -6
  108. package/dist/{runner-key-EFNTZWNX.js → runner-key-Y76QXVNV.js} +36 -35
  109. package/dist/{session-sender-SC5PSU2G.js → session-sender-LFYMN6TT.js} +20 -17
  110. package/dist/{spec-cmd-JGYHHJ4P.js → spec-cmd-Z6MGATWC.js} +16 -13
  111. package/dist/{starter-pack-GPU4X6B7.js → starter-pack-5SOT5V4I.js} +4 -3
  112. package/dist/{status-7WM7S7JX.js → status-OANG2EM3.js} +39 -37
  113. package/dist/{sync-cmd-ATXJVS7S.js → sync-cmd-TNOOUPY2.js} +19 -16
  114. package/dist/{watch-M7NR3DOW.js → watch-HBNNYATF.js} +19 -16
  115. package/dist/{work-claim-cmd-DNUDZKJA.js → work-claim-cmd-CXALMILD.js} +21 -18
  116. package/dist/{work-cmd-VECTYST6.js → work-cmd-COESFSHE.js} +16 -13
  117. package/dist/{work-comment-cmd-F3NRWKPZ.js → work-comment-cmd-A4ZUVCSA.js} +16 -13
  118. package/dist/{work-logs-cmd-QF6P32FE.js → work-logs-cmd-CTF43MBE.js} +16 -13
  119. package/dist/{work-open-pr-cmd-XE23JA3R.js → work-open-pr-cmd-EMGYJXVD.js} +17 -14
  120. package/dist/{work-pr-cmd-BH56GUKN.js → work-pr-cmd-FEXMS6RH.js} +16 -13
  121. package/dist/{work-stop-cmd-C3F5HNUO.js → work-stop-cmd-NIHAN45R.js} +16 -13
  122. package/package.json +1 -1
  123. package/dist/build-HRLACBOZ.js +0 -12
  124. package/dist/chunk-STSLH5EJ.js +0 -71
  125. package/dist/init-SWKYV6CL.js +0 -55
  126. package/dist/loop-AIJZVUNA.js +0 -79
  127. package/dist/pending-3YZCSKON.js +0 -9
  128. package/dist/{chunk-6BLXUD56.js → chunk-HOU33DW5.js} +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,37 @@
1
1
  # @outerlayer/cli
2
2
 
3
+ ## 0.28.1
4
+
5
+ ### Patch Changes
6
+
7
+ - 69efa74: With built-in hooks, no process the runner starts holds Claude's credential in its environment, Firecracker included. The runner keeps the credential in memory and loads it from `claude.env` with systemd's `LoadCredential=` on systemd 247 or later. The credential file stays readable by the runner's account, so a process that runs as that account and opens files can still read it. Run `outerlayer runner install --service --replace` to move an existing host.
8
+ - 69efa74: On Windows, `outerlayer runner install --service` turns off WSL2 interop, the Windows `PATH` and drive automount in the runner's distribution. They apply when the distribution restarts. When `schtasks.exe` cannot start, setup and uninstall print the `schtasks` command to run from Windows.
9
+
10
+ ## 0.28.0
11
+
12
+ ### Minor Changes
13
+
14
+ - 1c544ef: MicroVM builds on one host share its disk by weight, and `outerlayer doctor` says when the disk ignores that weight. A microVM that the runner starts itself keeps at most 8 MiB of console output.
15
+
16
+ Run `outerlayer runner install --service --replace` on a host with the root helper. It installs the helper that sets this weight.
17
+
18
+ ### Patch Changes
19
+
20
+ - 8196214: `outerlayer doctor` warns on its `MicroVM jailer` line when microVM builds cannot survive a runner restart for two more reasons. One is that the running runner started before its unit was replaced, so it cannot keep a build's sockets in the descriptor store; the fix is one `sudo systemctl restart outerlayer-runner` while no build runs. The other is a systemd older than 254. In both cases every build ends with its runner, and an update waits for every build.
21
+
22
+ ## 0.27.3
23
+
24
+ ### Patch Changes
25
+
26
+ - 0335339: `outerlayer init --update` changes each path to a removed maintained skill folder to `~/.agents/skills/`. It does this in `AGENTS.md`, `CLAUDE.md` and the Markdown files of the repository's skills. Before, it changed only the pointer to the core in an edited `build`, so a link anywhere else pointed at nothing. Validator and policy files are not changed. When it removes the maintained skills, it also asks the gateway for the factory's runner hosts. It names each host on a CLI older than 0.27.0, so you know whether the removal is safe to commit. `outerlayer doctor` reports the same two things.
27
+
28
+ ## 0.27.2
29
+
30
+ ### Patch Changes
31
+
32
+ - df7c184: The CLI tells you when a newer CLI version is available. It prints one line after a command in a terminal and adds one line to the agent's context at session start. It reads the version from the `OuterLayer-CLI-Version` header of gateway answers it already receives, so it sends no extra request. At session start it also tells you when the maintained skills in `~/.agents/skills/` come from another CLI version. `OUTERLAYER_NO_UPDATE_NOTICE` turns off the notices of a newer CLI version.
33
+ - 3992a42: The page on running the runner in a container states the memory, disk and CPUs that Docker Desktop must give the runner. A container build's CPU limit never exceeds the number of CPUs the runner can use.
34
+
3
35
  ## 0.27.1
4
36
 
5
37
  ### Patch Changes
package/README.md CHANGED
@@ -336,6 +336,12 @@ content:
336
336
  GitHub App permissions each connected repository's installation has not
337
337
  accepted, and whether each default branch requires a pull request. The
338
338
  request carries nothing about the host, and the gateway stores nothing.
339
+ - **`outerlayer init --update`**, when it removes the maintained skills a
340
+ repository commits, and **`outerlayer doctor`**, in a repository that still
341
+ commits them, ask your gateway (`GET /v1/hosts`, with the saved login or
342
+ key) for the factory's runner hosts and the CLI version each one reported.
343
+ The request carries nothing about this machine, and the gateway stores
344
+ nothing.
339
345
  - **`outerlayer runner check`** also asks your gateway (`GET /v1/runner/host-key`,
340
346
  with the runner key, signed with the host key) whether the key holds
341
347
  `work.claim`, so a key that cannot claim is named before the host takes work.
@@ -1,18 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { keepHandWritten, runAgentSetup } from './chunk-FP23SVDD.js';
4
- import './chunk-WUL2OP5A.js';
5
- import './chunk-XZ6Q6ZNR.js';
6
- import './chunk-LOKSLO25.js';
7
- import './chunk-BPKO76QR.js';
8
- import './chunk-MHX7YX7Y.js';
9
- import './chunk-BWH36FOC.js';
10
- import './chunk-ZJSNLVCE.js';
11
- import './chunk-BJ3KTMDH.js';
12
- import './chunk-7OUOLGUV.js';
3
+ export { keepHandWritten, runAgentSetup } from './chunk-QJFDAKRF.js';
4
+ import './chunk-QKXF7CLR.js';
13
5
  import './chunk-KT4CN6OU.js';
6
+ import './chunk-SATUCMAJ.js';
7
+ import './chunk-5B7BEQPR.js';
14
8
  import './chunk-ANPNT6PM.js';
9
+ import './chunk-4XN5FRRJ.js';
10
+ import './chunk-P2RWZCV7.js';
11
+ import './chunk-7CK2TJFB.js';
15
12
  import './chunk-PJDQPF5N.js';
13
+ import './chunk-YL2VDSNF.js';
14
+ import './chunk-5K3KB4YR.js';
15
+ import './chunk-HXAEQPZR.js';
16
+ import './chunk-ZJSNLVCE.js';
17
+ import './chunk-BJ3KTMDH.js';
18
+ import './chunk-JGML2VUN.js';
19
+ import './chunk-5BHIBJDA.js';
20
+ import './chunk-CDDED64E.js';
21
+ import './chunk-RA3O54FC.js';
16
22
  import './chunk-CRB3POP4.js';
17
23
  import './chunk-VWFOKRYS.js';
18
24
  import './chunk-YQR6E6OV.js';
@@ -20,10 +26,7 @@ import './chunk-TUSYOL2O.js';
20
26
  import './chunk-RKOTJQVG.js';
21
27
  import './chunk-QZBXLLTV.js';
22
28
  import './chunk-VNVZDWO3.js';
23
- import './chunk-RA3O54FC.js';
24
- import './chunk-Y4OKEFAX.js';
25
- import './chunk-RHAGBUL5.js';
26
- import './chunk-2I3LIRZP.js';
29
+ import './chunk-XD4ZCMA4.js';
27
30
  import './chunk-JGD5TWQ2.js';
28
31
  import './chunk-Z5GEFMRW.js';
29
32
 
@@ -1,7 +1,8 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { BRIDGE_ADDRESS, BRIDGE_CIDR, CONTAINER_NO_PROXY, CONTAINER_PROXY, TUNNEL_PORT, dockerClientConfig, startBridgeForward, writeDockerClientConfig } from './chunk-XS3FDWSZ.js';
4
- import './chunk-2I3LIRZP.js';
3
+ export { BRIDGE_ADDRESS, BRIDGE_CIDR, CONTAINER_NO_PROXY, CONTAINER_PROXY, TUNNEL_PORT, dockerClientConfig, startBridgeForward, writeDockerClientConfig } from './chunk-ZTY7HHYB.js';
4
+ import './chunk-HXAEQPZR.js';
5
+ import './chunk-XD4ZCMA4.js';
5
6
  import './chunk-JGD5TWQ2.js';
6
7
  import './chunk-Z5GEFMRW.js';
7
8
 
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ export { buildRepositoryImage } from './chunk-T2QSWFSU.js';
4
+ import './chunk-NUHZV3A4.js';
5
+ import './chunk-JBJTC3UU.js';
6
+ export { RecipeError } from './chunk-SJZL5F3F.js';
7
+ import './chunk-5K3KB4YR.js';
8
+ import './chunk-HXAEQPZR.js';
9
+ import './chunk-XD4ZCMA4.js';
10
+ import './chunk-JGD5TWQ2.js';
11
+ import './chunk-Z5GEFMRW.js';
12
+
13
+ createRequire(import.meta.url);
@@ -1 +1 @@
1
- {"id":"2026-10-17T02:13:52.216Z+7e5bff4","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
1
+ {"id":"2026-10-17T13:49:00.892Z+55dd868","root":"/home/runner/_work/outerlayer/outerlayer","pkg":"outerlayer"}
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-EX5MQYEF.js';
4
- import './chunk-2BTFKNTR.js';
3
+ export { MIN_BUILDX_VERSION, builderName, builderSpec, buildxState, ensureBuilder, ensureFailureCount, isOutOfMemory, proxyEnvironment, trackImageBuild } from './chunk-VC5J7QPV.js';
5
4
  import './chunk-YJLHUKYS.js';
6
- import './chunk-QE3UQAHK.js';
5
+ import './chunk-SJZL5F3F.js';
6
+ import './chunk-UHU7H57K.js';
7
+ import './chunk-YL2VDSNF.js';
8
+ import './chunk-5K3KB4YR.js';
9
+ import './chunk-HXAEQPZR.js';
7
10
  import './chunk-QZBXLLTV.js';
8
- import './chunk-Y4OKEFAX.js';
9
- import './chunk-RHAGBUL5.js';
10
- import './chunk-2I3LIRZP.js';
11
+ import './chunk-XD4ZCMA4.js';
11
12
  import './chunk-JGD5TWQ2.js';
12
13
  import './chunk-Z5GEFMRW.js';
13
14
 
@@ -1,65 +1,69 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { probeCredentials } from './chunk-5VMDGJGH.js';
4
- import './chunk-6VFH52MP.js';
5
- import './chunk-RHGF73IU.js';
6
- import './chunk-ZVB57WI6.js';
7
- import './chunk-ABXQBEYK.js';
3
+ import { probeCredentials } from './chunk-7UGFIWIW.js';
4
+ import './chunk-KVDVNOUK.js';
8
5
  import './chunk-3JVYMD4G.js';
9
- import './chunk-YETTWTAY.js';
6
+ import './chunk-E7R2GIAW.js';
10
7
  import './chunk-TPKYTORP.js';
11
- import './chunk-Y7ZCHBYB.js';
12
- import './chunk-6KKM7VGZ.js';
13
- import './chunk-XS3FDWSZ.js';
14
- import './chunk-VS27BP3E.js';
15
- import './chunk-O2IJTY7L.js';
8
+ import './chunk-IVX3U7KV.js';
9
+ import './chunk-ZVB57WI6.js';
10
+ import './chunk-66T6XJAB.js';
11
+ import './chunk-N7WAEEIU.js';
12
+ import './chunk-QWAYRAUX.js';
13
+ import './chunk-2YSCKEL2.js';
14
+ import './chunk-TVZAC2NP.js';
16
15
  import './chunk-ESVW4MJY.js';
17
- import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-ZFBJUOYT.js';
18
- import './chunk-MATUHHN4.js';
16
+ import './chunk-ZTY7HHYB.js';
17
+ import { placeholderQueues, placeholderProblem, permissionModeProblems, permissionModeProblem, needsClaudeCredential, claudeCredentialCheck, claimPermissionProblem, formerSkillQueues, formerSkillProblem } from './chunk-W3FSGH2M.js';
19
18
  import './chunk-YYYRBYWG.js';
19
+ import './chunk-GUXWQIEY.js';
20
20
  import './chunk-TBT347UY.js';
21
- import './chunk-64GMBWAK.js';
22
- import './chunk-B7DJVG25.js';
23
- import './chunk-R7SGBXUD.js';
24
- import './chunk-WSYXLLA5.js';
25
- import './chunk-M3MHHIUW.js';
21
+ import './chunk-R7SS5RLJ.js';
22
+ import './chunk-T57XUI6N.js';
23
+ import './chunk-IKXY47R5.js';
24
+ import './chunk-MHAR6S7B.js';
25
+ import './chunk-WWQVKFN6.js';
26
+ import './chunk-USJZ2LDK.js';
27
+ import './chunk-Z3ASAXVU.js';
26
28
  import './chunk-TQMI335S.js';
27
- import './chunk-GFUE5TKO.js';
28
- import './chunk-7AQ5AM7U.js';
29
- import './chunk-YB3CSYXX.js';
30
- import { parseRunnerEnv } from './chunk-STSLH5EJ.js';
31
- import './chunk-HWDYLXHH.js';
32
- import './chunk-D7ECMB7B.js';
29
+ import './chunk-F4FA3ZUT.js';
30
+ import './chunk-MQHTM4YJ.js';
31
+ import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-55XLX5PA.js';
32
+ import './chunk-UXYLWVTQ.js';
33
+ import './chunk-T2QSWFSU.js';
34
+ import './chunk-NUHZV3A4.js';
33
35
  import './chunk-JBJTC3UU.js';
34
36
  import './chunk-OGFGZQA3.js';
35
- import './chunk-EX5MQYEF.js';
36
- import './chunk-2BTFKNTR.js';
37
- import './chunk-XBPUTQ7E.js';
38
- import './chunk-GLUKDQS4.js';
39
- import './chunk-55GNQPO6.js';
40
- import './chunk-2F762IXY.js';
41
- import './chunk-N4D5TMVU.js';
37
+ import './chunk-VC5J7QPV.js';
38
+ import './chunk-YJLHUKYS.js';
39
+ import './chunk-SJZL5F3F.js';
40
+ import './chunk-X52PMPOM.js';
41
+ import './chunk-LNIFYSNK.js';
42
+ import './chunk-VU7ZJPIR.js';
42
43
  import './chunk-BUP5N3X6.js';
43
- import './chunk-LOKSLO25.js';
44
- import './chunk-6BLXUD56.js';
44
+ import './chunk-UHU7H57K.js';
45
+ import './chunk-5B7BEQPR.js';
46
+ import './chunk-HOU33DW5.js';
45
47
  import './chunk-G2JWZDFA.js';
46
- import { loadRunnerConfig, RunnerConfigError, checkHooks } from './chunk-EPPIISRD.js';
47
- import './chunk-UXYLWVTQ.js';
48
- import './chunk-YJLHUKYS.js';
49
- import './chunk-BPKO76QR.js';
50
- import './chunk-MHX7YX7Y.js';
51
- import './chunk-BWH36FOC.js';
52
- import './chunk-DJHNEGNM.js';
48
+ import './chunk-ANPNT6PM.js';
49
+ import './chunk-4XN5FRRJ.js';
50
+ import './chunk-P2RWZCV7.js';
51
+ import './chunk-7CK2TJFB.js';
52
+ import './chunk-PJDQPF5N.js';
53
+ import './chunk-YL2VDSNF.js';
54
+ import './chunk-5K3KB4YR.js';
55
+ import { claudeEnvPath } from './chunk-HXAEQPZR.js';
56
+ import './chunk-DKWQMPSL.js';
53
57
  import './chunk-ZJSNLVCE.js';
54
58
  import './chunk-2O5KA67H.js';
55
59
  import './chunk-BKO6JEZI.js';
56
- import './chunk-6TRNCUM4.js';
60
+ import './chunk-FGF52V4V.js';
57
61
  import './chunk-HCVLP7XA.js';
58
62
  import './chunk-BJ3KTMDH.js';
59
- import './chunk-7OUOLGUV.js';
60
- import './chunk-QE3UQAHK.js';
61
- import './chunk-ANPNT6PM.js';
62
- import './chunk-PJDQPF5N.js';
63
+ import './chunk-JGML2VUN.js';
64
+ import './chunk-5BHIBJDA.js';
65
+ import './chunk-CDDED64E.js';
66
+ import './chunk-RA3O54FC.js';
63
67
  import './chunk-T2Q7ISPE.js';
64
68
  import './chunk-WZBHBH3J.js';
65
69
  import './chunk-CRB3POP4.js';
@@ -69,10 +73,7 @@ import './chunk-TUSYOL2O.js';
69
73
  import './chunk-RKOTJQVG.js';
70
74
  import './chunk-QZBXLLTV.js';
71
75
  import './chunk-VNVZDWO3.js';
72
- import './chunk-RA3O54FC.js';
73
- import './chunk-Y4OKEFAX.js';
74
- import './chunk-RHAGBUL5.js';
75
- import './chunk-2I3LIRZP.js';
76
+ import { parseRunnerEnv } from './chunk-XD4ZCMA4.js';
76
77
  import './chunk-JGD5TWQ2.js';
77
78
  import './chunk-Z5GEFMRW.js';
78
79
  import { readFileSync } from 'fs';
@@ -107,28 +108,36 @@ async function runRunnerCheck(configPath, deps = {}) {
107
108
  let credentialLine;
108
109
  if (needsClaudeCredential(config.hooks)) {
109
110
  const env = deps.env ?? process.env;
110
- const runnerEnvPath = join(dirname(configPath), "runner.env");
111
- const inShell = claudeCredentialCheck(env);
111
+ const files = [claudeEnvPath(configPath), join(dirname(configPath), "runner.env")];
112
+ const inShell = claudeCredentialCheck(env, { ignoreHeld: true });
112
113
  let credential = inShell;
114
+ let foundIn;
113
115
  if (inShell.status !== "pass") {
114
- const fromFile = readRunnerEnv(runnerEnvPath);
115
- if ("error" in fromFile) {
116
- return {
117
- ok: false,
118
- check: "claude credential",
119
- message: `the Claude credential is not in this shell, and ${runnerEnvPath} could not be read to look for it: ${fromFile.error}`
120
- };
116
+ for (const path of files) {
117
+ const fromFile = readRunnerEnv(path);
118
+ if ("error" in fromFile) {
119
+ return {
120
+ ok: false,
121
+ check: "claude credential",
122
+ message: `the Claude credential is not in this shell, and ${path} could not be read to look for it: ${fromFile.error}`
123
+ };
124
+ }
125
+ const found = claudeCredentialCheck(fromFile.env, { ignoreHeld: true });
126
+ if (found.status === "pass") {
127
+ credential = found;
128
+ foundIn = path;
129
+ break;
130
+ }
121
131
  }
122
- credential = claudeCredentialCheck(fromFile.env);
123
132
  }
124
133
  if (credential.status === "fail") {
125
134
  return {
126
135
  ok: false,
127
136
  check: "claude credential",
128
- message: `${credential.detail}, in this shell or in ${runnerEnvPath}. ${credential.fix}`
137
+ message: `${credential.detail}, in this shell or in ${files.join(" or ")}. ${credential.fix}`
129
138
  };
130
139
  }
131
- credentialLine = `claude credential ${credential.detail}${inShell.status === "pass" ? "" : ` (read from ${runnerEnvPath})`}`;
140
+ credentialLine = `claude credential ${credential.detail}${foundIn === void 0 ? "" : ` (read from ${foundIn})`}`;
132
141
  }
133
142
  const probe = await probeCredentials(config, deps.fetchImpl);
134
143
  if (!probe.ok && probe.fatal) return { ok: false, check: "credentials", message: probe.reason };
@@ -1,24 +1,24 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { uploadSpooledSteps } from './chunk-O2IJTY7L.js';
3
+ import { uploadSpooledSteps } from './chunk-TVZAC2NP.js';
4
4
  import { LaunchFilter } from './chunk-ESVW4MJY.js';
5
5
  import { RepoFilter } from './chunk-TBT347UY.js';
6
6
  import { migrateLegacyArtifactSidecars, planArtifactUpload, artifactsStatePath, sanitizeTerminal, acquireArtifactSpoolLock, artifactBlobsDir, resolveArtifactTurnIndex, isArtifactTombstoned, ARTIFACT_RETRY_MAX_AGE_MS, writeArtifactSpoolState, reclaimUnneededArtifactBlobs, neededArtifactShas } from './chunk-BUP5N3X6.js';
7
- import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-BWH36FOC.js';
8
- import { writeSyncStatus, spoolDir } from './chunk-DJHNEGNM.js';
7
+ import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-UHU7H57K.js';
8
+ import { C } from './chunk-ANPNT6PM.js';
9
+ import { cliFetch, resolveGatewayCredentials, defaultFetch, unauthorizedMessage } from './chunk-7CK2TJFB.js';
10
+ import { readCloudConfig, cloudConfigPath, writeCloudConfig } from './chunk-PJDQPF5N.js';
11
+ import { signerFor, signRunnerRequest } from './chunk-YL2VDSNF.js';
12
+ import { writeSyncStatus, spoolDir } from './chunk-DKWQMPSL.js';
9
13
  import { readLatestProvenanceForSession, readContextProvenance } from './chunk-ZJSNLVCE.js';
10
14
  import { hookExecSpoolPath } from './chunk-2O5KA67H.js';
11
15
  import { applyReportedCost } from './chunk-BKO6JEZI.js';
12
16
  import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
13
- import { setCustomScrubbers, setLocalIdentity, tailTranscript, enrichSessionRepo, scanAll, setRepoRoot, resolveRepoIdentity, sessionIdFromPath, scrubDeep, SOURCE_ADAPTERS } from './chunk-QE3UQAHK.js';
14
- import { C } from './chunk-ANPNT6PM.js';
15
- import { readCloudConfig, cloudConfigPath, writeCloudConfig } from './chunk-PJDQPF5N.js';
16
17
  import { readLaunchSpoolState, launchStatusIsDecisive, launchedItemsBySession, launchesPath } from './chunk-T2Q7ISPE.js';
17
18
  import { cliInvocation } from './chunk-CRB3POP4.js';
18
19
  import { removeJournalHooks } from './chunk-TUSYOL2O.js';
19
20
  import { CAPTURE_TIERS, inferArtifactKind, bannedPathsForTier, downconvertSession, isHumanUserTurn, turnCountBound, EVENT_TYPES } from './chunk-QZBXLLTV.js';
20
21
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
21
- import { signerFor, signRunnerRequest } from './chunk-Y4OKEFAX.js';
22
22
  import { dirname, basename, join } from 'path';
23
23
  import { statSync, readFileSync, readdirSync, mkdirSync, writeFileSync, renameSync, existsSync, rmSync } from 'fs';
24
24
  import { execFileSync } from 'child_process';
@@ -1,14 +1,14 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { removeRetiredSkills } from './chunk-MHX7YX7Y.js';
4
- import { defaultFetch, resolveGatewayCredentials } from './chunk-BWH36FOC.js';
3
+ import { removeRetiredSkills } from './chunk-P2RWZCV7.js';
4
+ import { defaultFetch, resolveGatewayCredentials } from './chunk-7CK2TJFB.js';
5
+ import { withTokenHeader } from './chunk-HXAEQPZR.js';
5
6
  import { appendContextProvenance } from './chunk-ZJSNLVCE.js';
6
- import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-7OUOLGUV.js';
7
+ import { loadMaintainedFiles, writeMaintainedFiles } from './chunk-JGML2VUN.js';
7
8
  import { cliInvocation } from './chunk-CRB3POP4.js';
8
9
  import { writeDegraded, writeSourceCache, SOURCE_CACHE_TTL_RETRY_MS, writeContextManifest, SOURCE_CACHE_TTL_SUCCESS_MS, readSourceCache, isSourceCacheFresh, clearDegraded } from './chunk-YQR6E6OV.js';
9
10
  import { normalizeRepoName, parseOuterlayerConfig, classifyTree, emitTree } from './chunk-RKOTJQVG.js';
10
11
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
11
- import { withTokenHeader } from './chunk-2I3LIRZP.js';
12
12
  import { execFileSync } from 'child_process';
13
13
  import { existsSync, mkdirSync, writeFileSync, chmodSync, lstatSync, readFileSync, copyFileSync } from 'fs';
14
14
  import { isAbsolute, join, dirname } from 'path';
@@ -2,8 +2,8 @@
2
2
  import { createRequire } from 'node:module';
3
3
  import { MAX_ALLOW_HOSTS, allowHostProblem } from './chunk-UXYLWVTQ.js';
4
4
  import { parseSize } from './chunk-YJLHUKYS.js';
5
+ import { isRefusedInConfig, resolveDestinations, isReservedVariable } from './chunk-HXAEQPZR.js';
5
6
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
6
- import { isRefusedInConfig, resolveDestinations, isReservedVariable } from './chunk-2I3LIRZP.js';
7
7
  import { existsSync, statSync, accessSync, constants, readFileSync } from 'fs';
8
8
  import { hostname } from 'os';
9
9
  import { join } from 'path';
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-7OUOLGUV.js';
3
+ import { AGENTS_SKILLS_BASE, OUTERLAYER_SKILLS_BASE } from './chunk-JGML2VUN.js';
4
4
  import { normalizePath, CONTEXT_PIN_FILENAME } from './chunk-RKOTJQVG.js';
5
5
  import { existsSync, readdirSync, readFileSync, mkdirSync, writeFileSync, lstatSync, readlinkSync, symlinkSync, rmdirSync } from 'fs';
6
6
  import { relative, sep, join } from 'path';
@@ -0,0 +1,93 @@
1
+ #!/usr/bin/env node
2
+ import { createRequire } from 'node:module';
3
+ import { MAINTAINED_SKILLS, maintainedLineVersion } from './chunk-CDDED64E.js';
4
+ import { cliInvocation } from './chunk-CRB3POP4.js';
5
+ import { mkdirSync, writeFileSync, renameSync, rmSync, readFileSync } from 'fs';
6
+ import { dirname, join } from 'path';
7
+
8
+ createRequire(import.meta.url);
9
+ var PLAIN_VERSION = /^[0-9]+\.[0-9]+\.[0-9]+$/;
10
+ var NO_UPDATE_NOTICE_VARIABLE = "OUTERLAYER_NO_UPDATE_NOTICE";
11
+ function cliVersionRecordPath(home) {
12
+ return join(home, ".outerlayer", "cli-version.json");
13
+ }
14
+ function readRecordedVersion(home) {
15
+ try {
16
+ const parsed = JSON.parse(readFileSync(cliVersionRecordPath(home), "utf8"));
17
+ return typeof parsed.version === "string" && PLAIN_VERSION.test(parsed.version) ? parsed.version : void 0;
18
+ } catch {
19
+ return void 0;
20
+ }
21
+ }
22
+ function recordCliVersion(home, version) {
23
+ try {
24
+ if (!PLAIN_VERSION.test(version) || readRecordedVersion(home) === version) return;
25
+ const file = cliVersionRecordPath(home);
26
+ mkdirSync(dirname(file), { recursive: true });
27
+ const temporary = `${file}.${process.pid}.tmp`;
28
+ writeFileSync(temporary, `${JSON.stringify({ version })}
29
+ `);
30
+ renameSync(temporary, file);
31
+ } catch {
32
+ }
33
+ }
34
+ function removeRecordedVersion(home) {
35
+ try {
36
+ rmSync(cliVersionRecordPath(home));
37
+ } catch {
38
+ }
39
+ }
40
+ function comparePlainVersions(a, b) {
41
+ const parts = (version) => version.split(/[-+]/)[0].split(".").map(Number);
42
+ const pa = parts(a);
43
+ const pb = parts(b);
44
+ for (const i of [0, 1, 2]) {
45
+ const diff = (pa[i] ?? 0) - (pb[i] ?? 0);
46
+ if (diff !== 0) return diff;
47
+ }
48
+ return 0;
49
+ }
50
+ function newerRecordedVersion(home, running) {
51
+ const recorded = readRecordedVersion(home);
52
+ return recorded !== void 0 && comparePlainVersions(recorded, running) > 0 ? recorded : void 0;
53
+ }
54
+ function updateNoticeSkipped(top, hidden, argv) {
55
+ if (top === "daemon" || top === "watch" || top === "runner") return true;
56
+ if (hidden || argv.includes("--log-failures")) return true;
57
+ return top === "sync" && argv.includes("--quiet");
58
+ }
59
+ function isSet(env, name) {
60
+ return env[name] !== void 0 && env[name] !== "";
61
+ }
62
+ function updateNoticeSuppressed(env) {
63
+ return isSet(env, NO_UPDATE_NOTICE_VARIABLE);
64
+ }
65
+ function updateNoticeLine(recorded, running) {
66
+ return `Update available: OuterLayer CLI ${running} \u2192 ${recorded}. Run: npm install -g @outerlayer/cli@${recorded}`;
67
+ }
68
+ function isCommandInTerminal(input) {
69
+ return input.isTTY && !input.json && !isSet(input.env, "CI");
70
+ }
71
+ function updateNoticeContext(home, ownVersion, env) {
72
+ if (updateNoticeSuppressed(env)) return null;
73
+ const recorded = newerRecordedVersion(home, ownVersion);
74
+ if (recorded === void 0) return null;
75
+ return `A newer OuterLayer CLI is available: this machine runs ${ownVersion}, and the factory uses ${recorded}. Tell the person both versions, and ask them to run \`npm install -g @outerlayer/cli@${recorded}\`.`;
76
+ }
77
+ function staleMachineCopiesContext(home, ownVersion) {
78
+ for (const name of MAINTAINED_SKILLS) {
79
+ let text;
80
+ try {
81
+ text = readFileSync(join(home, ".agents", "skills", name, "SKILL.md"), "utf8");
82
+ } catch {
83
+ continue;
84
+ }
85
+ const version = maintainedLineVersion(text);
86
+ if (version === void 0 || version === ownVersion) continue;
87
+ const source = PLAIN_VERSION.test(version) ? `OuterLayer CLI ${version}` : "another OuterLayer CLI version";
88
+ return `The maintained skills in ~/.agents/skills/ come from ${source}, and this session runs ${ownVersion}. Tell the person that the maintained skills on this machine come from another CLI version, and ask them to run \`${cliInvocation()} init --local\`.`;
89
+ }
90
+ return null;
91
+ }
92
+
93
+ export { PLAIN_VERSION, isCommandInTerminal, newerRecordedVersion, recordCliVersion, removeRecordedVersion, staleMachineCopiesContext, updateNoticeContext, updateNoticeLine, updateNoticeSkipped, updateNoticeSuppressed };
@@ -1,6 +1,6 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { BUILD_HOME } from './chunk-2I3LIRZP.js';
3
+ import { BUILD_HOME } from './chunk-HXAEQPZR.js';
4
4
  import { join, dirname } from 'path';
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 { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-RHAGBUL5.js';
3
+ import { RUNNER_DIR_MODE, RUNNER_FILE_MODE } from './chunk-5K3KB4YR.js';
4
4
  import { readFileSync, mkdirSync, writeFileSync, renameSync } from 'fs';
5
5
  import { join } from 'path';
6
6
 
@@ -1,17 +1,18 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { checkStarterFiles, contextIsGoverned, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills } from './chunk-P33PZIWS.js';
4
- import { resolveCredentials, getJson, WorkCommandError } from './chunk-55GNQPO6.js';
5
- import { isLinkedRepository } from './chunk-N4D5TMVU.js';
3
+ import { checkStarterFiles, contextIsGoverned } from './chunk-ITAIEJ2T.js';
4
+ import { fleetCheck, checkBuildSkill, checkMachineSkills, checkCommittedMaintainedSkills, checkMaintainedReferences } from './chunk-QBQHQEUG.js';
5
+ import { resolveCredentials, getJson, WorkCommandError } from './chunk-X52PMPOM.js';
6
+ import { isLinkedRepository } from './chunk-VU7ZJPIR.js';
6
7
  import { sanitizeTerminal } from './chunk-BUP5N3X6.js';
7
- import { checkFormerSkillNames } from './chunk-MHX7YX7Y.js';
8
- import { resolveGatewayCredentials, defaultFetch } from './chunk-BWH36FOC.js';
9
- import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-DJHNEGNM.js';
8
+ import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-UHU7H57K.js';
9
+ import { C } from './chunk-ANPNT6PM.js';
10
+ import { checkFormerSkillNames } from './chunk-P2RWZCV7.js';
11
+ import { resolveGatewayCredentials, defaultFetch } from './chunk-7CK2TJFB.js';
12
+ import { sanitizeForContext, spoolDir, assessSyncHealth, readSyncStatus, SYNC_STALE_AFTER_MS, formatAgo, checkInstalledCliStaleness, workspaceRootOf, hookFiredMarkerPath, refreshCommand } from './chunk-DKWQMPSL.js';
10
13
  import { readStatuslineState, STATE_FRESH_MS } from './chunk-I7RZHMXW.js';
11
14
  import { hookCommandEscapesControlPlane, CONTROL_PLANE_DIR_VARIABLE } from './chunk-HCVLP7XA.js';
12
15
  import { findGitDirs } from './chunk-BJ3KTMDH.js';
13
- import { resolveRepoIdentity, compareVersions, SUPPORTED_VERSIONS } from './chunk-QE3UQAHK.js';
14
- import { C } from './chunk-ANPNT6PM.js';
15
16
  import { cliInvocation } from './chunk-CRB3POP4.js';
16
17
  import { readSettings, settingsPath, isOurStatuslineSlot, statuslineWrappedOriginal, REGISTERED_EVENTS, isOurHookCommand, ourCommandBins, cliBinResolvable, ourDirectScriptBins, wrappedOriginalCommand } from './chunk-URIZRCRY.js';
17
18
  import { readDeliveryRecord, readDegraded, readSourceCache } from './chunk-YQR6E6OV.js';
@@ -207,7 +208,12 @@ function checkRenamedSkills(cwd) {
207
208
  function checkBuildSkillState(cwd, home) {
208
209
  const dirs = findGitDirs(cwd ?? process.cwd());
209
210
  if (dirs === void 0 || contextIsGoverned(dirs.gitCommonDir)) return [];
210
- return [...checkBuildSkill(dirs.repoRoot), ...checkMachineSkills({ repoRoot: dirs.repoRoot, home }), ...checkCommittedMaintainedSkills(dirs.repoRoot)];
211
+ return [
212
+ ...checkBuildSkill(dirs.repoRoot),
213
+ ...checkMachineSkills({ repoRoot: dirs.repoRoot, home }),
214
+ ...checkCommittedMaintainedSkills(dirs.repoRoot),
215
+ ...checkMaintainedReferences(dirs.repoRoot)
216
+ ];
211
217
  }
212
218
  function checkInstalledCli(home, cwd) {
213
219
  const name = "Installed CLI";
@@ -1174,19 +1180,20 @@ function doctorExitCode(checks) {
1174
1180
 
1175
1181
  // src/doctor-report.ts
1176
1182
  async function gatherDoctorChecks() {
1177
- const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-TWS5VZEN.js');
1183
+ const { defaultRunnerConfigPath, hasRunnerBlock, loadRunnerConfig, runnerVmOf } = await import('./config-5QYIKYUP.js');
1178
1184
  const configPath = defaultRunnerConfigPath();
1179
1185
  const checks = runDoctor({ runnerHost: hasRunnerBlock(configPath) });
1180
1186
  const credential = await credentialChecks();
1181
1187
  checks.push(...credential);
1182
1188
  if (credential[0]?.status === "pass") checks.push(...await githubAppChecks(), ...await governanceChecks());
1189
+ if (credential[0]?.status === "pass") checks.push(...await fleetCheck());
1183
1190
  const runnerVm = runnerVmOf(configPath);
1184
1191
  if (runnerVm !== void 0) {
1185
1192
  const { realLima } = await import('./lima-7NPCNGWT.js');
1186
1193
  const { runnerVmCheck } = await import('./doctor-53F2PYY7.js');
1187
1194
  checks.push(runnerVmCheck(configPath, { lima: realLima(), home: homeFromEnv(), instance: runnerVm.instance }));
1188
1195
  } else if (hasRunnerBlock(configPath)) {
1189
- const { runnerHostChecks } = await import('./doctor-Y4NCNSJM.js');
1196
+ const { runnerHostChecks } = await import('./doctor-QPQDF7FB.js');
1190
1197
  const hooks = (() => {
1191
1198
  try {
1192
1199
  return loadRunnerConfig(configPath).hooks;
@@ -1220,8 +1227,8 @@ async function gatherDoctorChecks() {
1220
1227
  const service = await (async () => {
1221
1228
  const { existsSync: existsSync3 } = await import('fs');
1222
1229
  if (process.platform !== "linux" || !existsSync3("/run/systemd/system")) return void 0;
1223
- const { inspectService, realInspectProbes } = await import('./inspect-IPFA7AAT.js');
1224
- const { DEFAULT_UNIT_NAME } = await import('./install-6OIY3KHZ.js');
1230
+ const { inspectService, realInspectProbes } = await import('./inspect-L7JIBK3Y.js');
1231
+ const { DEFAULT_UNIT_NAME } = await import('./install-35SAMY75.js');
1225
1232
  const { dirname: dirname2 } = await import('path');
1226
1233
  return inspectService(DEFAULT_UNIT_NAME, dirname2(configPath), realInspectProbes());
1227
1234
  })();
@@ -1,11 +1,12 @@
1
1
  #!/usr/bin/env node
2
2
  import { createRequire } from 'node:module';
3
- import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
4
3
  import { readCloudConfigStrict, readCloudConfig, cloudConfigPath } from './chunk-PJDQPF5N.js';
4
+ import { signRunnerRequest, signerFor } from './chunk-YL2VDSNF.js';
5
+ import { readRepoConnection, findGitDirs } from './chunk-BJ3KTMDH.js';
6
+ import { PLAIN_VERSION, recordCliVersion, removeRecordedVersion } from './chunk-5BHIBJDA.js';
7
+ import { resolvePackageVersion } from './chunk-RA3O54FC.js';
5
8
  import { cliInvocation } from './chunk-CRB3POP4.js';
6
9
  import { homeFromEnv } from './chunk-VNVZDWO3.js';
7
- import { resolvePackageVersion } from './chunk-RA3O54FC.js';
8
- import { signRunnerRequest, signerFor } from './chunk-Y4OKEFAX.js';
9
10
 
10
11
  createRequire(import.meta.url);
11
12
 
@@ -122,10 +123,25 @@ function withCliUserAgent(base, userAgent = () => cliUserAgent()) {
122
123
  return base(input, { ...init, headers: withHeader(init?.headers, "user-agent", userAgent()) });
123
124
  });
124
125
  }
126
+ function recordingCliVersion(base) {
127
+ return (async (input, init) => {
128
+ const response = await base(input, init);
129
+ try {
130
+ const header = response.headers.get("outerlayer-cli-version");
131
+ if (header !== null) {
132
+ if (PLAIN_VERSION.test(header)) recordCliVersion(homeFromEnv(), header);
133
+ } else if (response.ok && new Headers(input instanceof Request ? input.headers : init?.headers).get("authorization")?.startsWith("Bearer ")) {
134
+ removeRecordedVersion(homeFromEnv());
135
+ }
136
+ } catch {
137
+ }
138
+ return response;
139
+ });
140
+ }
125
141
  function globalFetch(input, init) {
126
142
  return globalThis.fetch(input, init);
127
143
  }
128
- var cliFetch = withCliUserAgent(globalFetch);
144
+ var cliFetch = recordingCliVersion(withCliUserAgent(globalFetch));
129
145
  var defaultFetch = signingFetch(cliFetch);
130
146
 
131
147
  export { cliFetch, defaultFetch, resolveGatewayCredentials, signingFetchFor, unauthorizedMessage };