claude-permissions-manager 1.4.62 → 1.4.64
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.
- package/README.md +1 -0
- package/dist/tui/screens/Audit.d.ts.map +1 -1
- package/dist/tui/screens/Audit.js +15 -14
- package/dist/tui/screens/Audit.js.map +1 -1
- package/dist/tui/screens/ProjectList.d.ts.map +1 -1
- package/dist/tui/screens/ProjectList.js +62 -16
- package/dist/tui/screens/ProjectList.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -236,6 +236,7 @@ Run `cpm` (or `cpm ui`) for the interactive terminal UI:
|
|
|
236
236
|
|
|
237
237
|
- `↑↓` / `j`/`k` — navigate projects
|
|
238
238
|
- `Enter` — view project details
|
|
239
|
+
- `/` — filter projects by path (type to narrow, `Esc` to clear)
|
|
239
240
|
- `a` — audit view (security issues)
|
|
240
241
|
- `d` — diff two projects
|
|
241
242
|
- `q` / `Ctrl+C` — quit
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Audit.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/Audit.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA4B,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAU/F,UAAU,UAAU;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"Audit.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/Audit.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAA4B,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAU/F,UAAU,UAAU;IAClB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,KAAK,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,UAAU,2CAgHxE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from "react";
|
|
2
|
+
import { useState, useMemo } from "react";
|
|
3
3
|
import { Box, Text, useInput, useStdout } from "ink";
|
|
4
4
|
import { Header } from "../components/Header.js";
|
|
5
5
|
import { SeverityBadge } from "../components/Badge.js";
|
|
@@ -11,20 +11,21 @@ export function Audit({ scanResult, onBack, onSelectProject }) {
|
|
|
11
11
|
const visibleRows = Math.max(5, termHeight - 12);
|
|
12
12
|
const [cursor, setCursor] = useState(0);
|
|
13
13
|
const [scrollOffset, setScrollOffset] = useState(0);
|
|
14
|
-
// Collect all warnings grouped by severity
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
for (const
|
|
23
|
-
|
|
14
|
+
// Collect all warnings grouped by severity, then flatten in severity order
|
|
15
|
+
const items = useMemo(() => {
|
|
16
|
+
const byseverity = {
|
|
17
|
+
critical: [],
|
|
18
|
+
high: [],
|
|
19
|
+
medium: [],
|
|
20
|
+
low: [],
|
|
21
|
+
};
|
|
22
|
+
for (const project of scanResult.projects) {
|
|
23
|
+
for (const w of project.effectivePermissions.warnings) {
|
|
24
|
+
byseverity[w.severity].push({ project, warning: w });
|
|
25
|
+
}
|
|
24
26
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
const items = SEVERITY_ORDER.flatMap((s) => byseverity[s]);
|
|
27
|
+
return SEVERITY_ORDER.flatMap((s) => byseverity[s]);
|
|
28
|
+
}, [scanResult.projects]);
|
|
28
29
|
useInput((input, key) => {
|
|
29
30
|
if (key.escape || input === "q" || key.leftArrow) {
|
|
30
31
|
onBack();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Audit.js","sourceRoot":"","sources":["../../../src/tui/screens/Audit.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Audit.js","sourceRoot":"","sources":["../../../src/tui/screens/Audit.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectList.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/ProjectList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAYrF,UAAU,gBAAgB;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,eAAe,EACf,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ProjectList.d.ts","sourceRoot":"","sources":["../../../src/tui/screens/ProjectList.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAC;AAYrF,UAAU,gBAAgB;IACxB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC;IAClD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,eAAe,EACf,OAAO,EACP,MAAM,EACN,MAAM,GACP,EAAE,gBAAgB,2CAoOlB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import { useState } from "react";
|
|
2
|
+
import { useState, useMemo } from "react";
|
|
3
3
|
import { Box, Text, useInput, useStdout } from "ink";
|
|
4
4
|
import { Header } from "../components/Header.js";
|
|
5
5
|
import { collapseHome } from "../../utils/paths.js";
|
|
@@ -14,29 +14,65 @@ const MODE_COLORS = {
|
|
|
14
14
|
export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQuit, }) {
|
|
15
15
|
const { stdout } = useStdout();
|
|
16
16
|
const termHeight = stdout?.rows ?? 24;
|
|
17
|
-
const visibleRows = Math.max(5, termHeight - 12);
|
|
18
17
|
const [cursor, setCursor] = useState(0);
|
|
19
18
|
const [scrollOffset, setScrollOffset] = useState(0);
|
|
19
|
+
const [filterMode, setFilterMode] = useState(false);
|
|
20
|
+
const [filter, setFilter] = useState("");
|
|
20
21
|
const { projects } = scanResult;
|
|
21
|
-
const
|
|
22
|
-
|
|
22
|
+
const filteredProjects = useMemo(() => {
|
|
23
|
+
if (!filter)
|
|
24
|
+
return projects;
|
|
25
|
+
const lower = filter.toLowerCase();
|
|
26
|
+
return projects.filter((p) => collapseHome(p.rootPath).toLowerCase().includes(lower));
|
|
27
|
+
}, [projects, filter]);
|
|
28
|
+
// Reserve extra row for filter bar when active
|
|
29
|
+
const visibleRows = Math.max(5, termHeight - (filterMode ? 13 : 12));
|
|
30
|
+
const totalWarnings = useMemo(() => projects.reduce((sum, p) => sum + p.effectivePermissions.warnings.length, 0), [projects]);
|
|
31
|
+
// Shared up/down/enter navigation — used in both filter and normal mode
|
|
32
|
+
function handleNavigate(input, key) {
|
|
23
33
|
if (key.downArrow || input === "j") {
|
|
24
|
-
const next = Math.min(cursor + 1,
|
|
34
|
+
const next = Math.min(cursor + 1, filteredProjects.length - 1);
|
|
25
35
|
setCursor(next);
|
|
26
|
-
if (next >= scrollOffset + visibleRows)
|
|
36
|
+
if (next >= scrollOffset + visibleRows)
|
|
27
37
|
setScrollOffset(next - visibleRows + 1);
|
|
28
|
-
}
|
|
29
38
|
}
|
|
30
39
|
else if (key.upArrow || input === "k") {
|
|
31
40
|
const prev = Math.max(cursor - 1, 0);
|
|
32
41
|
setCursor(prev);
|
|
33
|
-
if (prev < scrollOffset)
|
|
42
|
+
if (prev < scrollOffset)
|
|
34
43
|
setScrollOffset(prev);
|
|
35
|
-
}
|
|
36
44
|
}
|
|
37
45
|
else if (key.return) {
|
|
38
|
-
if (
|
|
39
|
-
onSelectProject(
|
|
46
|
+
if (filteredProjects[cursor])
|
|
47
|
+
onSelectProject(filteredProjects[cursor]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
useInput((input, key) => {
|
|
51
|
+
if (filterMode) {
|
|
52
|
+
if (key.escape) {
|
|
53
|
+
setFilter("");
|
|
54
|
+
setFilterMode(false);
|
|
55
|
+
setCursor(0);
|
|
56
|
+
setScrollOffset(0);
|
|
57
|
+
}
|
|
58
|
+
else if (key.backspace || key.delete) {
|
|
59
|
+
setFilter((f) => f.slice(0, -1));
|
|
60
|
+
setCursor(0);
|
|
61
|
+
setScrollOffset(0);
|
|
62
|
+
}
|
|
63
|
+
else if (key.downArrow || input === "j" || key.upArrow || input === "k" || key.return) {
|
|
64
|
+
handleNavigate(input, key);
|
|
65
|
+
}
|
|
66
|
+
else if (input && !key.ctrl && !key.meta) {
|
|
67
|
+
setFilter((f) => f + input);
|
|
68
|
+
setCursor(0);
|
|
69
|
+
setScrollOffset(0);
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
// Normal (non-filter) mode
|
|
74
|
+
if (key.downArrow || input === "j" || key.upArrow || input === "k" || key.return) {
|
|
75
|
+
handleNavigate(input, key);
|
|
40
76
|
}
|
|
41
77
|
else if (input === "a") {
|
|
42
78
|
onAudit();
|
|
@@ -44,12 +80,20 @@ export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQu
|
|
|
44
80
|
else if (input === "d") {
|
|
45
81
|
onDiff();
|
|
46
82
|
}
|
|
83
|
+
else if (input === "/") {
|
|
84
|
+
setFilterMode(true);
|
|
85
|
+
setFilter("");
|
|
86
|
+
setCursor(0);
|
|
87
|
+
setScrollOffset(0);
|
|
88
|
+
}
|
|
47
89
|
else if (input === "q" || (key.ctrl && input === "c")) {
|
|
48
90
|
onQuit();
|
|
49
91
|
}
|
|
50
92
|
});
|
|
51
|
-
const visibleProjects =
|
|
52
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { title: "Claude Permissions Manager", subtitle:
|
|
93
|
+
const visibleProjects = filteredProjects.slice(scrollOffset, scrollOffset + visibleRows);
|
|
94
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { title: "Claude Permissions Manager", subtitle: filter
|
|
95
|
+
? `${filteredProjects.length} of ${projects.length} project(s) • ${totalWarnings} warning(s) • root: ${collapseHome(scanResult.scanRoot)}`
|
|
96
|
+
: `Found ${projects.length} project(s) • ${totalWarnings} warning(s) • root: ${collapseHome(scanResult.scanRoot)}` }), filterMode && (_jsxs(Box, { marginBottom: 0, children: [_jsx(Text, { color: "cyan", bold: true, children: "Filter: " }), _jsx(Text, { children: filter }), _jsx(Text, { color: "cyan", children: "\u2588" }), _jsx(Text, { color: "gray", children: " (Esc to clear)" })] })), _jsx(Box, { marginBottom: 0, children: _jsxs(Text, { color: "gray", bold: true, children: [" ", "Project".padEnd(38), "Mode".padEnd(23), "Allow".padEnd(7), "Deny".padEnd(6), "Ask".padEnd(5), "⚠"] }) }), filteredProjects.length === 0 && (_jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "gray", children: ["No projects match \"", filter, "\""] }) })), visibleProjects.map((project, i) => {
|
|
53
97
|
const idx = scrollOffset + i;
|
|
54
98
|
const isSelected = idx === cursor;
|
|
55
99
|
const perms = project.effectivePermissions;
|
|
@@ -58,8 +102,10 @@ export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQu
|
|
|
58
102
|
const path = collapseHome(project.rootPath);
|
|
59
103
|
const shortPath = path.length > 37 ? "…" + path.slice(path.length - 36) : path;
|
|
60
104
|
return (_jsxs(Box, { children: [_jsxs(Text, { color: isSelected ? "black" : undefined, backgroundColor: isSelected ? "cyan" : undefined, children: [isSelected ? "▶ " : " ", shortPath.padEnd(38)] }), _jsx(Text, { color: isSelected ? "black" : undefined, backgroundColor: isSelected ? "cyan" : undefined, children: " " }), _jsx(Text, { color: isSelected ? "black" : (MODE_COLORS[perms.defaultMode] ?? "white"), backgroundColor: isSelected ? "cyan" : undefined, bold: !isSelected && perms.defaultMode === "bypassPermissions", children: ("[" + perms.defaultMode + "]").padEnd(19) }), _jsxs(Text, { color: isSelected ? "black" : undefined, backgroundColor: isSelected ? "cyan" : undefined, children: [" ", _jsx(Text, { color: isSelected ? "black" : "green", children: String(perms.allow.length).padEnd(5) }), " ", _jsx(Text, { color: perms.deny.length > 0 ? (isSelected ? "black" : "red") : "gray", children: String(perms.deny.length).padEnd(4) }), " ", _jsx(Text, { color: perms.ask.length > 0 ? (isSelected ? "black" : "yellow") : "gray", children: String(perms.ask.length).padEnd(3) }), " ", hasCritical ? (_jsxs(Text, { color: "red", bold: true, children: ["\uD83D\uDEA8 ", perms.warnings.length] })) : hasWarnings ? (_jsxs(Text, { color: "yellow", children: ["\u26A0 ", perms.warnings.length] })) : (_jsx(Text, { color: "gray", children: "-" })), perms.isBypassDisabled && (_jsx(Text, { color: "green", children: " [lock]" }))] })] }, project.rootPath));
|
|
61
|
-
}),
|
|
62
|
-
? `↓ ${
|
|
63
|
-
: ""] })), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [scanResult.global.user?.exists && (_jsxs(Text, { color: "gray", dimColor: true, children: ["User settings: ", collapseHome(scanResult.global.user.path)] })), scanResult.global.managed?.exists && (_jsxs(Text, { color: "yellow", dimColor: true, children: ["Managed settings: ", collapseHome(scanResult.global.managed.path)] })), scanResult.errors.length > 0 && (_jsxs(Text, { color: "red", dimColor: true, children: [scanResult.errors.length, " scan error(s)"] }))] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children:
|
|
105
|
+
}), filteredProjects.length > visibleRows && (_jsxs(Text, { color: "gray", children: [" ", scrollOffset > 0 ? "↑ " : " ", scrollOffset + visibleRows < filteredProjects.length
|
|
106
|
+
? `↓ ${filteredProjects.length - scrollOffset - visibleRows} more`
|
|
107
|
+
: ""] })), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [scanResult.global.user?.exists && (_jsxs(Text, { color: "gray", dimColor: true, children: ["User settings: ", collapseHome(scanResult.global.user.path)] })), scanResult.global.managed?.exists && (_jsxs(Text, { color: "yellow", dimColor: true, children: ["Managed settings: ", collapseHome(scanResult.global.managed.path)] })), scanResult.errors.length > 0 && (_jsxs(Text, { color: "red", dimColor: true, children: [scanResult.errors.length, " scan error(s)"] }))] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "gray", children: filterMode
|
|
108
|
+
? "Type to filter ↑↓/jk navigate Enter: details Esc: clear filter"
|
|
109
|
+
: "↑↓/jk navigate Enter: details /: filter a: audit d: diff q: quit" }) })] }));
|
|
64
110
|
}
|
|
65
111
|
//# sourceMappingURL=ProjectList.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectList.js","sourceRoot":"","sources":["../../../src/tui/screens/ProjectList.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectList.js","sourceRoot":"","sources":["../../../src/tui/screens/ProjectList.tsx"],"names":[],"mappings":"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"}
|