@detergent-software/atk 0.12.1-dev.2

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 (314) hide show
  1. package/build/cli.d.ts +3 -0
  2. package/build/cli.d.ts.map +1 -0
  3. package/build/cli.js +35 -0
  4. package/build/cli.js.map +1 -0
  5. package/build/commands/_app.d.ts +3 -0
  6. package/build/commands/_app.d.ts.map +1 -0
  7. package/build/commands/_app.js +12 -0
  8. package/build/commands/_app.js.map +1 -0
  9. package/build/commands/audit.d.ts +12 -0
  10. package/build/commands/audit.d.ts.map +1 -0
  11. package/build/commands/audit.js +78 -0
  12. package/build/commands/audit.js.map +1 -0
  13. package/build/commands/browse.d.ts +15 -0
  14. package/build/commands/browse.d.ts.map +1 -0
  15. package/build/commands/browse.js +284 -0
  16. package/build/commands/browse.js.map +1 -0
  17. package/build/commands/cache.d.ts +13 -0
  18. package/build/commands/cache.d.ts.map +1 -0
  19. package/build/commands/cache.js +67 -0
  20. package/build/commands/cache.js.map +1 -0
  21. package/build/commands/config.d.ts +13 -0
  22. package/build/commands/config.d.ts.map +1 -0
  23. package/build/commands/config.js +62 -0
  24. package/build/commands/config.js.map +1 -0
  25. package/build/commands/diff.d.ts +16 -0
  26. package/build/commands/diff.d.ts.map +1 -0
  27. package/build/commands/diff.js +158 -0
  28. package/build/commands/diff.js.map +1 -0
  29. package/build/commands/doctor.d.ts +11 -0
  30. package/build/commands/doctor.d.ts.map +1 -0
  31. package/build/commands/doctor.js +30 -0
  32. package/build/commands/doctor.js.map +1 -0
  33. package/build/commands/index.d.ts +3 -0
  34. package/build/commands/index.d.ts.map +1 -0
  35. package/build/commands/index.js +30 -0
  36. package/build/commands/index.js.map +1 -0
  37. package/build/commands/info.d.ts +25 -0
  38. package/build/commands/info.d.ts.map +1 -0
  39. package/build/commands/info.js +198 -0
  40. package/build/commands/info.js.map +1 -0
  41. package/build/commands/init.d.ts +17 -0
  42. package/build/commands/init.d.ts.map +1 -0
  43. package/build/commands/init.js +504 -0
  44. package/build/commands/init.js.map +1 -0
  45. package/build/commands/install.d.ts +18 -0
  46. package/build/commands/install.d.ts.map +1 -0
  47. package/build/commands/install.js +186 -0
  48. package/build/commands/install.js.map +1 -0
  49. package/build/commands/list.d.ts +20 -0
  50. package/build/commands/list.d.ts.map +1 -0
  51. package/build/commands/list.js +61 -0
  52. package/build/commands/list.js.map +1 -0
  53. package/build/commands/outdated.d.ts +21 -0
  54. package/build/commands/outdated.d.ts.map +1 -0
  55. package/build/commands/outdated.js +81 -0
  56. package/build/commands/outdated.js.map +1 -0
  57. package/build/commands/pin.d.ts +22 -0
  58. package/build/commands/pin.d.ts.map +1 -0
  59. package/build/commands/pin.js +94 -0
  60. package/build/commands/pin.js.map +1 -0
  61. package/build/commands/prune.d.ts +14 -0
  62. package/build/commands/prune.d.ts.map +1 -0
  63. package/build/commands/prune.js +203 -0
  64. package/build/commands/prune.js.map +1 -0
  65. package/build/commands/publish.d.ts +14 -0
  66. package/build/commands/publish.d.ts.map +1 -0
  67. package/build/commands/publish.js +345 -0
  68. package/build/commands/publish.js.map +1 -0
  69. package/build/commands/search.d.ts +16 -0
  70. package/build/commands/search.d.ts.map +1 -0
  71. package/build/commands/search.js +80 -0
  72. package/build/commands/search.js.map +1 -0
  73. package/build/commands/sync.d.ts +15 -0
  74. package/build/commands/sync.d.ts.map +1 -0
  75. package/build/commands/sync.js +209 -0
  76. package/build/commands/sync.js.map +1 -0
  77. package/build/commands/uninstall.d.ts +18 -0
  78. package/build/commands/uninstall.d.ts.map +1 -0
  79. package/build/commands/uninstall.js +304 -0
  80. package/build/commands/uninstall.js.map +1 -0
  81. package/build/commands/unpin.d.ts +22 -0
  82. package/build/commands/unpin.d.ts.map +1 -0
  83. package/build/commands/unpin.js +79 -0
  84. package/build/commands/unpin.js.map +1 -0
  85. package/build/commands/update.d.ts +17 -0
  86. package/build/commands/update.d.ts.map +1 -0
  87. package/build/commands/update.js +151 -0
  88. package/build/commands/update.js.map +1 -0
  89. package/build/commands/why.d.ts +23 -0
  90. package/build/commands/why.d.ts.map +1 -0
  91. package/build/commands/why.js +108 -0
  92. package/build/commands/why.js.map +1 -0
  93. package/build/components/AssetDetail.d.ts +32 -0
  94. package/build/components/AssetDetail.d.ts.map +1 -0
  95. package/build/components/AssetDetail.js +45 -0
  96. package/build/components/AssetDetail.js.map +1 -0
  97. package/build/components/AssetTable.d.ts +25 -0
  98. package/build/components/AssetTable.d.ts.map +1 -0
  99. package/build/components/AssetTable.js +96 -0
  100. package/build/components/AssetTable.js.map +1 -0
  101. package/build/components/BrowseExpandedBundle.d.ts +26 -0
  102. package/build/components/BrowseExpandedBundle.d.ts.map +1 -0
  103. package/build/components/BrowseExpandedBundle.js +59 -0
  104. package/build/components/BrowseExpandedBundle.js.map +1 -0
  105. package/build/components/BrowseExpandedRow.d.ts +14 -0
  106. package/build/components/BrowseExpandedRow.d.ts.map +1 -0
  107. package/build/components/BrowseExpandedRow.js +9 -0
  108. package/build/components/BrowseExpandedRow.js.map +1 -0
  109. package/build/components/BrowseList.d.ts +26 -0
  110. package/build/components/BrowseList.d.ts.map +1 -0
  111. package/build/components/BrowseList.js +101 -0
  112. package/build/components/BrowseList.js.map +1 -0
  113. package/build/components/BundleDetail.d.ts +7 -0
  114. package/build/components/BundleDetail.d.ts.map +1 -0
  115. package/build/components/BundleDetail.js +12 -0
  116. package/build/components/BundleDetail.js.map +1 -0
  117. package/build/components/DependencyTree.d.ts +19 -0
  118. package/build/components/DependencyTree.d.ts.map +1 -0
  119. package/build/components/DependencyTree.js +21 -0
  120. package/build/components/DependencyTree.js.map +1 -0
  121. package/build/components/DiagnosticList.d.ts +19 -0
  122. package/build/components/DiagnosticList.d.ts.map +1 -0
  123. package/build/components/DiagnosticList.js +17 -0
  124. package/build/components/DiagnosticList.js.map +1 -0
  125. package/build/components/DiffView.d.ts +30 -0
  126. package/build/components/DiffView.d.ts.map +1 -0
  127. package/build/components/DiffView.js +32 -0
  128. package/build/components/DiffView.js.map +1 -0
  129. package/build/components/DryRunBanner.d.ts +11 -0
  130. package/build/components/DryRunBanner.d.ts.map +1 -0
  131. package/build/components/DryRunBanner.js +6 -0
  132. package/build/components/DryRunBanner.js.map +1 -0
  133. package/build/components/Field.d.ts +12 -0
  134. package/build/components/Field.d.ts.map +1 -0
  135. package/build/components/Field.js +9 -0
  136. package/build/components/Field.js.map +1 -0
  137. package/build/components/FilterBar.d.ts +18 -0
  138. package/build/components/FilterBar.d.ts.map +1 -0
  139. package/build/components/FilterBar.js +21 -0
  140. package/build/components/FilterBar.js.map +1 -0
  141. package/build/components/Header.d.ts +13 -0
  142. package/build/components/Header.d.ts.map +1 -0
  143. package/build/components/Header.js +20 -0
  144. package/build/components/Header.js.map +1 -0
  145. package/build/components/HelpBar.d.ts +11 -0
  146. package/build/components/HelpBar.d.ts.map +1 -0
  147. package/build/components/HelpBar.js +9 -0
  148. package/build/components/HelpBar.js.map +1 -0
  149. package/build/components/InstallConfirmBar.d.ts +9 -0
  150. package/build/components/InstallConfirmBar.d.ts.map +1 -0
  151. package/build/components/InstallConfirmBar.js +23 -0
  152. package/build/components/InstallConfirmBar.js.map +1 -0
  153. package/build/components/InstallSummary.d.ts +29 -0
  154. package/build/components/InstallSummary.d.ts.map +1 -0
  155. package/build/components/InstallSummary.js +12 -0
  156. package/build/components/InstallSummary.js.map +1 -0
  157. package/build/components/SectionDivider.d.ts +5 -0
  158. package/build/components/SectionDivider.d.ts.map +1 -0
  159. package/build/components/SectionDivider.js +11 -0
  160. package/build/components/SectionDivider.js.map +1 -0
  161. package/build/components/Spinner.d.ts +13 -0
  162. package/build/components/Spinner.d.ts.map +1 -0
  163. package/build/components/Spinner.js +11 -0
  164. package/build/components/Spinner.js.map +1 -0
  165. package/build/components/StatusBadge.d.ts +23 -0
  166. package/build/components/StatusBadge.d.ts.map +1 -0
  167. package/build/components/StatusBadge.js +43 -0
  168. package/build/components/StatusBadge.js.map +1 -0
  169. package/build/components/index.d.ts +20 -0
  170. package/build/components/index.d.ts.map +1 -0
  171. package/build/components/index.js +20 -0
  172. package/build/components/index.js.map +1 -0
  173. package/build/hooks/useBrowseState.d.ts +122 -0
  174. package/build/hooks/useBrowseState.d.ts.map +1 -0
  175. package/build/hooks/useBrowseState.js +315 -0
  176. package/build/hooks/useBrowseState.js.map +1 -0
  177. package/build/hooks/useCommand.d.ts +23 -0
  178. package/build/hooks/useCommand.d.ts.map +1 -0
  179. package/build/hooks/useCommand.js +43 -0
  180. package/build/hooks/useCommand.js.map +1 -0
  181. package/build/lib/adapter.d.ts +40 -0
  182. package/build/lib/adapter.d.ts.map +1 -0
  183. package/build/lib/adapter.js +112 -0
  184. package/build/lib/adapter.js.map +1 -0
  185. package/build/lib/auth.d.ts +31 -0
  186. package/build/lib/auth.d.ts.map +1 -0
  187. package/build/lib/auth.js +101 -0
  188. package/build/lib/auth.js.map +1 -0
  189. package/build/lib/breakpoints.d.ts +3 -0
  190. package/build/lib/breakpoints.d.ts.map +1 -0
  191. package/build/lib/breakpoints.js +8 -0
  192. package/build/lib/breakpoints.js.map +1 -0
  193. package/build/lib/checksum.d.ts +31 -0
  194. package/build/lib/checksum.d.ts.map +1 -0
  195. package/build/lib/checksum.js +78 -0
  196. package/build/lib/checksum.js.map +1 -0
  197. package/build/lib/config.d.ts +42 -0
  198. package/build/lib/config.d.ts.map +1 -0
  199. package/build/lib/config.js +123 -0
  200. package/build/lib/config.js.map +1 -0
  201. package/build/lib/detector.d.ts +35 -0
  202. package/build/lib/detector.d.ts.map +1 -0
  203. package/build/lib/detector.js +125 -0
  204. package/build/lib/detector.js.map +1 -0
  205. package/build/lib/diagnostics.d.ts +10 -0
  206. package/build/lib/diagnostics.d.ts.map +1 -0
  207. package/build/lib/diagnostics.js +195 -0
  208. package/build/lib/diagnostics.js.map +1 -0
  209. package/build/lib/diff.d.ts +34 -0
  210. package/build/lib/diff.d.ts.map +1 -0
  211. package/build/lib/diff.js +78 -0
  212. package/build/lib/diff.js.map +1 -0
  213. package/build/lib/fetch-retry.d.ts +43 -0
  214. package/build/lib/fetch-retry.d.ts.map +1 -0
  215. package/build/lib/fetch-retry.js +137 -0
  216. package/build/lib/fetch-retry.js.map +1 -0
  217. package/build/lib/github.d.ts +57 -0
  218. package/build/lib/github.d.ts.map +1 -0
  219. package/build/lib/github.js +96 -0
  220. package/build/lib/github.js.map +1 -0
  221. package/build/lib/gitignore.d.ts +37 -0
  222. package/build/lib/gitignore.d.ts.map +1 -0
  223. package/build/lib/gitignore.js +142 -0
  224. package/build/lib/gitignore.js.map +1 -0
  225. package/build/lib/init.d.ts +100 -0
  226. package/build/lib/init.d.ts.map +1 -0
  227. package/build/lib/init.js +295 -0
  228. package/build/lib/init.js.map +1 -0
  229. package/build/lib/installer.d.ts +50 -0
  230. package/build/lib/installer.d.ts.map +1 -0
  231. package/build/lib/installer.js +435 -0
  232. package/build/lib/installer.js.map +1 -0
  233. package/build/lib/lockfile.d.ts +170 -0
  234. package/build/lib/lockfile.d.ts.map +1 -0
  235. package/build/lib/lockfile.js +437 -0
  236. package/build/lib/lockfile.js.map +1 -0
  237. package/build/lib/markdown.d.ts +9 -0
  238. package/build/lib/markdown.d.ts.map +1 -0
  239. package/build/lib/markdown.js +67 -0
  240. package/build/lib/markdown.js.map +1 -0
  241. package/build/lib/parse-json.d.ts +34 -0
  242. package/build/lib/parse-json.d.ts.map +1 -0
  243. package/build/lib/parse-json.js +52 -0
  244. package/build/lib/parse-json.js.map +1 -0
  245. package/build/lib/paths.d.ts +28 -0
  246. package/build/lib/paths.d.ts.map +1 -0
  247. package/build/lib/paths.js +68 -0
  248. package/build/lib/paths.js.map +1 -0
  249. package/build/lib/publisher.d.ts +49 -0
  250. package/build/lib/publisher.d.ts.map +1 -0
  251. package/build/lib/publisher.js +388 -0
  252. package/build/lib/publisher.js.map +1 -0
  253. package/build/lib/registry.d.ts +97 -0
  254. package/build/lib/registry.d.ts.map +1 -0
  255. package/build/lib/registry.js +248 -0
  256. package/build/lib/registry.js.map +1 -0
  257. package/build/lib/resolver.d.ts +50 -0
  258. package/build/lib/resolver.d.ts.map +1 -0
  259. package/build/lib/resolver.js +110 -0
  260. package/build/lib/resolver.js.map +1 -0
  261. package/build/lib/schemas/adapter.d.ts +33 -0
  262. package/build/lib/schemas/adapter.d.ts.map +1 -0
  263. package/build/lib/schemas/adapter.js +27 -0
  264. package/build/lib/schemas/adapter.js.map +1 -0
  265. package/build/lib/schemas/bundle.d.ts +38 -0
  266. package/build/lib/schemas/bundle.d.ts.map +1 -0
  267. package/build/lib/schemas/bundle.js +19 -0
  268. package/build/lib/schemas/bundle.js.map +1 -0
  269. package/build/lib/schemas/config.d.ts +12 -0
  270. package/build/lib/schemas/config.d.ts.map +1 -0
  271. package/build/lib/schemas/config.js +14 -0
  272. package/build/lib/schemas/config.js.map +1 -0
  273. package/build/lib/schemas/index.d.ts +7 -0
  274. package/build/lib/schemas/index.d.ts.map +1 -0
  275. package/build/lib/schemas/index.js +7 -0
  276. package/build/lib/schemas/index.js.map +1 -0
  277. package/build/lib/schemas/lockfile.d.ts +102 -0
  278. package/build/lib/schemas/lockfile.d.ts.map +1 -0
  279. package/build/lib/schemas/lockfile.js +50 -0
  280. package/build/lib/schemas/lockfile.js.map +1 -0
  281. package/build/lib/schemas/manifest.d.ts +91 -0
  282. package/build/lib/schemas/manifest.d.ts.map +1 -0
  283. package/build/lib/schemas/manifest.js +42 -0
  284. package/build/lib/schemas/manifest.js.map +1 -0
  285. package/build/lib/schemas/registry.d.ts +225 -0
  286. package/build/lib/schemas/registry.d.ts.map +1 -0
  287. package/build/lib/schemas/registry.js +59 -0
  288. package/build/lib/schemas/registry.js.map +1 -0
  289. package/build/lib/search.d.ts +23 -0
  290. package/build/lib/search.d.ts.map +1 -0
  291. package/build/lib/search.js +139 -0
  292. package/build/lib/search.js.map +1 -0
  293. package/build/lib/tool-resolver.d.ts +12 -0
  294. package/build/lib/tool-resolver.d.ts.map +1 -0
  295. package/build/lib/tool-resolver.js +24 -0
  296. package/build/lib/tool-resolver.js.map +1 -0
  297. package/build/lib/uninstaller.d.ts +109 -0
  298. package/build/lib/uninstaller.d.ts.map +1 -0
  299. package/build/lib/uninstaller.js +368 -0
  300. package/build/lib/uninstaller.js.map +1 -0
  301. package/build/lib/updater.d.ts +68 -0
  302. package/build/lib/updater.d.ts.map +1 -0
  303. package/build/lib/updater.js +230 -0
  304. package/build/lib/updater.js.map +1 -0
  305. package/build/lib/version.d.ts +13 -0
  306. package/build/lib/version.d.ts.map +1 -0
  307. package/build/lib/version.js +30 -0
  308. package/build/lib/version.js.map +1 -0
  309. package/build/windows-esm-loader.d.ts +15 -0
  310. package/build/windows-esm-loader.d.ts.map +1 -0
  311. package/build/windows-esm-loader.js +11 -0
  312. package/build/windows-esm-loader.js.map +1 -0
  313. package/package.json +67 -0
  314. package/tool-adapters/claude-code.json +34 -0
@@ -0,0 +1,151 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { option } from 'pastel';
4
+ import { z } from 'zod';
5
+ import { DryRunBanner, Spinner } from '../components/index.js';
6
+ import { useCommand } from '../hooks/useCommand.js';
7
+ import { loadAdapter } from '../lib/adapter.js';
8
+ import { LockfileLockedError, readLockfile, withLockfileLock } from '../lib/lockfile.js';
9
+ import { findProjectRoot } from '../lib/paths.js';
10
+ import { fetchRegistry } from '../lib/registry.js';
11
+ import { resolveTool } from '../lib/tool-resolver.js';
12
+ import { checkOutdated, updateAssets, UpdaterError, } from '../lib/updater.js';
13
+ import { parseNameVersion } from '../lib/version.js';
14
+ export const description = 'Update installed assets';
15
+ export const options = z.object({
16
+ dryRun: z
17
+ .boolean()
18
+ .default(false)
19
+ .describe(option({
20
+ alias: 'n',
21
+ description: 'Show what would be updated without making changes',
22
+ })),
23
+ force: z
24
+ .boolean()
25
+ .default(false)
26
+ .describe(option({
27
+ alias: 'f',
28
+ description: 'Override version pins on targeted assets',
29
+ })),
30
+ projectRoot: z
31
+ .string()
32
+ .optional()
33
+ .describe(option({
34
+ alias: 'P',
35
+ description: 'Override project root directory',
36
+ })),
37
+ refresh: z
38
+ .boolean()
39
+ .default(false)
40
+ .describe(option({
41
+ description: 'Bypass the registry cache and fetch fresh data',
42
+ })),
43
+ tool: z
44
+ .string()
45
+ .optional()
46
+ .describe(option({
47
+ alias: 'T',
48
+ description: 'Target tool (e.g., claude-code)',
49
+ })),
50
+ });
51
+ export const args = z.tuple([
52
+ z.string().optional().describe('Asset name (updates all if omitted, supports name@version syntax)'),
53
+ ]);
54
+ export default function Update({ args: [rawName], options: { dryRun, force, projectRoot, refresh, tool } }) {
55
+ const parsed = rawName ? parseNameVersion(rawName) : undefined;
56
+ const name = parsed?.name;
57
+ const requestedVersion = parsed?.version;
58
+ const state = useCommand(async (progress) => {
59
+ const projectDir = findProjectRoot(projectRoot);
60
+ progress('Loading configuration...');
61
+ const { tool: resolvedTool } = await resolveTool(tool);
62
+ progress(`Loading ${resolvedTool} adapter...`);
63
+ const adapter = await loadAdapter(resolvedTool);
64
+ progress('Fetching registry...');
65
+ const registry = await fetchRegistry({ force: refresh });
66
+ // Dry-run: read lockfile directly (skip lock), check outdated, return plan
67
+ if (dryRun) {
68
+ progress('Reading lockfile...');
69
+ const lockfile = await readLockfile(projectDir, resolvedTool);
70
+ if ((lockfile.assets ?? []).length === 0) {
71
+ return { outcome: 'up-to-date', tool: resolvedTool };
72
+ }
73
+ let outdated = checkOutdated(lockfile, registry);
74
+ if (name) {
75
+ outdated = outdated.filter((o) => o.name === name);
76
+ }
77
+ if (outdated.length === 0) {
78
+ return { outcome: 'up-to-date', tool: resolvedTool };
79
+ }
80
+ // Separate pinned assets from updatable ones (unless --force is used)
81
+ const skippedPinned = [];
82
+ const updatable = [];
83
+ for (const o of outdated) {
84
+ if (o.pinned && !force) {
85
+ skippedPinned.push(o);
86
+ }
87
+ else {
88
+ updatable.push(o);
89
+ }
90
+ }
91
+ if (updatable.length === 0 && skippedPinned.length === 0) {
92
+ return { outcome: 'up-to-date', tool: resolvedTool };
93
+ }
94
+ return { outcome: 'dry-run', outdated: updatable, skippedPinned, tool: resolvedTool };
95
+ }
96
+ try {
97
+ return await withLockfileLock(projectDir, async () => {
98
+ progress('Reading lockfile...');
99
+ const lockfile = await readLockfile(projectDir, resolvedTool);
100
+ if ((lockfile.assets ?? []).length === 0) {
101
+ return { outcome: 'up-to-date', tool: resolvedTool };
102
+ }
103
+ const outdated = checkOutdated(lockfile, registry);
104
+ const targetNames = name ? [name] : undefined;
105
+ if (!name && outdated.length === 0) {
106
+ return { outcome: 'up-to-date', tool: resolvedTool };
107
+ }
108
+ progress('Updating assets...');
109
+ const { failures, results, skipped } = await updateAssets(targetNames, lockfile, registry, {
110
+ adapter,
111
+ force,
112
+ onProgress: progress,
113
+ projectDir,
114
+ targetVersion: requestedVersion,
115
+ tool: resolvedTool,
116
+ });
117
+ if (results.length === 0 && failures.length === 0 && !skipped?.length) {
118
+ return { outcome: 'up-to-date', tool: resolvedTool };
119
+ }
120
+ return { failures, outcome: 'success', results, skipped, tool: resolvedTool };
121
+ });
122
+ }
123
+ catch (error) {
124
+ if (error instanceof LockfileLockedError) {
125
+ throw new Error('Another ATK process is currently modifying this project. Please wait and try again.');
126
+ }
127
+ if (error instanceof UpdaterError) {
128
+ throw new Error(error.message);
129
+ }
130
+ throw error;
131
+ }
132
+ }, [dryRun, force, name, refresh, requestedVersion, tool]);
133
+ if (state.status === 'loading') {
134
+ return _jsx(Spinner, { message: state.message });
135
+ }
136
+ if (state.status === 'error') {
137
+ return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
138
+ }
139
+ const { data } = state;
140
+ if (data.outcome === 'up-to-date') {
141
+ return _jsxs(Text, { color: 'green', children: ["\u2713 All assets are up to date for ", data.tool, "."] });
142
+ }
143
+ if (data.outcome === 'dry-run') {
144
+ const hasUpdatable = data.outdated.length > 0;
145
+ const hasPinned = data.skippedPinned.length > 0;
146
+ return (_jsxs(Box, { flexDirection: 'column', children: [hasUpdatable && (_jsxs(_Fragment, { children: [_jsx(DryRunBanner, { action: 'update', count: data.outdated.length, tool: data.tool }), _jsx(Text, { children: " " }), data.outdated.map((o) => (_jsxs(Text, { children: [' ', _jsx(Text, { bold: true, children: o.name }), _jsxs(Text, { dimColor: true, children: [" (", o.type, ")"] }), " ", _jsxs(Text, { color: 'red', children: ["v", o.installedVersion] }), ' → ', _jsxs(Text, { color: 'green', children: ["v", o.latestVersion] })] }, `${o.type}/${o.name}`)))] })), hasPinned && (_jsxs(_Fragment, { children: [hasUpdatable && _jsx(Text, { children: " " }), _jsxs(Text, { color: 'yellow', children: ["\u2298 ", data.skippedPinned.length, " pinned asset", data.skippedPinned.length !== 1 ? 's' : '', " skipped (use --force to override):"] }), data.skippedPinned.map((o) => (_jsxs(Text, { children: [' ', _jsx(Text, { bold: true, children: o.name }), _jsxs(Text, { dimColor: true, children: [" (", o.type, ")"] }), " ", _jsxs(Text, { dimColor: true, children: ["v", o.installedVersion] }), _jsxs(Text, { dimColor: true, children: [" \u2192 v", o.latestVersion] }), _jsx(Text, { color: 'yellow', children: " [pinned]" })] }, `${o.type}/${o.name}`)))] })), !hasUpdatable && !hasPinned && _jsxs(Text, { color: 'green', children: ["\u2713 All assets are up to date for ", data.tool, "."] })] }));
147
+ }
148
+ const { failures, results, skipped, tool: resolvedTool } = data;
149
+ return (_jsxs(Box, { flexDirection: 'column', children: [results.length > 0 && (_jsxs(_Fragment, { children: [_jsxs(Text, { color: 'green', children: ["\u2713 Updated ", results.length, " asset", results.length !== 1 ? 's' : '', " for ", resolvedTool] }), _jsx(Text, { children: " " }), results.map((r) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { bold: true, children: r.name }), _jsxs(Text, { dimColor: true, children: [" (", r.type, ")"] }), " ", _jsxs(Text, { color: 'red', children: ["v", r.fromVersion] }), ' → ', _jsxs(Text, { color: 'green', children: ["v", r.toVersion] })] }), r.installResult.filesPlaced.map((f) => (_jsxs(Text, { dimColor: true, wrap: 'truncate', children: [' ', "\u2192 ", f.destination] }, f.destination)))] }, `${r.type}/${r.name}`)))] })), failures.length > 0 && (_jsxs(_Fragment, { children: [results.length > 0 && _jsx(Text, { children: " " }), _jsxs(Text, { color: 'red', children: ["\u2717 Failed to update ", failures.length, " asset", failures.length !== 1 ? 's' : ''] }), failures.map((f) => (_jsxs(Text, { color: 'red', wrap: 'truncate', children: [f.name, ": ", f.error] }, `${f.type}/${f.name}`)))] })), skipped && skipped.length > 0 && (_jsxs(_Fragment, { children: [(results.length > 0 || failures.length > 0) && _jsx(Text, { children: " " }), _jsxs(Text, { color: 'yellow', children: ["\u2298 ", skipped.length, " pinned asset", skipped.length !== 1 ? 's' : '', " skipped (use --force to override):"] }), skipped.map((s) => (_jsxs(Text, { children: [' ', _jsx(Text, { bold: true, children: s.name }), _jsxs(Text, { dimColor: true, children: [" (", s.type, ")"] }), " ", _jsxs(Text, { dimColor: true, children: ["v", s.installedVersion] }), _jsxs(Text, { dimColor: true, children: [" \u2192 v", s.latestVersion] }), _jsx(Text, { color: 'yellow', children: " [pinned]" })] }, `${s.type}/${s.name}`)))] }))] }));
150
+ }
151
+ //# sourceMappingURL=update.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "Explain why an asset is installed";
3
+ export declare const options: z.ZodObject<{
4
+ json: z.ZodDefault<z.ZodBoolean>;
5
+ projectRoot: z.ZodOptional<z.ZodString>;
6
+ tool: z.ZodOptional<z.ZodString>;
7
+ type: z.ZodOptional<z.ZodEnum<{
8
+ skill: "skill";
9
+ agent: "agent";
10
+ rule: "rule";
11
+ hook: "hook";
12
+ "memory-template": "memory-template";
13
+ "mcp-config": "mcp-config";
14
+ }>>;
15
+ }, z.core.$strip>;
16
+ export declare const args: z.ZodTuple<[z.ZodString], null>;
17
+ type Props = {
18
+ args: z.infer<typeof args>;
19
+ options: z.infer<typeof options>;
20
+ };
21
+ export default function Why({ args: [name], options: { json, projectRoot, tool, type } }: Props): import("react/jsx-runtime").JSX.Element;
22
+ export {};
23
+ //# sourceMappingURL=why.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"why.d.ts","sourceRoot":"","sources":["../../src/commands/why.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,WAAW,sCAAsC,CAAC;AAE/D,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAA+C,CAAC;AAEjE,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CAkF9F"}
@@ -0,0 +1,108 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { option } from 'pastel';
4
+ import { z } from 'zod';
5
+ import { DependencyTree, Spinner } from '../components/index.js';
6
+ import { useCommand } from '../hooks/useCommand.js';
7
+ import { readLockfile, traceDependencyChain } from '../lib/lockfile.js';
8
+ import { findProjectRoot } from '../lib/paths.js';
9
+ import { AssetType } from '../lib/schemas/manifest.js';
10
+ import { resolveTool } from '../lib/tool-resolver.js';
11
+ export const description = 'Explain why an asset is installed';
12
+ export const options = z.object({
13
+ json: z
14
+ .boolean()
15
+ .default(false)
16
+ .describe(option({
17
+ description: 'Output raw JSON (for scripting and CI)',
18
+ })),
19
+ projectRoot: z
20
+ .string()
21
+ .optional()
22
+ .describe(option({
23
+ alias: 'P',
24
+ description: 'Override project root directory',
25
+ })),
26
+ tool: z
27
+ .string()
28
+ .optional()
29
+ .describe(option({
30
+ alias: 'T',
31
+ description: 'Target tool (e.g., claude-code)',
32
+ })),
33
+ type: AssetType.optional().describe(option({
34
+ alias: 't',
35
+ description: 'Filter by asset type (skill, agent, rule, hook, memory-template, mcp-config)',
36
+ })),
37
+ });
38
+ export const args = z.tuple([z.string().describe('Asset name')]);
39
+ export default function Why({ args: [name], options: { json, projectRoot, tool, type } }) {
40
+ const state = useCommand(async (progress) => {
41
+ const projectDir = findProjectRoot(projectRoot);
42
+ progress('Loading configuration...');
43
+ const { tool: resolvedTool } = await resolveTool(tool, projectDir);
44
+ progress('Reading lockfile...');
45
+ const lockfile = await readLockfile(projectDir, resolvedTool);
46
+ progress('Tracing dependency chain...');
47
+ return traceDependencyChain(lockfile, name, type);
48
+ }, [name, projectRoot, tool, type], 'Reading lockfile...');
49
+ if (state.status === 'loading') {
50
+ return _jsx(Spinner, { message: state.message });
51
+ }
52
+ if (state.status === 'error') {
53
+ return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
54
+ }
55
+ const { data } = state;
56
+ if (json) {
57
+ return _jsx(Text, { children: JSON.stringify(buildJsonOutput(data), null, 2) });
58
+ }
59
+ if (data.status === 'not_installed') {
60
+ process.exitCode = 1;
61
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'red', children: ["Asset ", _jsxs(Text, { bold: true, children: ["\"", data.name, "\""] }), " is not installed."] }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk search ", data.name] }), " to find assets to install."] })] }));
62
+ }
63
+ if (data.status === 'direct') {
64
+ return (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: data.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", data.asset.type, ") v", data.asset.version] }), ' was directly installed.'] }));
65
+ }
66
+ if (data.status === 'orphaned') {
67
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'yellow', children: [_jsx(Text, { bold: true, children: data.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", data.asset.type, ") v", data.asset.version] }), ' is an orphaned dependency.'] }), _jsx(Text, { dimColor: true, children: "It was installed as a dependency but no parent chain to a directly installed asset exists." }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk uninstall ", data.asset.name] }), " to remove it."] })] }));
68
+ }
69
+ // data.status === 'dependency'
70
+ return (_jsx(DependencyTree, { chains: data.chains, name: data.asset.name, type: data.asset.type, version: data.asset.version }));
71
+ }
72
+ function buildJsonOutput(data) {
73
+ switch (data.status) {
74
+ case 'dependency': {
75
+ return {
76
+ chains: data.chains,
77
+ name: data.asset.name,
78
+ status: data.status,
79
+ type: data.asset.type,
80
+ version: data.asset.version,
81
+ };
82
+ }
83
+ case 'direct': {
84
+ return {
85
+ name: data.asset.name,
86
+ status: data.status,
87
+ type: data.asset.type,
88
+ version: data.asset.version,
89
+ };
90
+ }
91
+ case 'not_installed': {
92
+ return {
93
+ exitCode: 1,
94
+ name: data.name,
95
+ status: data.status,
96
+ };
97
+ }
98
+ case 'orphaned': {
99
+ return {
100
+ name: data.asset.name,
101
+ status: data.status,
102
+ type: data.asset.type,
103
+ version: data.asset.version,
104
+ };
105
+ }
106
+ }
107
+ }
108
+ //# sourceMappingURL=why.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"why.js","sourceRoot":"","sources":["../../src/commands/why.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { RegistryAsset, RegistryAssetVersion } from '../lib/schemas/registry.js';
2
+ interface AssetDetailProps {
3
+ /** The registry asset to display */
4
+ asset: RegistryAsset;
5
+ /** Available versions for this asset (sorted newest first) */
6
+ availableVersions?: string[];
7
+ /** Optional deprecation info */
8
+ deprecation?: {
9
+ deprecated: boolean;
10
+ reason?: string;
11
+ replacement?: string;
12
+ };
13
+ /** When true, show the full README without truncation */
14
+ full?: boolean;
15
+ /** The installed version string (when installed) */
16
+ installedVersion?: string;
17
+ /** Whether this asset is currently installed in the project */
18
+ isInstalled?: boolean;
19
+ /** When true, show additional details like checksum */
20
+ verbose?: boolean;
21
+ /** The resolved version string being displayed (defaults to asset.latest) */
22
+ version?: string;
23
+ /** The version-specific metadata (defaults to asset.versions[asset.latest]) */
24
+ versionData?: RegistryAssetVersion;
25
+ }
26
+ /**
27
+ * Detailed view of a single asset — used by the info command.
28
+ * Shows all manifest fields in a structured layout with boxed header and section dividers.
29
+ */
30
+ export default function AssetDetail({ asset, availableVersions, deprecation, full, installedVersion, isInstalled, verbose, version, versionData, }: AssetDetailProps): import("react/jsx-runtime").JSX.Element;
31
+ export {};
32
+ //# sourceMappingURL=AssetDetail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetDetail.d.ts","sourceRoot":"","sources":["../../src/components/AssetDetail.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAWtF,UAAU,gBAAgB;IACxB,oCAAoC;IACpC,KAAK,EAAE,aAAa,CAAC;IACrB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gCAAgC;IAChC,WAAW,CAAC,EAAE;QACZ,UAAU,EAAE,OAAO,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,yDAAyD;IACzD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oDAAoD;IACpD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,+DAA+D;IAC/D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+EAA+E;IAC/E,WAAW,CAAC,EAAE,oBAAoB,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,OAAO,EACP,WAAW,GACZ,EAAE,gBAAgB,2CAwKlB"}
@@ -0,0 +1,45 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useStdout } from 'ink';
3
+ import { getBreakpoint } from '../lib/breakpoints.js';
4
+ import { renderMarkdown } from '../lib/markdown.js';
5
+ import Field from './Field.js';
6
+ import SectionDivider from './SectionDivider.js';
7
+ import StatusBadge from './StatusBadge.js';
8
+ /** Maximum number of README lines to display before truncating (unless --full is used). */
9
+ const README_TRUNCATE_LINES = 20;
10
+ /**
11
+ * Detailed view of a single asset — used by the info command.
12
+ * Shows all manifest fields in a structured layout with boxed header and section dividers.
13
+ */
14
+ export default function AssetDetail({ asset, availableVersions, deprecation, full, installedVersion, isInstalled, verbose, version, versionData, }) {
15
+ const { stdout } = useStdout();
16
+ const terminalWidth = stdout?.columns ?? 120;
17
+ const bp = getBreakpoint(terminalWidth);
18
+ const dividerWidth = Math.max(40, terminalWidth - 6);
19
+ const depNameWidth = bp === 'narrow' ? 18 : 25;
20
+ const displayVersion = version ?? asset.latest;
21
+ const resolvedVersionData = versionData ?? asset.versions[asset.latest];
22
+ const deps = resolvedVersionData?.dependencies ?? [];
23
+ const versions = availableVersions ?? Object.keys(asset.versions).sort().reverse();
24
+ if (!resolvedVersionData) {
25
+ return (_jsx(Box, { flexDirection: 'column', children: _jsxs(Text, { color: 'red', children: ["Error: No version data found for ", asset.name, "@", displayVersion] }) }));
26
+ }
27
+ const readmeContent = resolvedVersionData.readme
28
+ ? (() => {
29
+ const rendered = renderMarkdown(resolvedVersionData.readme);
30
+ const lines = rendered.split('\n');
31
+ if (!full && lines.length > README_TRUNCATE_LINES) {
32
+ return [
33
+ ...lines.slice(0, README_TRUNCATE_LINES),
34
+ '',
35
+ '(truncated -- use --full to see complete README)',
36
+ ].join('\n');
37
+ }
38
+ return rendered;
39
+ })()
40
+ : undefined;
41
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', paddingX: 1, children: [_jsx(Text, { bold: true, color: 'cyan', children: asset.name }), _jsxs(Box, { children: [_jsxs(Text, { dimColor: true, children: [asset.type, " \u00B7 v", displayVersion, displayVersion === asset.latest ? ' (latest)' : '', " \u00B7", ' '] }), _jsx(StatusBadge, { level: resolvedVersionData.trustLevel ?? 'experimental' })] }), isInstalled ? (_jsxs(Text, { color: 'green', children: ["\u2713 Installed", installedVersion ? ` v${installedVersion}` : ''] })) : (_jsx(Text, { dimColor: true, children: "Not installed" }))] }), deprecation?.deprecated && (_jsxs(Box, { marginTop: 1, paddingLeft: 2, children: [_jsxs(Text, { bold: true, color: 'red', children: ["DEPRECATED: ", deprecation.reason] }), deprecation.replacement && (_jsxs(Text, { children: [' ', "Use ", _jsx(Text, { bold: true, children: deprecation.replacement }), " instead."] }))] })), _jsx(Box, { marginTop: 1, paddingLeft: 2, children: _jsx(Text, { wrap: 'truncate', children: resolvedVersionData.description ?? '' }) }), _jsxs(Box, { flexDirection: 'column', marginTop: 1, paddingLeft: 2, children: [_jsx(Field, { label: 'Author', value: resolvedVersionData.author ?? '' }), asset.tags.length > 0 && (_jsx(Field, { label: 'Tags', children: _jsx(Text, { children: asset.tags.map((tag, i) => (_jsxs(Text, { children: [i > 0 ? ', ' : '', _jsx(Text, { color: 'blue', children: tag })] }, tag))) }) })), (resolvedVersionData.tools ?? []).length > 0 && (_jsx(Field, { label: 'Tools', value: (resolvedVersionData.tools ?? []).join(', ') })), verbose && _jsx(Field, { dimValue: true, label: 'Checksum', value: resolvedVersionData.checksum ?? '' })] }), resolvedVersionData.security && (_jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [_jsx(SectionDivider, { label: 'Security', width: dividerWidth }), _jsxs(Box, { flexDirection: 'column', paddingLeft: 2, children: [(resolvedVersionData.security.permissions ?? []).length > 0 && (_jsx(Field, { label: 'Permissions', value: (resolvedVersionData.security.permissions ?? []).join(', ') })), resolvedVersionData.security.reviewedBy && (_jsx(Field, { label: 'Reviewed by', value: resolvedVersionData.security.reviewedAt
42
+ ? `${resolvedVersionData.security.reviewedBy} (${resolvedVersionData.security.reviewedAt})`
43
+ : resolvedVersionData.security.reviewedBy }))] })] })), deps.length > 0 && (_jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [_jsx(SectionDivider, { label: `Dependencies (${deps.length})`, width: dividerWidth }), _jsx(Box, { flexDirection: 'column', paddingLeft: 2, children: deps.map((dep) => (_jsxs(Box, { children: [_jsx(Box, { width: depNameWidth, children: _jsx(Text, { wrap: 'truncate', children: dep.name }) }), _jsxs(Text, { dimColor: true, children: [dep.type, dep.version ? ` @${dep.version}` : ''] })] }, `${dep.type}/${dep.name}`))) })] })), versions.length > 0 && (_jsxs(Box, { flexDirection: 'column', marginTop: 1, children: [_jsx(SectionDivider, { label: 'Versions', width: dividerWidth }), _jsx(Box, { flexDirection: 'column', paddingLeft: 2, children: versions.map((ver) => (_jsxs(Text, { children: [ver === displayVersion ? '* ' : ' ', ver, ver === asset.latest ? _jsx(Text, { dimColor: true, children: " (latest)" }) : ''] }, ver))) })] })), readmeContent && (_jsxs(Box, { flexDirection: 'column', marginTop: 1, paddingBottom: 1, children: [_jsx(SectionDivider, { label: 'README', width: dividerWidth }), _jsx(Box, { paddingLeft: 2, children: _jsx(Text, { wrap: 'truncate', children: readmeContent }) })] }))] }));
44
+ }
45
+ //# sourceMappingURL=AssetDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetDetail.js","sourceRoot":"","sources":["../../src/components/AssetDetail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { TrustLevel } from '../lib/schemas/manifest.js';
2
+ interface AssetRow {
3
+ description?: string;
4
+ fileCount?: number;
5
+ installedAt?: string;
6
+ name: string;
7
+ pinnedVersion?: string;
8
+ trustLevel?: TrustLevel;
9
+ type: string;
10
+ version: string;
11
+ }
12
+ interface AssetTableProps {
13
+ /** Array of asset rows to display */
14
+ assets: AssetRow[];
15
+ /** Which columns to show. Defaults to registry-style columns. */
16
+ columns?: ColumnName[];
17
+ }
18
+ type ColumnName = 'description' | 'files' | 'installed' | 'name' | 'trust' | 'type' | 'version';
19
+ /**
20
+ * Table display for asset lists — used by search, list, and outdated commands.
21
+ * Supports configurable column sets and responsive breakpoints.
22
+ */
23
+ export default function AssetTable({ assets, columns: columnsProp }: AssetTableProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=AssetTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetTable.d.ts","sourceRoot":"","sources":["../../src/components/AssetTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAK7D,UAAU,QAAQ;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,qCAAqC;IACrC,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,iEAAiE;IACjE,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;CACxB;AAED,KAAK,UAAU,GAAG,aAAa,GAAG,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAwBhG;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,eAAe,2CA8EnF"}
@@ -0,0 +1,96 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useStdout } from 'ink';
3
+ import { getBreakpoint } from '../lib/breakpoints.js';
4
+ import StatusBadge from './StatusBadge.js';
5
+ const DEFAULT_COLUMNS = ['name', 'type', 'version', 'trust', 'description'];
6
+ /** Per-breakpoint fixed widths for columns. Columns absent from a breakpoint's map are hidden. */
7
+ const RESPONSIVE_WIDTHS = {
8
+ medium: { files: 8, name: 24, type: 14, version: 10 },
9
+ narrow: { files: 8, name: 20, version: 10 },
10
+ wide: { files: 8, name: 24, trust: 14, type: 18, version: 10 },
11
+ };
12
+ /** Columns that flex to fill remaining space — never hidden by breakpoint. */
13
+ const FLEX_COLUMNS = new Set(['description', 'installed']);
14
+ const COLUMN_LABELS = {
15
+ description: 'Description',
16
+ files: 'Files',
17
+ installed: 'Installed',
18
+ name: 'Name',
19
+ trust: 'Trust',
20
+ type: 'Type',
21
+ version: 'Version',
22
+ };
23
+ /**
24
+ * Table display for asset lists — used by search, list, and outdated commands.
25
+ * Supports configurable column sets and responsive breakpoints.
26
+ */
27
+ export default function AssetTable({ assets, columns: columnsProp }) {
28
+ const { stdout } = useStdout();
29
+ const terminalWidth = stdout?.columns ?? 120;
30
+ const bp = getBreakpoint(terminalWidth);
31
+ const widthMap = RESPONSIVE_WIDTHS[bp];
32
+ const requestedColumns = columnsProp ?? DEFAULT_COLUMNS;
33
+ // Filter to only columns visible at this breakpoint (has a fixed width OR is a flex column)
34
+ const columns = requestedColumns.filter((col) => FLEX_COLUMNS.has(col) || col in widthMap);
35
+ // Find the last flex column — it gets flexGrow={1}
36
+ let lastFlexIndex = -1;
37
+ for (let i = columns.length - 1; i >= 0; i--) {
38
+ if (FLEX_COLUMNS.has(columns[i])) {
39
+ lastFlexIndex = i;
40
+ break;
41
+ }
42
+ }
43
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(Box, { children: columns.map((col, i) => {
44
+ const width = widthMap[col];
45
+ if (width !== undefined) {
46
+ return (_jsx(Box, { flexShrink: 0, width: width, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }) }, col));
47
+ }
48
+ if (i === lastFlexIndex) {
49
+ return (_jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }) }, col));
50
+ }
51
+ return (_jsx(Box, { children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: COLUMN_LABELS[col] }) }, col));
52
+ }) }), assets.map((asset) => (_jsx(Box, { children: columns.map((col, i) => {
53
+ const width = widthMap[col];
54
+ if (width !== undefined) {
55
+ return (_jsx(Box, { flexShrink: 0, width: width, children: renderCell(col, asset) }, col));
56
+ }
57
+ if (i === lastFlexIndex) {
58
+ return (_jsx(Box, { flexGrow: 1, overflow: 'hidden', children: renderCell(col, asset) }, col));
59
+ }
60
+ return _jsx(Box, { children: renderCell(col, asset) }, col);
61
+ }) }, `${asset.type}/${asset.name}`)))] }));
62
+ }
63
+ function formatDate(isoString) {
64
+ try {
65
+ const date = new Date(isoString);
66
+ return date.toLocaleDateString('en-US', {
67
+ day: 'numeric',
68
+ month: 'short',
69
+ year: 'numeric',
70
+ });
71
+ }
72
+ catch {
73
+ return isoString;
74
+ }
75
+ }
76
+ function renderCell(column, asset) {
77
+ switch (column) {
78
+ case 'description':
79
+ return (_jsx(Text, { dimColor: true, wrap: 'truncate', children: asset.description ?? '' }));
80
+ case 'files':
81
+ return _jsx(Text, { children: asset.fileCount ?? 0 });
82
+ case 'installed':
83
+ return (_jsx(Text, { dimColor: true, wrap: 'truncate', children: formatDate(asset.installedAt ?? '') }));
84
+ case 'name':
85
+ return (_jsx(Text, { color: 'cyan', wrap: 'truncate', children: asset.name }));
86
+ case 'trust':
87
+ return asset.trustLevel ? _jsx(StatusBadge, { level: asset.trustLevel }) : _jsx(Text, { children: "-" });
88
+ case 'type':
89
+ return _jsx(Text, { wrap: 'truncate', children: asset.type });
90
+ case 'version':
91
+ return (_jsxs(Text, { wrap: 'truncate', children: [asset.version, asset.pinnedVersion ? _jsx(Text, { color: 'yellow', children: " Pinned" }) : ''] }));
92
+ default:
93
+ return _jsx(Text, { children: "-" });
94
+ }
95
+ }
96
+ //# sourceMappingURL=AssetTable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AssetTable.js","sourceRoot":"","sources":["../../src/components/AssetTable.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { BundleAssetRef } from '../lib/schemas/bundle.js';
2
+ import type { RegistryAsset, RegistryBundle } from '../lib/schemas/registry.js';
3
+ export interface BundleDeps {
4
+ depMap: Map<string, RegistryAsset[]>;
5
+ totalDepCount: number;
6
+ }
7
+ interface BrowseExpandedBundleProps {
8
+ /** The bundle to show details for */
9
+ bundle: RegistryBundle;
10
+ /** Pre-computed dependency resolution result */
11
+ bundleDeps: BundleDeps;
12
+ /** Terminal width for responsive layout */
13
+ terminalWidth: number;
14
+ }
15
+ export default function BrowseExpandedBundle({ bundle, bundleDeps, terminalWidth }: BrowseExpandedBundleProps): import("react/jsx-runtime").JSX.Element;
16
+ /**
17
+ * Resolve transitive dependencies for each bundle asset.
18
+ * Returns a map of "type/name" → array of dependency RegistryAssets,
19
+ * and the total count of unique transitive dependencies.
20
+ */
21
+ export declare function resolveBundleDependencies(registryAssets: RegistryAsset[], bundleAssetRefs: BundleAssetRef[]): {
22
+ depMap: Map<string, RegistryAsset[]>;
23
+ totalDepCount: number;
24
+ };
25
+ export {};
26
+ //# sourceMappingURL=BrowseExpandedBundle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BrowseExpandedBundle.d.ts","sourceRoot":"","sources":["../../src/components/BrowseExpandedBundle.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAEhF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,yBAAyB;IACjC,qCAAqC;IACrC,MAAM,EAAE,cAAc,CAAC;IACvB,gDAAgD;IAChD,UAAU,EAAE,UAAU,CAAC;IACvB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,yBAAyB,2CAsD5G;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,aAAa,EAAE,EAC/B,eAAe,EAAE,cAAc,EAAE,GAChC;IAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CA0CjE"}