@tasszz2k/agentlens 0.3.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 (79) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +402 -0
  3. package/dist/ai.d.ts +5 -0
  4. package/dist/ai.d.ts.map +1 -0
  5. package/dist/ai.js +56 -0
  6. package/dist/ai.js.map +1 -0
  7. package/dist/cli.d.ts +3 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +313 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/config.d.ts +29 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +193 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/cost.d.ts +5 -0
  16. package/dist/cost.d.ts.map +1 -0
  17. package/dist/cost.js +362 -0
  18. package/dist/cost.js.map +1 -0
  19. package/dist/parse.d.ts +26 -0
  20. package/dist/parse.d.ts.map +1 -0
  21. package/dist/parse.js +391 -0
  22. package/dist/parse.js.map +1 -0
  23. package/dist/render.d.ts +8 -0
  24. package/dist/render.d.ts.map +1 -0
  25. package/dist/render.js +346 -0
  26. package/dist/render.js.map +1 -0
  27. package/dist/scan.d.ts +23 -0
  28. package/dist/scan.d.ts.map +1 -0
  29. package/dist/scan.js +457 -0
  30. package/dist/scan.js.map +1 -0
  31. package/dist/symlink.d.ts +5 -0
  32. package/dist/symlink.d.ts.map +1 -0
  33. package/dist/symlink.js +56 -0
  34. package/dist/symlink.js.map +1 -0
  35. package/dist/troubleshoot.d.ts +4 -0
  36. package/dist/troubleshoot.d.ts.map +1 -0
  37. package/dist/troubleshoot.js +193 -0
  38. package/dist/troubleshoot.js.map +1 -0
  39. package/dist/types.d.ts +103 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/dist/ui/App.d.ts +16 -0
  44. package/dist/ui/App.d.ts.map +1 -0
  45. package/dist/ui/App.js +452 -0
  46. package/dist/ui/App.js.map +1 -0
  47. package/dist/ui/CommandBar.d.ts +8 -0
  48. package/dist/ui/CommandBar.d.ts.map +1 -0
  49. package/dist/ui/CommandBar.js +77 -0
  50. package/dist/ui/CommandBar.js.map +1 -0
  51. package/dist/ui/CostView.d.ts +14 -0
  52. package/dist/ui/CostView.d.ts.map +1 -0
  53. package/dist/ui/CostView.js +200 -0
  54. package/dist/ui/CostView.js.map +1 -0
  55. package/dist/ui/DetailPanel.d.ts +12 -0
  56. package/dist/ui/DetailPanel.d.ts.map +1 -0
  57. package/dist/ui/DetailPanel.js +224 -0
  58. package/dist/ui/DetailPanel.js.map +1 -0
  59. package/dist/ui/HelpBar.d.ts +7 -0
  60. package/dist/ui/HelpBar.d.ts.map +1 -0
  61. package/dist/ui/HelpBar.js +51 -0
  62. package/dist/ui/HelpBar.js.map +1 -0
  63. package/dist/ui/SearchBar.d.ts +9 -0
  64. package/dist/ui/SearchBar.d.ts.map +1 -0
  65. package/dist/ui/SearchBar.js +46 -0
  66. package/dist/ui/SearchBar.js.map +1 -0
  67. package/dist/ui/SettingsView.d.ts +16 -0
  68. package/dist/ui/SettingsView.d.ts.map +1 -0
  69. package/dist/ui/SettingsView.js +155 -0
  70. package/dist/ui/SettingsView.js.map +1 -0
  71. package/dist/ui/TreeView.d.ts +26 -0
  72. package/dist/ui/TreeView.d.ts.map +1 -0
  73. package/dist/ui/TreeView.js +240 -0
  74. package/dist/ui/TreeView.js.map +1 -0
  75. package/dist/ui/theme.d.ts +30 -0
  76. package/dist/ui/theme.d.ts.map +1 -0
  77. package/dist/ui/theme.js +31 -0
  78. package/dist/ui/theme.js.map +1 -0
  79. package/package.json +55 -0
package/dist/ui/App.js ADDED
@@ -0,0 +1,452 @@
1
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useState, useMemo, useCallback, useEffect } from 'react';
3
+ import { Box, Text, useApp } from 'ink';
4
+ import TreeView from './TreeView.js';
5
+ import SearchBar from './SearchBar.js';
6
+ import DetailPanel from './DetailPanel.js';
7
+ import HelpBar from './HelpBar.js';
8
+ import SettingsView from './SettingsView.js';
9
+ import CommandBar from './CommandBar.js';
10
+ import CostView from './CostView.js';
11
+ import { theme } from './theme.js';
12
+ import { fetchAllCosts } from '../cost.js';
13
+ import { setToolEnabled, setCategoryEnabled, matchesDisabledCategory } from '../config.js';
14
+ import path from 'node:path';
15
+ import os from 'node:os';
16
+ function tildify(p) {
17
+ const home = os.homedir();
18
+ if (p === home || p.startsWith(home + path.sep)) {
19
+ return '~' + p.slice(home.length);
20
+ }
21
+ return p;
22
+ }
23
+ function truncateDesc(s, max = 50) {
24
+ if (s.length <= max)
25
+ return s;
26
+ return s.slice(0, max - 3) + '...';
27
+ }
28
+ function groupByTool(configs) {
29
+ const map = new Map();
30
+ for (const tc of configs) {
31
+ const list = map.get(tc.tool) ?? [];
32
+ list.push(tc);
33
+ map.set(tc.tool, list);
34
+ }
35
+ return map;
36
+ }
37
+ function filterByTools(result, disabledTools, disabledCats) {
38
+ if (disabledTools.size === 0 && disabledCats.size === 0)
39
+ return result;
40
+ const filter = (configs) => configs.filter((tc) => !disabledTools.has(tc.tool) && !matchesDisabledCategory(tc.label, disabledCats));
41
+ return {
42
+ ...result,
43
+ global: filter(result.global),
44
+ project: filter(result.project),
45
+ projects: result.projects?.map((p) => ({ ...p, configs: filter(p.configs) })),
46
+ };
47
+ }
48
+ export function buildTreeFromScan(result) {
49
+ const roots = [];
50
+ function makeScope(label, configs, tildifyPath) {
51
+ const byTool = groupByTool(configs);
52
+ const children = [];
53
+ for (const [, toolConfigs] of byTool) {
54
+ const toolNode = makeToolNode(toolConfigs, tildifyPath);
55
+ children.push(toolNode);
56
+ }
57
+ return {
58
+ id: `scope:${label}`,
59
+ label,
60
+ type: 'scope',
61
+ depth: 0,
62
+ expanded: true,
63
+ hasChildren: children.length > 0,
64
+ children,
65
+ };
66
+ }
67
+ function makeToolNode(configs, tildifyPath) {
68
+ const toolName = configs[0].tool;
69
+ const children = configs.map((tc) => makeCategoryNode(tc, tildifyPath));
70
+ return {
71
+ id: `tool:${toolName}:${configs[0].basePath}`,
72
+ label: toolName,
73
+ type: 'tool',
74
+ depth: 1,
75
+ expanded: true,
76
+ hasChildren: children.length > 0,
77
+ children,
78
+ data: configs[0],
79
+ };
80
+ }
81
+ function makeCategoryNode(tc, tildifyPath) {
82
+ const pathLabel = tildifyPath(tc.basePath) + (tc.category === 'Context' ? '' : path.sep);
83
+ const children = [];
84
+ if (tc.entries.length === 0 && !tc.exists) {
85
+ children.push({
86
+ id: `empty:${tc.basePath}`,
87
+ label: '(not found)',
88
+ type: 'entry',
89
+ depth: 3,
90
+ expanded: false,
91
+ hasChildren: false,
92
+ children: [],
93
+ });
94
+ }
95
+ else if (tc.entries.length === 0) {
96
+ children.push({
97
+ id: `empty:${tc.basePath}`,
98
+ label: '(empty)',
99
+ type: 'entry',
100
+ depth: 3,
101
+ expanded: false,
102
+ hasChildren: false,
103
+ children: [],
104
+ });
105
+ }
106
+ else {
107
+ for (const e of tc.entries) {
108
+ const isMcpOrHooks = tc.category === 'MCP Servers' || tc.category === 'Hooks';
109
+ const displayName = isMcpOrHooks
110
+ ? e.name
111
+ : e.path.endsWith('SKILL.md')
112
+ ? e.name + '/SKILL.md'
113
+ : path.basename(e.path);
114
+ const entryNode = {
115
+ id: `entry:${e.path}:${e.name}`,
116
+ label: displayName,
117
+ type: 'entry',
118
+ depth: 3,
119
+ expanded: false,
120
+ hasChildren: false,
121
+ children: [],
122
+ data: e,
123
+ pathLabel: e.path,
124
+ symlinkTarget: e.symlink?.resolved,
125
+ description: e.description ? truncateDesc(e.description) : undefined,
126
+ };
127
+ children.push(entryNode);
128
+ }
129
+ }
130
+ const labelExtra = tc.label ? ` ${tc.label}` : '';
131
+ return {
132
+ id: `cat:${tc.tool}:${tc.category}:${tc.basePath}`,
133
+ label: tc.category + labelExtra,
134
+ type: 'category',
135
+ depth: 2,
136
+ expanded: true,
137
+ hasChildren: children.length > 0,
138
+ children,
139
+ data: tc,
140
+ pathLabel,
141
+ };
142
+ }
143
+ function makeCurrentScope(sr) {
144
+ const all = [...sr.global, ...sr.project].filter((tc) => tc.entries.length > 0);
145
+ const byCategory = new Map();
146
+ for (const tc of all) {
147
+ const list = byCategory.get(tc.category) ?? [];
148
+ list.push(tc);
149
+ byCategory.set(tc.category, list);
150
+ }
151
+ const children = [];
152
+ for (const [category, configs] of byCategory) {
153
+ const byTool = groupByTool(configs);
154
+ const toolChildren = [];
155
+ for (const [, toolConfigs] of byTool) {
156
+ for (const tc of toolConfigs) {
157
+ const labelExtra = tc.label ? ` ${tc.label}` : '';
158
+ const toolLabel = `${tc.tool} ${labelExtra}`.trim();
159
+ const pathLabel = tildify(tc.basePath) + (tc.category === 'Context' ? '' : path.sep);
160
+ const entryChildren = [];
161
+ for (const e of tc.entries) {
162
+ const isMcpOrHooks = tc.category === 'MCP Servers' || tc.category === 'Hooks';
163
+ const displayName = isMcpOrHooks
164
+ ? e.name
165
+ : e.path.endsWith('SKILL.md')
166
+ ? e.name + '/SKILL.md'
167
+ : path.basename(e.path);
168
+ entryChildren.push({
169
+ id: `current:entry:${e.path}:${e.name}`,
170
+ label: displayName,
171
+ type: 'entry',
172
+ depth: 3,
173
+ expanded: false,
174
+ hasChildren: false,
175
+ children: [],
176
+ data: e,
177
+ pathLabel: e.path,
178
+ symlinkTarget: e.symlink?.resolved,
179
+ description: e.description ? truncateDesc(e.description) : undefined,
180
+ });
181
+ }
182
+ toolChildren.push({
183
+ id: `current:tool:${tc.tool}:${tc.basePath}`,
184
+ label: toolLabel,
185
+ type: 'tool',
186
+ depth: 2,
187
+ expanded: true,
188
+ hasChildren: entryChildren.length > 0,
189
+ children: entryChildren,
190
+ data: tc,
191
+ pathLabel,
192
+ });
193
+ }
194
+ }
195
+ children.push({
196
+ id: `current:cat:${category}`,
197
+ label: category,
198
+ type: 'category',
199
+ depth: 1,
200
+ expanded: true,
201
+ hasChildren: toolChildren.length > 0,
202
+ children: toolChildren,
203
+ });
204
+ }
205
+ return {
206
+ id: `scope:CURRENT ${tildify(sr.projectPath)}`,
207
+ label: `CURRENT ${tildify(sr.projectPath)}`,
208
+ type: 'scope',
209
+ depth: 0,
210
+ expanded: false,
211
+ hasChildren: children.length > 0,
212
+ children,
213
+ };
214
+ }
215
+ roots.push(makeCurrentScope(result));
216
+ roots.push(makeScope('GLOBAL', result.global, tildify));
217
+ roots.push(makeScope(`PROJECT ${tildify(result.projectPath)}`, result.project, tildify));
218
+ if (result.projects && result.projects.length > 0) {
219
+ for (const proj of result.projects) {
220
+ roots.push(makeScope(`PROJECT ${tildify(proj.path)}`, proj.configs, tildify));
221
+ }
222
+ }
223
+ return roots;
224
+ }
225
+ export function buildCrossRefIndex(result) {
226
+ const index = new Map();
227
+ function collect(configs, scope) {
228
+ for (const tc of configs) {
229
+ for (const entry of tc.entries) {
230
+ const key = entry.name;
231
+ const linked = {
232
+ tool: tc.tool,
233
+ scope,
234
+ category: tc.category,
235
+ path: entry.path,
236
+ symlinkTarget: entry.symlink?.resolved,
237
+ isSelf: false,
238
+ };
239
+ const list = index.get(key) ?? [];
240
+ list.push(linked);
241
+ index.set(key, list);
242
+ }
243
+ }
244
+ }
245
+ collect(result.global, 'global');
246
+ collect(result.project, tildify(result.projectPath));
247
+ if (result.projects) {
248
+ for (const proj of result.projects) {
249
+ collect(proj.configs, tildify(proj.path));
250
+ }
251
+ }
252
+ return index;
253
+ }
254
+ function filterTree(nodes, query) {
255
+ const q = query.toLowerCase().trim();
256
+ if (q.length === 0)
257
+ return nodes;
258
+ function matches(node) {
259
+ const labelMatch = node.label.toLowerCase().includes(q);
260
+ const pathMatch = node.pathLabel?.toLowerCase().includes(q);
261
+ const descMatch = node.description?.toLowerCase().includes(q);
262
+ return labelMatch || pathMatch || (descMatch ?? false);
263
+ }
264
+ function filterRecurse(ns) {
265
+ const out = [];
266
+ for (const n of ns) {
267
+ const childMatch = filterRecurse(n.children);
268
+ const selfMatch = matches(n);
269
+ if (selfMatch || childMatch.length > 0) {
270
+ out.push({
271
+ ...n,
272
+ children: childMatch.length > 0 ? childMatch : n.children,
273
+ expanded: true,
274
+ });
275
+ }
276
+ }
277
+ return out;
278
+ }
279
+ return filterRecurse(nodes);
280
+ }
281
+ export default function App({ scanResult, diagnostics, mode, initialDisabledTools, initialDisabledCategories, initialPage, configRoots, hasCursorToken, }) {
282
+ const { exit } = useApp();
283
+ const [view, setView] = useState('tree');
284
+ const [disabledTools, setDisabledTools] = useState(() => new Set(initialDisabledTools ?? []));
285
+ const [disabledCategories, setDisabledCategories] = useState(() => new Set(initialDisabledCategories ?? []));
286
+ const [selectedNode, setSelectedNode] = useState(null);
287
+ const [searchQuery, setSearchQuery] = useState('');
288
+ const [searchActive, setSearchActive] = useState(false);
289
+ const [treeCursor, setTreeCursor] = useState(0);
290
+ const [treeScrollOffset, setTreeScrollOffset] = useState(0);
291
+ const [focusNodeId, setFocusNodeId] = useState();
292
+ const [expandedOverride, setExpandedOverride] = useState(() => new Map());
293
+ const [showHelp, setShowHelp] = useState(true);
294
+ const [terminalRows, setTerminalRows] = useState(process.stdout?.rows ?? 24);
295
+ const [terminalCols, setTerminalCols] = useState(process.stdout?.columns ?? 80);
296
+ const [page, setPage] = useState(initialPage ?? 'scan');
297
+ const [commandBarActive, setCommandBarActive] = useState(false);
298
+ const [costReport, setCostReport] = useState(null);
299
+ const [costLoading, setCostLoading] = useState(false);
300
+ useEffect(() => {
301
+ const onResize = () => {
302
+ setTerminalRows(process.stdout?.rows ?? 24);
303
+ setTerminalCols(process.stdout?.columns ?? 80);
304
+ };
305
+ process.stdout?.on('resize', onResize);
306
+ return () => {
307
+ process.stdout?.off('resize', onResize);
308
+ };
309
+ }, []);
310
+ const effectiveScanResult = useMemo(() => filterByTools(scanResult, disabledTools, disabledCategories), [scanResult, disabledTools, disabledCategories]);
311
+ const treeNodes = useMemo(() => buildTreeFromScan(effectiveScanResult), [effectiveScanResult]);
312
+ const crossRef = useMemo(() => buildCrossRefIndex(effectiveScanResult), [effectiveScanResult]);
313
+ const filteredNodes = useMemo(() => filterTree(treeNodes, searchQuery), [treeNodes, searchQuery]);
314
+ const findNodeByPath = useCallback((entryPath) => {
315
+ function search(nodes) {
316
+ for (const n of nodes) {
317
+ const d = n.data;
318
+ if (d && 'path' in d && d.path === entryPath)
319
+ return n;
320
+ const found = search(n.children);
321
+ if (found)
322
+ return found;
323
+ }
324
+ return null;
325
+ }
326
+ return search(treeNodes);
327
+ }, [treeNodes]);
328
+ const handleSelect = useCallback((node) => {
329
+ setSelectedNode(node);
330
+ setView('detail');
331
+ }, []);
332
+ const handleNavigateToEntry = useCallback((entryPath) => {
333
+ const target = findNodeByPath(entryPath);
334
+ if (target) {
335
+ setSelectedNode(target);
336
+ }
337
+ }, [findNodeByPath]);
338
+ const handleSearchActivate = useCallback(() => {
339
+ setSearchActive(true);
340
+ }, []);
341
+ const handleSearchClose = useCallback((clearQuery = false) => {
342
+ setSearchActive(false);
343
+ if (clearQuery)
344
+ setSearchQuery('');
345
+ }, []);
346
+ const handleSearchClear = useCallback(() => {
347
+ setSearchQuery('');
348
+ }, []);
349
+ const handleQuit = useCallback(() => {
350
+ exit();
351
+ }, [exit]);
352
+ const handleDetailClose = useCallback(() => {
353
+ if (selectedNode) {
354
+ setFocusNodeId(selectedNode.id);
355
+ }
356
+ setView('tree');
357
+ setSelectedNode(null);
358
+ }, [selectedNode]);
359
+ const handleToggleHelp = useCallback(() => {
360
+ setShowHelp((prev) => !prev);
361
+ }, []);
362
+ const handleOpenSettings = useCallback(() => {
363
+ setView('settings');
364
+ }, []);
365
+ const handleSettingsClose = useCallback(() => {
366
+ setView('tree');
367
+ }, []);
368
+ const handleFetchCosts = useCallback(async () => {
369
+ setCostLoading(true);
370
+ try {
371
+ const report = await fetchAllCosts();
372
+ setCostReport(report);
373
+ }
374
+ catch {
375
+ // best-effort
376
+ }
377
+ finally {
378
+ setCostLoading(false);
379
+ }
380
+ }, []);
381
+ useEffect(() => {
382
+ if (page === 'cost' && !costReport && !costLoading) {
383
+ handleFetchCosts();
384
+ }
385
+ }, [page]);
386
+ const handleCommandBarOpen = useCallback(() => {
387
+ setCommandBarActive(true);
388
+ }, []);
389
+ const handleCommandBarClose = useCallback(() => {
390
+ setCommandBarActive(false);
391
+ }, []);
392
+ const handleNavigatePage = useCallback((targetPage) => {
393
+ setCommandBarActive(false);
394
+ if (targetPage === 'scan' || targetPage === 'cost') {
395
+ setPage(targetPage);
396
+ if (targetPage === 'scan') {
397
+ setView('tree');
398
+ }
399
+ }
400
+ }, []);
401
+ const handleCostClose = useCallback(() => {
402
+ setPage('scan');
403
+ setView('tree');
404
+ }, []);
405
+ const handleToggleTool = useCallback((tool) => {
406
+ setDisabledTools((prev) => {
407
+ const next = new Set(prev);
408
+ if (next.has(tool)) {
409
+ next.delete(tool);
410
+ }
411
+ else {
412
+ next.add(tool);
413
+ }
414
+ setToolEnabled(tool, !next.has(tool)).catch(() => { });
415
+ return next;
416
+ });
417
+ }, []);
418
+ const handleToggleCategory = useCallback((category) => {
419
+ setDisabledCategories((prev) => {
420
+ const next = new Set(prev);
421
+ if (next.has(category)) {
422
+ next.delete(category);
423
+ }
424
+ else {
425
+ next.add(category);
426
+ }
427
+ setCategoryEnabled(category, !next.has(category)).catch(() => { });
428
+ return next;
429
+ });
430
+ }, []);
431
+ const searchBarVisible = (searchActive && view === 'tree') || searchQuery.length > 0;
432
+ const commandBarVisible = commandBarActive;
433
+ const helpBarRows = showHelp ? 2 : 0;
434
+ const commandBarRows = commandBarVisible ? 3 : 0;
435
+ const footerRows = (searchBarVisible ? 1 : 0) + commandBarRows + (diagnostics.length > 0 ? 1 : 0);
436
+ const contentHeight = Math.max(1, terminalRows - 2 - helpBarRows - footerRows);
437
+ return (_jsxs(Box, { flexDirection: "column", width: "100%", height: terminalRows, overflow: "hidden", children: [_jsxs(Box, { justifyContent: "space-between", width: terminalCols, children: [_jsxs(Text, { children: [theme.title('AGENTLENS'), theme.title(' > ' + page.charAt(0).toUpperCase() + page.slice(1))] }), _jsx(Text, { dimColor: true, children: '<?> help' })] }), showHelp && _jsx(HelpBar, { view: page === 'cost' ? 'cost' : view, width: terminalCols }), _jsx(Text, { dimColor: true, children: '─'.repeat(40) }), _jsxs(Box, { flexGrow: 1, flexDirection: "column", children: [page === 'scan' && (_jsxs(_Fragment, { children: [view === 'tree' && (_jsx(TreeView, { nodes: filteredNodes, searchQuery: searchQuery, onSelect: handleSelect, onQuit: handleQuit, onSearchActivate: handleSearchActivate, onSearchClear: handleSearchClear, onToggleHelp: handleToggleHelp, onOpenSettings: handleOpenSettings, onCommandBarOpen: handleCommandBarOpen, active: !searchActive && !commandBarActive, height: contentHeight, width: terminalCols, cursor: treeCursor, onCursorChange: setTreeCursor, scrollOffset: treeScrollOffset, onScrollOffsetChange: setTreeScrollOffset, expandedOverride: expandedOverride, onExpandedOverrideChange: setExpandedOverride, focusNodeId: focusNodeId })), view === 'settings' && (_jsx(SettingsView, { scanResult: scanResult, disabledTools: disabledTools, disabledCategories: disabledCategories, onToggleTool: handleToggleTool, onToggleCategory: handleToggleCategory, onClose: handleSettingsClose, height: contentHeight, width: terminalCols, configRoots: configRoots ?? [], hasCursorToken: hasCursorToken ?? false })), view === 'detail' && selectedNode && (_jsx(DetailPanel, { node: selectedNode, onClose: handleDetailClose, onToggleHelp: handleToggleHelp, onNavigateToEntry: handleNavigateToEntry, height: contentHeight, linkedEntries: (() => {
438
+ const entry = selectedNode.data && 'path' in selectedNode.data
439
+ ? selectedNode.data
440
+ : null;
441
+ if (!entry)
442
+ return undefined;
443
+ const all = crossRef.get(entry.name);
444
+ if (!all || all.length <= 1)
445
+ return undefined;
446
+ return all.map((le) => ({
447
+ ...le,
448
+ isSelf: le.path === entry.path,
449
+ }));
450
+ })() }))] })), page === 'cost' && (_jsx(CostView, { report: costReport, loading: costLoading, onClose: handleCostClose, onRefresh: handleFetchCosts, onCommandBarOpen: handleCommandBarOpen, onToggleHelp: handleToggleHelp, height: contentHeight, width: terminalCols }))] }), _jsx(SearchBar, { active: searchActive && view === 'tree', query: searchQuery, onQueryChange: setSearchQuery, onClose: (clear) => handleSearchClose(clear) }), _jsx(CommandBar, { active: commandBarActive, onNavigate: handleNavigatePage, onClose: handleCommandBarClose }), diagnostics.some((d) => d.severity === 'error' || d.severity === 'warn') && (_jsxs(Text, { children: [diagnostics.filter((d) => d.severity === 'error' || d.severity === 'warn').length, " issue", diagnostics.filter((d) => d.severity === 'error' || d.severity === 'warn').length === 1 ? '' : 's', " found (", diagnostics.filter((d) => d.severity === 'error').length, " error", diagnostics.filter((d) => d.severity === 'error').length === 1 ? '' : 's', ", ", diagnostics.filter((d) => d.severity === 'warn').length, " warning", diagnostics.filter((d) => d.severity === 'warn').length === 1 ? '' : 's', ")"] }))] }));
451
+ }
452
+ //# sourceMappingURL=App.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.js","sourceRoot":"","sources":["../../src/ui/App.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ interface CommandBarProps {
2
+ active: boolean;
3
+ onNavigate: (page: string) => void;
4
+ onClose: () => void;
5
+ }
6
+ export default function CommandBar({ active, onNavigate, onClose, }: CommandBarProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=CommandBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandBar.d.ts","sourceRoot":"","sources":["../../src/ui/CommandBar.tsx"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,MAAM,EACN,UAAU,EACV,OAAO,GACR,EAAE,eAAe,kDAoGjB"}
@@ -0,0 +1,77 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState, useEffect } from 'react';
3
+ import { Box, Text, useInput } from 'ink';
4
+ const PAGES = [
5
+ { id: 'scan', label: 'Scan', desc: 'Agent configuration map' },
6
+ { id: 'cost', label: 'Cost', desc: 'Usage & cost dashboard' },
7
+ ];
8
+ export default function CommandBar({ active, onNavigate, onClose, }) {
9
+ const [input, setInput] = useState('');
10
+ const [selectedIdx, setSelectedIdx] = useState(-1);
11
+ const [showCursor, setShowCursor] = useState(true);
12
+ useEffect(() => {
13
+ if (active) {
14
+ setInput('');
15
+ setSelectedIdx(-1);
16
+ }
17
+ }, [active]);
18
+ const filtered = input.length > 0
19
+ ? PAGES.filter((p) => p.id.startsWith(input.toLowerCase()) ||
20
+ p.label.toLowerCase().startsWith(input.toLowerCase()))
21
+ : [...PAGES];
22
+ useInput((keyInput, key) => {
23
+ if (!active)
24
+ return;
25
+ if (key.escape) {
26
+ onClose();
27
+ return;
28
+ }
29
+ if (key.downArrow || (key.ctrl && keyInput === 'n')) {
30
+ setSelectedIdx((prev) => Math.min(filtered.length - 1, prev + 1));
31
+ return;
32
+ }
33
+ if (key.upArrow || (key.ctrl && keyInput === 'p')) {
34
+ setSelectedIdx((prev) => Math.max(0, prev - 1));
35
+ return;
36
+ }
37
+ if (key.return) {
38
+ const target = selectedIdx >= 0 && selectedIdx < filtered.length
39
+ ? filtered[selectedIdx]
40
+ : filtered[0];
41
+ if (target) {
42
+ onNavigate(target.id);
43
+ setInput('');
44
+ }
45
+ return;
46
+ }
47
+ if (key.backspace || key.delete) {
48
+ if (input.length === 0) {
49
+ onClose();
50
+ }
51
+ else {
52
+ setInput(input.slice(0, -1));
53
+ setSelectedIdx(-1);
54
+ }
55
+ return;
56
+ }
57
+ if (keyInput.length > 0 && !key.ctrl && !key.meta) {
58
+ setInput((prev) => prev + keyInput);
59
+ setSelectedIdx(-1);
60
+ }
61
+ }, { isActive: active });
62
+ useEffect(() => {
63
+ if (!active)
64
+ return;
65
+ const id = setInterval(() => setShowCursor((s) => !s), 500);
66
+ return () => clearInterval(id);
67
+ }, [active]);
68
+ if (!active)
69
+ return null;
70
+ const suggestion = selectedIdx >= 0 && selectedIdx < filtered.length
71
+ ? filtered[selectedIdx].label.slice(input.length)
72
+ : filtered.length > 0
73
+ ? filtered[0].label.slice(input.length)
74
+ : '';
75
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { children: ": " }), _jsx(Text, { children: input }), _jsx(Text, { dimColor: true, children: suggestion }), _jsx(Text, { children: showCursor ? '_' : ' ' }), _jsx(Text, { dimColor: true, children: " (type or use up/down to select)" })] }), filtered.length > 0 && (_jsx(Box, { flexDirection: "column", children: filtered.map((p, i) => (_jsxs(Box, { children: [_jsx(Text, { children: " " }), _jsxs(Text, { color: i === selectedIdx ? 'cyan' : undefined, bold: i === selectedIdx, children: [i === selectedIdx ? '> ' : ' ', p.label] }), _jsxs(Text, { dimColor: true, children: [" ", p.desc] })] }, p.id))) }))] }));
76
+ }
77
+ //# sourceMappingURL=CommandBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandBar.js","sourceRoot":"","sources":["../../src/ui/CommandBar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { CostReport } from '../types.js';
2
+ interface CostViewProps {
3
+ report: CostReport | null;
4
+ loading: boolean;
5
+ onClose: () => void;
6
+ onRefresh: () => void;
7
+ onCommandBarOpen: () => void;
8
+ onToggleHelp: () => void;
9
+ height: number;
10
+ width: number;
11
+ }
12
+ export default function CostView({ report, loading, onClose, onRefresh, onCommandBarOpen, onToggleHelp, height, width, }: CostViewProps): import("react/jsx-runtime").JSX.Element;
13
+ export {};
14
+ //# sourceMappingURL=CostView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CostView.d.ts","sourceRoot":"","sources":["../../src/ui/CostView.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,UAAU,aAAa;IACrB,MAAM,EAAE,UAAU,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAkND,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,EAC/B,MAAM,EACN,OAAO,EACP,OAAO,EACP,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,MAAM,EACN,KAAK,GACN,EAAE,aAAa,2CA8Hf"}