@detergent-software/atk 8.9.0-dev.2 → 8.9.0-dev.21

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 (239) hide show
  1. package/CHANGELOG.md +145 -0
  2. package/README.md +13 -3
  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.js +1 -1
  28. package/build/commands/index.js.map +1 -1
  29. package/build/commands/info.d.ts.map +1 -1
  30. package/build/commands/info.js +50 -33
  31. package/build/commands/info.js.map +1 -1
  32. package/build/commands/init.d.ts.map +1 -1
  33. package/build/commands/init.js +4 -2
  34. package/build/commands/init.js.map +1 -1
  35. package/build/commands/install.d.ts.map +1 -1
  36. package/build/commands/install.js +28 -7
  37. package/build/commands/install.js.map +1 -1
  38. package/build/commands/list.js +2 -2
  39. package/build/commands/list.js.map +1 -1
  40. package/build/commands/login.d.ts.map +1 -1
  41. package/build/commands/login.js +12 -2
  42. package/build/commands/login.js.map +1 -1
  43. package/build/commands/logout.d.ts.map +1 -1
  44. package/build/commands/logout.js +9 -1
  45. package/build/commands/logout.js.map +1 -1
  46. package/build/commands/outdated.js +1 -1
  47. package/build/commands/outdated.js.map +1 -1
  48. package/build/commands/publish.d.ts +1 -1
  49. package/build/commands/publish.d.ts.map +1 -1
  50. package/build/commands/publish.js +32 -36
  51. package/build/commands/publish.js.map +1 -1
  52. package/build/commands/release-notes.d.ts.map +1 -1
  53. package/build/commands/release-notes.js +4 -0
  54. package/build/commands/release-notes.js.map +1 -1
  55. package/build/commands/schema.d.ts +3 -3
  56. package/build/commands/search.js +1 -1
  57. package/build/commands/search.js.map +1 -1
  58. package/build/commands/sync.d.ts +1 -1
  59. package/build/commands/sync.d.ts.map +1 -1
  60. package/build/commands/sync.js +27 -12
  61. package/build/commands/sync.js.map +1 -1
  62. package/build/commands/update.d.ts.map +1 -1
  63. package/build/commands/update.js +58 -9
  64. package/build/commands/update.js.map +1 -1
  65. package/build/commands/whoami.d.ts.map +1 -1
  66. package/build/commands/whoami.js +16 -4
  67. package/build/commands/whoami.js.map +1 -1
  68. package/build/commands/why.js +3 -4
  69. package/build/commands/why.js.map +1 -1
  70. package/build/components/Header.d.ts +2 -3
  71. package/build/components/Header.d.ts.map +1 -1
  72. package/build/components/Header.js +2 -9
  73. package/build/components/Header.js.map +1 -1
  74. package/build/components/LocalEditsHint.d.ts +16 -0
  75. package/build/components/LocalEditsHint.d.ts.map +1 -0
  76. package/build/components/LocalEditsHint.js +18 -0
  77. package/build/components/LocalEditsHint.js.map +1 -0
  78. package/build/components/SyncAllInSync.d.ts +5 -1
  79. package/build/components/SyncAllInSync.d.ts.map +1 -1
  80. package/build/components/SyncAllInSync.js +2 -2
  81. package/build/components/SyncAllInSync.js.map +1 -1
  82. package/build/components/header-art.d.ts +7 -0
  83. package/build/components/header-art.d.ts.map +1 -0
  84. package/build/components/header-art.js +14 -0
  85. package/build/components/header-art.js.map +1 -0
  86. package/build/components/index.d.ts +1 -0
  87. package/build/components/index.d.ts.map +1 -1
  88. package/build/components/index.js +1 -0
  89. package/build/components/index.js.map +1 -1
  90. package/build/hooks/useListActions.d.ts.map +1 -1
  91. package/build/hooks/useListActions.js +4 -0
  92. package/build/hooks/useListActions.js.map +1 -1
  93. package/build/hooks/usePublishState.d.ts +38 -207
  94. package/build/hooks/usePublishState.d.ts.map +1 -1
  95. package/build/hooks/usePublishState.js +83 -1501
  96. package/build/hooks/usePublishState.js.map +1 -1
  97. package/build/lib/adapter.js +23 -3
  98. package/build/lib/adapter.js.map +1 -1
  99. package/build/lib/api-client.d.ts +9 -5
  100. package/build/lib/api-client.d.ts.map +1 -1
  101. package/build/lib/api-client.js +35 -8
  102. package/build/lib/api-client.js.map +1 -1
  103. package/build/lib/atk-api/generated/types.gen.d.ts +4 -4
  104. package/build/lib/auth.d.ts +12 -2
  105. package/build/lib/auth.d.ts.map +1 -1
  106. package/build/lib/auth.js +38 -3
  107. package/build/lib/auth.js.map +1 -1
  108. package/build/lib/checksum.d.ts +40 -14
  109. package/build/lib/checksum.d.ts.map +1 -1
  110. package/build/lib/checksum.js +110 -57
  111. package/build/lib/checksum.js.map +1 -1
  112. package/build/lib/config.d.ts.map +1 -1
  113. package/build/lib/config.js +28 -5
  114. package/build/lib/config.js.map +1 -1
  115. package/build/lib/diagnostics.d.ts.map +1 -1
  116. package/build/lib/diagnostics.js +10 -7
  117. package/build/lib/diagnostics.js.map +1 -1
  118. package/build/lib/diff-command.js +1 -1
  119. package/build/lib/diff-command.js.map +1 -1
  120. package/build/lib/errors.d.ts +4 -1
  121. package/build/lib/errors.d.ts.map +1 -1
  122. package/build/lib/errors.js.map +1 -1
  123. package/build/lib/format-age.d.ts +3 -0
  124. package/build/lib/format-age.d.ts.map +1 -0
  125. package/build/lib/format-age.js +18 -0
  126. package/build/lib/format-age.js.map +1 -0
  127. package/build/lib/installer.d.ts +2 -7
  128. package/build/lib/installer.d.ts.map +1 -1
  129. package/build/lib/installer.js +30 -5
  130. package/build/lib/installer.js.map +1 -1
  131. package/build/lib/local-edits.d.ts +72 -0
  132. package/build/lib/local-edits.d.ts.map +1 -0
  133. package/build/lib/local-edits.js +145 -0
  134. package/build/lib/local-edits.js.map +1 -0
  135. package/build/lib/lockfile.d.ts +12 -8
  136. package/build/lib/lockfile.d.ts.map +1 -1
  137. package/build/lib/lockfile.js +193 -52
  138. package/build/lib/lockfile.js.map +1 -1
  139. package/build/lib/mover.d.ts.map +1 -1
  140. package/build/lib/mover.js +8 -12
  141. package/build/lib/mover.js.map +1 -1
  142. package/build/lib/offline.d.ts +19 -0
  143. package/build/lib/offline.d.ts.map +1 -0
  144. package/build/lib/offline.js +26 -0
  145. package/build/lib/offline.js.map +1 -0
  146. package/build/lib/owned-paths.d.ts +4 -2
  147. package/build/lib/owned-paths.d.ts.map +1 -1
  148. package/build/lib/owned-paths.js +19 -6
  149. package/build/lib/owned-paths.js.map +1 -1
  150. package/build/lib/pastel/commander-specs.d.ts +7 -0
  151. package/build/lib/pastel/commander-specs.d.ts.map +1 -0
  152. package/build/lib/pastel/commander-specs.js +50 -0
  153. package/build/lib/pastel/commander-specs.js.map +1 -0
  154. package/build/lib/pastel/generate-arguments.d.ts +3 -3
  155. package/build/lib/pastel/generate-arguments.d.ts.map +1 -1
  156. package/build/lib/pastel/generate-arguments.js +25 -22
  157. package/build/lib/pastel/generate-arguments.js.map +1 -1
  158. package/build/lib/pastel/generate-command.d.ts +7 -5
  159. package/build/lib/pastel/generate-command.d.ts.map +1 -1
  160. package/build/lib/pastel/generate-command.js +32 -67
  161. package/build/lib/pastel/generate-command.js.map +1 -1
  162. package/build/lib/pastel/generate-commands.d.ts +3 -5
  163. package/build/lib/pastel/generate-commands.d.ts.map +1 -1
  164. package/build/lib/pastel/generate-commands.js +6 -10
  165. package/build/lib/pastel/generate-commands.js.map +1 -1
  166. package/build/lib/pastel/generate-options.d.ts +3 -3
  167. package/build/lib/pastel/generate-options.d.ts.map +1 -1
  168. package/build/lib/pastel/generate-options.js +16 -13
  169. package/build/lib/pastel/generate-options.js.map +1 -1
  170. package/build/lib/pastel/index.d.ts +26 -4
  171. package/build/lib/pastel/index.d.ts.map +1 -1
  172. package/build/lib/pastel/index.js +104 -18
  173. package/build/lib/pastel/index.js.map +1 -1
  174. package/build/lib/pastel/internal-types.d.ts +39 -8
  175. package/build/lib/pastel/internal-types.d.ts.map +1 -1
  176. package/build/lib/pastel/manifest.d.ts +8 -0
  177. package/build/lib/pastel/manifest.d.ts.map +1 -0
  178. package/build/lib/pastel/manifest.js +7 -0
  179. package/build/lib/pastel/manifest.js.map +1 -0
  180. package/build/lib/pastel/read-commands.d.ts +7 -2
  181. package/build/lib/pastel/read-commands.d.ts.map +1 -1
  182. package/build/lib/pastel/read-commands.js +51 -30
  183. package/build/lib/pastel/read-commands.js.map +1 -1
  184. package/build/lib/pastel/render-command.d.ts +13 -0
  185. package/build/lib/pastel/render-command.d.ts.map +1 -0
  186. package/build/lib/pastel/render-command.js +56 -0
  187. package/build/lib/pastel/render-command.js.map +1 -0
  188. package/build/lib/publish-flow.d.ts +225 -0
  189. package/build/lib/publish-flow.d.ts.map +1 -0
  190. package/build/lib/publish-flow.js +1242 -0
  191. package/build/lib/publish-flow.js.map +1 -0
  192. package/build/lib/publish-run.d.ts +55 -0
  193. package/build/lib/publish-run.d.ts.map +1 -0
  194. package/build/lib/publish-run.js +164 -0
  195. package/build/lib/publish-run.js.map +1 -0
  196. package/build/lib/publisher.d.ts +11 -16
  197. package/build/lib/publisher.d.ts.map +1 -1
  198. package/build/lib/publisher.js +25 -42
  199. package/build/lib/publisher.js.map +1 -1
  200. package/build/lib/registry.d.ts +15 -1
  201. package/build/lib/registry.d.ts.map +1 -1
  202. package/build/lib/registry.js +108 -24
  203. package/build/lib/registry.js.map +1 -1
  204. package/build/lib/root-path.d.ts +11 -0
  205. package/build/lib/root-path.d.ts.map +1 -1
  206. package/build/lib/root-path.js +15 -1
  207. package/build/lib/root-path.js.map +1 -1
  208. package/build/lib/schemas/config.js +1 -1
  209. package/build/lib/schemas/config.js.map +1 -1
  210. package/build/lib/schemas/lockfile.d.ts +156 -23
  211. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  212. package/build/lib/schemas/lockfile.js +100 -79
  213. package/build/lib/schemas/lockfile.js.map +1 -1
  214. package/build/lib/staging.d.ts +15 -0
  215. package/build/lib/staging.d.ts.map +1 -0
  216. package/build/lib/staging.js +33 -0
  217. package/build/lib/staging.js.map +1 -0
  218. package/build/lib/sync.d.ts +22 -6
  219. package/build/lib/sync.d.ts.map +1 -1
  220. package/build/lib/sync.js +59 -7
  221. package/build/lib/sync.js.map +1 -1
  222. package/build/lib/uninstaller.js +2 -2
  223. package/build/lib/uninstaller.js.map +1 -1
  224. package/build/lib/update-check.d.ts.map +1 -1
  225. package/build/lib/update-check.js +5 -1
  226. package/build/lib/update-check.js.map +1 -1
  227. package/build/lib/updater.d.ts +31 -1
  228. package/build/lib/updater.d.ts.map +1 -1
  229. package/build/lib/updater.js +143 -4
  230. package/build/lib/updater.js.map +1 -1
  231. package/build/lib/usage-error.d.ts +20 -0
  232. package/build/lib/usage-error.d.ts.map +1 -0
  233. package/build/lib/usage-error.js +41 -0
  234. package/build/lib/usage-error.js.map +1 -0
  235. package/build/lib/write-file.d.ts +5 -0
  236. package/build/lib/write-file.d.ts.map +1 -1
  237. package/build/lib/write-file.js +10 -7
  238. package/build/lib/write-file.js.map +1 -1
  239. package/package.json +81 -81
package/CHANGELOG.md CHANGED
@@ -1,3 +1,148 @@
1
+ ## [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)
2
+
3
+ ### Bug Fixes
4
+
5
+ * **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))
6
+ * **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))
7
+ * **cli:** say a session renews the token whoami shows (ATK-598) ([516727d](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/516727d1f8c4f697a09725682be57e55bdc61570))
8
+
9
+ ## [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)
10
+
11
+ ### Bug Fixes
12
+
13
+ * **cli:** leave help, version and option values to commander (ATK-594) ([da88538](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/da8853890f2ae945b920e92d1e5d93fc3d4798d6))
14
+ * **cli:** report an unknown command with a suggestion (ATK-594) ([dd37320](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/dd373200a68f08405831fd96ea01f840af56ff27))
15
+
16
+ ## [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)
17
+
18
+ ### Bug Fixes
19
+
20
+ * **cli:** keep unmerged publish versions out of the lockfile (ATK-592) ([b1c510b](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b1c510bf5d5ce51087f8305261fc1925d89c4d5b))
21
+ * **cli:** leave the lockfile untouched by a publish (ATK-592) ([76f5f79](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/76f5f791f27bea4445e36b3dc5df0773ff4894d5))
22
+
23
+ ## [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)
24
+
25
+ ### Bug Fixes
26
+
27
+ * **cli:** keep the command manifest honest (ATK-605) ([b5b08df](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b5b08dfd02a67b647e8aad76d6d5e85cc166c222))
28
+
29
+ ### Performance
30
+
31
+ * **cli:** start without loading Ink or every command (ATK-605) ([47c5c4c](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/47c5c4cd79684872503f0f8de9f14dca09fd197c))
32
+
33
+ ## [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)
34
+
35
+ ### Bug Fixes
36
+
37
+ * **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))
38
+ * **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))
39
+
40
+ ## [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)
41
+
42
+ ### Bug Fixes
43
+
44
+ * **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))
45
+
46
+ ### Refactoring
47
+
48
+ * **cli:** format the plan's reviewers in one place (ATK-600) ([ddec407](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/ddec40753cb51386bb617214aa52d4c4fcf4b2db))
49
+
50
+ ## [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)
51
+
52
+ ### Bug Fixes
53
+
54
+ * **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))
55
+ * **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))
56
+
57
+ ## [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)
58
+
59
+ ### Bug Fixes
60
+
61
+ * **cli:** one JSON contract for usage errors, outcomes and exits (ATK-595) ([817a243](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/817a2436029df8d18c5ebf7c48042d3a8591316e))
62
+ * **cli:** usage errors read grouped -j, carry notices, write synchronously (ATK-595) ([1b326fe](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/1b326fe2599bb3db6c2efe4b8111d4d333f05b33))
63
+
64
+ ## [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)
65
+
66
+ ### Bug Fixes
67
+
68
+ * **cli:** let atk config set booleans and reject bad numbers (ATK-593) ([77500ba](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/77500ba20fc4e3ba456c5a87b6457ea04c15d9cc))
69
+
70
+ ## [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)
71
+
72
+ ### Bug Fixes
73
+
74
+ * **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))
75
+ * **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))
76
+
77
+ ## [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)
78
+
79
+ ### Bug Fixes
80
+
81
+ * **cli:** harden the published-version check for local edits ([18c4134](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/18c413488b2be095f68b39a8d55ce2682680699b))
82
+ * **cli:** keep locally edited asset files on sync and update ([32fdc17](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/32fdc174bec7bedac004ef0f13e78cc2ef50d8ba))
83
+ * **cli:** re-place stale asset files, keeping only real local edits ([676c2bc](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/676c2bcc16f9a90a1dd29c541dd18c61342dcd96))
84
+
85
+ ## [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)
86
+
87
+ ### Bug Fixes
88
+
89
+ * **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))
90
+ * **cli:** refuse publish --update from an older installed copy (ATK-589) ([3a853b3](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3a853b390e099e4b1d3e3f4bdddfc60f879a019e))
91
+
92
+ ## [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)
93
+
94
+ ### Bug Fixes
95
+
96
+ * **cli:** judge an unreadable lock by its refreshes (ATK-588) ([8ba6f59](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/8ba6f596fa56e4511c108c2e39bbf5f6c2b90c25))
97
+ * **cli:** keep the lockfile lock with its live holder (ATK-588) ([e39f581](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/e39f5816db6fcfffbd2a6ffc8d21d7bff693edf5))
98
+ * **cli:** release only this run's lockfile lock (ATK-588) ([0d33b9a](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/0d33b9ab3f70b58de097d2a9b4dae1e11a0bff76))
99
+
100
+ ## [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)
101
+
102
+ ### Bug Fixes
103
+
104
+ * **cli:** keep lockfile keys this CLI doesn't know (ATK-587) ([7ac52a6](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/7ac52a6ec20cc04738563539c037a2896a8f506b))
105
+ * **cli:** refuse to overwrite a newer lockVersion too (ATK-587) ([67b8335](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/67b8335fbb01cf2235e5a0dbde8959fd507e657e))
106
+
107
+ ## [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)
108
+
109
+ ### Bug Fixes
110
+
111
+ * **cli:** write the lockfile atomically ([89f0251](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/89f02515946091c5b7a5669dcd6e3d6409d7c71d))
112
+
113
+ ## [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)
114
+
115
+ ### Bug Fixes
116
+
117
+ * **cli:** check the entrypoint's path and refuse paths naming no file ([3df406e](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/3df406e4b92c865ab50f44c7d46040d4c75126db))
118
+ * **cli:** keep lockfile names and source paths inside their placement ([56979b2](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/56979b25fc14f6361f834d7ad5b5292c3d7bf30d))
119
+
120
+ ## [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)
121
+
122
+ ### Bug Fixes
123
+
124
+ * **cli:** checksum MCP config entries at every depth (ATK-584) ([b0c55f8](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/b0c55f865c3c729486bfe33d82f7823484078837))
125
+
126
+ ## [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)
127
+
128
+ ### Refactoring
129
+
130
+ * **cli:** add planPublish and runPublish behind a PublishPrompter (ATK-607) ([2f9cc95](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/2f9cc955276e6f202e1628f30e1a33f1b1d538da))
131
+ * **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))
132
+ * **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))
133
+ * **cli:** move the publish reducer into lib (ATK-607) ([9d46be9](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/9d46be92c018520b9d4a0cbfd5124f33d01cffe6))
134
+ * **cli:** run atk publish's UI through runPublish (ATK-607) ([f28cbf4](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/f28cbf4e40fb7f87e72bd8470615da7167a0b369))
135
+
136
+ ## [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)
137
+
138
+ ### Bug Fixes
139
+
140
+ * **cli:** remove publish staging directories a failed or cancelled run leaves (ATK-607) ([4dc9642](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/4dc9642207ccae1e3909be3ab908d4f32ef04bfc))
141
+
142
+ ### Refactoring
143
+
144
+ * **cli:** move the publish steps out of usePublishState into lib (ATK-607) ([02fd8da](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/commit/02fd8da8edf387b3d785346ce8a948934e549f25))
145
+
1
146
  ## [8.9.0-dev.2](https://emergentcode.visualstudio.com/Emergent%20Software/_git/Emergent.AgenticToolkit/branchCompare?baseVersion=GTv8.9.0-dev.1&targetVersion=GTv8.9.0-dev.2) (2026-10-17)
2
147
 
3
148
  ### 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
 
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":";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;AAIzC,OAAO,eAAe,MAAM,yBAAyB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,MAAM,MAAM,uBAAuB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACnE,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,sFAAsF;AACtF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AACrC,gFAAgF;AAChF,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAEvC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;IACrB,+GAA+G;IAC/G,6FAA6F;IAC7F,QAAQ,EAAE,eAAkC;IAC5C,aAAa,EAAE,cAAc;IAC7B,UAAU,EAAE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC;IACxC,UAAU,EAAE,MAAM,CAAC,IAAI;IACvB,IAAI,EAAE,KAAK;IACX,YAAY,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC;IAC1D,OAAO,EAAE,GAAG,CAAC,OAAO;CACrB,CAAC,CAAC;AAEH,sFAAsF;AACtF,sFAAsF;AACtF,4FAA4F;AAC5F,IAAI,IAAI,EAAE,CAAC;IACT,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnE,MAAM,gBAAgB,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC"}