@detergent-software/atk 3.0.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/README.md +361 -0
  2. package/build/commands/_app.d.ts.map +1 -1
  3. package/build/commands/_app.js +23 -3
  4. package/build/commands/_app.js.map +1 -1
  5. package/build/commands/audit.d.ts.map +1 -1
  6. package/build/commands/audit.js +76 -37
  7. package/build/commands/audit.js.map +1 -1
  8. package/build/commands/browse.d.ts.map +1 -1
  9. package/build/commands/browse.js +126 -154
  10. package/build/commands/browse.js.map +1 -1
  11. package/build/commands/cache.d.ts.map +1 -1
  12. package/build/commands/cache.js +13 -15
  13. package/build/commands/cache.js.map +1 -1
  14. package/build/commands/config.d.ts +1 -1
  15. package/build/commands/config.d.ts.map +1 -1
  16. package/build/commands/config.js +7 -3
  17. package/build/commands/config.js.map +1 -1
  18. package/build/commands/diff.d.ts.map +1 -1
  19. package/build/commands/diff.js +4 -117
  20. package/build/commands/diff.js.map +1 -1
  21. package/build/commands/freeze.d.ts +1 -2
  22. package/build/commands/freeze.d.ts.map +1 -1
  23. package/build/commands/freeze.js +17 -37
  24. package/build/commands/freeze.js.map +1 -1
  25. package/build/commands/info.d.ts +1 -2
  26. package/build/commands/info.d.ts.map +1 -1
  27. package/build/commands/info.js +43 -38
  28. package/build/commands/info.js.map +1 -1
  29. package/build/commands/init.d.ts.map +1 -1
  30. package/build/commands/init.js +41 -414
  31. package/build/commands/init.js.map +1 -1
  32. package/build/commands/install.d.ts.map +1 -1
  33. package/build/commands/install.js +79 -72
  34. package/build/commands/install.js.map +1 -1
  35. package/build/commands/list.d.ts +2 -2
  36. package/build/commands/list.d.ts.map +1 -1
  37. package/build/commands/list.js +138 -27
  38. package/build/commands/list.js.map +1 -1
  39. package/build/commands/outdated.d.ts.map +1 -1
  40. package/build/commands/outdated.js +20 -10
  41. package/build/commands/outdated.js.map +1 -1
  42. package/build/commands/pin.d.ts +1 -2
  43. package/build/commands/pin.d.ts.map +1 -1
  44. package/build/commands/pin.js +44 -47
  45. package/build/commands/pin.js.map +1 -1
  46. package/build/commands/prune.d.ts.map +1 -1
  47. package/build/commands/prune.js +76 -151
  48. package/build/commands/prune.js.map +1 -1
  49. package/build/commands/publish.d.ts +4 -1
  50. package/build/commands/publish.d.ts.map +1 -1
  51. package/build/commands/publish.js +139 -388
  52. package/build/commands/publish.js.map +1 -1
  53. package/build/commands/search.d.ts.map +1 -1
  54. package/build/commands/search.js +14 -19
  55. package/build/commands/search.js.map +1 -1
  56. package/build/commands/setup.d.ts +1 -1
  57. package/build/commands/setup.d.ts.map +1 -1
  58. package/build/commands/setup.js +48 -253
  59. package/build/commands/setup.js.map +1 -1
  60. package/build/commands/sync.d.ts.map +1 -1
  61. package/build/commands/sync.js +43 -169
  62. package/build/commands/sync.js.map +1 -1
  63. package/build/commands/thaw.d.ts +1 -2
  64. package/build/commands/thaw.d.ts.map +1 -1
  65. package/build/commands/thaw.js +19 -37
  66. package/build/commands/thaw.js.map +1 -1
  67. package/build/commands/uninstall.d.ts.map +1 -1
  68. package/build/commands/uninstall.js +106 -221
  69. package/build/commands/uninstall.js.map +1 -1
  70. package/build/commands/unpin.d.ts +1 -2
  71. package/build/commands/unpin.d.ts.map +1 -1
  72. package/build/commands/unpin.js +23 -38
  73. package/build/commands/unpin.js.map +1 -1
  74. package/build/commands/update.d.ts.map +1 -1
  75. package/build/commands/update.js +57 -54
  76. package/build/commands/update.js.map +1 -1
  77. package/build/commands/why.d.ts +1 -1
  78. package/build/commands/why.d.ts.map +1 -1
  79. package/build/commands/why.js +14 -6
  80. package/build/commands/why.js.map +1 -1
  81. package/build/components/AssetDetail.d.ts +1 -3
  82. package/build/components/AssetDetail.d.ts.map +1 -1
  83. package/build/components/AssetDetail.js +22 -21
  84. package/build/components/AssetDetail.js.map +1 -1
  85. package/build/components/AssetTable.d.ts +5 -2
  86. package/build/components/AssetTable.d.ts.map +1 -1
  87. package/build/components/AssetTable.js +37 -40
  88. package/build/components/AssetTable.js.map +1 -1
  89. package/build/components/AssetVersionLine.d.ts +27 -0
  90. package/build/components/AssetVersionLine.d.ts.map +1 -0
  91. package/build/components/AssetVersionLine.js +10 -0
  92. package/build/components/AssetVersionLine.js.map +1 -0
  93. package/build/components/BrowseExpandedBundle.d.ts +10 -1
  94. package/build/components/BrowseExpandedBundle.d.ts.map +1 -1
  95. package/build/components/BrowseExpandedBundle.js +25 -2
  96. package/build/components/BrowseExpandedBundle.js.map +1 -1
  97. package/build/components/BrowseExpandedRow.d.ts +4 -1
  98. package/build/components/BrowseExpandedRow.d.ts.map +1 -1
  99. package/build/components/BrowseExpandedRow.js +24 -3
  100. package/build/components/BrowseExpandedRow.js.map +1 -1
  101. package/build/components/BrowseList.d.ts +5 -1
  102. package/build/components/BrowseList.d.ts.map +1 -1
  103. package/build/components/BrowseList.js +57 -47
  104. package/build/components/BrowseList.js.map +1 -1
  105. package/build/components/BundleDetail.d.ts +2 -1
  106. package/build/components/BundleDetail.d.ts.map +1 -1
  107. package/build/components/BundleDetail.js +3 -2
  108. package/build/components/BundleDetail.js.map +1 -1
  109. package/build/components/DiffView.d.ts +0 -2
  110. package/build/components/DiffView.d.ts.map +1 -1
  111. package/build/components/DiffView.js +11 -5
  112. package/build/components/DiffView.js.map +1 -1
  113. package/build/components/DryRunBanner.d.ts +3 -3
  114. package/build/components/DryRunBanner.d.ts.map +1 -1
  115. package/build/components/DryRunBanner.js +2 -2
  116. package/build/components/DryRunBanner.js.map +1 -1
  117. package/build/components/FilterBar.d.ts +10 -3
  118. package/build/components/FilterBar.d.ts.map +1 -1
  119. package/build/components/FilterBar.js +4 -4
  120. package/build/components/FilterBar.js.map +1 -1
  121. package/build/components/FrozenSkippedHint.d.ts +11 -0
  122. package/build/components/FrozenSkippedHint.d.ts.map +1 -0
  123. package/build/components/FrozenSkippedHint.js +12 -0
  124. package/build/components/FrozenSkippedHint.js.map +1 -0
  125. package/build/components/HelpBar.d.ts.map +1 -1
  126. package/build/components/HelpBar.js +3 -3
  127. package/build/components/HelpBar.js.map +1 -1
  128. package/build/components/InitSuccess.d.ts +5 -0
  129. package/build/components/InitSuccess.d.ts.map +1 -0
  130. package/build/components/InitSuccess.js +20 -0
  131. package/build/components/InitSuccess.js.map +1 -0
  132. package/build/components/InstallSummary.d.ts +3 -3
  133. package/build/components/InstallSummary.d.ts.map +1 -1
  134. package/build/components/InstallSummary.js +2 -2
  135. package/build/components/InstallSummary.js.map +1 -1
  136. package/build/components/Link.d.ts +7 -0
  137. package/build/components/Link.d.ts.map +1 -0
  138. package/build/components/Link.js +6 -0
  139. package/build/components/Link.js.map +1 -0
  140. package/build/components/ListActionBar.d.ts +11 -0
  141. package/build/components/ListActionBar.d.ts.map +1 -0
  142. package/build/components/ListActionBar.js +30 -0
  143. package/build/components/ListActionBar.js.map +1 -0
  144. package/build/components/ListBrowseList.d.ts +27 -0
  145. package/build/components/ListBrowseList.d.ts.map +1 -0
  146. package/build/components/ListBrowseList.js +57 -0
  147. package/build/components/ListBrowseList.js.map +1 -0
  148. package/build/components/ListExpandedRow.d.ts +38 -0
  149. package/build/components/ListExpandedRow.d.ts.map +1 -0
  150. package/build/components/ListExpandedRow.js +46 -0
  151. package/build/components/ListExpandedRow.js.map +1 -0
  152. package/build/components/ListHelpBar.d.ts +19 -0
  153. package/build/components/ListHelpBar.d.ts.map +1 -0
  154. package/build/components/ListHelpBar.js +11 -0
  155. package/build/components/ListHelpBar.js.map +1 -0
  156. package/build/components/OrphanListItem.d.ts +15 -0
  157. package/build/components/OrphanListItem.d.ts.map +1 -0
  158. package/build/components/OrphanListItem.js +6 -0
  159. package/build/components/OrphanListItem.js.map +1 -0
  160. package/build/components/PromptField.d.ts +19 -0
  161. package/build/components/PromptField.d.ts.map +1 -0
  162. package/build/components/PromptField.js +7 -0
  163. package/build/components/PromptField.js.map +1 -0
  164. package/build/components/SkippedAssetSection.d.ts +35 -0
  165. package/build/components/SkippedAssetSection.d.ts.map +1 -0
  166. package/build/components/SkippedAssetSection.js +15 -0
  167. package/build/components/SkippedAssetSection.js.map +1 -0
  168. package/build/components/StatusBadge.d.ts +1 -1
  169. package/build/components/StatusBadge.d.ts.map +1 -1
  170. package/build/components/StatusBadge.js +4 -0
  171. package/build/components/StatusBadge.js.map +1 -1
  172. package/build/components/SyncAllInSync.d.ts +14 -0
  173. package/build/components/SyncAllInSync.d.ts.map +1 -0
  174. package/build/components/SyncAllInSync.js +10 -0
  175. package/build/components/SyncAllInSync.js.map +1 -0
  176. package/build/components/SyncDriftedList.d.ts +24 -0
  177. package/build/components/SyncDriftedList.d.ts.map +1 -0
  178. package/build/components/SyncDriftedList.js +17 -0
  179. package/build/components/SyncDriftedList.js.map +1 -0
  180. package/build/components/SyncNoAssets.d.ts +12 -0
  181. package/build/components/SyncNoAssets.d.ts.map +1 -0
  182. package/build/components/SyncNoAssets.js +9 -0
  183. package/build/components/SyncNoAssets.js.map +1 -0
  184. package/build/components/index.d.ts +16 -2
  185. package/build/components/index.d.ts.map +1 -1
  186. package/build/components/index.js +16 -2
  187. package/build/components/index.js.map +1 -1
  188. package/build/hooks/useBrowseState.d.ts +44 -1
  189. package/build/hooks/useBrowseState.d.ts.map +1 -1
  190. package/build/hooks/useBrowseState.js +148 -13
  191. package/build/hooks/useBrowseState.js.map +1 -1
  192. package/build/hooks/useConfirmation.d.ts +18 -0
  193. package/build/hooks/useConfirmation.d.ts.map +1 -0
  194. package/build/hooks/useConfirmation.js +56 -0
  195. package/build/hooks/useConfirmation.js.map +1 -0
  196. package/build/hooks/useInitState.d.ts +109 -0
  197. package/build/hooks/useInitState.d.ts.map +1 -0
  198. package/build/hooks/useInitState.js +474 -0
  199. package/build/hooks/useInitState.js.map +1 -0
  200. package/build/hooks/useListActions.d.ts +15 -0
  201. package/build/hooks/useListActions.d.ts.map +1 -0
  202. package/build/hooks/useListActions.js +155 -0
  203. package/build/hooks/useListActions.js.map +1 -0
  204. package/build/hooks/useListState.d.ts +151 -0
  205. package/build/hooks/useListState.d.ts.map +1 -0
  206. package/build/hooks/useListState.js +448 -0
  207. package/build/hooks/useListState.js.map +1 -0
  208. package/build/hooks/usePruneState.d.ts +76 -0
  209. package/build/hooks/usePruneState.d.ts.map +1 -0
  210. package/build/hooks/usePruneState.js +252 -0
  211. package/build/hooks/usePruneState.js.map +1 -0
  212. package/build/hooks/usePublishState.d.ts +147 -0
  213. package/build/hooks/usePublishState.d.ts.map +1 -0
  214. package/build/hooks/usePublishState.js +916 -0
  215. package/build/hooks/usePublishState.js.map +1 -0
  216. package/build/hooks/useSetupState.d.ts +57 -0
  217. package/build/hooks/useSetupState.d.ts.map +1 -0
  218. package/build/hooks/useSetupState.js +236 -0
  219. package/build/hooks/useSetupState.js.map +1 -0
  220. package/build/hooks/useUninstallState.d.ts +102 -0
  221. package/build/hooks/useUninstallState.d.ts.map +1 -0
  222. package/build/hooks/useUninstallState.js +342 -0
  223. package/build/hooks/useUninstallState.js.map +1 -0
  224. package/build/lib/adapter.d.ts +21 -0
  225. package/build/lib/adapter.d.ts.map +1 -1
  226. package/build/lib/adapter.js +59 -1
  227. package/build/lib/adapter.js.map +1 -1
  228. package/build/lib/checksum.d.ts +39 -0
  229. package/build/lib/checksum.d.ts.map +1 -1
  230. package/build/lib/checksum.js +98 -13
  231. package/build/lib/checksum.js.map +1 -1
  232. package/build/lib/config.d.ts +38 -18
  233. package/build/lib/config.d.ts.map +1 -1
  234. package/build/lib/config.js +103 -55
  235. package/build/lib/config.js.map +1 -1
  236. package/build/lib/detector.d.ts +2 -11
  237. package/build/lib/detector.d.ts.map +1 -1
  238. package/build/lib/detector.js +2 -64
  239. package/build/lib/detector.js.map +1 -1
  240. package/build/lib/diagnostics.d.ts +7 -0
  241. package/build/lib/diagnostics.d.ts.map +1 -1
  242. package/build/lib/diagnostics.js +54 -34
  243. package/build/lib/diagnostics.js.map +1 -1
  244. package/build/lib/diff-command.d.ts +40 -0
  245. package/build/lib/diff-command.d.ts.map +1 -0
  246. package/build/lib/diff-command.js +145 -0
  247. package/build/lib/diff-command.js.map +1 -0
  248. package/build/lib/diff.d.ts +7 -0
  249. package/build/lib/diff.d.ts.map +1 -1
  250. package/build/lib/diff.js +15 -10
  251. package/build/lib/diff.js.map +1 -1
  252. package/build/lib/format.d.ts +6 -0
  253. package/build/lib/format.d.ts.map +1 -0
  254. package/build/lib/format.js +18 -0
  255. package/build/lib/format.js.map +1 -0
  256. package/build/lib/github.d.ts +35 -0
  257. package/build/lib/github.d.ts.map +1 -1
  258. package/build/lib/github.js +44 -0
  259. package/build/lib/github.js.map +1 -1
  260. package/build/lib/gitignore.d.ts +17 -0
  261. package/build/lib/gitignore.d.ts.map +1 -1
  262. package/build/lib/gitignore.js +17 -1
  263. package/build/lib/gitignore.js.map +1 -1
  264. package/build/lib/init.d.ts +22 -0
  265. package/build/lib/init.d.ts.map +1 -1
  266. package/build/lib/init.js +163 -18
  267. package/build/lib/init.js.map +1 -1
  268. package/build/lib/installer.d.ts +1 -0
  269. package/build/lib/installer.d.ts.map +1 -1
  270. package/build/lib/installer.js +7 -7
  271. package/build/lib/installer.js.map +1 -1
  272. package/build/lib/lockfile.d.ts +19 -17
  273. package/build/lib/lockfile.d.ts.map +1 -1
  274. package/build/lib/lockfile.js +43 -67
  275. package/build/lib/lockfile.js.map +1 -1
  276. package/build/lib/publisher.d.ts +41 -12
  277. package/build/lib/publisher.d.ts.map +1 -1
  278. package/build/lib/publisher.js +226 -64
  279. package/build/lib/publisher.js.map +1 -1
  280. package/build/lib/registry.d.ts +20 -5
  281. package/build/lib/registry.d.ts.map +1 -1
  282. package/build/lib/registry.js +41 -30
  283. package/build/lib/registry.js.map +1 -1
  284. package/build/lib/schemas/config.d.ts +31 -3
  285. package/build/lib/schemas/config.d.ts.map +1 -1
  286. package/build/lib/schemas/config.js +21 -2
  287. package/build/lib/schemas/config.js.map +1 -1
  288. package/build/lib/schemas/index.d.ts +1 -1
  289. package/build/lib/schemas/index.d.ts.map +1 -1
  290. package/build/lib/schemas/index.js +1 -1
  291. package/build/lib/schemas/index.js.map +1 -1
  292. package/build/lib/schemas/lockfile.d.ts +18 -2
  293. package/build/lib/schemas/lockfile.d.ts.map +1 -1
  294. package/build/lib/schemas/lockfile.js +7 -1
  295. package/build/lib/schemas/lockfile.js.map +1 -1
  296. package/build/lib/schemas/manifest.d.ts +1 -1
  297. package/build/lib/schemas/manifest.d.ts.map +1 -1
  298. package/build/lib/schemas/manifest.js +7 -2
  299. package/build/lib/schemas/manifest.js.map +1 -1
  300. package/build/lib/schemas/registry.d.ts +2 -4
  301. package/build/lib/schemas/registry.d.ts.map +1 -1
  302. package/build/lib/schemas/registry.js +1 -1
  303. package/build/lib/schemas/registry.js.map +1 -1
  304. package/build/lib/search.d.ts +15 -1
  305. package/build/lib/search.d.ts.map +1 -1
  306. package/build/lib/search.js +65 -65
  307. package/build/lib/search.js.map +1 -1
  308. package/build/lib/setup.d.ts +28 -0
  309. package/build/lib/setup.d.ts.map +1 -0
  310. package/build/lib/setup.js +98 -0
  311. package/build/lib/setup.js.map +1 -0
  312. package/build/lib/sync.d.ts +109 -0
  313. package/build/lib/sync.d.ts.map +1 -0
  314. package/build/lib/sync.js +217 -0
  315. package/build/lib/sync.js.map +1 -0
  316. package/build/lib/tool-resolver.d.ts +29 -6
  317. package/build/lib/tool-resolver.d.ts.map +1 -1
  318. package/build/lib/tool-resolver.js +54 -15
  319. package/build/lib/tool-resolver.js.map +1 -1
  320. package/build/lib/updater.d.ts +7 -4
  321. package/build/lib/updater.d.ts.map +1 -1
  322. package/build/lib/updater.js +10 -6
  323. package/build/lib/updater.js.map +1 -1
  324. package/build/lib/version.js +1 -1
  325. package/build/lib/version.js.map +1 -1
  326. package/package.json +79 -65
  327. package/tool-adapters/claude-code.json +1 -1
  328. package/tool-adapters/copilot-cli.json +1 -1
@@ -0,0 +1,57 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { getBreakpoint } from '../lib/breakpoints.js';
4
+ import { formatDate } from '../lib/format.js';
5
+ import ListExpandedRow, { computeExpandedLines } from './ListExpandedRow.js';
6
+ const COLUMN_WIDTHS = {
7
+ medium: { cursor: 3, installDate: 14, name: 30, org: 16, status: 8, type: 14, version: 18 },
8
+ narrow: { cursor: 3, installDate: 14, name: 30, status: 8, version: 18 },
9
+ wide: { cursor: 3, installDate: 14, name: 40, org: 20, status: 8, type: 18, version: 22 },
10
+ };
11
+ export default function ListBrowseList({ cursorIndex, expandedIndex, frozenSet, items, outdatedMap, readmeUrl, scrollOffset, terminalWidth, typeFilter, viewportHeight, }) {
12
+ if (items.length === 0) {
13
+ const label = typeFilter === 'all' ? 'installed assets' : `installed ${typeFilter} assets`;
14
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: _jsx(Box, { paddingY: 1, children: _jsxs(Text, { dimColor: true, children: ["No ", label, " match your filters."] }) }) }));
15
+ }
16
+ const bp = getBreakpoint(terminalWidth);
17
+ const showType = bp !== 'narrow';
18
+ const showOrg = bp !== 'narrow';
19
+ const cols = COLUMN_WIDTHS[bp];
20
+ const orgWidth = 'org' in cols ? cols.org : 0;
21
+ const typeWidth = 'type' in cols ? cols.type : 0;
22
+ const aboveCount = scrollOffset;
23
+ // Helper to check if an asset is frozen via the frozenSet
24
+ const isItemFrozen = (item) => frozenSet?.has(`${item.type}:${item.org ?? ''}:${item.name}`) ?? false;
25
+ // Compute expanded row line height for the expanded item (if any)
26
+ const expandedAsset = expandedIndex !== null ? items[expandedIndex] : null;
27
+ const visibleItems = [];
28
+ // Start at 1 to account for the column header line
29
+ let usedLines = 1;
30
+ // Reserve a line for the "▲ more above" indicator when scrolled
31
+ if (scrollOffset > 0)
32
+ usedLines += 1;
33
+ for (let i = scrollOffset; i < items.length; i++) {
34
+ let expandedLines = 0;
35
+ if (i === expandedIndex && expandedAsset) {
36
+ expandedLines = computeExpandedLines(expandedAsset, readmeUrl, isItemFrozen(expandedAsset));
37
+ }
38
+ const linesNeeded = 1 + expandedLines;
39
+ // Reserve a line for the "▼ more below" indicator when there are more items after this one
40
+ const limit = i < items.length - 1 ? viewportHeight - 1 : viewportHeight;
41
+ if (usedLines + linesNeeded > limit)
42
+ break;
43
+ visibleItems.push({ index: i, item: items[i] });
44
+ usedLines += linesNeeded;
45
+ }
46
+ const lastVisibleIndex = visibleItems.length > 0 ? visibleItems[visibleItems.length - 1].index : scrollOffset;
47
+ const belowCount = items.length - lastVisibleIndex - 1;
48
+ return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { children: " " }) }), _jsx(Box, { flexShrink: 0, marginRight: 1, width: cols.name, children: _jsx(Text, { bold: true, dimColor: true, children: "Name" }) }), showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { bold: true, dimColor: true, children: "Org" }) })), showType && (_jsx(Box, { flexShrink: 0, width: typeWidth, children: _jsx(Text, { bold: true, dimColor: true, children: "Type" }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: _jsx(Text, { bold: true, dimColor: true, children: "Version" }) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: _jsx(Text, { bold: true, dimColor: true, children: "Status" }) }), _jsx(Box, { flexShrink: 0, width: cols.installDate, children: _jsx(Text, { bold: true, dimColor: true, children: "Installed" }) })] }), aboveCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25B2 ", aboveCount, " more above"] }), visibleItems.map(({ index, item }) => {
49
+ const isCursor = index === cursorIndex;
50
+ const isExpanded = index === expandedIndex;
51
+ const assetKey = `${item.type}/${item.name}`;
52
+ const latestVersion = outdatedMap.get(assetKey);
53
+ const isOutdated = latestVersion !== undefined;
54
+ return (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Box, { children: [_jsx(Box, { flexShrink: 0, width: cols.cursor, children: _jsx(Text, { color: 'cyan', children: isCursor ? ' ▸' : ' ' }) }), _jsx(Box, { flexShrink: 0, marginRight: 1, width: cols.name, children: _jsx(Text, { bold: isCursor, color: 'cyan', wrap: 'truncate', children: item.name }) }), showOrg && (_jsx(Box, { flexShrink: 0, width: orgWidth, children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: item.org ? `@${item.org}` : '' }) })), showType && (_jsx(Box, { flexShrink: 0, width: typeWidth, children: _jsx(Text, { wrap: 'truncate', children: item.type }) })), _jsx(Box, { flexShrink: 0, width: cols.version, children: isOutdated ? (_jsxs(Text, { wrap: 'truncate', children: [item.version, ' ', _jsxs(Text, { color: 'yellow', children: ['→', " ", latestVersion] })] })) : (_jsx(Text, { wrap: 'truncate', children: item.version })) }), _jsx(Box, { flexShrink: 0, width: cols.status, children: _jsxs(Text, { wrap: 'truncate', children: [item.pinnedVersion ? '📌' : '', isItemFrozen(item) ? '🧊' : ''] }) }), _jsx(Box, { flexShrink: 0, width: cols.installDate, children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: formatDate(item.installedAt) }) })] }), isExpanded && (_jsx(ListExpandedRow, { asset: item, frozen: isItemFrozen(item), latestVersion: latestVersion, readmeUrl: readmeUrl, terminalWidth: terminalWidth }))] }, assetKey));
55
+ }), belowCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25BC ", belowCount, " more below"] })] }));
56
+ }
57
+ //# sourceMappingURL=ListBrowseList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListBrowseList.js","sourceRoot":"","sources":["../../src/components/ListBrowseList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { InstalledAsset } from '../lib/schemas/lockfile.js';
2
+ /**
3
+ * Compute the number of lines the expanded row will consume for viewport calculations.
4
+ * This accounts for the base lines, variable file count, pinned/frozen indicators, and readme URL.
5
+ */
6
+ export declare function computeExpandedLines(asset: InstalledAsset, readmeUrl: null | string, frozen?: boolean): number;
7
+ /**
8
+ * Number of fixed lines rendered by the expanded row, excluding
9
+ * variable-length sections (file list and readme URL).
10
+ *
11
+ * Breakdown:
12
+ * 1 - top separator
13
+ * 1 - description (or empty)
14
+ * 1 - installed files header
15
+ * 1 - version / latest line
16
+ * 1 - install date line
17
+ * 1 - bottom separator
18
+ * ---
19
+ * 6 base lines
20
+ *
21
+ * Pinned, frozen, and readme URL lines are added dynamically.
22
+ */
23
+ export declare const LIST_EXPANDED_BASE_LINES = 6;
24
+ interface ListExpandedRowProps {
25
+ /** The installed asset to show details for */
26
+ asset: InstalledAsset;
27
+ /** Whether the asset is frozen (from project config) */
28
+ frozen?: boolean;
29
+ /** Latest available version from the registry, if known */
30
+ latestVersion: string | undefined;
31
+ /** GitHub URL to the asset's README, or null if unavailable */
32
+ readmeUrl: null | string;
33
+ /** Terminal width for responsive layout */
34
+ terminalWidth: number;
35
+ }
36
+ export default function ListExpandedRow({ asset, frozen, latestVersion, readmeUrl, terminalWidth, }: ListExpandedRowProps): import("react/jsx-runtime").JSX.Element;
37
+ export {};
38
+ //# sourceMappingURL=ListExpandedRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListExpandedRow.d.ts","sourceRoot":"","sources":["../../src/components/ListExpandedRow.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAKjE;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAgB9G;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,UAAU,oBAAoB;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,cAAc,CAAC;IACtB,wDAAwD;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2DAA2D;IAC3D,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,+DAA+D;IAC/D,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,KAAK,EACL,MAAM,EACN,aAAa,EACb,SAAS,EACT,aAAa,GACd,EAAE,oBAAoB,2CA2EtB"}
@@ -0,0 +1,46 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import { formatDate } from '../lib/format.js';
4
+ import Link from './Link.js';
5
+ /**
6
+ * Compute the number of lines the expanded row will consume for viewport calculations.
7
+ * This accounts for the base lines, variable file count, pinned/frozen indicators, and readme URL.
8
+ */
9
+ export function computeExpandedLines(asset, readmeUrl, frozen) {
10
+ let lines = LIST_EXPANDED_BASE_LINES;
11
+ // Each installed file adds a line
12
+ lines += asset.files.length;
13
+ // Pinned indicator adds a line
14
+ if (asset.pinnedVersion)
15
+ lines += 1;
16
+ // Frozen indicator adds a line
17
+ if (frozen)
18
+ lines += 1;
19
+ // Readme URL: 1 for marginTop + 1 for the URL line
20
+ if (readmeUrl)
21
+ lines += 2;
22
+ return lines;
23
+ }
24
+ /**
25
+ * Number of fixed lines rendered by the expanded row, excluding
26
+ * variable-length sections (file list and readme URL).
27
+ *
28
+ * Breakdown:
29
+ * 1 - top separator
30
+ * 1 - description (or empty)
31
+ * 1 - installed files header
32
+ * 1 - version / latest line
33
+ * 1 - install date line
34
+ * 1 - bottom separator
35
+ * ---
36
+ * 6 base lines
37
+ *
38
+ * Pinned, frozen, and readme URL lines are added dynamically.
39
+ */
40
+ export const LIST_EXPANDED_BASE_LINES = 6;
41
+ export default function ListExpandedRow({ asset, frozen, latestVersion, readmeUrl, terminalWidth, }) {
42
+ const separatorWidth = Math.max(20, terminalWidth - 10);
43
+ const isOutdated = latestVersion !== undefined && latestVersion !== asset.version;
44
+ return (_jsxs(Box, { flexDirection: 'column', paddingLeft: 4, children: [_jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) }), _jsx(Text, { wrap: 'truncate', children: asset.description ?? '' }), _jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { dimColor: true, children: ["Files (", asset.files.length, "):"] }), asset.files.map((f) => (_jsxs(Text, { children: [' ', _jsx(Text, { color: 'cyan', children: f.sourcePath })] }, f.sourcePath)))] }), asset.pinnedVersion && (_jsxs(Text, { children: [_jsx(Text, { children: '📌 Pinned' }), _jsxs(Text, { dimColor: true, children: [" to ", asset.pinnedVersion] })] })), frozen && (_jsxs(Text, { children: [_jsx(Text, { children: '🧊 Frozen' }), _jsx(Text, { dimColor: true, children: " \u2014 sync and update will not overwrite" })] })), _jsxs(Box, { gap: 2, children: [_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Installed: " }), _jsxs(Text, { children: ["v", asset.version] })] }), isOutdated && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Latest: " }), _jsxs(Text, { color: 'yellow', children: ["v", latestVersion] })] })), latestVersion !== undefined && !isOutdated && _jsx(Text, { color: 'green', children: '✓ up to date' })] }), _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Installed: " }), _jsx(Text, { children: formatDate(asset.installedAt) }), asset.updatedAt && _jsxs(Text, { dimColor: true, children: [" (updated ", formatDate(asset.updatedAt), ")"] })] }), readmeUrl && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { dimColor: true, children: "README: " }), _jsx(Text, { color: 'cyan', children: _jsx(Link, { url: readmeUrl, children: "view on GitHub" }) })] })), _jsx(Text, { dimColor: true, children: '─'.repeat(separatorWidth) })] }));
45
+ }
46
+ //# sourceMappingURL=ListExpandedRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListExpandedRow.js","sourceRoot":"","sources":["../../src/components/ListExpandedRow.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ interface ListHelpBarProps {
2
+ /** Whether the current asset supports actions (has a selected asset) */
3
+ canAct: boolean;
4
+ /** Whether the current row is expanded */
5
+ expanded: boolean;
6
+ /** Whether the project has an org configured */
7
+ hasOrg?: boolean;
8
+ /** Whether any installed assets have available updates */
9
+ hasOutdated: boolean;
10
+ /** Current input mode */
11
+ inputMode: 'filter' | 'navigate';
12
+ /** Whether the currently selected asset is frozen */
13
+ isFrozen: boolean;
14
+ /** Whether the currently selected asset is pinned */
15
+ isPinned: boolean;
16
+ }
17
+ export default function ListHelpBar({ canAct, expanded, hasOrg, hasOutdated, inputMode, isFrozen, isPinned, }: ListHelpBarProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=ListHelpBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListHelpBar.d.ts","sourceRoot":"","sources":["../../src/components/ListHelpBar.tsx"],"names":[],"mappings":"AAEA,UAAU,gBAAgB;IACxB,wEAAwE;IACxE,MAAM,EAAE,OAAO,CAAC;IAChB,0CAA0C;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0DAA0D;IAC1D,WAAW,EAAE,OAAO,CAAC;IACrB,yBAAyB;IACzB,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;IAClB,qDAAqD;IACrD,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,GACT,EAAE,gBAAgB,2CAkDlB"}
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ export default function ListHelpBar({ canAct, expanded, hasOrg, hasOutdated, inputMode, isFrozen, isPinned, }) {
4
+ if (inputMode === 'filter') {
5
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { dimColor: true, children: [_jsx(Text, { children: "\u2191\u2193" }), " navigate", ' ', _jsx(Text, { children: "Tab" }), ": type", ' ', _jsx(Text, { children: "Esc" }), ": stop filter", ' ', "Type to filter..."] }) }));
6
+ }
7
+ const pinLabel = isPinned ? 'unpin' : 'pin';
8
+ const freezeLabel = isFrozen ? 'thaw' : 'freeze';
9
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { dimColor: true, children: [_jsx(Text, { children: "\u2191\u2193" }), " navigate", ' ', _jsx(Text, { children: "/" }), ": filter", ' ', _jsx(Text, { children: "Tab" }), ": type", ' ', _jsx(Text, { children: "s" }), ": sort", ' ', hasOrg && (_jsxs(_Fragment, { children: [_jsx(Text, { children: "o" }), ": org", ' '] })), expanded ? (_jsxs(_Fragment, { children: [_jsx(Text, { children: "Esc" }), ": collapse", ' '] })) : (_jsxs(_Fragment, { children: [_jsx(Text, { children: "Enter" }), ": expand", ' '] })), _jsx(Text, { dimColor: !canAct || !hasOutdated, children: "u: update" }), ' ', _jsx(Text, { dimColor: !canAct, children: "x: uninstall" }), ' ', _jsxs(Text, { dimColor: !canAct, children: ["p: ", pinLabel] }), ' ', _jsxs(Text, { dimColor: !canAct, children: ["f: ", freezeLabel] }), ' ', _jsx(Text, { children: "q" }), ": quit"] }) }));
10
+ }
11
+ //# sourceMappingURL=ListHelpBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListHelpBar.js","sourceRoot":"","sources":["../../src/components/ListHelpBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAmBhC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,MAAM,EACN,QAAQ,EACR,MAAM,EACN,WAAW,EACX,SAAS,EACT,QAAQ,EACR,QAAQ,GACS;IACjB,IAAI,SAAS,KAAK,QAAQ,EAAE,CAAC;QAC3B,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,QAAQ,mBACZ,KAAC,IAAI,+BAAU,eAAU,IAAI,EAC7B,KAAC,IAAI,sBAAW,YAAO,IAAI,EAC3B,KAAC,IAAI,sBAAW,mBAAc,IAAI,yBAE7B,GACH,CACP,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEjD,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,QAAQ,mBACZ,KAAC,IAAI,+BAAU,eAAU,IAAI,EAC7B,KAAC,IAAI,oBAAS,cAAS,IAAI,EAC3B,KAAC,IAAI,sBAAW,YAAO,IAAI,EAC3B,KAAC,IAAI,oBAAS,YAAO,IAAI,EACxB,MAAM,IAAI,CACT,8BACE,KAAC,IAAI,oBAAS,WAAM,IAAI,IACvB,CACJ,EACA,QAAQ,CAAC,CAAC,CAAC,CACV,8BACE,KAAC,IAAI,sBAAW,gBAAW,IAAI,IAC9B,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,IAAI,wBAAa,cAAS,IAAI,IAC9B,CACJ,EACD,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,IAAI,CAAC,WAAW,0BAAkB,EACxD,IAAI,EACL,KAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,6BAAqB,EAC3C,IAAI,EACL,MAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,oBAAM,QAAQ,IAAQ,EAC5C,IAAI,EACL,MAAC,IAAI,IAAC,QAAQ,EAAE,CAAC,MAAM,oBAAM,WAAW,IAAQ,EAC/C,IAAI,EACL,KAAC,IAAI,oBAAS,cACT,GACH,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ interface OrphanListItemProps {
2
+ /** Color of the icon and name text (default: 'cyan') */
3
+ color?: string;
4
+ /** Leading icon character (default: '-') */
5
+ icon?: string;
6
+ /** Asset name */
7
+ name: string;
8
+ /** Asset type (e.g., 'skill', 'rule') */
9
+ type: string;
10
+ /** Asset version */
11
+ version: string;
12
+ }
13
+ export default function OrphanListItem({ color, icon, name, type, version }: OrphanListItemProps): import("react/jsx-runtime").JSX.Element;
14
+ export {};
15
+ //# sourceMappingURL=OrphanListItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrphanListItem.d.ts","sourceRoot":"","sources":["../../src/components/OrphanListItem.tsx"],"names":[],"mappings":"AAEA,UAAU,mBAAmB;IAC3B,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAc,EAAE,IAAU,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,mBAAmB,2CAa9G"}
@@ -0,0 +1,6 @@
1
+ import { jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ export default function OrphanListItem({ color = 'cyan', icon = '-', name, type, version }) {
4
+ return (_jsxs(Text, { children: [' ', _jsxs(Text, { color: color, children: [icon, " ", name] }), _jsxs(Text, { dimColor: true, children: [' ', "(", type, ") v", version] })] }));
5
+ }
6
+ //# sourceMappingURL=OrphanListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrphanListItem.js","sourceRoot":"","sources":["../../src/components/OrphanListItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAe3B,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAuB;IAC7G,OAAO,CACL,MAAC,IAAI,eACF,IAAI,EACL,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,aACf,IAAI,OAAG,IAAI,IACP,EACP,MAAC,IAAI,IAAC,QAAQ,mBACX,GAAG,OACF,IAAI,SAAK,OAAO,IACb,IACF,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ReactNode } from 'react';
2
+ interface PromptFieldProps {
3
+ /** Extra content rendered above the input row (e.g., tool list, help text). */
4
+ children?: ReactNode;
5
+ /** Validation or inline error shown below the input. */
6
+ error?: string;
7
+ /** Prompt label (e.g., "Name (kebab-case)"). */
8
+ label: string;
9
+ onChange: (value: string) => void;
10
+ onSubmit: (value: string) => void;
11
+ /** Static prefix shown before the input (e.g., "@org/"). */
12
+ prefix?: string;
13
+ value: string;
14
+ /** Warning shown above the input row. */
15
+ warning?: string;
16
+ }
17
+ export default function PromptField({ children, error, label, onChange, onSubmit, prefix, value, warning, }: PromptFieldProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
19
+ //# sourceMappingURL=PromptField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptField.d.ts","sourceRoot":"","sources":["../../src/components/PromptField.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,UAAU,gBAAgB;IACxB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,GACR,EAAE,gBAAgB,2CAgBlB"}
@@ -0,0 +1,7 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import TextInput from 'ink-text-input';
4
+ export default function PromptField({ children, error, label, onChange, onSubmit, prefix, value, warning, }) {
5
+ return (_jsxs(Box, { flexDirection: 'column', children: [warning && _jsxs(Text, { color: 'yellow', children: ["Warning: ", warning] }), children, _jsxs(Box, { children: [_jsx(Text, { color: 'cyan', children: '> ' }), _jsxs(Text, { children: [label, prefix] }), _jsx(TextInput, { focus: true, onChange: onChange, onSubmit: onSubmit, value: value })] }), error && _jsxs(Text, { color: 'red', children: [" ", error] })] }));
6
+ }
7
+ //# sourceMappingURL=PromptField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PromptField.js","sourceRoot":"","sources":["../../src/components/PromptField.tsx"],"names":[],"mappings":";AAEA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAkBvC,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAClC,QAAQ,EACR,KAAK,EACL,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,KAAK,EACL,OAAO,GACU;IACjB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACxB,OAAO,IAAI,MAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,0BAAW,OAAO,IAAQ,EACzD,QAAQ,EACT,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,IAAI,GAAQ,EAChC,MAAC,IAAI,eACF,KAAK,EACL,MAAM,IACF,EACP,KAAC,SAAS,IAAC,KAAK,QAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAI,IACrE,EACL,KAAK,IAAI,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,kBAAG,KAAK,IAAQ,IACvC,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,35 @@
1
+ interface SkippedAssetItem {
2
+ /** Currently installed version */
3
+ installedVersion: string;
4
+ /** Latest available version */
5
+ latestVersion: string;
6
+ /** Asset name */
7
+ name: string;
8
+ /** Asset type (e.g., "skill", "rule") */
9
+ type: string;
10
+ }
11
+ interface SkippedAssetSectionProps {
12
+ /** Badge text for each item (e.g., "frozen", "pinned") */
13
+ badgeText: string;
14
+ /** Ink color for the section header and badge */
15
+ color: string;
16
+ /** Hint message shown in parentheses after the count (e.g., "use atk thaw to unfreeze") */
17
+ hint: string;
18
+ /** Icon for the section header (e.g., "❄", "⊘") */
19
+ icon: string;
20
+ /** The skipped assets to render */
21
+ items: SkippedAssetItem[];
22
+ /** Label text in the section header (e.g., "frozen", "pinned") */
23
+ label: string;
24
+ /** When true, render a top margin spacer via marginTop */
25
+ showSpacer?: boolean;
26
+ }
27
+ /**
28
+ * Renders a section of skipped assets with a colored header showing count and hint,
29
+ * followed by dimmed version lines with a badge for each item.
30
+ *
31
+ * Used for frozen and pinned asset sections in the update command output.
32
+ */
33
+ export default function SkippedAssetSection({ badgeText, color, hint, icon, items, label, showSpacer, }: SkippedAssetSectionProps): import("react/jsx-runtime").JSX.Element | null;
34
+ export {};
35
+ //# sourceMappingURL=SkippedAssetSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkippedAssetSection.d.ts","sourceRoot":"","sources":["../../src/components/SkippedAssetSection.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IACxB,kCAAkC;IAClC,gBAAgB,EAAE,MAAM,CAAC;IACzB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,wBAAwB;IAChC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,SAAS,EACT,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAkB,GACnB,EAAE,wBAAwB,kDAqB1B"}
@@ -0,0 +1,15 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import AssetVersionLine from './AssetVersionLine.js';
4
+ /**
5
+ * Renders a section of skipped assets with a colored header showing count and hint,
6
+ * followed by dimmed version lines with a badge for each item.
7
+ *
8
+ * Used for frozen and pinned asset sections in the update command output.
9
+ */
10
+ export default function SkippedAssetSection({ badgeText, color, hint, icon, items, label, showSpacer = false, }) {
11
+ if (items.length === 0)
12
+ return null;
13
+ return (_jsxs(Box, { flexDirection: 'column', marginTop: showSpacer ? 1 : 0, children: [_jsxs(Text, { color: color, children: [icon, " ", items.length, " ", label, " asset", items.length !== 1 ? 's' : '', " skipped (", hint, "):"] }), items.map((item) => (_jsx(AssetVersionLine, { badge: { color, text: badgeText }, dimVersions: true, installedVersion: item.installedVersion, latestVersion: item.latestVersion, name: item.name, type: item.type }, `${item.type}/${item.name}`)))] }));
14
+ }
15
+ //# sourceMappingURL=SkippedAssetSection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SkippedAssetSection.js","sourceRoot":"","sources":["../../src/components/SkippedAssetSection.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,gBAAgB,MAAM,uBAAuB,CAAC;AA8BrD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,SAAS,EACT,KAAK,EACL,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,KAAK,EACL,UAAU,GAAG,KAAK,GACO;IACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEpC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aACvD,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,aACf,IAAI,OAAG,KAAK,CAAC,MAAM,OAAG,KAAK,YAAQ,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAY,IAAI,UAC5E,EACN,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,gBAAgB,IACf,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,EACjC,WAAW,QACX,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAEvC,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,IAAI,EAAE,IAAI,CAAC,IAAI,IAHV,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAIhC,CACH,CAAC,IACE,CACP,CAAC;AACJ,CAAC"}
@@ -8,6 +8,6 @@ export declare function CheckIcon({ status }: {
8
8
  * Status icon for audit/diff file states.
9
9
  */
10
10
  export declare function FileStatusIcon({ status, }: {
11
- status: 'added' | 'frozen' | 'misplaced' | 'missing' | 'missing-local' | 'modified' | 'ok' | 'removed' | 'unchanged';
11
+ status: 'added' | 'config-missing' | 'config-modified' | 'frozen' | 'misplaced' | 'missing' | 'missing-local' | 'modified' | 'ok' | 'removed' | 'unchanged';
12
12
  }): import("react/jsx-runtime").JSX.Element;
13
13
  //# sourceMappingURL=StatusBadge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/StatusBadge.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,2CAIzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,GACP,EAAE;IACD,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,eAAe,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,CAAC;CACtH,2CAmBA"}
1
+ {"version":3,"file":"StatusBadge.d.ts","sourceRoot":"","sources":["../../src/components/StatusBadge.tsx"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;CAAE,2CAIzE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAC7B,MAAM,GACP,EAAE;IACD,MAAM,EACF,OAAO,GACP,gBAAgB,GAChB,iBAAiB,GACjB,QAAQ,GACR,WAAW,GACX,SAAS,GACT,eAAe,GACf,UAAU,GACV,IAAI,GACJ,SAAS,GACT,WAAW,CAAC;CACjB,2CAuBA"}
@@ -17,6 +17,10 @@ export function FileStatusIcon({ status, }) {
17
17
  switch (status) {
18
18
  case 'added':
19
19
  return _jsx(Text, { color: 'cyan', children: "+" });
20
+ case 'config-missing':
21
+ return _jsx(Text, { color: 'red', children: "\u2715" });
22
+ case 'config-modified':
23
+ return _jsx(Text, { color: 'magenta', children: "\u26A0" });
20
24
  case 'frozen':
21
25
  return _jsx(Text, { color: 'cyan', children: "\u2744" });
22
26
  case 'misplaced':
@@ -1 +1 @@
1
- {"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../src/components/StatusBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAwC;IACxE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAS,CAAC;IAC3D,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAS,CAAC;IAC5D,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,GAGP;IACC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,CAAC;QACrC,KAAK,WAAW;YACd,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAS,CAAC;QACvC,KAAK,SAAS,CAAC;QACf,KAAK,eAAe;YAClB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,CAAC;QACpC,KAAK,UAAU;YACb,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAS,CAAC;QACvC,KAAK,IAAI,CAAC;QACV,KAAK,WAAW;YACd,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAS,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,kBAAS,CAAC;IACtC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"StatusBadge.js","sourceRoot":"","sources":["../../src/components/StatusBadge.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,EAAE,MAAM,EAAwC;IACxE,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAS,CAAC;IAC3D,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAS,CAAC;IAC5D,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAC7B,MAAM,GAcP;IACC,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,OAAO;YACV,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,CAAC;QACrC,KAAK,gBAAgB;YACnB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,CAAC;QACpC,KAAK,iBAAiB;YACpB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,uBAAS,CAAC;QACxC,KAAK,QAAQ;YACX,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,CAAC;QACrC,KAAK,WAAW;YACd,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAS,CAAC;QACvC,KAAK,SAAS,CAAC;QACf,KAAK,eAAe;YAClB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,CAAC;QACpC,KAAK,UAAU;YACb,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uBAAS,CAAC;QACvC,KAAK,IAAI,CAAC;QACV,KAAK,WAAW;YACd,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAS,CAAC;QACtC,KAAK,SAAS;YACZ,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,kBAAS,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ interface SyncAllInSyncProps {
2
+ /** Number of frozen assets that were skipped */
3
+ frozenSkipped: number;
4
+ /** Number of assets that are already in sync */
5
+ skipped: number;
6
+ /** The tool name (e.g., "claude-code") */
7
+ tool: string;
8
+ }
9
+ /**
10
+ * Message shown when all assets are already in sync for a tool.
11
+ */
12
+ export default function SyncAllInSync({ frozenSkipped, skipped, tool }: SyncAllInSyncProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=SyncAllInSync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncAllInSync.d.ts","sourceRoot":"","sources":["../../src/components/SyncAllInSync.tsx"],"names":[],"mappings":"AAIA,UAAU,kBAAkB;IAC1B,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CASzF"}
@@ -0,0 +1,10 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ import FrozenSkippedHint from './FrozenSkippedHint.js';
4
+ /**
5
+ * Message shown when all assets are already in sync for a tool.
6
+ */
7
+ export default function SyncAllInSync({ frozenSkipped, skipped, tool }) {
8
+ return (_jsxs(_Fragment, { children: [_jsxs(Text, { color: 'green', children: ["\u2713 All ", skipped, " asset", skipped !== 1 ? 's' : '', " are in sync for ", tool, ". No changes needed."] }), _jsx(FrozenSkippedHint, { count: frozenSkipped })] }));
9
+ }
10
+ //# sourceMappingURL=SyncAllInSync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncAllInSync.js","sourceRoot":"","sources":["../../src/components/SyncAllInSync.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAE3B,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAWvD;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAsB;IACxF,OAAO,CACL,8BACE,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,4BACV,OAAO,YAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,uBAAmB,IAAI,4BAChE,EACP,KAAC,iBAAiB,IAAC,KAAK,EAAE,aAAa,GAAI,IAC1C,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { SyncEntry, SyncFailure } from '../lib/sync.js';
2
+ interface SyncDriftedListProps {
3
+ /** Whether this is a dry-run (preview only) or a live sync */
4
+ dryRun: boolean;
5
+ /** Entries that were synced (live) or would be synced (dry-run) */
6
+ entries: SyncEntry[];
7
+ /** Failures that occurred during live sync */
8
+ failures?: SyncFailure[];
9
+ /** Number of frozen assets that were skipped */
10
+ frozenSkipped: number;
11
+ /** Number of assets that were already in sync and skipped */
12
+ skipped: number;
13
+ /** The tool name (e.g., "claude-code") */
14
+ tool: string;
15
+ }
16
+ /**
17
+ * Renders the list of drifted/synced assets for a tool.
18
+ *
19
+ * In dry-run mode: shows DryRunBanner, entry list with reason badges, and skip counts.
20
+ * In live mode: shows synced summary, entry list with placed files, failures, and skip counts.
21
+ */
22
+ export default function SyncDriftedList({ dryRun, entries, failures, frozenSkipped, skipped, tool, }: SyncDriftedListProps): import("react/jsx-runtime").JSX.Element;
23
+ export {};
24
+ //# sourceMappingURL=SyncDriftedList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncDriftedList.d.ts","sourceRoot":"","sources":["../../src/components/SyncDriftedList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAK7D,UAAU,oBAAoB;IAC5B,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,mEAAmE;IACnE,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;IACzB,gDAAgD;IAChD,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,MAAM,EACN,OAAO,EACP,QAAa,EACb,aAAa,EACb,OAAO,EACP,IAAI,GACL,EAAE,oBAAoB,2CA+FtB"}
@@ -0,0 +1,17 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import DryRunBanner from './DryRunBanner.js';
4
+ import FrozenSkippedHint from './FrozenSkippedHint.js';
5
+ /**
6
+ * Renders the list of drifted/synced assets for a tool.
7
+ *
8
+ * In dry-run mode: shows DryRunBanner, entry list with reason badges, and skip counts.
9
+ * In live mode: shows synced summary, entry list with placed files, failures, and skip counts.
10
+ */
11
+ export default function SyncDriftedList({ dryRun, entries, failures = [], frozenSkipped, skipped, tool, }) {
12
+ if (dryRun) {
13
+ return (_jsxs(_Fragment, { children: [_jsx(DryRunBanner, { action: 'sync', count: entries.length, tools: [tool] }), _jsx(Text, { children: " " }), entries.map((entry) => (_jsxs(Text, { children: [' ', _jsx(Text, { bold: true, children: entry.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.asset.version] }), ' — ', entry.reason === 'missing' && _jsx(Text, { color: 'yellow', children: "missing files" }), entry.reason === 'modified' && _jsx(Text, { color: 'yellow', children: "modified files" }), entry.reason === 'forced' && _jsx(Text, { dimColor: true, children: "forced" })] }, `${entry.asset.type}/${entry.asset.name}`))), skipped > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { dimColor: true, children: [skipped, " asset", skipped !== 1 ? 's' : '', " already in sync \u2014 would be skipped."] })] })), frozenSkipped > 0 && (_jsxs(_Fragment, { children: [_jsx(Text, { children: " " }), _jsx(FrozenSkippedHint, { count: frozenSkipped })] }))] }));
14
+ }
15
+ return (_jsxs(_Fragment, { children: [entries.length > 0 && (_jsxs(Text, { color: 'green', children: ["\u2713 Synced ", entries.length, " asset", entries.length !== 1 ? 's' : '', " for ", tool] })), skipped > 0 && (_jsxs(Text, { dimColor: true, children: [skipped, " asset", skipped !== 1 ? 's' : '', " already in sync \u2014 skipped."] })), frozenSkipped > 0 && _jsx(FrozenSkippedHint, { count: frozenSkipped }), entries.length > 0 && _jsx(Text, { children: " " }), entries.map((entry) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'green', children: "\u2713" }), " ", _jsx(Text, { bold: true, children: entry.asset.name }), _jsxs(Text, { dimColor: true, children: [' ', "(", entry.asset.type, ") v", entry.asset.version] }), ' — ', entry.reason === 'missing' && _jsx(Text, { color: 'yellow', children: "restored missing files" }), entry.reason === 'modified' && _jsx(Text, { color: 'yellow', children: "restored modified files" }), entry.reason === 'forced' && _jsx(Text, { dimColor: true, children: "force re-synced" })] }), entry.result?.filesPlaced.map((f) => (_jsxs(Text, { dimColor: true, wrap: 'truncate', children: [' ', "\u2192 ", f.destination] }, f.destination)))] }, `${entry.asset.type}/${entry.asset.name}`))), failures.length > 0 && _jsx(Text, { children: " " }), failures.length > 0 && (_jsxs(Text, { color: 'red', children: ["\u2717 Failed to sync ", failures.length, " asset", failures.length !== 1 ? 's' : ''] })), failures.map((failure) => (_jsxs(Box, { flexDirection: 'column', children: [_jsxs(Text, { children: [_jsx(Text, { color: 'red', children: "\u2717" }), " ", _jsx(Text, { bold: true, children: failure.assetName }), _jsxs(Text, { dimColor: true, children: [' ', "(", failure.assetType, ") v", failure.version] })] }), _jsxs(Text, { color: 'red', wrap: 'truncate', children: [' ', failure.error] })] }, `${failure.assetType}/${failure.assetName}`)))] }));
16
+ }
17
+ //# sourceMappingURL=SyncDriftedList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncDriftedList.js","sourceRoot":"","sources":["../../src/components/SyncDriftedList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,OAAO,YAAY,MAAM,mBAAmB,CAAC;AAC7C,OAAO,iBAAiB,MAAM,wBAAwB,CAAC;AAiBvD;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CAAC,EACtC,MAAM,EACN,OAAO,EACP,QAAQ,GAAG,EAAE,EACb,aAAa,EACb,OAAO,EACP,IAAI,GACiB;IACrB,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CACL,8BACE,KAAC,YAAY,IAAC,MAAM,EAAC,MAAM,EAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,GAAI,EACpE,KAAC,IAAI,oBAAS,EACb,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,MAAC,IAAI,eACF,IAAI,EACL,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAQ,EACpC,MAAC,IAAI,IAAC,QAAQ,mBACX,GAAG,OACF,KAAK,CAAC,KAAK,CAAC,IAAI,SAAK,KAAK,CAAC,KAAK,CAAC,OAAO,IACrC,EACN,KAAK,EACL,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,8BAAqB,EACvE,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,+BAAsB,EACzE,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAC,IAAI,IAAC,QAAQ,6BAAc,KAVjD,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAW7C,CACR,CAAC,EACD,OAAO,GAAG,CAAC,IAAI,CACd,8BACE,KAAC,IAAI,oBAAS,EACd,MAAC,IAAI,IAAC,QAAQ,mBACX,OAAO,YAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,iDACnC,IACN,CACJ,EACA,aAAa,GAAG,CAAC,IAAI,CACpB,8BACE,KAAC,IAAI,oBAAS,EACd,KAAC,iBAAiB,IAAC,KAAK,EAAE,aAAa,GAAI,IAC1C,CACJ,IACA,CACJ,CAAC;IACJ,CAAC;IAED,OAAO,CACL,8BACG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CACrB,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,+BACP,OAAO,CAAC,MAAM,YAAQ,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,WAAO,IAAI,IACrE,CACR,EACA,OAAO,GAAG,CAAC,IAAI,CACd,MAAC,IAAI,IAAC,QAAQ,mBACX,OAAO,YAAQ,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,wCACnC,CACR,EACA,aAAa,GAAG,CAAC,IAAI,KAAC,iBAAiB,IAAC,KAAK,EAAE,aAAa,GAAI,EAChE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,IAAI,oBAAS,EACpC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACtB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,uBAAS,OAAC,KAAC,IAAI,IAAC,IAAI,kBAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAQ,EACjE,MAAC,IAAI,IAAC,QAAQ,mBACX,GAAG,OACF,KAAK,CAAC,KAAK,CAAC,IAAI,SAAK,KAAK,CAAC,KAAK,CAAC,OAAO,IACrC,EACN,KAAK,EACL,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,uCAA8B,EAChF,KAAK,CAAC,MAAM,KAAK,UAAU,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,wCAA+B,EAClF,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAC,IAAI,IAAC,QAAQ,sCAAuB,IAC9D,EACN,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACpC,MAAC,IAAI,IAAC,QAAQ,QAAqB,IAAI,EAAC,UAAU,aAC/C,IAAI,aAAI,CAAC,CAAC,WAAW,KADJ,CAAC,CAAC,WAAW,CAE1B,CACR,CAAC,KAhB6B,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAiBpE,CACP,CAAC,EACD,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,KAAC,IAAI,oBAAS,EACrC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACtB,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uCACG,QAAQ,CAAC,MAAM,YAAQ,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IACpE,CACR,EACA,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CACzB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,uBAAS,OAAC,KAAC,IAAI,IAAC,IAAI,kBAAE,OAAO,CAAC,SAAS,GAAQ,EAChE,MAAC,IAAI,IAAC,QAAQ,mBACX,GAAG,OACF,OAAO,CAAC,SAAS,SAAK,OAAO,CAAC,OAAO,IAClC,IACF,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,EAAC,UAAU,aAC9B,IAAI,EACJ,OAAO,CAAC,KAAK,IACT,KAXwB,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,EAAE,CAYtE,CACP,CAAC,IACD,CACJ,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ interface SyncNoAssetsProps {
2
+ /** Optional bootstrap hint displayed below the main message */
3
+ bootstrapHint?: string;
4
+ /** The tool name (e.g., "claude-code") */
5
+ tool: string;
6
+ }
7
+ /**
8
+ * Message shown when no assets are installed for a tool during sync.
9
+ */
10
+ export default function SyncNoAssets({ bootstrapHint, tool }: SyncNoAssetsProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=SyncNoAssets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncNoAssets.d.ts","sourceRoot":"","sources":["../../src/components/SyncNoAssets.tsx"],"names":[],"mappings":"AAEA,UAAU,iBAAiB;IACzB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,iBAAiB,2CAO9E"}
@@ -0,0 +1,9 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ /**
4
+ * Message shown when no assets are installed for a tool during sync.
5
+ */
6
+ export default function SyncNoAssets({ bootstrapHint, tool }) {
7
+ return (_jsxs(_Fragment, { children: [_jsxs(Text, { dimColor: true, children: ["No assets installed for ", tool, ". Nothing to sync."] }), bootstrapHint && _jsx(Text, { color: 'yellow', children: bootstrapHint })] }));
8
+ }
9
+ //# sourceMappingURL=SyncNoAssets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncNoAssets.js","sourceRoot":"","sources":["../../src/components/SyncNoAssets.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAS3B;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAAC,EAAE,aAAa,EAAE,IAAI,EAAqB;IAC7E,OAAO,CACL,8BACE,MAAC,IAAI,IAAC,QAAQ,+CAA0B,IAAI,0BAA0B,EACrE,aAAa,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,aAAa,GAAQ,IAC5D,CACJ,CAAC;AACJ,CAAC"}
@@ -1,7 +1,8 @@
1
1
  export { default as AssetDetail } from './AssetDetail.js';
2
2
  export { default as AssetTable } from './AssetTable.js';
3
- export { default as BrowseExpandedBundle } from './BrowseExpandedBundle.js';
4
- export { default as BrowseExpandedRow } from './BrowseExpandedRow.js';
3
+ export { default as AssetVersionLine } from './AssetVersionLine.js';
4
+ export { default as BrowseExpandedBundle, type BundleDeps, bundleExpandedLines, resolveBundleDependencies, } from './BrowseExpandedBundle.js';
5
+ export { default as BrowseExpandedRow, computeBrowseExpandedLines } from './BrowseExpandedRow.js';
5
6
  export { default as BrowseList } from './BrowseList.js';
6
7
  export { default as BundleDetail } from './BundleDetail.js';
7
8
  export { default as DependencyTree } from './DependencyTree.js';
@@ -10,11 +11,24 @@ export { default as DiffView, type FileDiffEntry } from './DiffView.js';
10
11
  export { default as DryRunBanner } from './DryRunBanner.js';
11
12
  export { default as Field } from './Field.js';
12
13
  export { default as FilterBar } from './FilterBar.js';
14
+ export { default as FrozenSkippedHint } from './FrozenSkippedHint.js';
13
15
  export { ASCII_ART, GRADIENT, default as Header } from './Header.js';
14
16
  export { default as HelpBar } from './HelpBar.js';
17
+ export { default as InitSuccess } from './InitSuccess.js';
15
18
  export { default as InstallConfirmBar } from './InstallConfirmBar.js';
16
19
  export { type InstalledAssetResult, default as InstallSummary } from './InstallSummary.js';
20
+ export { default as Link } from './Link.js';
21
+ export { default as ListActionBar } from './ListActionBar.js';
22
+ export { default as ListBrowseList } from './ListBrowseList.js';
23
+ export { computeExpandedLines, LIST_EXPANDED_BASE_LINES, default as ListExpandedRow } from './ListExpandedRow.js';
24
+ export { default as ListHelpBar } from './ListHelpBar.js';
25
+ export { default as OrphanListItem } from './OrphanListItem.js';
26
+ export { default as PromptField } from './PromptField.js';
17
27
  export { default as SectionDivider } from './SectionDivider.js';
28
+ export { default as SkippedAssetSection } from './SkippedAssetSection.js';
18
29
  export { default as Spinner } from './Spinner.js';
19
30
  export { CheckIcon, FileStatusIcon } from './StatusBadge.js';
31
+ export { default as SyncAllInSync } from './SyncAllInSync.js';
32
+ export { default as SyncDriftedList } from './SyncDriftedList.js';
33
+ export { default as SyncNoAssets } from './SyncNoAssets.js';
20
34
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAC5E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,oBAAoB,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EACL,OAAO,IAAI,oBAAoB,EAC/B,KAAK,UAAU,EACf,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAClG,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,KAAK,eAAe,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAAE,KAAK,oBAAoB,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC"}