@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,186 @@
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 { DryRunBanner, InstallSummary, Spinner } from '../components/index.js';
6
+ import { useCommand } from '../hooks/useCommand.js';
7
+ import { loadAdapter } from '../lib/adapter.js';
8
+ import { executeInstallPlan } from '../lib/installer.js';
9
+ import { LockfileLockedError, readLockfile, upgradeToDirectInstall, withLockfileLock, writeLockfile, } from '../lib/lockfile.js';
10
+ import { findProjectRoot } from '../lib/paths.js';
11
+ import { fetchRegistry, findBundle, isDeprecated } from '../lib/registry.js';
12
+ import { resolveBundleInstallPlan, resolveInstallPlan } from '../lib/resolver.js';
13
+ import { resolveTool } from '../lib/tool-resolver.js';
14
+ import { parseNameVersion } from '../lib/version.js';
15
+ export const description = 'Install an asset or bundle';
16
+ export const options = z.object({
17
+ dryRun: z
18
+ .boolean()
19
+ .default(false)
20
+ .describe(option({
21
+ alias: 'n',
22
+ description: 'Show what would be installed without making changes',
23
+ })),
24
+ force: z
25
+ .boolean()
26
+ .default(false)
27
+ .describe(option({
28
+ alias: 'f',
29
+ description: 'Force reinstall even if already installed',
30
+ })),
31
+ pin: z
32
+ .boolean()
33
+ .default(false)
34
+ .describe(option({
35
+ alias: 'p',
36
+ description: 'Pin the asset at the installed version',
37
+ })),
38
+ projectRoot: z
39
+ .string()
40
+ .optional()
41
+ .describe(option({
42
+ alias: 'P',
43
+ description: 'Override project root directory',
44
+ })),
45
+ refresh: z
46
+ .boolean()
47
+ .default(false)
48
+ .describe(option({
49
+ description: 'Bypass the registry cache and fetch fresh data',
50
+ })),
51
+ tool: z
52
+ .string()
53
+ .optional()
54
+ .describe(option({
55
+ alias: 'T',
56
+ description: 'Target tool (e.g., claude-code)',
57
+ })),
58
+ });
59
+ export const args = z.tuple([z.string().describe('Asset or bundle name to install (supports name@version syntax)')]);
60
+ export default function Install({ args: [rawName], options: { dryRun, force, pin, projectRoot, refresh, tool }, }) {
61
+ const { name, version: requestedVersion } = parseNameVersion(rawName);
62
+ const state = useCommand(async (progress) => {
63
+ const projectDir = findProjectRoot(projectRoot);
64
+ progress('Loading configuration...');
65
+ const { tool: resolvedTool } = await resolveTool(tool, projectDir);
66
+ progress(`Loading ${resolvedTool} adapter...`);
67
+ const adapter = await loadAdapter(resolvedTool);
68
+ progress('Fetching registry...');
69
+ const registry = await fetchRegistry({ force: refresh });
70
+ const deprecation = isDeprecated(registry, name);
71
+ if (deprecation.deprecated && !force) {
72
+ return {
73
+ name,
74
+ outcome: 'deprecated',
75
+ reason: deprecation.reason,
76
+ replacement: deprecation.replacement,
77
+ };
78
+ }
79
+ // Check if the name matches a bundle
80
+ const bundle = findBundle(registry, name);
81
+ // Dry-run: resolve plan without acquiring lockfile lock or executing
82
+ if (dryRun) {
83
+ if (bundle) {
84
+ progress('Resolving bundle assets...');
85
+ const plan = resolveBundleInstallPlan(registry, bundle);
86
+ return { bundleName: bundle.name, outcome: 'dry-run-bundle', plan, tool: resolvedTool };
87
+ }
88
+ const versionLabel = requestedVersion ? `@${requestedVersion}` : '';
89
+ progress(`Resolving dependencies${versionLabel}...`);
90
+ const plan = resolveInstallPlan(registry, name, undefined, requestedVersion);
91
+ return { outcome: 'dry-run-install', plan, tool: resolvedTool };
92
+ }
93
+ try {
94
+ return await withLockfileLock(projectDir, async () => {
95
+ if (bundle) {
96
+ // Bundle installation flow
97
+ if (!force) {
98
+ const lockfile = await readLockfile(projectDir, resolvedTool);
99
+ const bundleAssets = bundle.assets ?? [];
100
+ const allInstalled = bundleAssets.length > 0 &&
101
+ bundleAssets.every((ref) => (lockfile.assets ?? []).some((a) => a.name === ref.name && a.type === ref.type));
102
+ if (allInstalled) {
103
+ return {
104
+ bundleName: bundle.name,
105
+ outcome: 'bundle-already-installed',
106
+ version: bundle.version,
107
+ };
108
+ }
109
+ }
110
+ progress('Resolving bundle assets...');
111
+ const plan = resolveBundleInstallPlan(registry, bundle);
112
+ const results = await executeInstallPlan(plan, {
113
+ adapter,
114
+ bundleOrigin: { name: bundle.name, version: bundle.version },
115
+ force,
116
+ onProgress: progress,
117
+ pin,
118
+ projectDir: projectDir,
119
+ });
120
+ return { bundleName: bundle.name, outcome: 'bundle-installed', results, tool: resolvedTool };
121
+ }
122
+ // Single asset installation flow
123
+ if (!force) {
124
+ const lockfile = await readLockfile(projectDir, resolvedTool);
125
+ const existing = (lockfile.assets ?? []).find((a) => a.name === name);
126
+ if (existing) {
127
+ // If it was auto-installed as a dependency, upgrade it to a direct install
128
+ if ((existing.installReason ?? 'direct') === 'dependency') {
129
+ const updated = upgradeToDirectInstall(lockfile, name);
130
+ await writeLockfile(projectDir, updated);
131
+ return { name, outcome: 'upgraded-to-direct', version: existing.version };
132
+ }
133
+ return { name, outcome: 'already-installed', version: existing.version };
134
+ }
135
+ }
136
+ const versionLabel = requestedVersion ? `@${requestedVersion}` : '';
137
+ progress(`Resolving dependencies${versionLabel}...`);
138
+ const plan = resolveInstallPlan(registry, name, undefined, requestedVersion);
139
+ const results = await executeInstallPlan(plan, {
140
+ adapter,
141
+ force,
142
+ onProgress: progress,
143
+ pin,
144
+ projectDir: projectDir,
145
+ });
146
+ return { outcome: 'installed', results, tool: resolvedTool };
147
+ });
148
+ }
149
+ catch (error) {
150
+ if (error instanceof LockfileLockedError) {
151
+ throw new Error('Another ATK process is currently modifying this project. Please wait and try again.');
152
+ }
153
+ throw error;
154
+ }
155
+ }, [dryRun, force, name, pin, refresh, requestedVersion, tool]);
156
+ if (state.status === 'loading') {
157
+ return _jsx(Spinner, { message: state.message });
158
+ }
159
+ if (state.status === 'error') {
160
+ return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
161
+ }
162
+ const { data } = state;
163
+ if (data.outcome === 'bundle-already-installed') {
164
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " is already fully installed (v", data.version, ")."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." })] }));
165
+ }
166
+ if (data.outcome === 'bundle-installed') {
167
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'green', children: ["\u2713 Bundle ", _jsx(Text, { bold: true, children: data.bundleName }), " \u2014 ", data.results.length, " asset", data.results.length !== 1 ? 's' : ''] }), _jsx(InstallSummary, { results: data.results, tool: data.tool })] }));
168
+ }
169
+ if (data.outcome === 'already-installed') {
170
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is already installed (v", data.version, ")."] }), _jsx(Text, { dimColor: true, children: "Use --force to reinstall." })] }));
171
+ }
172
+ if (data.outcome === 'upgraded-to-direct') {
173
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'green', children: ["\u2713 ", _jsx(Text, { bold: true, children: data.name }), " (v", data.version, ") is now a direct install."] }), _jsx(Text, { dimColor: true, children: "It will no longer be auto-removed when its parent is uninstalled." })] }));
174
+ }
175
+ if (data.outcome === 'dry-run-install') {
176
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tool: data.tool }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [entry.asset.name, ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: entry.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, `${entry.asset.type}/${entry.asset.name}`)))] }));
177
+ }
178
+ if (data.outcome === 'dry-run-bundle') {
179
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsx(DryRunBanner, { action: 'install', count: data.plan.totalCount, tool: data.tool }), _jsx(Text, { children: " " }), _jsx(Text, { children: _jsxs(Text, { bold: true, color: 'magenta', children: ["Bundle: ", data.bundleName] }) }), _jsx(Text, { children: " " }), data.plan.entries.map((entry) => (_jsxs(Text, { children: [' ', entry.reason === 'dependency' ? (_jsxs(Text, { color: 'cyan', children: [entry.asset.name, ' ', _jsxs(Text, { dimColor: true, children: ["(", entry.asset.type, ") v", entry.version, " \u2014 dependency"] })] })) : (_jsxs(Text, { children: [_jsx(Text, { bold: true, children: entry.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.version] })] }))] }, `${entry.asset.type}/${entry.asset.name}`)))] }));
180
+ }
181
+ if (data.outcome === 'deprecated') {
182
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { color: 'yellow', children: ["Warning: \"", data.name, "\" is deprecated \u2014 ", data.reason] }), data.replacement && (_jsxs(Text, { children: ["Consider using", ' ', _jsx(Text, { bold: true, color: 'cyan', children: data.replacement }), ' ', "instead."] })), _jsx(Text, { dimColor: true, children: "Use --force to install anyway." })] }));
183
+ }
184
+ return _jsx(InstallSummary, { results: data.results, tool: data.tool });
185
+ }
186
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "List installed assets";
3
+ export declare const options: z.ZodObject<{
4
+ projectRoot: z.ZodOptional<z.ZodString>;
5
+ tool: z.ZodOptional<z.ZodString>;
6
+ type: z.ZodOptional<z.ZodEnum<{
7
+ skill: "skill";
8
+ agent: "agent";
9
+ rule: "rule";
10
+ hook: "hook";
11
+ "memory-template": "memory-template";
12
+ "mcp-config": "mcp-config";
13
+ }>>;
14
+ }, z.core.$strip>;
15
+ type Props = {
16
+ options: z.infer<typeof options>;
17
+ };
18
+ export default function List({ options: { projectRoot, tool, type } }: Props): import("react/jsx-runtime").JSX.Element;
19
+ export {};
20
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/commands/list.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,eAAO,MAAM,WAAW,0BAA0B,CAAC;AAEnD,eAAO,MAAM,OAAO;;;;;;;;;;;iBAyBlB,CAAC;AAOH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CA6D3E"}
@@ -0,0 +1,61 @@
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 { AssetTable, Spinner } from '../components/index.js';
6
+ import { useCommand } from '../hooks/useCommand.js';
7
+ import { getInstalledAssets, readLockfile } 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 = 'List installed assets';
12
+ export const options = z.object({
13
+ projectRoot: z
14
+ .string()
15
+ .optional()
16
+ .describe(option({
17
+ alias: 'P',
18
+ description: 'Override project root directory',
19
+ })),
20
+ tool: z
21
+ .string()
22
+ .optional()
23
+ .describe(option({
24
+ alias: 'T',
25
+ description: 'Target tool (e.g., claude-code)',
26
+ })),
27
+ type: AssetType.optional().describe(option({
28
+ alias: 't',
29
+ description: 'Filter by asset type (skill, agent, rule, hook, memory-template, mcp-config)',
30
+ })),
31
+ });
32
+ export default function List({ options: { projectRoot, tool, type } }) {
33
+ const state = useCommand(async (progress) => {
34
+ const projectDir = findProjectRoot(projectRoot);
35
+ progress('Loading configuration...');
36
+ const { tool: resolvedTool } = await resolveTool(tool);
37
+ progress('Reading lockfile...');
38
+ const lockfile = await readLockfile(projectDir, resolvedTool);
39
+ const assets = getInstalledAssets(lockfile, type);
40
+ return { assets, tool: resolvedTool };
41
+ }, [projectRoot, tool, type], 'Reading lockfile...');
42
+ if (state.status === 'loading') {
43
+ return _jsx(Spinner, { message: state.message });
44
+ }
45
+ if (state.status === 'error') {
46
+ return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
47
+ }
48
+ const { assets, tool: resolvedTool } = state.data;
49
+ if (assets.length === 0) {
50
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { dimColor: true, children: ["No assets installed", type ? ` (type: ${type})` : '', " for ", resolvedTool, "."] }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsxs(Text, { bold: true, children: ["atk search ", '<query>'] }), " to find assets to install."] })] }));
51
+ }
52
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { wrap: 'truncate', children: [_jsx(Text, { bold: true, children: assets.length }), " asset", assets.length !== 1 ? 's' : '', " installed for", ' ', _jsx(Text, { color: 'cyan', children: resolvedTool }), type && _jsxs(Text, { dimColor: true, children: [" (type: ", type, ")"] }), ":"] }), _jsx(Text, { children: " " }), _jsx(AssetTable, { assets: assets.map((asset) => ({
53
+ fileCount: asset.files.length,
54
+ installedAt: asset.installedAt,
55
+ name: asset.name,
56
+ pinnedVersion: asset.pinnedVersion,
57
+ type: asset.type,
58
+ version: asset.version,
59
+ })), columns: ['name', 'type', 'version', 'files', 'installed'] })] }));
60
+ }
61
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/commands/list.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "Show available updates for installed assets";
3
+ export declare const options: z.ZodObject<{
4
+ projectRoot: z.ZodOptional<z.ZodString>;
5
+ refresh: z.ZodDefault<z.ZodBoolean>;
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
+ type Props = {
17
+ options: z.infer<typeof options>;
18
+ };
19
+ export default function Outdated({ options: { projectRoot, refresh, tool, type } }: Props): import("react/jsx-runtime").JSX.Element;
20
+ export {};
21
+ //# sourceMappingURL=outdated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated.d.ts","sourceRoot":"","sources":["../../src/commands/outdated.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,eAAO,MAAM,WAAW,gDAAgD,CAAC;AAEzE,eAAO,MAAM,OAAO;;;;;;;;;;;;iBAiClB,CAAC;AAcH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CAwIxF"}
@@ -0,0 +1,81 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text, useStdout } from 'ink';
3
+ import { option } from 'pastel';
4
+ import { z } from 'zod';
5
+ import { Spinner, StatusBadge } from '../components/index.js';
6
+ import { useCommand } from '../hooks/useCommand.js';
7
+ import { getBreakpoint } from '../lib/breakpoints.js';
8
+ import { readLockfile } from '../lib/lockfile.js';
9
+ import { findProjectRoot } from '../lib/paths.js';
10
+ import { fetchRegistry } from '../lib/registry.js';
11
+ import { AssetType } from '../lib/schemas/manifest.js';
12
+ import { resolveTool } from '../lib/tool-resolver.js';
13
+ import { checkOutdated } from '../lib/updater.js';
14
+ export const description = 'Show available updates for installed assets';
15
+ export const options = z.object({
16
+ projectRoot: z
17
+ .string()
18
+ .optional()
19
+ .describe(option({
20
+ alias: 'P',
21
+ description: 'Override project root directory',
22
+ })),
23
+ refresh: z
24
+ .boolean()
25
+ .default(false)
26
+ .describe(option({
27
+ description: 'Bypass the registry cache and fetch fresh data',
28
+ })),
29
+ tool: z
30
+ .string()
31
+ .optional()
32
+ .describe(option({
33
+ alias: 'T',
34
+ description: 'Target tool (e.g., claude-code)',
35
+ })),
36
+ type: AssetType.optional().describe(option({
37
+ alias: 't',
38
+ description: 'Filter by asset type (skill, agent, rule, hook, memory-template, mcp-config)',
39
+ })),
40
+ });
41
+ const COLUMN_WIDTHS = {
42
+ medium: { installed: 12, latest: 12, name: 24, type: 14 },
43
+ narrow: { installed: 12, latest: 12, name: 20 },
44
+ wide: { installed: 12, latest: 12, name: 24, type: 18 },
45
+ };
46
+ export default function Outdated({ options: { projectRoot, refresh, tool, type } }) {
47
+ const { stdout } = useStdout();
48
+ const terminalWidth = stdout?.columns ?? 120;
49
+ const bp = getBreakpoint(terminalWidth);
50
+ const showType = bp !== 'narrow';
51
+ const cols = COLUMN_WIDTHS[bp];
52
+ const state = useCommand(async (progress) => {
53
+ const projectDir = findProjectRoot(projectRoot);
54
+ progress('Loading configuration...');
55
+ const { tool: resolvedTool } = await resolveTool(tool);
56
+ progress('Fetching registry...');
57
+ const registry = await fetchRegistry({ force: refresh });
58
+ progress('Checking versions...');
59
+ const lockfile = await readLockfile(projectDir, resolvedTool);
60
+ const allOutdated = checkOutdated(lockfile, registry);
61
+ const outdated = type ? allOutdated.filter((a) => a.type === type) : allOutdated;
62
+ const assets = lockfile.assets ?? [];
63
+ const totalInstalled = type ? assets.filter((a) => a.type === type).length : assets.length;
64
+ return { outdated, tool: resolvedTool, totalInstalled };
65
+ }, [projectRoot, refresh, tool, type]);
66
+ if (state.status === 'loading') {
67
+ return _jsx(Spinner, { message: state.message });
68
+ }
69
+ if (state.status === 'error') {
70
+ return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
71
+ }
72
+ const { outdated, tool: resolvedTool, totalInstalled } = state.data;
73
+ if (totalInstalled === 0) {
74
+ return (_jsxs(Text, { dimColor: true, children: ["No assets installed", type ? ` (type: ${type})` : '', " for ", resolvedTool, "."] }));
75
+ }
76
+ if (outdated.length === 0) {
77
+ return (_jsxs(Text, { color: 'green', children: ["\u2713 All ", totalInstalled, " installed asset", totalInstalled !== 1 ? 's' : '', type ? ` (type: ${type})` : '', " are up to date."] }));
78
+ }
79
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: outdated.length }), " outdated asset", outdated.length !== 1 ? 's' : '', " for ", _jsx(Text, { color: 'cyan', children: resolvedTool }), ":"] }), _jsx(Text, { children: " " }), _jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.name, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: "Name" }) }), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: "Type" }) })), _jsx(Box, { flexShrink: 0, width: cols.installed, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: "Installed" }) }), _jsx(Box, { flexShrink: 0, width: cols.latest, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: "Latest" }) }), _jsx(Box, { flexShrink: 0, width: 10, children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: "Trust" }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: _jsx(Text, { bold: true, underline: true, wrap: 'truncate', children: ' ' }) })] }), outdated.map((asset) => (_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.name, children: _jsx(Text, { color: 'cyan', wrap: 'truncate', children: asset.name }) }), showType && (_jsx(Box, { flexShrink: 0, width: 'type' in cols ? cols.type : 0, children: _jsx(Text, { wrap: 'truncate', children: asset.type }) })), _jsx(Box, { flexShrink: 0, width: cols.installed, children: _jsx(Text, { color: 'red', wrap: 'truncate', children: asset.installedVersion }) }), _jsx(Box, { flexShrink: 0, width: cols.latest, children: _jsx(Text, { color: 'green', wrap: 'truncate', children: asset.latestVersion }) }), _jsx(Box, { flexShrink: 0, width: 10, children: _jsx(StatusBadge, { level: asset.trustLevel }) }), _jsx(Box, { flexGrow: 1, overflow: 'hidden', children: asset.pinned ? _jsx(Text, { color: 'yellow', children: "Pinned" }) : _jsx(Text, {}) })] }, `${asset.type}/${asset.name}`))), _jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: ["Run ", _jsx(Text, { bold: true, children: "atk update" }), " to update all, or ", _jsxs(Text, { bold: true, children: ["atk update ", '<name>'] }), " for a specific asset."] })] }));
80
+ }
81
+ //# sourceMappingURL=outdated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated.js","sourceRoot":"","sources":["../../src/commands/outdated.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "Pin an installed asset to a specific version";
3
+ export declare const options: z.ZodObject<{
4
+ projectRoot: z.ZodOptional<z.ZodString>;
5
+ tool: z.ZodOptional<z.ZodString>;
6
+ type: z.ZodOptional<z.ZodEnum<{
7
+ skill: "skill";
8
+ agent: "agent";
9
+ rule: "rule";
10
+ hook: "hook";
11
+ "memory-template": "memory-template";
12
+ "mcp-config": "mcp-config";
13
+ }>>;
14
+ }, z.core.$strip>;
15
+ export declare const args: z.ZodTuple<[z.ZodString], null>;
16
+ type Props = {
17
+ args: z.infer<typeof args>;
18
+ options: z.infer<typeof options>;
19
+ };
20
+ export default function Pin({ args: [nameArg], options: { projectRoot, tool, type } }: Props): import("react/jsx-runtime").JSX.Element;
21
+ export {};
22
+ //# sourceMappingURL=pin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.d.ts","sourceRoot":"","sources":["../../src/commands/pin.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,eAAO,MAAM,WAAW,iDAAiD,CAAC;AAE1E,eAAO,MAAM,OAAO;;;;;;;;;;;iBAyBlB,CAAC;AAEH,eAAO,MAAM,IAAI,iCAEf,CAAC;AAOH,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,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,2CAyF3F"}
@@ -0,0 +1,94 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ import { option } from 'pastel';
4
+ import { z } from 'zod';
5
+ import { Spinner } from '../components/index.js';
6
+ import { useCommand } from '../hooks/useCommand.js';
7
+ import { findInstalledAsset, isPinned, LockfileError, LockfileLockedError, pinAssetVersion, readLockfile, withLockfileLock, writeLockfile, } 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 = 'Pin an installed asset to a specific version';
12
+ export const options = z.object({
13
+ projectRoot: z
14
+ .string()
15
+ .optional()
16
+ .describe(option({
17
+ alias: 'P',
18
+ description: 'Override project root directory',
19
+ })),
20
+ tool: z
21
+ .string()
22
+ .optional()
23
+ .describe(option({
24
+ alias: 'T',
25
+ description: 'Target tool (e.g., claude-code)',
26
+ })),
27
+ type: AssetType.optional().describe(option({
28
+ alias: 't',
29
+ description: 'Filter by asset type (skill, agent, rule, hook, memory-template, mcp-config)',
30
+ })),
31
+ });
32
+ export const args = z.tuple([
33
+ z.string().describe('Asset name, optionally with @version suffix (e.g., my-asset@2.0.0)'),
34
+ ]);
35
+ export default function Pin({ args: [nameArg], options: { projectRoot, tool, type } }) {
36
+ const state = useCommand(async (progress) => {
37
+ // Parse name@version syntax
38
+ const atIndex = nameArg.lastIndexOf('@');
39
+ const hasVersion = atIndex > 0; // ignore leading @ (e.g., @scoped names shouldn't match)
40
+ const name = hasVersion ? nameArg.slice(0, atIndex) : nameArg;
41
+ const explicitVersion = hasVersion ? nameArg.slice(atIndex + 1) : undefined;
42
+ const projectDir = findProjectRoot(projectRoot);
43
+ progress('Loading configuration...');
44
+ const { tool: resolvedTool } = await resolveTool(tool);
45
+ try {
46
+ return await withLockfileLock(projectDir, async () => {
47
+ progress('Reading lockfile...');
48
+ const lockfile = await readLockfile(projectDir, resolvedTool);
49
+ // Look up the installed asset to determine current version
50
+ const installed = findInstalledAsset(lockfile, name, type);
51
+ if (!installed) {
52
+ throw new LockfileError(`Asset '${name}' is not installed`);
53
+ }
54
+ const pinVersion = explicitVersion ?? installed.version;
55
+ // Check if already pinned to the same version
56
+ if (isPinned(lockfile, name, type) && installed.pinnedVersion === pinVersion) {
57
+ return { name, outcome: 'already-pinned', version: pinVersion };
58
+ }
59
+ // Track previous pin for informational message
60
+ const previousPin = installed.pinnedVersion;
61
+ progress('Pinning asset version...');
62
+ const updatedLockfile = pinAssetVersion(lockfile, name, pinVersion, type);
63
+ progress('Writing lockfile...');
64
+ await writeLockfile(projectDir, updatedLockfile);
65
+ if (previousPin) {
66
+ return { name, outcome: 'updated-pin', previousVersion: previousPin, version: pinVersion };
67
+ }
68
+ return { name, outcome: 'pinned', version: pinVersion };
69
+ });
70
+ }
71
+ catch (error) {
72
+ if (error instanceof LockfileLockedError) {
73
+ throw new Error('Another ATK process is currently modifying this project. Please wait and try again.');
74
+ }
75
+ throw error;
76
+ }
77
+ }, [nameArg, projectRoot, tool, type]);
78
+ if (state.status === 'loading') {
79
+ return _jsx(Spinner, { message: state.message });
80
+ }
81
+ if (state.status === 'error') {
82
+ return _jsxs(Text, { color: 'red', children: ["Error: ", state.message] });
83
+ }
84
+ const { data } = state;
85
+ if (data.outcome === 'already-pinned') {
86
+ return (_jsxs(Text, { children: [_jsx(Text, { color: 'yellow', children: "!" }), " ", _jsx(Text, { bold: true, children: data.name }), " is already pinned to v", data.version] }));
87
+ }
88
+ if (data.outcome === 'updated-pin') {
89
+ return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children: data.name }), " to v", data.version, " ", _jsxs(Text, { dimColor: true, children: ["(was v", data.previousVersion, ")"] })] }));
90
+ }
91
+ // data.outcome === 'pinned'
92
+ return (_jsxs(Text, { color: 'green', children: ["Pinned ", _jsx(Text, { bold: true, children: data.name }), " to v", data.version] }));
93
+ }
94
+ //# sourceMappingURL=pin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pin.js","sourceRoot":"","sources":["../../src/commands/pin.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+ export declare const description = "Remove orphaned dependencies";
3
+ export declare const options: z.ZodObject<{
4
+ dryRun: z.ZodDefault<z.ZodBoolean>;
5
+ projectRoot: z.ZodOptional<z.ZodString>;
6
+ tool: z.ZodOptional<z.ZodString>;
7
+ yes: z.ZodDefault<z.ZodBoolean>;
8
+ }, z.core.$strip>;
9
+ type Props = {
10
+ options: z.infer<typeof options>;
11
+ };
12
+ export default function Prune({ options: { dryRun, projectRoot, tool, yes } }: Props): import("react/jsx-runtime").JSX.Element | null;
13
+ export {};
14
+ //# sourceMappingURL=prune.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prune.d.ts","sourceRoot":"","sources":["../../src/commands/prune.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAkBxB,eAAO,MAAM,WAAW,iCAAiC,CAAC;AAE1D,eAAO,MAAM,OAAO;;;;;iBAqClB,CAAC;AAEH,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;CAClC,CAAC;AAqBF,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,KAAK,kDA4OnF"}