@detergent-software/atk 8.9.0-dev.3 → 8.9.0-dev.31

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 (275) hide show
  1. package/CHANGELOG.md +211 -0
  2. package/README.md +22 -12
  3. package/build/cli.js +18 -6
  4. package/build/cli.js.map +1 -1
  5. package/build/command-manifest.json +1507 -0
  6. package/build/commands/_app.d.ts.map +1 -1
  7. package/build/commands/_app.js +8 -4
  8. package/build/commands/_app.js.map +1 -1
  9. package/build/commands/audit.d.ts.map +1 -1
  10. package/build/commands/audit.js +1 -1
  11. package/build/commands/audit.js.map +1 -1
  12. package/build/commands/browse.js +2 -2
  13. package/build/commands/browse.js.map +1 -1
  14. package/build/commands/cache.d.ts +1 -1
  15. package/build/commands/cache.d.ts.map +1 -1
  16. package/build/commands/cache.js +1 -16
  17. package/build/commands/cache.js.map +1 -1
  18. package/build/commands/config.d.ts.map +1 -1
  19. package/build/commands/config.js +1 -1
  20. package/build/commands/config.js.map +1 -1
  21. package/build/commands/diff.d.ts.map +1 -1
  22. package/build/commands/diff.js +4 -0
  23. package/build/commands/diff.js.map +1 -1
  24. package/build/commands/drift.d.ts.map +1 -1
  25. package/build/commands/drift.js +4 -0
  26. package/build/commands/drift.js.map +1 -1
  27. package/build/commands/index.d.ts.map +1 -1
  28. package/build/commands/index.js +5 -40
  29. package/build/commands/index.js.map +1 -1
  30. package/build/commands/info.d.ts.map +1 -1
  31. package/build/commands/info.js +50 -33
  32. package/build/commands/info.js.map +1 -1
  33. package/build/commands/init.d.ts.map +1 -1
  34. package/build/commands/init.js +4 -2
  35. package/build/commands/init.js.map +1 -1
  36. package/build/commands/install.d.ts.map +1 -1
  37. package/build/commands/install.js +28 -7
  38. package/build/commands/install.js.map +1 -1
  39. package/build/commands/list.js +2 -2
  40. package/build/commands/list.js.map +1 -1
  41. package/build/commands/login.d.ts.map +1 -1
  42. package/build/commands/login.js +12 -2
  43. package/build/commands/login.js.map +1 -1
  44. package/build/commands/logout.d.ts.map +1 -1
  45. package/build/commands/logout.js +9 -1
  46. package/build/commands/logout.js.map +1 -1
  47. package/build/commands/outdated.js +1 -1
  48. package/build/commands/outdated.js.map +1 -1
  49. package/build/commands/prune.d.ts.map +1 -1
  50. package/build/commands/prune.js +4 -2
  51. package/build/commands/prune.js.map +1 -1
  52. package/build/commands/publish.d.ts +1 -1
  53. package/build/commands/publish.d.ts.map +1 -1
  54. package/build/commands/publish.js +31 -36
  55. package/build/commands/publish.js.map +1 -1
  56. package/build/commands/release-notes.d.ts.map +1 -1
  57. package/build/commands/release-notes.js +4 -0
  58. package/build/commands/release-notes.js.map +1 -1
  59. package/build/commands/schema.d.ts +3 -3
  60. package/build/commands/search.js +1 -1
  61. package/build/commands/search.js.map +1 -1
  62. package/build/commands/sync.d.ts +1 -1
  63. package/build/commands/sync.d.ts.map +1 -1
  64. package/build/commands/sync.js +27 -12
  65. package/build/commands/sync.js.map +1 -1
  66. package/build/commands/update.d.ts.map +1 -1
  67. package/build/commands/update.js +58 -9
  68. package/build/commands/update.js.map +1 -1
  69. package/build/commands/whoami.d.ts.map +1 -1
  70. package/build/commands/whoami.js +16 -4
  71. package/build/commands/whoami.js.map +1 -1
  72. package/build/commands/why.js +3 -4
  73. package/build/commands/why.js.map +1 -1
  74. package/build/components/Header.d.ts +2 -3
  75. package/build/components/Header.d.ts.map +1 -1
  76. package/build/components/Header.js +2 -9
  77. package/build/components/Header.js.map +1 -1
  78. package/build/components/LocalEditsHint.d.ts +16 -0
  79. package/build/components/LocalEditsHint.d.ts.map +1 -0
  80. package/build/components/LocalEditsHint.js +18 -0
  81. package/build/components/LocalEditsHint.js.map +1 -0
  82. package/build/components/SyncAllInSync.d.ts +5 -1
  83. package/build/components/SyncAllInSync.d.ts.map +1 -1
  84. package/build/components/SyncAllInSync.js +2 -2
  85. package/build/components/SyncAllInSync.js.map +1 -1
  86. package/build/components/header-art.d.ts +7 -0
  87. package/build/components/header-art.d.ts.map +1 -0
  88. package/build/components/header-art.js +14 -0
  89. package/build/components/header-art.js.map +1 -0
  90. package/build/components/index.d.ts +1 -0
  91. package/build/components/index.d.ts.map +1 -1
  92. package/build/components/index.js +1 -0
  93. package/build/components/index.js.map +1 -1
  94. package/build/hooks/useListActions.d.ts.map +1 -1
  95. package/build/hooks/useListActions.js +4 -0
  96. package/build/hooks/useListActions.js.map +1 -1
  97. package/build/hooks/usePruneState.d.ts +1 -7
  98. package/build/hooks/usePruneState.d.ts.map +1 -1
  99. package/build/hooks/usePruneState.js +18 -62
  100. package/build/hooks/usePruneState.js.map +1 -1
  101. package/build/hooks/usePublishState.d.ts +43 -8
  102. package/build/hooks/usePublishState.d.ts.map +1 -1
  103. package/build/hooks/usePublishState.js +82 -565
  104. package/build/hooks/usePublishState.js.map +1 -1
  105. package/build/lib/adapter.d.ts +10 -1
  106. package/build/lib/adapter.d.ts.map +1 -1
  107. package/build/lib/adapter.js +46 -3
  108. package/build/lib/adapter.js.map +1 -1
  109. package/build/lib/api-client.d.ts +9 -5
  110. package/build/lib/api-client.d.ts.map +1 -1
  111. package/build/lib/api-client.js +35 -8
  112. package/build/lib/api-client.js.map +1 -1
  113. package/build/lib/atk-api/generated/types.gen.d.ts +4 -4
  114. package/build/lib/auth.d.ts +12 -2
  115. package/build/lib/auth.d.ts.map +1 -1
  116. package/build/lib/auth.js +38 -3
  117. package/build/lib/auth.js.map +1 -1
  118. package/build/lib/checksum.d.ts +40 -14
  119. package/build/lib/checksum.d.ts.map +1 -1
  120. package/build/lib/checksum.js +110 -57
  121. package/build/lib/checksum.js.map +1 -1
  122. package/build/lib/config.d.ts +4 -4
  123. package/build/lib/config.d.ts.map +1 -1
  124. package/build/lib/config.js +31 -8
  125. package/build/lib/config.js.map +1 -1
  126. package/build/lib/diagnostics.d.ts.map +1 -1
  127. package/build/lib/diagnostics.js +10 -7
  128. package/build/lib/diagnostics.js.map +1 -1
  129. package/build/lib/diff-command.js +1 -1
  130. package/build/lib/diff-command.js.map +1 -1
  131. package/build/lib/errors.d.ts +4 -1
  132. package/build/lib/errors.d.ts.map +1 -1
  133. package/build/lib/errors.js.map +1 -1
  134. package/build/lib/format-age.d.ts +3 -0
  135. package/build/lib/format-age.d.ts.map +1 -0
  136. package/build/lib/format-age.js +18 -0
  137. package/build/lib/format-age.js.map +1 -0
  138. package/build/lib/installer.d.ts +8 -11
  139. package/build/lib/installer.d.ts.map +1 -1
  140. package/build/lib/installer.js +83 -28
  141. package/build/lib/installer.js.map +1 -1
  142. package/build/lib/local-edits.d.ts +72 -0
  143. package/build/lib/local-edits.d.ts.map +1 -0
  144. package/build/lib/local-edits.js +145 -0
  145. package/build/lib/local-edits.js.map +1 -0
  146. package/build/lib/lockfile.d.ts +12 -8
  147. package/build/lib/lockfile.d.ts.map +1 -1
  148. package/build/lib/lockfile.js +209 -59
  149. package/build/lib/lockfile.js.map +1 -1
  150. package/build/lib/mover.d.ts.map +1 -1
  151. package/build/lib/mover.js +11 -12
  152. package/build/lib/mover.js.map +1 -1
  153. package/build/lib/multi-tool-install.d.ts +4 -2
  154. package/build/lib/multi-tool-install.d.ts.map +1 -1
  155. package/build/lib/multi-tool-install.js +12 -2
  156. package/build/lib/multi-tool-install.js.map +1 -1
  157. package/build/lib/offline.d.ts +19 -0
  158. package/build/lib/offline.d.ts.map +1 -0
  159. package/build/lib/offline.js +26 -0
  160. package/build/lib/offline.js.map +1 -0
  161. package/build/lib/owned-paths.d.ts +7 -4
  162. package/build/lib/owned-paths.d.ts.map +1 -1
  163. package/build/lib/owned-paths.js +23 -8
  164. package/build/lib/owned-paths.js.map +1 -1
  165. package/build/lib/parse-json.d.ts +12 -0
  166. package/build/lib/parse-json.d.ts.map +1 -1
  167. package/build/lib/parse-json.js +15 -2
  168. package/build/lib/parse-json.js.map +1 -1
  169. package/build/lib/pastel/commander-specs.d.ts +7 -0
  170. package/build/lib/pastel/commander-specs.d.ts.map +1 -0
  171. package/build/lib/pastel/commander-specs.js +50 -0
  172. package/build/lib/pastel/commander-specs.js.map +1 -0
  173. package/build/lib/pastel/generate-arguments.d.ts +3 -3
  174. package/build/lib/pastel/generate-arguments.d.ts.map +1 -1
  175. package/build/lib/pastel/generate-arguments.js +25 -22
  176. package/build/lib/pastel/generate-arguments.js.map +1 -1
  177. package/build/lib/pastel/generate-command.d.ts +7 -5
  178. package/build/lib/pastel/generate-command.d.ts.map +1 -1
  179. package/build/lib/pastel/generate-command.js +32 -67
  180. package/build/lib/pastel/generate-command.js.map +1 -1
  181. package/build/lib/pastel/generate-commands.d.ts +3 -5
  182. package/build/lib/pastel/generate-commands.d.ts.map +1 -1
  183. package/build/lib/pastel/generate-commands.js +6 -10
  184. package/build/lib/pastel/generate-commands.js.map +1 -1
  185. package/build/lib/pastel/generate-options.d.ts +3 -3
  186. package/build/lib/pastel/generate-options.d.ts.map +1 -1
  187. package/build/lib/pastel/generate-options.js +16 -13
  188. package/build/lib/pastel/generate-options.js.map +1 -1
  189. package/build/lib/pastel/index.d.ts +26 -4
  190. package/build/lib/pastel/index.d.ts.map +1 -1
  191. package/build/lib/pastel/index.js +104 -18
  192. package/build/lib/pastel/index.js.map +1 -1
  193. package/build/lib/pastel/internal-types.d.ts +39 -8
  194. package/build/lib/pastel/internal-types.d.ts.map +1 -1
  195. package/build/lib/pastel/manifest.d.ts +8 -0
  196. package/build/lib/pastel/manifest.d.ts.map +1 -0
  197. package/build/lib/pastel/manifest.js +7 -0
  198. package/build/lib/pastel/manifest.js.map +1 -0
  199. package/build/lib/pastel/read-commands.d.ts +7 -2
  200. package/build/lib/pastel/read-commands.d.ts.map +1 -1
  201. package/build/lib/pastel/read-commands.js +51 -30
  202. package/build/lib/pastel/read-commands.js.map +1 -1
  203. package/build/lib/pastel/render-command.d.ts +13 -0
  204. package/build/lib/pastel/render-command.d.ts.map +1 -0
  205. package/build/lib/pastel/render-command.js +56 -0
  206. package/build/lib/pastel/render-command.js.map +1 -0
  207. package/build/lib/process-alive.d.ts +8 -0
  208. package/build/lib/process-alive.d.ts.map +1 -0
  209. package/build/lib/process-alive.js +16 -0
  210. package/build/lib/process-alive.js.map +1 -0
  211. package/build/lib/pruner.d.ts +26 -0
  212. package/build/lib/pruner.d.ts.map +1 -0
  213. package/build/lib/pruner.js +42 -0
  214. package/build/lib/pruner.js.map +1 -0
  215. package/build/lib/publish-flow.d.ts +7 -15
  216. package/build/lib/publish-flow.d.ts.map +1 -1
  217. package/build/lib/publish-flow.js +634 -178
  218. package/build/lib/publish-flow.js.map +1 -1
  219. package/build/lib/publish-run.d.ts +55 -0
  220. package/build/lib/publish-run.d.ts.map +1 -0
  221. package/build/lib/publish-run.js +169 -0
  222. package/build/lib/publish-run.js.map +1 -0
  223. package/build/lib/publisher.d.ts +23 -16
  224. package/build/lib/publisher.d.ts.map +1 -1
  225. package/build/lib/publisher.js +34 -35
  226. package/build/lib/publisher.js.map +1 -1
  227. package/build/lib/registrar.d.ts.map +1 -1
  228. package/build/lib/registrar.js +2 -2
  229. package/build/lib/registrar.js.map +1 -1
  230. package/build/lib/registry.d.ts +18 -7
  231. package/build/lib/registry.d.ts.map +1 -1
  232. package/build/lib/registry.js +113 -32
  233. package/build/lib/registry.js.map +1 -1
  234. package/build/lib/root-path.d.ts +11 -0
  235. package/build/lib/root-path.d.ts.map +1 -1
  236. package/build/lib/root-path.js +15 -1
  237. package/build/lib/root-path.js.map +1 -1
  238. package/build/lib/schemas/config.d.ts +3 -1
  239. package/build/lib/schemas/config.d.ts.map +1 -1
  240. package/build/lib/schemas/config.js +1 -1
  241. package/build/lib/schemas/config.js.map +1 -1
  242. package/build/lib/schemas/lockfile.d.ts +156 -23
  243. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  244. package/build/lib/schemas/lockfile.js +100 -79
  245. package/build/lib/schemas/lockfile.js.map +1 -1
  246. package/build/lib/setup.d.ts.map +1 -1
  247. package/build/lib/setup.js +53 -48
  248. package/build/lib/setup.js.map +1 -1
  249. package/build/lib/sync.d.ts +22 -6
  250. package/build/lib/sync.d.ts.map +1 -1
  251. package/build/lib/sync.js +59 -7
  252. package/build/lib/sync.js.map +1 -1
  253. package/build/lib/uninstaller.d.ts.map +1 -1
  254. package/build/lib/uninstaller.js +8 -5
  255. package/build/lib/uninstaller.js.map +1 -1
  256. package/build/lib/update-check.d.ts +4 -0
  257. package/build/lib/update-check.d.ts.map +1 -1
  258. package/build/lib/update-check.js +55 -56
  259. package/build/lib/update-check.js.map +1 -1
  260. package/build/lib/updater.d.ts +31 -1
  261. package/build/lib/updater.d.ts.map +1 -1
  262. package/build/lib/updater.js +143 -4
  263. package/build/lib/updater.js.map +1 -1
  264. package/build/lib/usage-error.d.ts +20 -0
  265. package/build/lib/usage-error.d.ts.map +1 -0
  266. package/build/lib/usage-error.js +41 -0
  267. package/build/lib/usage-error.js.map +1 -0
  268. package/build/lib/user-setup.d.ts.map +1 -1
  269. package/build/lib/user-setup.js +62 -59
  270. package/build/lib/user-setup.js.map +1 -1
  271. package/build/lib/write-file.d.ts +5 -0
  272. package/build/lib/write-file.d.ts.map +1 -1
  273. package/build/lib/write-file.js +68 -13
  274. package/build/lib/write-file.js.map +1 -1
  275. package/package.json +81 -81
package/CHANGELOG.md CHANGED
@@ -1,3 +1,214 @@
1
+ ## [8.9.0-dev.31](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.30&targetVersion=GTv8.9.0-dev.31) (2026-10-19)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **cli:** harden the temp sweep and the fsync after review ([4cb1026](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/4cb1026bb71937c096372d1ab95805c93c35055c))
6
+ * **cli:** sweep stale temp files and fsync before the atomic rename ([3a5521e](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3a5521ea3677f9eaf07b31b21b1d098c9ce9e506))
7
+
8
+ ## [8.9.0-dev.30](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.29&targetVersion=GTv8.9.0-dev.30) (2026-10-19)
9
+
10
+ ### Bug Fixes
11
+
12
+ * **cli:** hold the lock over setup's .atkrc.json write too ([8ae955a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/8ae955a2e9575f53e71d002a02cb9e3f1142c5c6))
13
+ * **cli:** take the lockfile lock in atk setup and setup --user ([557ec69](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/557ec695efa1a6d42e67e3495d3cbf54236a3469))
14
+
15
+ ## [8.9.0-dev.29](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.28&targetVersion=GTv8.9.0-dev.29) (2026-10-19)
16
+
17
+ ### Bug Fixes
18
+
19
+ * **cli:** check every config entry's file before removing anything ([57f7cb9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/57f7cb95e1fe0f263bb20f8b7a535522183a2c9d))
20
+ * **cli:** keep lockfile config entry files inside their scope ([6909872](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/6909872f0250b6c92420f1bf9ab406d97639b6db))
21
+
22
+ ## [8.9.0-dev.28](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.27&targetVersion=GTv8.9.0-dev.28) (2026-10-19)
23
+
24
+ ### Bug Fixes
25
+
26
+ * **cli:** remove publish staging once, in order, after an abort (ATK-627) ([c00839b](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/c00839bf189043db0d82ecaaf4c491bda989dc45))
27
+
28
+ ## [8.9.0-dev.27](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.26&targetVersion=GTv8.9.0-dev.27) (2026-10-19)
29
+
30
+ ### Bug Fixes
31
+
32
+ * **cli:** exit 1 when prune can't remove an orphan (ATK-608) ([6ab0f7f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/6ab0f7f6c41706aa1b8d331784cbfb7a0d7d5a11))
33
+
34
+ ### Refactoring
35
+
36
+ * **cli:** list bare atk's commands from the command manifest (ATK-608) ([f28604c](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f28604c0e8c11f3059ec96caf3cc224fe6d02a0b))
37
+ * **cli:** run prune's removal loop once, from lib/pruner.ts (ATK-608) ([7c2fc6d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7c2fc6dfe5b7c31056e5b579354a006e1a595fcf))
38
+ * **cli:** tidy prune after review (ATK-608) ([16cdfb6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/16cdfb634e21f924501a4a6b30c0981c886df492))
39
+
40
+ ## [8.9.0-dev.26](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.25&targetVersion=GTv8.9.0-dev.26) (2026-10-18)
41
+
42
+ ### Performance
43
+
44
+ * **cli:** download a multi-tool install's assets once, 4 at a time (ATK-606) ([eb23bcb](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/eb23bcb0dc54454e23a4d33a4e280fba17b36191))
45
+ * **cli:** start no plan download after one has failed (ATK-606) ([2cff0e2](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2cff0e2f6ef755afdaf8993c804bafd73df0724a))
46
+
47
+ ## [8.9.0-dev.25](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.24&targetVersion=GTv8.9.0-dev.25) (2026-10-18)
48
+
49
+ ### Performance
50
+
51
+ * **cli:** check npm dist-tags once a day for the update banner (ATK-604) ([2406327](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/24063270c67aa915b2d48b306facf09f28b1750a))
52
+
53
+ ## [8.9.0-dev.24](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.23&targetVersion=GTv8.9.0-dev.24) (2026-10-18)
54
+
55
+ ### Bug Fixes
56
+
57
+ * **cli:** name the failing field in validation errors (ATK-602) ([7e58c56](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7e58c56387eac4f8304799d7b5b491decf942b56))
58
+
59
+ ## [8.9.0-dev.23](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.22&targetVersion=GTv8.9.0-dev.23) (2026-10-18)
60
+
61
+ ### Bug Fixes
62
+
63
+ * **cli:** cover older lockfile entries in publish --from-installed (ATK-601) ([cfa7ea9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/cfa7ea9fa4b910c9e6210c3f4ea06940649d64e7))
64
+ * **cli:** give publish --from-installed real metadata (ATK-601) ([25e8552](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/25e8552caa0643fd4c634fec3a3ac21e806f11f6))
65
+ * **cli:** keep --with folders on publish --from-installed (ATK-601) ([50a4333](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/50a4333a8ccf2f82e8c66a82fdd23b3d54acfa67))
66
+
67
+ ## [8.9.0-dev.22](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.21&targetVersion=GTv8.9.0-dev.22) (2026-10-18)
68
+
69
+ ### Bug Fixes
70
+
71
+ * **cli:** apply publish --bump in a terminal without a prompt (ATK-599) ([2cc3015](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2cc301509cfca79990d13620cf9909214d2053b1))
72
+
73
+ ### Documentation
74
+
75
+ * **cli:** say publish applies --bump before it prompts (ATK-599) ([102ab5c](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/102ab5c522b82d10f603b69768abe4d3a3e2aa12))
76
+
77
+ ## [8.9.0-dev.21](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.20&targetVersion=GTv8.9.0-dev.21) (2026-10-18)
78
+
79
+ ### Bug Fixes
80
+
81
+ * **cli:** don't repeat a failed refresh's reason in doctor (ATK-598) ([bd7479f](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/bd7479fd7e4e5845a0be7b736b90279c95236107))
82
+ * **cli:** give the right fix for sign-in errors under ATK_TOKEN (ATK-598) ([0c929ae](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0c929aec047d8a4153ae8ffbc7409eeab82960ae))
83
+ * **cli:** say a session renews the token whoami shows (ATK-598) ([516727d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/516727d1f8c4f697a09725682be57e55bdc61570))
84
+
85
+ ## [8.9.0-dev.20](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.19&targetVersion=GTv8.9.0-dev.20) (2026-10-18)
86
+
87
+ ### Bug Fixes
88
+
89
+ * **cli:** leave help, version and option values to commander (ATK-594) ([da88538](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/da8853890f2ae945b920e92d1e5d93fc3d4798d6))
90
+ * **cli:** report an unknown command with a suggestion (ATK-594) ([dd37320](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/dd373200a68f08405831fd96ea01f840af56ff27))
91
+
92
+ ## [8.9.0-dev.19](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.18&targetVersion=GTv8.9.0-dev.19) (2026-10-18)
93
+
94
+ ### Bug Fixes
95
+
96
+ * **cli:** keep unmerged publish versions out of the lockfile (ATK-592) ([b1c510b](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b1c510bf5d5ce51087f8305261fc1925d89c4d5b))
97
+ * **cli:** leave the lockfile untouched by a publish (ATK-592) ([76f5f79](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/76f5f791f27bea4445e36b3dc5df0773ff4894d5))
98
+
99
+ ## [8.9.0-dev.18](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.17&targetVersion=GTv8.9.0-dev.18) (2026-10-18)
100
+
101
+ ### Bug Fixes
102
+
103
+ * **cli:** keep the command manifest honest (ATK-605) ([b5b08df](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b5b08dfd02a67b647e8aad76d6d5e85cc166c222))
104
+
105
+ ### Performance
106
+
107
+ * **cli:** start without loading Ink or every command (ATK-605) ([47c5c4c](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/47c5c4cd79684872503f0f8de9f14dca09fd197c))
108
+
109
+ ## [8.9.0-dev.17](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.16&targetVersion=GTv8.9.0-dev.17) (2026-10-18)
110
+
111
+ ### Bug Fixes
112
+
113
+ * **cli:** keep --offline out of writes, init's flag and doctor's sign-in (ATK-603) ([a234ca5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/a234ca505bb1f7d8cb4373c44d998c93bbc35eec))
114
+ * **cli:** read commands use the stale registry cache when the API fails (ATK-603) ([5b17d93](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/5b17d93324f68b29db5d6a26defd886c26716650))
115
+
116
+ ## [8.9.0-dev.16](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.15&targetVersion=GTv8.9.0-dev.16) (2026-10-18)
117
+
118
+ ### Bug Fixes
119
+
120
+ * **cli:** publish --dry-run always asks the API for its plan (ATK-600) ([4ea9c07](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/4ea9c07169989f2e37123579650b65a72ea32440))
121
+
122
+ ### Refactoring
123
+
124
+ * **cli:** format the plan's reviewers in one place (ATK-600) ([ddec407](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/ddec40753cb51386bb617214aa52d4c4fcf4b2db))
125
+
126
+ ## [8.9.0-dev.15](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.14&targetVersion=GTv8.9.0-dev.15) (2026-10-18)
127
+
128
+ ### Bug Fixes
129
+
130
+ * **cli:** info checks the opened asset's type and names the org it tried (ATK-597) ([97e8da6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/97e8da67ffdea6dad7b3f82a6fbc249a1e75c142))
131
+ * **cli:** info resolves the active org and opens a single org match (ATK-597) ([a9bdd09](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/a9bdd093dddd8ed758fe4ef5533058275c4ca33f))
132
+
133
+ ## [8.9.0-dev.14](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.13&targetVersion=GTv8.9.0-dev.14) (2026-10-18)
134
+
135
+ ### Bug Fixes
136
+
137
+ * **cli:** one JSON contract for usage errors, outcomes and exits (ATK-595) ([817a243](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/817a2436029df8d18c5ebf7c48042d3a8591316e))
138
+ * **cli:** usage errors read grouped -j, carry notices, write synchronously (ATK-595) ([1b326fe](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/1b326fe2599bb3db6c2efe4b8111d4d333f05b33))
139
+
140
+ ## [8.9.0-dev.13](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.12&targetVersion=GTv8.9.0-dev.13) (2026-10-18)
141
+
142
+ ### Bug Fixes
143
+
144
+ * **cli:** let atk config set booleans and reject bad numbers (ATK-593) ([77500ba](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/77500ba20fc4e3ba456c5a87b6457ea04c15d9cc))
145
+
146
+ ## [8.9.0-dev.12](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.11&targetVersion=GTv8.9.0-dev.12) (2026-10-18)
147
+
148
+ ### Bug Fixes
149
+
150
+ * **cli:** keep the run's flags on install [@org](https://emergentcode.visualstudio.com/org)'s --all suggestion (ATK-591) ([20563ff](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/20563ffd3a61b32ac07460143d73cef83facd550))
151
+ * **cli:** refuse install [@org](https://emergentcode.visualstudio.com/org) with no terminal unless --all (ATK-591) ([6befbd4](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/6befbd40a5fbd05980a0f2b6b58739c8b0be2277))
152
+
153
+ ## [8.9.0-dev.11](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.10&targetVersion=GTv8.9.0-dev.11) (2026-10-18)
154
+
155
+ ### Bug Fixes
156
+
157
+ * **cli:** harden the published-version check for local edits ([18c4134](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/18c413488b2be095f68b39a8d55ce2682680699b))
158
+ * **cli:** keep locally edited asset files on sync and update ([32fdc17](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/32fdc174bec7bedac004ef0f13e78cc2ef50d8ba))
159
+ * **cli:** re-place stale asset files, keeping only real local edits ([676c2bc](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/676c2bcc16f9a90a1dd29c541dd18c61342dcd96))
160
+
161
+ ## [8.9.0-dev.10](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.9&targetVersion=GTv8.9.0-dev.10) (2026-10-18)
162
+
163
+ ### Bug Fixes
164
+
165
+ * **cli:** fetch the update's manifest from the asset it resolved (ATK-589) ([ee5eb3a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/ee5eb3a54ee84b5d5253d1b2980fe2a076e8fc6b))
166
+ * **cli:** refuse publish --update from an older installed copy (ATK-589) ([3a853b3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3a853b390e099e4b1d3e3f4bdddfc60f879a019e))
167
+
168
+ ## [8.9.0-dev.9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.8&targetVersion=GTv8.9.0-dev.9) (2026-10-18)
169
+
170
+ ### Bug Fixes
171
+
172
+ * **cli:** judge an unreadable lock by its refreshes (ATK-588) ([8ba6f59](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/8ba6f596fa56e4511c108c2e39bbf5f6c2b90c25))
173
+ * **cli:** keep the lockfile lock with its live holder (ATK-588) ([e39f581](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/e39f5816db6fcfffbd2a6ffc8d21d7bff693edf5))
174
+ * **cli:** release only this run's lockfile lock (ATK-588) ([0d33b9a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0d33b9ab3f70b58de097d2a9b4dae1e11a0bff76))
175
+
176
+ ## [8.9.0-dev.8](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.7&targetVersion=GTv8.9.0-dev.8) (2026-10-18)
177
+
178
+ ### Bug Fixes
179
+
180
+ * **cli:** keep lockfile keys this CLI doesn't know (ATK-587) ([7ac52a6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7ac52a6ec20cc04738563539c037a2896a8f506b))
181
+ * **cli:** refuse to overwrite a newer lockVersion too (ATK-587) ([67b8335](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/67b8335fbb01cf2235e5a0dbde8959fd507e657e))
182
+
183
+ ## [8.9.0-dev.7](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.6&targetVersion=GTv8.9.0-dev.7) (2026-10-18)
184
+
185
+ ### Bug Fixes
186
+
187
+ * **cli:** write the lockfile atomically ([89f0251](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/89f02515946091c5b7a5669dcd6e3d6409d7c71d))
188
+
189
+ ## [8.9.0-dev.6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.5&targetVersion=GTv8.9.0-dev.6) (2026-10-18)
190
+
191
+ ### Bug Fixes
192
+
193
+ * **cli:** check the entrypoint's path and refuse paths naming no file ([3df406e](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3df406e4b92c865ab50f44c7d46040d4c75126db))
194
+ * **cli:** keep lockfile names and source paths inside their placement ([56979b2](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/56979b25fc14f6361f834d7ad5b5292c3d7bf30d))
195
+
196
+ ## [8.9.0-dev.5](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.4&targetVersion=GTv8.9.0-dev.5) (2026-10-18)
197
+
198
+ ### Bug Fixes
199
+
200
+ * **cli:** checksum MCP config entries at every depth (ATK-584) ([b0c55f8](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b0c55f865c3c729486bfe33d82f7823484078837))
201
+
202
+ ## [8.9.0-dev.4](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.3&targetVersion=GTv8.9.0-dev.4) (2026-10-17)
203
+
204
+ ### Refactoring
205
+
206
+ * **cli:** add planPublish and runPublish behind a PublishPrompter (ATK-607) ([2f9cc95](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2f9cc955276e6f202e1628f30e1a33f1b1d538da))
207
+ * **cli:** keep the publish runner's behavior to the old hook's (ATK-607) ([62a52b3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/62a52b3984fff903dc32bccf76f54c6ac9ade689))
208
+ * **cli:** keep the publish tools picker's cursor in the hook (ATK-607) ([2b401df](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2b401df5452dd2b078add9e781ccac68dbdead19))
209
+ * **cli:** move the publish reducer into lib (ATK-607) ([9d46be9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9d46be92c018520b9d4a0cbfd5124f33d01cffe6))
210
+ * **cli:** run atk publish's UI through runPublish (ATK-607) ([f28cbf4](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f28cbf4e40fb7f87e72bd8470615da7167a0b369))
211
+
1
212
  ## [8.9.0-dev.3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.2&targetVersion=GTv8.9.0-dev.3) (2026-10-17)
2
213
 
3
214
  ### Bug Fixes
package/README.md CHANGED
@@ -96,6 +96,16 @@ atk update
96
96
  | `atk whoami` | Show who you are signed in as and where the credential came from |
97
97
  | `atk why <asset>` | Explain why an asset is installed (direct, dependency, or orphan) |
98
98
 
99
+ ### Offline and a stale cache
100
+
101
+ The CLI keeps the last registry it read in `~/.atk/cache/registry.json` and re-reads it from the ATK API once it is older than `cacheTtlMinutes`. When the API can't be read (no network, a 5xx, a rate limit, or a failed sign-in), the read commands (`search`, `info`, `list`, `outdated`, `diff`, `browse`) use the cached copy, whatever its age, and say how old it is (in `--json` output, a `stale-registry` entry in `notices`). Commands that install, update or publish never use an old copy.
102
+
103
+ `--offline`, before or after any command, never calls the API. The read commands take the registry from the cache of any age; anything else the API serves (a README, asset files) and every command that needs the current registry (`install`, `update`, `publish`, …) fails at once instead of retrying. `atk diff` needs the API for the latest files, so it doesn't work offline.
104
+
105
+ ```bash
106
+ atk search commit --offline
107
+ ```
108
+
99
109
  ## Authentication
100
110
 
101
111
  Every registry read, `atk checkout`, `atk publish`, `atk unpublish`, `atk promote`, `atk deprecate` and `atk release-notes` go through the ATK API with a bearer token for your Emergent Software (Microsoft Entra) account.
@@ -107,9 +117,9 @@ ATK resolves the credential in this order and uses the first hit for the whole r
107
117
  1. `ATK_TOKEN` environment variable — a raw Entra access token for the ATK API, for CI and agents (for example `az account get-access-token --scope api://8da5aa72-0565-4ae8-bf5a-db89d8bd3186/access_as_user --query accessToken -o tsv`).
108
118
  2. The `atk login` session.
109
119
 
110
- When neither is there, commands fail with "Not signed in" (or "Your Emergent sign-in has expired") and name `atk login`. `atk whoami` shows who you are signed in as, which scheme the API applied, and which source supplied the credential; `atk doctor` reports the same in its **Authentication** check.
120
+ When neither is there, commands fail with "Not signed in" (or "Your Emergent sign-in has expired") and name `atk login`. When the session couldn't be renewed for another reason, such as no network or an unreadable session file, they fail with "Couldn't refresh your Emergent sign-in" and the reason, and name `atk login --force`. When the API refuses the token in `ATK_TOKEN`, the error says to refresh `ATK_TOKEN` or unset it, since `atk login` can't replace it; `atk login` and `atk logout` also say so when `ATK_TOKEN` is set. `atk whoami` shows who you are signed in as, which scheme the API applied, and which source supplied the credential; `atk doctor` reports the same in its **Authentication** check. `atk whoami` also shows when the token expires (`expiresAt` in `--json`); a session's token lasts about an hour and is renewed on its own.
111
121
 
112
- GitHub sign-in to ATK has ended. GitHub tokens are no longer read from `gh`, `GITHUB_TOKEN` or config; one passed in `ATK_TOKEN` is refused by the API with a message naming `atk login`.
122
+ GitHub sign-in to ATK has ended. GitHub tokens are no longer read from `gh`, `GITHUB_TOKEN` or config; one passed in `ATK_TOKEN` is refused by the API, and the error says to replace `ATK_TOKEN` with an Entra access token or unset it.
113
123
 
114
124
  ## Asset Types
115
125
 
@@ -154,7 +164,7 @@ atk init skill --from plan-feature --name my-planner
154
164
  atk init rule --offline
155
165
  ```
156
166
 
157
- The `--offline` flag is `init`-only — it skips the registry name-availability check during scaffolding and has no effect on other commands.
167
+ For `init`, the global `--offline` skips the registry name-availability check and the dependency prompt during scaffolding.
158
168
 
159
169
  Supported types: `skill`, `agent`, `rule`, `hook`, `memory-template`, `mcp-config`, `bundle`.
160
170
 
@@ -192,7 +202,7 @@ The publish workflow:
192
202
  1. **Detects** whether the directory contains a `manifest.json` (asset) or `bundle.json` (bundle)
193
203
  2. **Validates** the manifest — checks required fields, file existence, name format, and semver version
194
204
  3. **Checks the registry** — determines if this is a new asset or an update to an existing one
195
- 4. **Version bump** — if updating and the manifest version hasn't been bumped, prompts for `patch`, `minor`, or `major`
205
+ 4. **Version bump** — if updating and the manifest version hasn't been bumped, applies `--bump <patch|minor|major>` when given, or else prompts for one (a run with `--yes`, `--json`, `--dry-run` or no terminal needs `--bump`)
196
206
  5. **Builds a plan** — lists files, target registry path, branch name, and PR metadata
197
207
  6. **Executes** — clones the registry repo, creates a branch, copies files, commits, pushes, and opens a PR against the `main` branch
198
208
 
@@ -307,14 +317,14 @@ atk config org --reset
307
317
 
308
318
  ### Available Keys
309
319
 
310
- | Key | Default | Description |
311
- | ----------------- | ----------------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
312
- | `apiUrl` | `https://func-atk-prod.azurewebsites.net` | ATK API base URL. The `ATK_API_URL` environment variable overrides it (e.g. to point at dev). |
313
- | `cacheDir` | `~/.atk/cache/` | Override cache directory |
314
- | `cacheTtlMinutes` | `5` | Cache TTL in minutes for registry data |
315
- | `checkUpdates` | `true` | Show a banner when a newer ATK version is available (in `--json` output, an `update-available` entry in `notices`) |
316
- | `org` | _(not set)_ | Default organization scope for asset resolution |
317
- | `userRoot` | _(home directory)_ | Root of the user scope (`--user`). A relative or `~/` path is under the home directory. `ATK_USER_ROOT` overrides it. |
320
+ | Key | Default | Description |
321
+ | ----------------- | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
322
+ | `apiUrl` | `https://func-atk-prod.azurewebsites.net` | ATK API base URL. The `ATK_API_URL` environment variable overrides it (e.g. to point at dev). |
323
+ | `cacheDir` | `~/.atk/cache/` | Override cache directory |
324
+ | `cacheTtlMinutes` | `5` | Cache TTL in minutes for registry data |
325
+ | `checkUpdates` | `true` | Show a banner when a newer ATK version is available, asking npm at most once a day (in `--json` output, an `update-available` entry in `notices`) |
326
+ | `org` | _(not set)_ | Default organization scope for asset resolution |
327
+ | `userRoot` | _(home directory)_ | Root of the user scope (`--user`). A relative or `~/` path is under the home directory. `ATK_USER_ROOT` overrides it. |
318
328
 
319
329
  ### Environment Variables
320
330
 
package/build/cli.js CHANGED
@@ -3,9 +3,11 @@ import chalk from 'chalk';
3
3
  import { readFileSync } from 'node:fs';
4
4
  import { dirname, join } from 'node:path';
5
5
  import { fileURLToPath } from 'node:url';
6
- import { ASCII_ART, GRADIENT } from './components/Header.js';
6
+ import commandManifest from './command-manifest.json' with { type: 'json' };
7
+ import { ASCII_ART, GRADIENT } from './components/header-art.js';
8
+ import { GLOBAL_OPTIONS, isOfflineRun, setOffline } from './lib/offline.js';
7
9
  import Pastel from './lib/pastel/index.js';
8
- import { noteCachedUpdate } from './lib/update-check.js';
10
+ import { isJsonRun, reportUsageError } from './lib/usage-error.js';
9
11
  import { holdCookedTtyReads } from './lib/windows-tty-stdin.js';
10
12
  holdCookedTtyReads(process.stdin);
11
13
  const __dirname = dirname(fileURLToPath(import.meta.url));
@@ -24,16 +26,26 @@ function buildHelpHeader(version) {
24
26
  });
25
27
  return `\n${lines.join('\n')}\n`;
26
28
  }
29
+ // JSON mode (`--json`, or no TTY, as in _app.tsx), decided before any command parses.
30
+ const json = isJsonRun(process.argv);
31
+ // Offline mode, decided as early, so the JSON update check below skips npm too.
32
+ setOffline(isOfflineRun(process.argv));
27
33
  const app = new Pastel({
34
+ // `pnpm manifest` writes it from src/commands, and command-manifest.test.ts holds it to them, so a run imports
35
+ // only the command it runs (ATK-605). JSON's types are wider than the spec's literal unions.
36
+ commands: commandManifest,
37
+ globalOptions: GLOBAL_OPTIONS,
28
38
  helpHeader: buildHelpHeader(pkg.version),
29
39
  importMeta: import.meta,
30
40
  name: 'atk',
41
+ onUsageError: (message) => reportUsageError(message, json),
31
42
  version: pkg.version,
32
43
  });
33
- // JSON mode (`--json`, or no TTY, as in _app.tsx) shows no update banner, so a newer
34
- // cached npm version becomes a notice in the payload instead. It is read before the
35
- // command runs so the notice is there when the command prints.
36
- if (process.argv.includes('--json') || !process.stdin.isTTY) {
44
+ // JSON mode shows no update banner, so a newer cached npm version becomes a notice in
45
+ // the payload instead. It is read before the command runs so the notice is there when
46
+ // the command prints. Imported here, not at the top: it loads the config and Zod (ATK-605).
47
+ if (json) {
48
+ const { noteCachedUpdate } = await import('./lib/update-check.js');
37
49
  await noteCachedUpdate();
38
50
  }
39
51
  await app.run();
package/build/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAElC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAEjF,CAAC;AAEF,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7G,MAAM,OAAO,GAAG,KAAK,CAAC;IAEtB,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,SAAS,EAAE,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,WAAW,EAAE,CAAC;QAC5D,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACnC,CAAC;AAED,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;IACrB,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC,IAAI;IACvB,IAAI,EAAE,KAAK;IACX,OAAO,EAAE,GAAG,CAAC,OAAO;CACrB,CAAC,CAAC;AAEH,qFAAqF;AACrF,oFAAoF;AACpF,+DAA+D;AAC/D,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IAC5D,MAAM,gBAAgB,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.tsx"],"names":[],"mappings":"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"}