claude-permissions-manager 1.4.66 → 1.4.68
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 +29 -1
- package/dist/tui/app.d.ts.map +1 -1
- package/dist/tui/app.js +8 -1
- package/dist/tui/app.js.map +1 -1
- package/dist/tui/screens/ProjectList.d.ts +2 -1
- package/dist/tui/screens/ProjectList.d.ts.map +1 -1
- package/dist/tui/screens/ProjectList.js +12 -5
- package/dist/tui/screens/ProjectList.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -23,6 +23,7 @@ cpm show # Show permissions for current project (cwd)
|
|
|
23
23
|
cpm show ~/my-project # Show detailed permissions for a specific project
|
|
24
24
|
cpm audit # Report risky permissions across all projects
|
|
25
25
|
cpm diff <path1> <path2> # Compare two projects side by side
|
|
26
|
+
cpm copy <source> <target> # Copy project-level permissions to another project
|
|
26
27
|
cpm export # Dump all permissions as JSON (stdout)
|
|
27
28
|
cpm export --format csv # Dump as CSV
|
|
28
29
|
cpm export --output out.json # Write to file
|
|
@@ -59,6 +60,32 @@ cpm reset --all --yes --project ~/my-project --scope project
|
|
|
59
60
|
cpm mode acceptEdits --project ~/my-project --scope project
|
|
60
61
|
```
|
|
61
62
|
|
|
63
|
+
### Copy permissions between projects
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# Copy project-level rules and mode from one project to another
|
|
67
|
+
cpm copy ~/template-project ~/new-project --yes
|
|
68
|
+
|
|
69
|
+
# Preview without writing
|
|
70
|
+
cpm copy ~/template-project ~/new-project --dry-run
|
|
71
|
+
|
|
72
|
+
# Copy into a project-scope (shared) settings file instead of local
|
|
73
|
+
cpm copy ~/template-project ~/new-project --scope project --yes
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
`cpm copy` reads allow/deny/ask rules and `defaultMode` from the **source project's `project` and `local` scope settings files only** (global user/managed rules are excluded — they already apply everywhere). It then merges those rules into the target's settings file, deduplicating any rules already present.
|
|
77
|
+
|
|
78
|
+
### Open settings in your editor
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
cpm edit # Open cwd local settings in $EDITOR
|
|
82
|
+
cpm edit --project ~/my-project # Open a specific project's local settings
|
|
83
|
+
cpm edit --scope project # Open the project-scope settings.json
|
|
84
|
+
cpm edit --scope project --project ~/p # Both options together
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Creates the file (empty `{}`) if it doesn't already exist, then opens it in `$VISUAL`, `$EDITOR`, or `vi` as a fallback.
|
|
88
|
+
|
|
62
89
|
### Scope options
|
|
63
90
|
|
|
64
91
|
| Scope | File | Applies to |
|
|
@@ -75,7 +102,7 @@ cpm mode acceptEdits --project ~/my-project --scope project
|
|
|
75
102
|
--json Output as JSON (list, show, audit, diff, export)
|
|
76
103
|
--no-global Skip user/managed global settings (list, show, audit, diff, export, ui)
|
|
77
104
|
--exit-code Exit 1 if issues found, 2 if critical issues (audit only — useful in CI)
|
|
78
|
-
--dry-run Preview what would be written without modifying files (allow, deny, ask, reset, mode, init)
|
|
105
|
+
--dry-run Preview what would be written without modifying files (allow, deny, ask, reset, mode, init, copy)
|
|
79
106
|
--format <fmt> Output format: json|csv (export only, default: json)
|
|
80
107
|
--output <file> Write output to file instead of stdout (export only)
|
|
81
108
|
```
|
|
@@ -237,6 +264,7 @@ Run `cpm` (or `cpm ui`) for the interactive terminal UI:
|
|
|
237
264
|
- `↑↓` / `j`/`k` — navigate projects
|
|
238
265
|
- `Enter` — view project details
|
|
239
266
|
- `/` — filter projects by path (type to narrow, `Esc` to clear)
|
|
267
|
+
- `r` — re-scan and refresh the project list (picks up changes made outside the TUI)
|
|
240
268
|
- `a` — audit view (security issues)
|
|
241
269
|
- `d` — diff two projects
|
|
242
270
|
- `q` / `Ctrl+C` — quit
|
package/dist/tui/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxD,UAAU,QAAQ;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxD,UAAU,QAAQ;IAChB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,wBAAgB,GAAG,CAAC,EAAE,WAAW,EAAE,EAAE,QAAQ,kDAwG5C"}
|
package/dist/tui/app.js
CHANGED
|
@@ -30,7 +30,14 @@ export function App({ scanOptions }) {
|
|
|
30
30
|
return (_jsx(Box, { children: _jsx(Spinner, { label: "Scanning for Claude projects..." }) }));
|
|
31
31
|
}
|
|
32
32
|
if (screen.name === "list") {
|
|
33
|
-
|
|
33
|
+
const handleListRefresh = async () => {
|
|
34
|
+
const id = ++refreshCancelRef.current;
|
|
35
|
+
const updated = await scan({ ...scanOptions, root: scanResult.scanRoot });
|
|
36
|
+
if (id !== refreshCancelRef.current)
|
|
37
|
+
return;
|
|
38
|
+
setScanResult(updated);
|
|
39
|
+
};
|
|
40
|
+
return (_jsx(ProjectList, { scanResult: scanResult, onSelectProject: (p) => setScreen({ name: "detail", project: p }), onAudit: () => setScreen({ name: "audit" }), onDiff: () => setScreen({ name: "diff" }), onQuit: () => exit(), onRefresh: handleListRefresh }));
|
|
34
41
|
}
|
|
35
42
|
if (screen.name === "detail") {
|
|
36
43
|
const refresh = async () => {
|
package/dist/tui/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAe5C,MAAM,UAAU,GAAG,CAAC,EAAE,WAAW,EAAY;IAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAoB,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAEnC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,WAAW,CAAC;aACd,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,aAAa,CAAC,MAAM,CAAC,CAAC;YACtB,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,EAAC,IAAI,iDAEf,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,IAC5B,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;QAC7C,OAAO,CACL,KAAC,GAAG,cACF,KAAC,OAAO,IAAC,KAAK,EAAC,iCAAiC,GAAG,GAC/C,CACP,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3B,OAAO,CACL,KAAC,WAAW,IACV,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EACjE,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAC3C,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EACzC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../src/tui/app.tsx"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,8 @@ interface ProjectListProps {
|
|
|
5
5
|
onAudit: () => void;
|
|
6
6
|
onDiff: () => void;
|
|
7
7
|
onQuit: () => void;
|
|
8
|
+
onRefresh: () => Promise<void>;
|
|
8
9
|
}
|
|
9
|
-
export declare function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQuit, }: ProjectListProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export declare function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQuit, onRefresh, }: ProjectListProps): import("react/jsx-runtime").JSX.Element;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=ProjectList.d.ts.map
|
|
@@ -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;
|
|
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;IACnB,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAChC;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,eAAe,EACf,OAAO,EACP,MAAM,EACN,MAAM,EACN,SAAS,GACV,EAAE,gBAAgB,2CA0OlB"}
|
|
@@ -11,13 +11,14 @@ const MODE_COLORS = {
|
|
|
11
11
|
dontAsk: "magenta",
|
|
12
12
|
bypassPermissions: "red",
|
|
13
13
|
};
|
|
14
|
-
export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQuit, }) {
|
|
14
|
+
export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQuit, onRefresh, }) {
|
|
15
15
|
const { stdout } = useStdout();
|
|
16
16
|
const termHeight = stdout?.rows ?? 24;
|
|
17
17
|
const [cursor, setCursor] = useState(0);
|
|
18
18
|
const [scrollOffset, setScrollOffset] = useState(0);
|
|
19
19
|
const [filterMode, setFilterMode] = useState(false);
|
|
20
20
|
const [filter, setFilter] = useState("");
|
|
21
|
+
const [isRefreshing, setIsRefreshing] = useState(false);
|
|
21
22
|
const { projects } = scanResult;
|
|
22
23
|
const filteredProjects = useMemo(() => {
|
|
23
24
|
if (!filter)
|
|
@@ -80,6 +81,10 @@ export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQu
|
|
|
80
81
|
else if (input === "d") {
|
|
81
82
|
onDiff();
|
|
82
83
|
}
|
|
84
|
+
else if (input === "r" && !isRefreshing) {
|
|
85
|
+
setIsRefreshing(true);
|
|
86
|
+
onRefresh().finally(() => setIsRefreshing(false));
|
|
87
|
+
}
|
|
83
88
|
else if (input === "/") {
|
|
84
89
|
setFilterMode(true);
|
|
85
90
|
setFilter("");
|
|
@@ -91,9 +96,11 @@ export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQu
|
|
|
91
96
|
}
|
|
92
97
|
});
|
|
93
98
|
const visibleProjects = filteredProjects.slice(scrollOffset, scrollOffset + visibleRows);
|
|
94
|
-
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { title: "Claude Permissions Manager", subtitle:
|
|
95
|
-
?
|
|
96
|
-
:
|
|
99
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { title: "Claude Permissions Manager", subtitle: isRefreshing
|
|
100
|
+
? "Refreshing…"
|
|
101
|
+
: filter
|
|
102
|
+
? `${filteredProjects.length} of ${projects.length} project(s) • ${totalWarnings} warning(s) • root: ${collapseHome(scanResult.scanRoot)}`
|
|
103
|
+
: `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) => {
|
|
97
104
|
const idx = scrollOffset + i;
|
|
98
105
|
const isSelected = idx === cursor;
|
|
99
106
|
const perms = project.effectivePermissions;
|
|
@@ -106,6 +113,6 @@ export function ProjectList({ scanResult, onSelectProject, onAudit, onDiff, onQu
|
|
|
106
113
|
? `↓ ${filteredProjects.length - scrollOffset - visibleRows} more`
|
|
107
114
|
: ""] })), _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
115
|
? "Type to filter ↑↓/jk navigate Enter: details Esc: clear filter"
|
|
109
|
-
: "↑↓/jk navigate Enter: details /: filter a: audit d: diff q: quit" }) })] }));
|
|
116
|
+
: "↑↓/jk navigate Enter: details /: filter a: audit d: diff r: refresh q: quit" }) })] }));
|
|
110
117
|
}
|
|
111
118
|
//# 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,OAAO,EAAE,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,KAAK,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,WAAW,GAAmC;IAClD,OAAO,EAAE,MAAM;IACf,WAAW,EAAE,MAAM;IACnB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,QAAQ;IACd,OAAO,EAAE,SAAS;IAClB,iBAAiB,EAAE,KAAK;CACzB,CAAC;
|
|
1
|
+
{"version":3,"file":"ProjectList.js","sourceRoot":"","sources":["../../../src/tui/screens/ProjectList.tsx"],"names":[],"mappings":"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"}
|