@detergent-software/atk 3.0.0-dev.8 → 3.0.0-dev.9

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 (87) hide show
  1. package/build/commands/audit.d.ts.map +1 -1
  2. package/build/commands/audit.js +2 -3
  3. package/build/commands/audit.js.map +1 -1
  4. package/build/commands/browse.d.ts.map +1 -1
  5. package/build/commands/browse.js +12 -2
  6. package/build/commands/browse.js.map +1 -1
  7. package/build/commands/diff.d.ts.map +1 -1
  8. package/build/commands/diff.js +2 -3
  9. package/build/commands/diff.js.map +1 -1
  10. package/build/commands/info.d.ts.map +1 -1
  11. package/build/commands/info.js +2 -15
  12. package/build/commands/info.js.map +1 -1
  13. package/build/commands/install.js +1 -1
  14. package/build/commands/install.js.map +1 -1
  15. package/build/commands/list.d.ts +2 -2
  16. package/build/commands/list.d.ts.map +1 -1
  17. package/build/commands/list.js +132 -38
  18. package/build/commands/list.js.map +1 -1
  19. package/build/commands/prune.d.ts.map +1 -1
  20. package/build/commands/prune.js +2 -7
  21. package/build/commands/prune.js.map +1 -1
  22. package/build/commands/sync.js +4 -4
  23. package/build/commands/sync.js.map +1 -1
  24. package/build/components/AssetTable.d.ts +4 -3
  25. package/build/components/AssetTable.d.ts.map +1 -1
  26. package/build/components/AssetTable.js +30 -40
  27. package/build/components/AssetTable.js.map +1 -1
  28. package/build/components/FilterBar.d.ts +10 -3
  29. package/build/components/FilterBar.d.ts.map +1 -1
  30. package/build/components/FilterBar.js +4 -4
  31. package/build/components/FilterBar.js.map +1 -1
  32. package/build/components/Link.d.ts +7 -0
  33. package/build/components/Link.d.ts.map +1 -0
  34. package/build/components/Link.js +6 -0
  35. package/build/components/Link.js.map +1 -0
  36. package/build/components/ListActionBar.d.ts +9 -0
  37. package/build/components/ListActionBar.d.ts.map +1 -0
  38. package/build/components/ListActionBar.js +30 -0
  39. package/build/components/ListActionBar.js.map +1 -0
  40. package/build/components/ListBrowseList.d.ts +25 -0
  41. package/build/components/ListBrowseList.d.ts.map +1 -0
  42. package/build/components/ListBrowseList.js +55 -0
  43. package/build/components/ListBrowseList.js.map +1 -0
  44. package/build/components/ListExpandedRow.d.ts +36 -0
  45. package/build/components/ListExpandedRow.d.ts.map +1 -0
  46. package/build/components/ListExpandedRow.js +46 -0
  47. package/build/components/ListExpandedRow.js.map +1 -0
  48. package/build/components/ListHelpBar.d.ts +19 -0
  49. package/build/components/ListHelpBar.d.ts.map +1 -0
  50. package/build/components/ListHelpBar.js +11 -0
  51. package/build/components/ListHelpBar.js.map +1 -0
  52. package/build/components/index.d.ts +5 -0
  53. package/build/components/index.d.ts.map +1 -1
  54. package/build/components/index.js +5 -0
  55. package/build/components/index.js.map +1 -1
  56. package/build/hooks/useListActions.d.ts +14 -0
  57. package/build/hooks/useListActions.d.ts.map +1 -0
  58. package/build/hooks/useListActions.js +151 -0
  59. package/build/hooks/useListActions.js.map +1 -0
  60. package/build/hooks/useListState.d.ts +147 -0
  61. package/build/hooks/useListState.d.ts.map +1 -0
  62. package/build/hooks/useListState.js +445 -0
  63. package/build/hooks/useListState.js.map +1 -0
  64. package/build/lib/format.d.ts +6 -0
  65. package/build/lib/format.d.ts.map +1 -0
  66. package/build/lib/format.js +18 -0
  67. package/build/lib/format.js.map +1 -0
  68. package/build/lib/github.d.ts +8 -0
  69. package/build/lib/github.d.ts.map +1 -1
  70. package/build/lib/github.js +9 -0
  71. package/build/lib/github.js.map +1 -1
  72. package/build/lib/installer.js +1 -1
  73. package/build/lib/installer.js.map +1 -1
  74. package/build/lib/lockfile.d.ts +13 -13
  75. package/build/lib/lockfile.d.ts.map +1 -1
  76. package/build/lib/lockfile.js +37 -39
  77. package/build/lib/lockfile.js.map +1 -1
  78. package/build/lib/schemas/lockfile.d.ts +2 -2
  79. package/build/lib/schemas/lockfile.js +1 -1
  80. package/build/lib/schemas/lockfile.js.map +1 -1
  81. package/build/lib/uninstaller.d.ts.map +1 -1
  82. package/build/lib/uninstaller.js +2 -5
  83. package/build/lib/uninstaller.js.map +1 -1
  84. package/build/lib/updater.d.ts.map +1 -1
  85. package/build/lib/updater.js +1 -4
  86. package/build/lib/updater.js.map +1 -1
  87. package/package.json +1 -1
@@ -1,5 +1,6 @@
1
- import { type AssetTypeFilter } from '../hooks/useBrowseState.js';
2
1
  interface FilterBarProps {
2
+ /** Abbreviated labels for narrow terminals (defaults to browse abbreviated labels) */
3
+ abbreviatedTabLabels?: Record<string, string>;
3
4
  /** Current filter text */
4
5
  filterText: string;
5
6
  /** Whether in filter input mode */
@@ -10,13 +11,19 @@ interface FilterBarProps {
10
11
  orgOnly?: boolean;
11
12
  /** Number of items matching current filters */
12
13
  resultCount: number;
14
+ /** Optional sort indicator text to display (e.g., "Sort: Name ↑") */
15
+ sortIndicator?: string;
13
16
  /** Terminal width for responsive layout */
14
17
  terminalWidth: number;
15
18
  /** Total number of items in registry */
16
19
  totalCount: number;
17
20
  /** Active type tab */
18
- typeFilter: AssetTypeFilter;
21
+ typeFilter: string;
22
+ /** Full labels for type tabs (defaults to browse TYPE_TAB_LABELS) */
23
+ typeTabLabels?: Record<string, string>;
24
+ /** Ordered list of type tab keys (defaults to browse TYPE_TABS) */
25
+ typeTabs?: readonly string[];
19
26
  }
20
- export default function FilterBar({ filterText, inputMode, org, orgOnly, resultCount, terminalWidth, totalCount, typeFilter, }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
27
+ export default function FilterBar({ abbreviatedTabLabels, filterText, inputMode, org, orgOnly, resultCount, sortIndicator, terminalWidth, totalCount, typeFilter, typeTabLabels, typeTabs, }: FilterBarProps): import("react/jsx-runtime").JSX.Element;
21
28
  export {};
22
29
  //# sourceMappingURL=FilterBar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,eAAe,EAA8B,MAAM,4BAA4B,CAAC;AAa9F,UAAU,cAAc;IACtB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAe,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,GACX,EAAE,cAAc,2CAkDhB"}
1
+ {"version":3,"file":"FilterBar.d.ts","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"AAeA,UAAU,cAAc;IACtB,sFAAsF;IACtF,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,mCAAmC;IACnC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC;IACjC,8BAA8B;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,mEAAmE;IACnE,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9B;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,oBAAqD,EACrD,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAe,EACf,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAyD,EACzD,QAAoB,GACrB,EAAE,cAAc,2CAwDhB"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { Box, Text } from 'ink';
3
3
  import { TYPE_TAB_LABELS, TYPE_TABS } from '../hooks/useBrowseState.js';
4
- const ABBREVIATED_TAB_LABELS = {
4
+ const DEFAULT_ABBREVIATED_TAB_LABELS = {
5
5
  agent: 'Agent',
6
6
  all: 'All',
7
7
  bundle: 'Bundle',
@@ -11,10 +11,10 @@ const ABBREVIATED_TAB_LABELS = {
11
11
  rule: 'Rule',
12
12
  skill: 'Skill',
13
13
  };
14
- export default function FilterBar({ filterText, inputMode, org, orgOnly = false, resultCount, terminalWidth, totalCount, typeFilter, }) {
14
+ export default function FilterBar({ abbreviatedTabLabels = DEFAULT_ABBREVIATED_TAB_LABELS, filterText, inputMode, org, orgOnly = false, resultCount, sortIndicator, terminalWidth, totalCount, typeFilter, typeTabLabels = TYPE_TAB_LABELS, typeTabs = TYPE_TABS, }) {
15
15
  const counterLabel = typeFilter === 'bundle' ? 'bundles' : typeFilter === 'all' ? 'items' : 'assets';
16
- return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsxs(Box, { children: [_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Filter: " }), filterText ? (_jsx(Text, { children: filterText })) : inputMode === 'filter' ? (_jsx(Text, { dimColor: true, children: "type to filter..." })) : (_jsx(Text, { dimColor: true, children: "press / to filter" })), inputMode === 'filter' && _jsx(Text, { color: 'cyan', children: "|" })] }), _jsx(Box, { flexGrow: 1 }), org && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Org: " }), _jsxs(Text, { color: 'cyan', children: ["@", org] }), _jsx(Text, { dimColor: true, children: " " }), _jsxs(Text, { bold: true, color: 'cyan', children: ["[", orgOnly ? 'org only' : 'all', "]"] }), _jsx(Text, { dimColor: true, children: ' ' })] })), _jsxs(Text, { dimColor: true, children: [resultCount, "/", totalCount, " ", counterLabel] })] }), _jsx(Box, { gap: 1, children: TYPE_TABS.map((tab) => {
17
- const label = terminalWidth < 80 ? ABBREVIATED_TAB_LABELS[tab] : TYPE_TAB_LABELS[tab];
16
+ return (_jsxs(Box, { borderColor: 'gray', borderStyle: 'round', flexDirection: 'column', children: [_jsxs(Box, { children: [_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Filter: " }), filterText ? (_jsx(Text, { children: filterText })) : inputMode === 'filter' ? (_jsx(Text, { dimColor: true, children: "type to filter..." })) : (_jsx(Text, { dimColor: true, children: "press / to filter" })), inputMode === 'filter' && _jsx(Text, { color: 'cyan', children: "|" })] }), _jsx(Box, { flexGrow: 1 }), sortIndicator && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: sortIndicator }), _jsx(Text, { dimColor: true, children: ' ' })] })), org && (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "Org: " }), _jsxs(Text, { color: 'cyan', children: ["@", org] }), _jsx(Text, { dimColor: true, children: " " }), _jsxs(Text, { bold: true, color: 'cyan', children: ["[", orgOnly ? 'org only' : 'all', "]"] }), _jsx(Text, { dimColor: true, children: ' ' })] })), _jsxs(Text, { dimColor: true, children: [resultCount, "/", totalCount, " ", counterLabel] })] }), _jsx(Box, { gap: 1, children: typeTabs.map((tab) => {
17
+ const label = terminalWidth < 80 ? abbreviatedTabLabels[tab] : typeTabLabels[tab];
18
18
  return (_jsxs(Text, { bold: tab === typeFilter, color: tab === typeFilter ? 'cyan' : undefined, dimColor: tab !== typeFilter, children: ["[", label, "]"] }, tab));
19
19
  }) })] }));
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FilterBar.js","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAwB,eAAe,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE9F,MAAM,sBAAsB,GAAoC;IAC9D,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;IACV,MAAM,EAAE,QAAQ;IAChB,IAAI,EAAE,MAAM;IACZ,YAAY,EAAE,KAAK;IACnB,iBAAiB,EAAE,KAAK;IACxB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAC;AAqBF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAChC,UAAU,EACV,SAAS,EACT,GAAG,EACH,OAAO,GAAG,KAAK,EACf,WAAW,EACX,aAAa,EACb,UAAU,EACV,UAAU,GACK;IACf,MAAM,YAAY,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;IAErG,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,EAAC,QAAQ,aAChE,MAAC,GAAG,eACF,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,+BAAgB,EAC7B,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,IAAI,cAAE,UAAU,GAAQ,CAC1B,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC3B,KAAC,IAAI,IAAC,QAAQ,wCAAyB,CACxC,CAAC,CAAC,CAAC,CACF,KAAC,IAAI,IAAC,QAAQ,wCAAyB,CACxC,EACA,SAAS,KAAK,QAAQ,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAS,IACjD,EACP,KAAC,GAAG,IAAC,QAAQ,EAAE,CAAC,GAAI,EACnB,GAAG,IAAI,CACN,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,QAAQ,4BAAa,EAC3B,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,GAAG,IAAQ,EAChC,KAAC,IAAI,IAAC,QAAQ,wBAAS,EACvB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,kBACnB,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,SACzB,EACP,KAAC,IAAI,IAAC,QAAQ,kBAAE,IAAI,GAAQ,IACvB,CACR,EACD,MAAC,IAAI,IAAC,QAAQ,mBACX,WAAW,OAAG,UAAU,OAAG,YAAY,IACnC,IACH,EACN,KAAC,GAAG,IAAC,GAAG,EAAE,CAAC,YACR,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBACrB,MAAM,KAAK,GAAG,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBACtF,OAAO,CACL,MAAC,IAAI,IACH,IAAI,EAAE,GAAG,KAAK,UAAU,EACxB,KAAK,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC9C,QAAQ,EAAE,GAAG,KAAK,UAAU,kBAG1B,KAAK,UAFF,GAAG,CAGH,CACR,CAAC;gBACJ,CAAC,CAAC,GACE,IACF,CACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"FilterBar.js","sourceRoot":"","sources":["../../src/components/FilterBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ interface LinkProps {
2
+ children: string;
3
+ url: string;
4
+ }
5
+ export default function Link({ children, url }: LinkProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
7
+ //# sourceMappingURL=Link.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.d.ts","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":"AAEA,UAAU,SAAS;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,SAAS,2CAExD"}
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text } from 'ink';
3
+ export default function Link({ children, url }) {
4
+ return _jsx(Text, { children: `\x1b]8;;${url}\x07${children}\x1b]8;;\x07` });
5
+ }
6
+ //# sourceMappingURL=Link.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Link.js","sourceRoot":"","sources":["../../src/components/Link.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAO3B,MAAM,CAAC,OAAO,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAa;IACvD,OAAO,KAAC,IAAI,cAAE,WAAW,GAAG,OAAO,QAAQ,cAAc,GAAQ,CAAC;AACpE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { ActionResultMode, ConfirmingActionMode, ExecutingActionMode } from '../hooks/useListState.js';
2
+ type ListActionBarMode = ActionResultMode | ConfirmingActionMode | ExecutingActionMode;
3
+ interface ListActionBarProps {
4
+ /** Current action-related mode */
5
+ mode: ListActionBarMode;
6
+ }
7
+ export default function ListActionBar({ mode }: ListActionBarProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=ListActionBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListActionBar.d.ts","sourceRoot":"","sources":["../../src/components/ListActionBar.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAI5G,KAAK,iBAAiB,GAAG,gBAAgB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAEvF,UAAU,kBAAkB;IAC1B,kCAAkC;IAClC,IAAI,EAAE,iBAAiB,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,2CA8BjE"}
@@ -0,0 +1,30 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ import Spinner from './Spinner.js';
4
+ export default function ListActionBar({ mode }) {
5
+ switch (mode.kind) {
6
+ case 'action-result':
7
+ if (mode.success) {
8
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { color: 'green', children: ["\u2713 ", mode.message, ". Press any key to continue."] }) }));
9
+ }
10
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsxs(Text, { color: 'red', children: ["\u2715 ", mode.message, ". Press any key to continue."] }) }));
11
+ case 'confirming-action':
12
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsx(Text, { color: 'yellow', children: getConfirmationText(mode) }) }));
13
+ case 'executing-action':
14
+ return (_jsx(Box, { borderColor: 'gray', borderStyle: 'round', children: _jsx(Spinner, { message: mode.message }) }));
15
+ }
16
+ }
17
+ function getConfirmationText(mode) {
18
+ const { name } = mode.asset;
19
+ switch (mode.actionKind) {
20
+ case 'freeze-toggle':
21
+ return mode.asset.frozen ? `Thaw ${name}? [Y/N]` : `Freeze ${name}? [Y/N]`;
22
+ case 'pin-toggle':
23
+ return mode.asset.pinnedVersion ? `Unpin ${name}? [Y/N]` : `Pin ${name}? [Y/N]`;
24
+ case 'uninstall':
25
+ return `Uninstall ${name}? [Y/N]`;
26
+ case 'update':
27
+ return `Update ${name}? [Y/N]`;
28
+ }
29
+ }
30
+ //# sourceMappingURL=ListActionBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListActionBar.js","sourceRoot":"","sources":["../../src/components/ListActionBar.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAIhC,OAAO,OAAO,MAAM,cAAc,CAAC;AASnC,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,EAAE,IAAI,EAAsB;IAChE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,eAAe;YAClB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBACjB,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,KAAK,EAAC,OAAO,wBAAI,IAAI,CAAC,OAAO,oCAAoC,GACnE,CACP,CAAC;YACJ,CAAC;YACD,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,MAAC,IAAI,IAAC,KAAK,EAAC,KAAK,wBAAI,IAAI,CAAC,OAAO,oCAAoC,GACjE,CACP,CAAC;QAEJ,KAAK,mBAAmB;YACtB,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,YAAE,mBAAmB,CAAC,IAAI,CAAC,GAAQ,GACnD,CACP,CAAC;QAEJ,KAAK,kBAAkB;YACrB,OAAO,CACL,KAAC,GAAG,IAAC,WAAW,EAAC,MAAM,EAAC,WAAW,EAAC,OAAO,YACzC,KAAC,OAAO,IAAC,OAAO,EAAE,IAAI,CAAC,OAAO,GAAI,GAC9B,CACP,CAAC;IACN,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B;IACrD,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;IAE5B,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QACxB,KAAK,eAAe;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,UAAU,IAAI,SAAS,CAAC;QAC7E,KAAK,YAAY;YACf,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,SAAS,CAAC;QAClF,KAAK,WAAW;YACd,OAAO,aAAa,IAAI,SAAS,CAAC;QACpC,KAAK,QAAQ;YACX,OAAO,UAAU,IAAI,SAAS,CAAC;IACnC,CAAC;AACH,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ListTypeFilter } from '../hooks/useListState.js';
2
+ import type { InstalledAsset } from '../lib/schemas/lockfile.js';
3
+ interface ListBrowseListProps {
4
+ /** Index of the cursor in the items array */
5
+ cursorIndex: number;
6
+ /** Index of expanded item, or null */
7
+ expandedIndex: null | number;
8
+ /** Filtered and sorted items to display */
9
+ items: InstalledAsset[];
10
+ /** Map of asset key (type/name) to latest available version */
11
+ outdatedMap: Map<string, string>;
12
+ /** GitHub URL to the expanded asset's README, or null */
13
+ readmeUrl: null | string;
14
+ /** First visible item index */
15
+ scrollOffset: number;
16
+ /** Terminal width for responsive layout */
17
+ terminalWidth: number;
18
+ /** Active type filter tab */
19
+ typeFilter: ListTypeFilter;
20
+ /** Available height in rows for the list area */
21
+ viewportHeight: number;
22
+ }
23
+ export default function ListBrowseList({ cursorIndex, expandedIndex, items, outdatedMap, readmeUrl, scrollOffset, terminalWidth, typeFilter, viewportHeight, }: ListBrowseListProps): import("react/jsx-runtime").JSX.Element;
24
+ export {};
25
+ //# sourceMappingURL=ListBrowseList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ListBrowseList.d.ts","sourceRoot":"","sources":["../../src/components/ListBrowseList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAYjE,UAAU,mBAAmB;IAC3B,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,aAAa,EAAE,IAAI,GAAG,MAAM,CAAC;IAC7B,2CAA2C;IAC3C,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,+DAA+D;IAC/D,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yDAAyD;IACzD,SAAS,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,6BAA6B;IAC7B,UAAU,EAAE,cAAc,CAAC;IAC3B,iDAAiD;IACjD,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,WAAW,EACX,aAAa,EACb,KAAK,EACL,WAAW,EACX,SAAS,EACT,YAAY,EACZ,aAAa,EACb,UAAU,EACV,cAAc,GACf,EAAE,mBAAmB,2CA2JrB"}
@@ -0,0 +1,55 @@
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, 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
+ // Compute expanded row line height for the expanded item (if any)
24
+ const expandedAsset = expandedIndex !== null ? items[expandedIndex] : null;
25
+ const visibleItems = [];
26
+ // Start at 1 to account for the column header line
27
+ let usedLines = 1;
28
+ // Reserve a line for the "▲ more above" indicator when scrolled
29
+ if (scrollOffset > 0)
30
+ usedLines += 1;
31
+ for (let i = scrollOffset; i < items.length; i++) {
32
+ let expandedLines = 0;
33
+ if (i === expandedIndex && expandedAsset) {
34
+ expandedLines = computeExpandedLines(expandedAsset, readmeUrl);
35
+ }
36
+ const linesNeeded = 1 + expandedLines;
37
+ // Reserve a line for the "▼ more below" indicator when there are more items after this one
38
+ const limit = i < items.length - 1 ? viewportHeight - 1 : viewportHeight;
39
+ if (usedLines + linesNeeded > limit)
40
+ break;
41
+ visibleItems.push({ index: i, item: items[i] });
42
+ usedLines += linesNeeded;
43
+ }
44
+ const lastVisibleIndex = visibleItems.length > 0 ? visibleItems[visibleItems.length - 1].index : scrollOffset;
45
+ const belowCount = items.length - lastVisibleIndex - 1;
46
+ 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 }) => {
47
+ const isCursor = index === cursorIndex;
48
+ const isExpanded = index === expandedIndex;
49
+ const assetKey = `${item.type}/${item.name}`;
50
+ const latestVersion = outdatedMap.get(assetKey);
51
+ const isOutdated = latestVersion !== undefined;
52
+ 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 ? '📌' : '', item.frozen ? '🧊' : ''] }) }), _jsx(Box, { flexShrink: 0, width: cols.installDate, children: _jsx(Text, { dimColor: true, wrap: 'truncate', children: formatDate(item.installedAt) }) })] }), isExpanded && (_jsx(ListExpandedRow, { asset: item, latestVersion: latestVersion, readmeUrl: readmeUrl, terminalWidth: terminalWidth }))] }, assetKey));
53
+ }), belowCount > 0 && _jsxs(Text, { dimColor: true, children: [" \u25BC ", belowCount, " more below"] })] }));
54
+ }
55
+ //# 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,36 @@
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): 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
+ /** Latest available version from the registry, if known */
28
+ latestVersion: string | undefined;
29
+ /** GitHub URL to the asset's README, or null if unavailable */
30
+ readmeUrl: null | string;
31
+ /** Terminal width for responsive layout */
32
+ terminalWidth: number;
33
+ }
34
+ export default function ListExpandedRow({ asset, latestVersion, readmeUrl, terminalWidth, }: ListExpandedRowProps): import("react/jsx-runtime").JSX.Element;
35
+ export {};
36
+ //# 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,CAClC,KAAK,EAAE,cAAc,EACrB,SAAS,EAAE,IAAI,GAAG,MAAM,GACvB,MAAM,CAgBR;AAED;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C,UAAU,oBAAoB;IAC5B,8CAA8C;IAC9C,KAAK,EAAE,cAAc,CAAC;IACtB,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,aAAa,EACb,SAAS,EACT,aAAa,GACd,EAAE,oBAAoB,2CA+EtB"}
@@ -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) {
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 (asset.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, 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] })] })), asset.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"}
@@ -15,6 +15,11 @@ export { default as HelpBar } from './HelpBar.js';
15
15
  export { default as InitSuccess } from './InitSuccess.js';
16
16
  export { default as InstallConfirmBar } from './InstallConfirmBar.js';
17
17
  export { type InstalledAssetResult, default as InstallSummary } from './InstallSummary.js';
18
+ export { default as Link } from './Link.js';
19
+ export { default as ListActionBar } from './ListActionBar.js';
20
+ export { default as ListBrowseList } from './ListBrowseList.js';
21
+ export { computeExpandedLines, LIST_EXPANDED_BASE_LINES, default as ListExpandedRow } from './ListExpandedRow.js';
22
+ export { default as ListHelpBar } from './ListHelpBar.js';
18
23
  export { default as PromptField } from './PromptField.js';
19
24
  export { default as SectionDivider } from './SectionDivider.js';
20
25
  export { default as Spinner } from './Spinner.js';
@@ -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,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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,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,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,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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,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"}
@@ -15,6 +15,11 @@ export { default as HelpBar } from './HelpBar.js';
15
15
  export { default as InitSuccess } from './InitSuccess.js';
16
16
  export { default as InstallConfirmBar } from './InstallConfirmBar.js';
17
17
  export { default as InstallSummary } from './InstallSummary.js';
18
+ export { default as Link } from './Link.js';
19
+ export { default as ListActionBar } from './ListActionBar.js';
20
+ export { default as ListBrowseList } from './ListBrowseList.js';
21
+ export { computeExpandedLines, LIST_EXPANDED_BASE_LINES, default as ListExpandedRow } from './ListExpandedRow.js';
22
+ export { default as ListHelpBar } from './ListHelpBar.js';
18
23
  export { default as PromptField } from './PromptField.js';
19
24
  export { default as SectionDivider } from './SectionDivider.js';
20
25
  export { default as Spinner } from './Spinner.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","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,EAAwB,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAsB,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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAA6B,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC3F,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,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.js","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,EAAwB,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAsB,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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,EAA6B,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,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,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"}
@@ -0,0 +1,14 @@
1
+ import { type RefObject } from 'react';
2
+ import type { Adapter } from '../lib/schemas/adapter.js';
3
+ import type { ListAction, ListState } from './useListState.js';
4
+ /**
5
+ * Encapsulates the action execution side-effect for the list command.
6
+ *
7
+ * Handles freeze-toggle, pin-toggle, uninstall, and update actions,
8
+ * each following a lock-read-act-write-dispatch pattern.
9
+ */
10
+ export declare function useListActions(state: ListState, dispatch: React.Dispatch<ListAction>, projectDirRef: RefObject<string>, resolvedToolRef: RefObject<null | {
11
+ adapter: Adapter;
12
+ tool: string;
13
+ }>): void;
14
+ //# sourceMappingURL=useListActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useListActions.d.ts","sourceRoot":"","sources":["../../src/hooks/useListActions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAqB,MAAM,OAAO,CAAC;AAE1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAe/D;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EACpC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,EAChC,eAAe,EAAE,SAAS,CAAC,IAAI,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GACpE,IAAI,CAoJN"}