@detergent-software/atk 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/README.md +361 -0
  2. package/build/commands/_app.d.ts.map +1 -1
  3. package/build/commands/_app.js +23 -3
  4. package/build/commands/_app.js.map +1 -1
  5. package/build/commands/audit.d.ts.map +1 -1
  6. package/build/commands/audit.js +76 -37
  7. package/build/commands/audit.js.map +1 -1
  8. package/build/commands/browse.d.ts.map +1 -1
  9. package/build/commands/browse.js +126 -154
  10. package/build/commands/browse.js.map +1 -1
  11. package/build/commands/cache.d.ts.map +1 -1
  12. package/build/commands/cache.js +13 -15
  13. package/build/commands/cache.js.map +1 -1
  14. package/build/commands/config.d.ts +1 -1
  15. package/build/commands/config.d.ts.map +1 -1
  16. package/build/commands/config.js +7 -3
  17. package/build/commands/config.js.map +1 -1
  18. package/build/commands/diff.d.ts.map +1 -1
  19. package/build/commands/diff.js +4 -117
  20. package/build/commands/diff.js.map +1 -1
  21. package/build/commands/freeze.d.ts +1 -2
  22. package/build/commands/freeze.d.ts.map +1 -1
  23. package/build/commands/freeze.js +17 -37
  24. package/build/commands/freeze.js.map +1 -1
  25. package/build/commands/info.d.ts +1 -2
  26. package/build/commands/info.d.ts.map +1 -1
  27. package/build/commands/info.js +43 -38
  28. package/build/commands/info.js.map +1 -1
  29. package/build/commands/init.d.ts.map +1 -1
  30. package/build/commands/init.js +41 -414
  31. package/build/commands/init.js.map +1 -1
  32. package/build/commands/install.d.ts.map +1 -1
  33. package/build/commands/install.js +79 -72
  34. package/build/commands/install.js.map +1 -1
  35. package/build/commands/list.d.ts +2 -2
  36. package/build/commands/list.d.ts.map +1 -1
  37. package/build/commands/list.js +138 -27
  38. package/build/commands/list.js.map +1 -1
  39. package/build/commands/outdated.d.ts.map +1 -1
  40. package/build/commands/outdated.js +20 -10
  41. package/build/commands/outdated.js.map +1 -1
  42. package/build/commands/pin.d.ts +1 -2
  43. package/build/commands/pin.d.ts.map +1 -1
  44. package/build/commands/pin.js +44 -47
  45. package/build/commands/pin.js.map +1 -1
  46. package/build/commands/prune.d.ts.map +1 -1
  47. package/build/commands/prune.js +76 -151
  48. package/build/commands/prune.js.map +1 -1
  49. package/build/commands/publish.d.ts +4 -1
  50. package/build/commands/publish.d.ts.map +1 -1
  51. package/build/commands/publish.js +139 -388
  52. package/build/commands/publish.js.map +1 -1
  53. package/build/commands/search.d.ts.map +1 -1
  54. package/build/commands/search.js +14 -19
  55. package/build/commands/search.js.map +1 -1
  56. package/build/commands/setup.d.ts +1 -1
  57. package/build/commands/setup.d.ts.map +1 -1
  58. package/build/commands/setup.js +48 -253
  59. package/build/commands/setup.js.map +1 -1
  60. package/build/commands/sync.d.ts.map +1 -1
  61. package/build/commands/sync.js +43 -169
  62. package/build/commands/sync.js.map +1 -1
  63. package/build/commands/thaw.d.ts +1 -2
  64. package/build/commands/thaw.d.ts.map +1 -1
  65. package/build/commands/thaw.js +19 -37
  66. package/build/commands/thaw.js.map +1 -1
  67. package/build/commands/uninstall.d.ts.map +1 -1
  68. package/build/commands/uninstall.js +106 -221
  69. package/build/commands/uninstall.js.map +1 -1
  70. package/build/commands/unpin.d.ts +1 -2
  71. package/build/commands/unpin.d.ts.map +1 -1
  72. package/build/commands/unpin.js +23 -38
  73. package/build/commands/unpin.js.map +1 -1
  74. package/build/commands/update.d.ts.map +1 -1
  75. package/build/commands/update.js +57 -54
  76. package/build/commands/update.js.map +1 -1
  77. package/build/commands/why.d.ts +1 -1
  78. package/build/commands/why.d.ts.map +1 -1
  79. package/build/commands/why.js +14 -6
  80. package/build/commands/why.js.map +1 -1
  81. package/build/components/AssetDetail.d.ts +1 -3
  82. package/build/components/AssetDetail.d.ts.map +1 -1
  83. package/build/components/AssetDetail.js +22 -21
  84. package/build/components/AssetDetail.js.map +1 -1
  85. package/build/components/AssetTable.d.ts +5 -2
  86. package/build/components/AssetTable.d.ts.map +1 -1
  87. package/build/components/AssetTable.js +37 -40
  88. package/build/components/AssetTable.js.map +1 -1
  89. package/build/components/AssetVersionLine.d.ts +27 -0
  90. package/build/components/AssetVersionLine.d.ts.map +1 -0
  91. package/build/components/AssetVersionLine.js +10 -0
  92. package/build/components/AssetVersionLine.js.map +1 -0
  93. package/build/components/BrowseExpandedBundle.d.ts +10 -1
  94. package/build/components/BrowseExpandedBundle.d.ts.map +1 -1
  95. package/build/components/BrowseExpandedBundle.js +25 -2
  96. package/build/components/BrowseExpandedBundle.js.map +1 -1
  97. package/build/components/BrowseExpandedRow.d.ts +4 -1
  98. package/build/components/BrowseExpandedRow.d.ts.map +1 -1
  99. package/build/components/BrowseExpandedRow.js +24 -3
  100. package/build/components/BrowseExpandedRow.js.map +1 -1
  101. package/build/components/BrowseList.d.ts +5 -1
  102. package/build/components/BrowseList.d.ts.map +1 -1
  103. package/build/components/BrowseList.js +57 -47
  104. package/build/components/BrowseList.js.map +1 -1
  105. package/build/components/BundleDetail.d.ts +2 -1
  106. package/build/components/BundleDetail.d.ts.map +1 -1
  107. package/build/components/BundleDetail.js +3 -2
  108. package/build/components/BundleDetail.js.map +1 -1
  109. package/build/components/DiffView.d.ts +0 -2
  110. package/build/components/DiffView.d.ts.map +1 -1
  111. package/build/components/DiffView.js +11 -5
  112. package/build/components/DiffView.js.map +1 -1
  113. package/build/components/DryRunBanner.d.ts +3 -3
  114. package/build/components/DryRunBanner.d.ts.map +1 -1
  115. package/build/components/DryRunBanner.js +2 -2
  116. package/build/components/DryRunBanner.js.map +1 -1
  117. package/build/components/FilterBar.d.ts +10 -3
  118. package/build/components/FilterBar.d.ts.map +1 -1
  119. package/build/components/FilterBar.js +4 -4
  120. package/build/components/FilterBar.js.map +1 -1
  121. package/build/components/FrozenSkippedHint.d.ts +11 -0
  122. package/build/components/FrozenSkippedHint.d.ts.map +1 -0
  123. package/build/components/FrozenSkippedHint.js +12 -0
  124. package/build/components/FrozenSkippedHint.js.map +1 -0
  125. package/build/components/HelpBar.d.ts.map +1 -1
  126. package/build/components/HelpBar.js +3 -3
  127. package/build/components/HelpBar.js.map +1 -1
  128. package/build/components/InitSuccess.d.ts +5 -0
  129. package/build/components/InitSuccess.d.ts.map +1 -0
  130. package/build/components/InitSuccess.js +20 -0
  131. package/build/components/InitSuccess.js.map +1 -0
  132. package/build/components/InstallSummary.d.ts +3 -3
  133. package/build/components/InstallSummary.d.ts.map +1 -1
  134. package/build/components/InstallSummary.js +2 -2
  135. package/build/components/InstallSummary.js.map +1 -1
  136. package/build/components/Link.d.ts +7 -0
  137. package/build/components/Link.d.ts.map +1 -0
  138. package/build/components/Link.js +6 -0
  139. package/build/components/Link.js.map +1 -0
  140. package/build/components/ListActionBar.d.ts +11 -0
  141. package/build/components/ListActionBar.d.ts.map +1 -0
  142. package/build/components/ListActionBar.js +30 -0
  143. package/build/components/ListActionBar.js.map +1 -0
  144. package/build/components/ListBrowseList.d.ts +27 -0
  145. package/build/components/ListBrowseList.d.ts.map +1 -0
  146. package/build/components/ListBrowseList.js +57 -0
  147. package/build/components/ListBrowseList.js.map +1 -0
  148. package/build/components/ListExpandedRow.d.ts +38 -0
  149. package/build/components/ListExpandedRow.d.ts.map +1 -0
  150. package/build/components/ListExpandedRow.js +46 -0
  151. package/build/components/ListExpandedRow.js.map +1 -0
  152. package/build/components/ListHelpBar.d.ts +19 -0
  153. package/build/components/ListHelpBar.d.ts.map +1 -0
  154. package/build/components/ListHelpBar.js +11 -0
  155. package/build/components/ListHelpBar.js.map +1 -0
  156. package/build/components/OrphanListItem.d.ts +15 -0
  157. package/build/components/OrphanListItem.d.ts.map +1 -0
  158. package/build/components/OrphanListItem.js +6 -0
  159. package/build/components/OrphanListItem.js.map +1 -0
  160. package/build/components/PromptField.d.ts +19 -0
  161. package/build/components/PromptField.d.ts.map +1 -0
  162. package/build/components/PromptField.js +7 -0
  163. package/build/components/PromptField.js.map +1 -0
  164. package/build/components/SkippedAssetSection.d.ts +35 -0
  165. package/build/components/SkippedAssetSection.d.ts.map +1 -0
  166. package/build/components/SkippedAssetSection.js +15 -0
  167. package/build/components/SkippedAssetSection.js.map +1 -0
  168. package/build/components/StatusBadge.d.ts +1 -1
  169. package/build/components/StatusBadge.d.ts.map +1 -1
  170. package/build/components/StatusBadge.js +4 -0
  171. package/build/components/StatusBadge.js.map +1 -1
  172. package/build/components/SyncAllInSync.d.ts +14 -0
  173. package/build/components/SyncAllInSync.d.ts.map +1 -0
  174. package/build/components/SyncAllInSync.js +10 -0
  175. package/build/components/SyncAllInSync.js.map +1 -0
  176. package/build/components/SyncDriftedList.d.ts +24 -0
  177. package/build/components/SyncDriftedList.d.ts.map +1 -0
  178. package/build/components/SyncDriftedList.js +17 -0
  179. package/build/components/SyncDriftedList.js.map +1 -0
  180. package/build/components/SyncNoAssets.d.ts +12 -0
  181. package/build/components/SyncNoAssets.d.ts.map +1 -0
  182. package/build/components/SyncNoAssets.js +9 -0
  183. package/build/components/SyncNoAssets.js.map +1 -0
  184. package/build/components/index.d.ts +16 -2
  185. package/build/components/index.d.ts.map +1 -1
  186. package/build/components/index.js +16 -2
  187. package/build/components/index.js.map +1 -1
  188. package/build/hooks/useBrowseState.d.ts +44 -1
  189. package/build/hooks/useBrowseState.d.ts.map +1 -1
  190. package/build/hooks/useBrowseState.js +148 -13
  191. package/build/hooks/useBrowseState.js.map +1 -1
  192. package/build/hooks/useConfirmation.d.ts +18 -0
  193. package/build/hooks/useConfirmation.d.ts.map +1 -0
  194. package/build/hooks/useConfirmation.js +56 -0
  195. package/build/hooks/useConfirmation.js.map +1 -0
  196. package/build/hooks/useInitState.d.ts +109 -0
  197. package/build/hooks/useInitState.d.ts.map +1 -0
  198. package/build/hooks/useInitState.js +474 -0
  199. package/build/hooks/useInitState.js.map +1 -0
  200. package/build/hooks/useListActions.d.ts +15 -0
  201. package/build/hooks/useListActions.d.ts.map +1 -0
  202. package/build/hooks/useListActions.js +155 -0
  203. package/build/hooks/useListActions.js.map +1 -0
  204. package/build/hooks/useListState.d.ts +151 -0
  205. package/build/hooks/useListState.d.ts.map +1 -0
  206. package/build/hooks/useListState.js +448 -0
  207. package/build/hooks/useListState.js.map +1 -0
  208. package/build/hooks/usePruneState.d.ts +76 -0
  209. package/build/hooks/usePruneState.d.ts.map +1 -0
  210. package/build/hooks/usePruneState.js +252 -0
  211. package/build/hooks/usePruneState.js.map +1 -0
  212. package/build/hooks/usePublishState.d.ts +147 -0
  213. package/build/hooks/usePublishState.d.ts.map +1 -0
  214. package/build/hooks/usePublishState.js +916 -0
  215. package/build/hooks/usePublishState.js.map +1 -0
  216. package/build/hooks/useSetupState.d.ts +57 -0
  217. package/build/hooks/useSetupState.d.ts.map +1 -0
  218. package/build/hooks/useSetupState.js +236 -0
  219. package/build/hooks/useSetupState.js.map +1 -0
  220. package/build/hooks/useUninstallState.d.ts +102 -0
  221. package/build/hooks/useUninstallState.d.ts.map +1 -0
  222. package/build/hooks/useUninstallState.js +342 -0
  223. package/build/hooks/useUninstallState.js.map +1 -0
  224. package/build/lib/adapter.d.ts +21 -0
  225. package/build/lib/adapter.d.ts.map +1 -1
  226. package/build/lib/adapter.js +59 -1
  227. package/build/lib/adapter.js.map +1 -1
  228. package/build/lib/checksum.d.ts +39 -0
  229. package/build/lib/checksum.d.ts.map +1 -1
  230. package/build/lib/checksum.js +98 -13
  231. package/build/lib/checksum.js.map +1 -1
  232. package/build/lib/config.d.ts +38 -18
  233. package/build/lib/config.d.ts.map +1 -1
  234. package/build/lib/config.js +103 -55
  235. package/build/lib/config.js.map +1 -1
  236. package/build/lib/detector.d.ts +2 -11
  237. package/build/lib/detector.d.ts.map +1 -1
  238. package/build/lib/detector.js +2 -64
  239. package/build/lib/detector.js.map +1 -1
  240. package/build/lib/diagnostics.d.ts +7 -0
  241. package/build/lib/diagnostics.d.ts.map +1 -1
  242. package/build/lib/diagnostics.js +54 -34
  243. package/build/lib/diagnostics.js.map +1 -1
  244. package/build/lib/diff-command.d.ts +40 -0
  245. package/build/lib/diff-command.d.ts.map +1 -0
  246. package/build/lib/diff-command.js +145 -0
  247. package/build/lib/diff-command.js.map +1 -0
  248. package/build/lib/diff.d.ts +7 -0
  249. package/build/lib/diff.d.ts.map +1 -1
  250. package/build/lib/diff.js +15 -10
  251. package/build/lib/diff.js.map +1 -1
  252. package/build/lib/format.d.ts +6 -0
  253. package/build/lib/format.d.ts.map +1 -0
  254. package/build/lib/format.js +18 -0
  255. package/build/lib/format.js.map +1 -0
  256. package/build/lib/github.d.ts +35 -0
  257. package/build/lib/github.d.ts.map +1 -1
  258. package/build/lib/github.js +44 -0
  259. package/build/lib/github.js.map +1 -1
  260. package/build/lib/gitignore.d.ts +17 -0
  261. package/build/lib/gitignore.d.ts.map +1 -1
  262. package/build/lib/gitignore.js +17 -1
  263. package/build/lib/gitignore.js.map +1 -1
  264. package/build/lib/init.d.ts +22 -0
  265. package/build/lib/init.d.ts.map +1 -1
  266. package/build/lib/init.js +163 -18
  267. package/build/lib/init.js.map +1 -1
  268. package/build/lib/installer.d.ts +1 -0
  269. package/build/lib/installer.d.ts.map +1 -1
  270. package/build/lib/installer.js +7 -7
  271. package/build/lib/installer.js.map +1 -1
  272. package/build/lib/lockfile.d.ts +19 -17
  273. package/build/lib/lockfile.d.ts.map +1 -1
  274. package/build/lib/lockfile.js +43 -67
  275. package/build/lib/lockfile.js.map +1 -1
  276. package/build/lib/publisher.d.ts +41 -12
  277. package/build/lib/publisher.d.ts.map +1 -1
  278. package/build/lib/publisher.js +226 -64
  279. package/build/lib/publisher.js.map +1 -1
  280. package/build/lib/registry.d.ts +20 -5
  281. package/build/lib/registry.d.ts.map +1 -1
  282. package/build/lib/registry.js +41 -30
  283. package/build/lib/registry.js.map +1 -1
  284. package/build/lib/schemas/config.d.ts +31 -3
  285. package/build/lib/schemas/config.d.ts.map +1 -1
  286. package/build/lib/schemas/config.js +21 -2
  287. package/build/lib/schemas/config.js.map +1 -1
  288. package/build/lib/schemas/index.d.ts +1 -1
  289. package/build/lib/schemas/index.d.ts.map +1 -1
  290. package/build/lib/schemas/index.js +1 -1
  291. package/build/lib/schemas/index.js.map +1 -1
  292. package/build/lib/schemas/lockfile.d.ts +18 -2
  293. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  294. package/build/lib/schemas/lockfile.js +7 -1
  295. package/build/lib/schemas/lockfile.js.map +1 -1
  296. package/build/lib/schemas/manifest.d.ts +1 -1
  297. package/build/lib/schemas/manifest.d.ts.map +1 -1
  298. package/build/lib/schemas/manifest.js +7 -2
  299. package/build/lib/schemas/manifest.js.map +1 -1
  300. package/build/lib/schemas/registry.d.ts +2 -4
  301. package/build/lib/schemas/registry.d.ts.map +1 -1
  302. package/build/lib/schemas/registry.js +1 -1
  303. package/build/lib/schemas/registry.js.map +1 -1
  304. package/build/lib/search.d.ts +15 -1
  305. package/build/lib/search.d.ts.map +1 -1
  306. package/build/lib/search.js +65 -65
  307. package/build/lib/search.js.map +1 -1
  308. package/build/lib/setup.d.ts +28 -0
  309. package/build/lib/setup.d.ts.map +1 -0
  310. package/build/lib/setup.js +98 -0
  311. package/build/lib/setup.js.map +1 -0
  312. package/build/lib/sync.d.ts +109 -0
  313. package/build/lib/sync.d.ts.map +1 -0
  314. package/build/lib/sync.js +217 -0
  315. package/build/lib/sync.js.map +1 -0
  316. package/build/lib/tool-resolver.d.ts +29 -6
  317. package/build/lib/tool-resolver.d.ts.map +1 -1
  318. package/build/lib/tool-resolver.js +54 -15
  319. package/build/lib/tool-resolver.js.map +1 -1
  320. package/build/lib/updater.d.ts +7 -4
  321. package/build/lib/updater.d.ts.map +1 -1
  322. package/build/lib/updater.js +10 -6
  323. package/build/lib/updater.js.map +1 -1
  324. package/build/lib/version.js +1 -1
  325. package/build/lib/version.js.map +1 -1
  326. package/package.json +79 -65
  327. package/tool-adapters/claude-code.json +1 -1
  328. package/tool-adapters/copilot-cli.json +1 -1
@@ -1,44 +1,52 @@
1
1
  import { getGitHubToken, isGhCliAvailable, validateToken } from './auth.js';
2
2
  import { loadConfig, loadProjectConfig } from './config.js';
3
3
  import { detectTools, getAdapterDiagnostics } from './detector.js';
4
- import { readLockfile } from './lockfile.js';
4
+ import { lockfileExists, readLockfile } from './lockfile.js';
5
5
  import { findProjectRoot } from './paths.js';
6
6
  import { fetchRegistry } from './registry.js';
7
7
  /**
8
- * Run all environment diagnostic checks and return the results.
9
- * Extracted from the `doctor` command so it can be tested independently.
8
+ * Check whether the given Node.js version string meets the project requirements.
10
9
  *
11
- * @param progress - callback to report progress messages
12
- * @param projectRootOverride - optional explicit project root; when omitted, discovered via `findProjectRoot()`
10
+ * @param version - a Node.js-style version string such as `process.version` (e.g. "v24.5.0")
11
+ * @returns a `DiagnosticCheck` with status pass / warn / fail
13
12
  */
14
- export async function runDiagnostics(progress, projectRootOverride) {
15
- const projectDir = findProjectRoot(projectRootOverride);
16
- const checks = [];
17
- // Check Node.js version
18
- progress('Checking Node.js...');
19
- const nodeVersion = process.version;
20
- const nodeMajor = parseInt(nodeVersion.slice(1), 10);
13
+ export function checkNodeVersion(version) {
14
+ const nodeMajor = parseInt(version.slice(1), 10);
21
15
  if (nodeMajor >= 24) {
22
- checks.push({
23
- message: `${nodeVersion} (recommended)`,
16
+ return {
17
+ message: `${version} (recommended)`,
24
18
  name: 'Node.js',
25
19
  status: 'pass',
26
- });
20
+ };
27
21
  }
28
22
  else if (nodeMajor >= 20) {
29
- checks.push({
30
- message: `${nodeVersion} (Node 24+ recommended)`,
23
+ return {
24
+ message: `${version} (Node 24+ recommended)`,
31
25
  name: 'Node.js',
32
26
  status: 'warn',
33
- });
27
+ };
34
28
  }
35
29
  else {
36
- checks.push({
37
- message: `${nodeVersion} (Node 20+ required, 24+ recommended)`,
30
+ return {
31
+ message: `${version} (Node 20+ required, 24+ recommended)`,
38
32
  name: 'Node.js',
39
33
  status: 'fail',
40
- });
34
+ };
41
35
  }
36
+ }
37
+ /**
38
+ * Run all environment diagnostic checks and return the results.
39
+ * Extracted from the `doctor` command so it can be tested independently.
40
+ *
41
+ * @param progress - callback to report progress messages
42
+ * @param projectRootOverride - optional explicit project root; when omitted, discovered via `findProjectRoot()`
43
+ */
44
+ export async function runDiagnostics(progress, projectRootOverride) {
45
+ const projectDir = findProjectRoot(projectRootOverride);
46
+ const checks = [];
47
+ // Check Node.js version
48
+ progress('Checking Node.js...');
49
+ checks.push(checkNodeVersion(process.version));
42
50
  // Check gh CLI
43
51
  progress('Checking GitHub CLI...');
44
52
  const ghAvailable = await isGhCliAvailable();
@@ -170,7 +178,9 @@ export async function runDiagnostics(progress, projectRootOverride) {
170
178
  const projectConfig = await loadProjectConfig(projectDir);
171
179
  if (projectConfig) {
172
180
  checks.push({
173
- message: `Loaded (tool: ${projectConfig.tool})`,
181
+ message: projectConfig.tools.length === 0
182
+ ? 'Loaded (no tools configured)'
183
+ : `Loaded (tools: ${projectConfig.tools.join(', ')})`,
174
184
  name: 'Project config',
175
185
  status: 'pass',
176
186
  });
@@ -194,23 +204,33 @@ export async function runDiagnostics(progress, projectRootOverride) {
194
204
  }
195
205
  // Check lockfile
196
206
  progress('Checking lockfile...');
197
- try {
198
- const lockfile = await readLockfile(projectDir);
199
- const assetCount = (lockfile.assets ?? []).length;
200
- checks.push({
201
- message: `Found .atk-lock.json (${assetCount} asset${assetCount === 1 ? '' : 's'})`,
202
- name: 'Lockfile',
203
- status: 'pass',
204
- });
205
- }
206
- catch {
207
+ if (!lockfileExists(projectDir)) {
207
208
  checks.push({
208
- detail: 'Run `atk setup` to initialize the project.',
209
- message: 'No lockfile found or unreadable',
209
+ detail: 'Run `atk setup` to initialize',
210
+ message: 'No lockfile found',
210
211
  name: 'Lockfile',
211
212
  status: 'warn',
212
213
  });
213
214
  }
215
+ else {
216
+ try {
217
+ const lockfile = await readLockfile(projectDir);
218
+ const assetCount = (lockfile.assets ?? []).length;
219
+ checks.push({
220
+ message: `Found .atk-lock.json (${assetCount} asset${assetCount === 1 ? '' : 's'})`,
221
+ name: 'Lockfile',
222
+ status: 'pass',
223
+ });
224
+ }
225
+ catch (err) {
226
+ checks.push({
227
+ detail: 'Run `atk setup` to re-initialize',
228
+ message: err instanceof Error ? err.message : 'Failed to read lockfile',
229
+ name: 'Lockfile',
230
+ status: 'warn',
231
+ });
232
+ }
233
+ }
214
234
  return checks;
215
235
  }
216
236
  //# sourceMappingURL=diagnostics.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/lib/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ import type { FileDiffEntry } from '../components/index.js';
2
+ import type { InstalledAsset, InstalledFile } from './schemas/lockfile.js';
3
+ import type { RegistryAsset } from './schemas/registry.js';
4
+ export type DiffOutcome = {
5
+ diffs: FileDiffEntry[];
6
+ installed: InstalledAsset;
7
+ latestVersion: string;
8
+ name: string;
9
+ outcome: 'results';
10
+ registryAsset: RegistryAsset;
11
+ sameVersion: boolean;
12
+ } | {
13
+ name: string;
14
+ outcome: 'not-in-registry';
15
+ } | {
16
+ name: string;
17
+ outcome: 'not-installed';
18
+ };
19
+ /** Describes a file to fetch for diff comparison, with its installed and remote paths. */
20
+ export interface FileFetchEntry {
21
+ file: InstalledFile;
22
+ installedPath: string;
23
+ remotePath: string;
24
+ }
25
+ /**
26
+ * Core logic for the `atk diff` command. Computes the diff between a locally
27
+ * installed asset and the latest version in the registry.
28
+ *
29
+ * @param name - Asset name (without org prefix)
30
+ * @param org - Org from the --org CLI flag or inline @org/name syntax (already merged)
31
+ * @param tool - Tool override from --tool CLI flag
32
+ * @param context - Number of context lines for unified diff output
33
+ * @param refresh - Whether to bypass the registry cache
34
+ * @param projectRoot - Optional project root override
35
+ * @param cliOrg - Org from the --org CLI flag
36
+ * @param inlineOrg - Org parsed from @org/name syntax
37
+ * @param progress - Callback to report progress messages to the UI
38
+ */
39
+ export declare function computeDiffOutcome(name: string, org: string | undefined, tool: string | undefined, context: number, refresh: boolean, projectRoot: string | undefined, cliOrg: string | undefined, inlineOrg: string | undefined, progress: (message: string) => void): Promise<DiffOutcome>;
40
+ //# sourceMappingURL=diff-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-command.d.ts","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAa3D,MAAM,MAAM,WAAW,GACnB;IACE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,SAAS,CAAC;IACnB,aAAa,EAAE,aAAa,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;CACtB,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,CAAA;CAAE,GAC5C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,eAAe,CAAA;CAAE,CAAC;AAE/C,0FAA0F;AAC1F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,GAAG,SAAS,EACvB,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,GAClC,OAAO,CAAC,WAAW,CAAC,CAqJtB"}
@@ -0,0 +1,145 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ import { resolveInstalledPaths } from './adapter.js';
5
+ import { getGitHubToken } from './auth.js';
6
+ import { loadConfig } from './config.js';
7
+ import { computeAddedFileDiff, computeRemovedFileDiff, computeUnifiedDiff } from './diff.js';
8
+ import { fetchFileContent, getEffectiveBranch, listAssetDirectoryFiles } from './github.js';
9
+ import { findInstalledAsset, readLockfile } from './lockfile.js';
10
+ import { resolveActiveOrg } from './org.js';
11
+ import { findProjectRoot } from './paths.js';
12
+ import { fetchRegistry, findAsset } from './registry.js';
13
+ import { resolveTool } from './tool-resolver.js';
14
+ /**
15
+ * Core logic for the `atk diff` command. Computes the diff between a locally
16
+ * installed asset and the latest version in the registry.
17
+ *
18
+ * @param name - Asset name (without org prefix)
19
+ * @param org - Org from the --org CLI flag or inline @org/name syntax (already merged)
20
+ * @param tool - Tool override from --tool CLI flag
21
+ * @param context - Number of context lines for unified diff output
22
+ * @param refresh - Whether to bypass the registry cache
23
+ * @param projectRoot - Optional project root override
24
+ * @param cliOrg - Org from the --org CLI flag
25
+ * @param inlineOrg - Org parsed from @org/name syntax
26
+ * @param progress - Callback to report progress messages to the UI
27
+ */
28
+ export async function computeDiffOutcome(name, org, tool, context, refresh, projectRoot, cliOrg, inlineOrg, progress) {
29
+ const projectDir = findProjectRoot(projectRoot);
30
+ progress('Loading configuration...');
31
+ const config = await loadConfig();
32
+ const { adapter } = await resolveTool(tool);
33
+ progress('Reading lockfile...');
34
+ const lockfile = await readLockfile(projectDir);
35
+ const resolvedOrg = resolveActiveOrg(inlineOrg ?? cliOrg, lockfile.org, config.org);
36
+ const installed = findInstalledAsset(lockfile, name, undefined, resolvedOrg);
37
+ if (!installed) {
38
+ return { name, outcome: 'not-installed' };
39
+ }
40
+ progress('Fetching registry...');
41
+ const registry = await fetchRegistry({ force: refresh });
42
+ const foundAsset = findAsset(registry, name, installed.type, undefined, resolvedOrg);
43
+ if (!foundAsset) {
44
+ return { name, outcome: 'not-in-registry' };
45
+ }
46
+ const { asset: registryAsset, version: latestVersion } = foundAsset;
47
+ progress('Fetching latest version...');
48
+ const token = await getGitHubToken();
49
+ const effectiveBranch = getEffectiveBranch(config.registryBranch);
50
+ let remoteFilesList;
51
+ try {
52
+ remoteFilesList = await listAssetDirectoryFiles(token, registryAsset, latestVersion, effectiveBranch);
53
+ }
54
+ catch (error) {
55
+ throw new Error(`Failed to list asset directory files for "${name}". ` +
56
+ `Ensure your GitHub authentication is valid (run \`gh auth login\`). ` +
57
+ `Original error: ${error instanceof Error ? error.message : String(error)}`);
58
+ }
59
+ // Convert remote files array to a Map for O(1) lookups by name
60
+ const remoteFiles = new Map(remoteFilesList.map((f) => [f.name, f]));
61
+ // Resolve installed paths via the adapter
62
+ const resolved = resolveInstalledPaths(installed, adapter, projectDir);
63
+ const installedPathMap = new Map(resolved.files.map((f) => [f.sourcePath, f.installedPath]));
64
+ // Identify which installed files have a remote counterpart and exist locally
65
+ const filesToFetch = [];
66
+ const diffs = [];
67
+ for (const file of installed.files) {
68
+ const installedPath = installedPathMap.get(file.sourcePath);
69
+ const remoteFile = remoteFiles.get(file.sourcePath);
70
+ if (!remoteFile) {
71
+ const absoluteInstalledPath = installedPath ? join(projectDir, installedPath) : undefined;
72
+ if (absoluteInstalledPath && existsSync(absoluteInstalledPath)) {
73
+ const localContent = await readFile(absoluteInstalledPath, 'utf-8');
74
+ diffs.push({
75
+ diffLines: computeRemovedFileDiff(localContent),
76
+ fileName: file.sourcePath,
77
+ status: 'removed',
78
+ });
79
+ }
80
+ else {
81
+ diffs.push({ fileName: file.sourcePath, status: 'removed' });
82
+ }
83
+ continue;
84
+ }
85
+ if (!installedPath) {
86
+ diffs.push({ fileName: file.sourcePath, status: 'missing-local' });
87
+ continue;
88
+ }
89
+ const absoluteInstalledPath = join(projectDir, installedPath);
90
+ if (!existsSync(absoluteInstalledPath)) {
91
+ diffs.push({ fileName: file.sourcePath, status: 'missing-local' });
92
+ continue;
93
+ }
94
+ filesToFetch.push({ file, installedPath, remotePath: remoteFile.path });
95
+ }
96
+ // Fetch all remote file contents in parallel
97
+ const remoteContents = await Promise.all(filesToFetch.map(async ({ remotePath }) => fetchFileContent(token, remotePath, effectiveBranch)));
98
+ // Read all local file contents in parallel
99
+ const localContents = await Promise.all(filesToFetch.map(async ({ installedPath }) => readFile(join(projectDir, installedPath), 'utf-8')));
100
+ // Build diffs from fetched content
101
+ for (let i = 0; i < filesToFetch.length; i++) {
102
+ const { file } = filesToFetch[i];
103
+ const remoteContent = remoteContents[i];
104
+ const localContent = localContents[i];
105
+ if (localContent === remoteContent) {
106
+ diffs.push({
107
+ fileName: file.sourcePath,
108
+ localLines: localContent.split('\n').length,
109
+ remoteLines: remoteContent.split('\n').length,
110
+ status: 'unchanged',
111
+ });
112
+ }
113
+ else {
114
+ // Diff argument order: remote (old) → local (new).
115
+ // This means '+' lines represent local content and '-' lines represent registry content.
116
+ diffs.push({
117
+ diffLines: computeUnifiedDiff(remoteContent, localContent, context),
118
+ fileName: file.sourcePath,
119
+ localLines: localContent.split('\n').length,
120
+ remoteLines: remoteContent.split('\n').length,
121
+ status: 'modified',
122
+ });
123
+ }
124
+ }
125
+ // Collect added files (present in registry but not in installed files), then batch-fetch in parallel
126
+ const installedSourcePaths = new Set(installed.files.map((f) => f.sourcePath));
127
+ const addedRemoteFiles = [...remoteFiles.values()].filter((rf) => !installedSourcePaths.has(rf.name));
128
+ const addedContents = await Promise.all(addedRemoteFiles.map(async (rf) => fetchFileContent(token, rf.path, effectiveBranch)));
129
+ for (let i = 0; i < addedRemoteFiles.length; i++) {
130
+ const remoteFile = addedRemoteFiles[i];
131
+ const remoteContent = addedContents[i];
132
+ diffs.push({ diffLines: computeAddedFileDiff(remoteContent), fileName: remoteFile.name, status: 'added' });
133
+ }
134
+ const sameVersion = installed.version === latestVersion;
135
+ return {
136
+ diffs,
137
+ installed,
138
+ latestVersion,
139
+ name,
140
+ outcome: 'results',
141
+ registryAsset,
142
+ sameVersion,
143
+ };
144
+ }
145
+ //# sourceMappingURL=diff-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-command.js","sourceRoot":"","sources":["../../src/lib/diff-command.ts"],"names":[],"mappings":"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"}
@@ -31,4 +31,11 @@ export declare function computeRemovedFileDiff(content: string): DiffLine[];
31
31
  * @param contextLines - Number of context lines surrounding each change (default: 3).
32
32
  */
33
33
  export declare function computeUnifiedDiff(oldContent: string, newContent: string, contextLines?: number): DiffLine[];
34
+ /**
35
+ * Split content into lines and strip the trailing empty string
36
+ * that results from a final newline character.
37
+ *
38
+ * @param content - The raw string content to split.
39
+ */
40
+ export declare function splitContentLines(content: string): string[];
34
41
  //# sourceMappingURL=diff.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/lib/diff.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmBhE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAmBlE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,QAAQ,EAAE,CA4B/G"}
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/lib/diff.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,YAAY,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,aAAa,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAehE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAelE;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,GAAE,MAAU,GAAG,QAAQ,EAAE,CA4B/G;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAM3D"}
package/build/lib/diff.js CHANGED
@@ -5,11 +5,7 @@ import { structuredPatch } from 'diff';
5
5
  * @param content - The full content of the added file.
6
6
  */
7
7
  export function computeAddedFileDiff(content) {
8
- const contentLines = content.split('\n');
9
- // Remove trailing empty string from a final newline
10
- if (contentLines.length > 0 && contentLines[contentLines.length - 1] === '') {
11
- contentLines.pop();
12
- }
8
+ const contentLines = splitContentLines(content);
13
9
  const lines = [];
14
10
  lines.push({
15
11
  content: `@@ -0,0 +1,${contentLines.length} @@`,
@@ -26,11 +22,7 @@ export function computeAddedFileDiff(content) {
26
22
  * @param content - The full content of the removed file.
27
23
  */
28
24
  export function computeRemovedFileDiff(content) {
29
- const contentLines = content.split('\n');
30
- // Remove trailing empty string from a final newline
31
- if (contentLines.length > 0 && contentLines[contentLines.length - 1] === '') {
32
- contentLines.pop();
33
- }
25
+ const contentLines = splitContentLines(content);
34
26
  const lines = [];
35
27
  lines.push({
36
28
  content: `@@ -1,${contentLines.length} +0,0 @@`,
@@ -75,4 +67,17 @@ export function computeUnifiedDiff(oldContent, newContent, contextLines = 3) {
75
67
  }
76
68
  return lines;
77
69
  }
70
+ /**
71
+ * Split content into lines and strip the trailing empty string
72
+ * that results from a final newline character.
73
+ *
74
+ * @param content - The raw string content to split.
75
+ */
76
+ export function splitContentLines(content) {
77
+ const lines = content.split('\n');
78
+ if (lines.length > 0 && lines[lines.length - 1] === '') {
79
+ lines.pop();
80
+ }
81
+ return lines;
82
+ }
78
83
  //# sourceMappingURL=diff.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/lib/diff.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"diff.js","sourceRoot":"","sources":["../../src/lib/diff.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Format an ISO date string into a human-readable short date (e.g. "Jan 5, 2025").
3
+ * Returns the original string if parsing fails.
4
+ */
5
+ export declare function formatDate(isoString: string): string;
6
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAWpD"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Format an ISO date string into a human-readable short date (e.g. "Jan 5, 2025").
3
+ * Returns the original string if parsing fails.
4
+ */
5
+ export function formatDate(isoString) {
6
+ try {
7
+ const date = new Date(isoString);
8
+ return date.toLocaleDateString('en-US', {
9
+ day: 'numeric',
10
+ month: 'short',
11
+ year: 'numeric',
12
+ });
13
+ }
14
+ catch {
15
+ return isoString;
16
+ }
17
+ }
18
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACtC,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS;SAChB,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -11,11 +11,24 @@ export declare const GITHUB_API_VERSION = "2022-11-28";
11
11
  export declare const GITHUB_ACCEPT_JSON = "application/vnd.github+json";
12
12
  /** Accept header value for raw file content responses from GitHub API. */
13
13
  export declare const GITHUB_ACCEPT_RAW = "application/vnd.github.raw+json";
14
+ /** Files fetched from the registry for a specific asset version. */
15
+ export interface FetchedAssetFiles {
16
+ /** The raw JSON string of manifest.json (or bundle.json for bundles). */
17
+ manifestContent: string;
18
+ /** The manifest file name that was fetched. */
19
+ manifestFileName: 'bundle.json' | 'manifest.json';
20
+ /** README.md content if it exists; undefined if the asset has no README. */
21
+ readmeContent: string | undefined;
22
+ }
14
23
  /** A file entry returned from listing an asset directory on GitHub. */
15
24
  export interface GitHubFileEntry {
16
25
  name: string;
17
26
  path: string;
18
27
  }
28
+ /**
29
+ * Build a browsable GitHub URL pointing to a bundle's README.md in the registry repo.
30
+ */
31
+ export declare function buildBundleReadmeUrl(name: string, version: string): string;
19
32
  /**
20
33
  * Build a GitHub Contents API URL for a file or directory in the registry repo.
21
34
  */
@@ -28,6 +41,28 @@ export declare function buildGitHubContentsUrl(path: string, branch?: string): s
28
41
  * @returns HeadersInit with Accept, Authorization, and X-GitHub-Api-Version
29
42
  */
30
43
  export declare function buildGitHubHeaders(token: string, accept?: string): HeadersInit;
44
+ /**
45
+ * Build a browsable GitHub URL pointing to an asset's README.md in the registry repo.
46
+ */
47
+ export declare function buildReadmeUrl(asset: {
48
+ name: string;
49
+ org?: string;
50
+ type: string;
51
+ }, version: string): string;
52
+ /**
53
+ * Fetch the manifest (or bundle) JSON and optional README.md for an asset
54
+ * at a specific version from the registry repository.
55
+ *
56
+ * @param token - GitHub authentication token
57
+ * @param asset - Object with `name`, `type`, and optional `org` identifying the asset
58
+ * @param version - Semver version string
59
+ * @param branch - Optional branch override
60
+ */
61
+ export declare function fetchAssetFiles(token: string, asset: {
62
+ name: string;
63
+ org?: string;
64
+ type: string;
65
+ }, version: string, branch?: string): Promise<FetchedAssetFiles>;
31
66
  /**
32
67
  * Fetch raw file content from the GitHub Contents API.
33
68
  *
@@ -1 +1 @@
1
- {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,oCAAoC,CAAC;AAEnE,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAM9E;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYzE;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACnD,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAuB5B"}
1
+ {"version":3,"file":"github.d.ts","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,uBAAuB,SAAS,CAAC;AAE9C;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,oDAAoD;AACpD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,oCAAoC,CAAC;AAEnE,oEAAoE;AACpE,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,eAAe,EAAE,MAAM,CAAC;IACxB,+CAA+C;IAC/C,gBAAgB,EAAE,aAAa,GAAG,eAAe,CAAC;IAClD,4EAA4E;IAC5E,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,uEAAuE;AACvE,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAM9E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAK3G;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACnD,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC,CAuB5B;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAWpG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYzE;AAED;;;;;;;;GAQG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,KAAK,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EACnD,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,eAAe,EAAE,CAAC,CAuB5B"}
@@ -14,6 +14,12 @@ export const GITHUB_API_VERSION = '2022-11-28';
14
14
  export const GITHUB_ACCEPT_JSON = 'application/vnd.github+json';
15
15
  /** Accept header value for raw file content responses from GitHub API. */
16
16
  export const GITHUB_ACCEPT_RAW = 'application/vnd.github.raw+json';
17
+ /**
18
+ * Build a browsable GitHub URL pointing to a bundle's README.md in the registry repo.
19
+ */
20
+ export function buildBundleReadmeUrl(name, version) {
21
+ return `https://github.com/${DEFAULT_REGISTRY_REPO}/blob/${DEFAULT_REGISTRY_BRANCH}/bundles/${name}/${version}/README.md`;
22
+ }
17
23
  /**
18
24
  * Build a GitHub Contents API URL for a file or directory in the registry repo.
19
25
  */
@@ -35,6 +41,44 @@ export function buildGitHubHeaders(token, accept) {
35
41
  'X-GitHub-Api-Version': GITHUB_API_VERSION,
36
42
  };
37
43
  }
44
+ /**
45
+ * Build a browsable GitHub URL pointing to an asset's README.md in the registry repo.
46
+ */
47
+ export function buildReadmeUrl(asset, version) {
48
+ const assetDir = asset.org
49
+ ? `assets/${asset.type}s/@${asset.org}/${asset.name}/${version}`
50
+ : `assets/${asset.type}s/${asset.name}/${version}`;
51
+ return `https://github.com/${DEFAULT_REGISTRY_REPO}/blob/${DEFAULT_REGISTRY_BRANCH}/${assetDir}/README.md`;
52
+ }
53
+ /**
54
+ * Fetch the manifest (or bundle) JSON and optional README.md for an asset
55
+ * at a specific version from the registry repository.
56
+ *
57
+ * @param token - GitHub authentication token
58
+ * @param asset - Object with `name`, `type`, and optional `org` identifying the asset
59
+ * @param version - Semver version string
60
+ * @param branch - Optional branch override
61
+ */
62
+ export async function fetchAssetFiles(token, asset, version, branch) {
63
+ const isBundle = asset.type === 'bundle';
64
+ const assetDir = isBundle
65
+ ? `bundles/${asset.name}/${version}`
66
+ : asset.org
67
+ ? `assets/${asset.type}s/@${asset.org}/${asset.name}/${version}`
68
+ : `assets/${asset.type}s/${asset.name}/${version}`;
69
+ const manifestFileName = isBundle ? 'bundle.json' : 'manifest.json';
70
+ // Manifest is mandatory — let errors propagate
71
+ const manifestContent = await fetchFileContent(token, `${assetDir}/${manifestFileName}`, branch);
72
+ // README is optional — swallow 404s
73
+ let readmeContent;
74
+ try {
75
+ readmeContent = await fetchFileContent(token, `${assetDir}/README.md`, branch);
76
+ }
77
+ catch {
78
+ readmeContent = undefined;
79
+ }
80
+ return { manifestContent, manifestFileName, readmeContent };
81
+ }
38
82
  /**
39
83
  * Fetch raw file content from the GitHub Contents API.
40
84
  *
@@ -1 +1 @@
1
- {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"github.js","sourceRoot":"","sources":["../../src/lib/github.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,23 @@ export declare function ensureGitignoreEntries(projectDir: string, adapter: Adap
14
14
  added: string[];
15
15
  alreadyPresent: string[];
16
16
  }>;
17
+ /**
18
+ * Ensure that the given gitignore patterns are present in the project's
19
+ * `.gitignore` file.
20
+ *
21
+ * - Reads `.gitignore` from `projectDir` (creates it if missing)
22
+ * - Checks which patterns are already present
23
+ * - Appends missing entries under a `# ATK managed assets` comment header
24
+ *
25
+ * This is the low-level API that accepts raw string patterns, making it
26
+ * usable without an adapter (e.g., from the setup fallback path).
27
+ *
28
+ * Returns which entries were added vs already present.
29
+ */
30
+ export declare function ensureGitignorePatterns(projectDir: string, patterns: string[]): Promise<{
31
+ added: string[];
32
+ alreadyPresent: string[];
33
+ }>;
17
34
  /**
18
35
  * Extract gitignore patterns from an adapter's placements.
19
36
  *