pi-shazam 0.13.0 → 0.13.2
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 +4 -1
- package/dist/core/audit-log.d.ts +31 -0
- package/dist/core/audit-log.d.ts.map +1 -0
- package/dist/core/audit-log.js +62 -0
- package/dist/core/audit-log.js.map +1 -0
- package/dist/core/encoding.js +6 -2
- package/dist/core/encoding.js.map +1 -1
- package/dist/core/formatters.d.ts +12 -0
- package/dist/core/formatters.d.ts.map +1 -0
- package/dist/core/formatters.js +90 -0
- package/dist/core/formatters.js.map +1 -0
- package/dist/core/git-hooks.js.map +1 -1
- package/dist/core/redact.d.ts +14 -0
- package/dist/core/redact.d.ts.map +1 -0
- package/dist/core/redact.js +27 -0
- package/dist/core/redact.js.map +1 -0
- package/dist/core/scanner.js +61 -56
- package/dist/core/scanner.js.map +1 -1
- package/dist/hooks/pre-edit.d.ts.map +1 -1
- package/dist/hooks/pre-edit.js +4 -2
- package/dist/hooks/pre-edit.js.map +1 -1
- package/dist/hooks/safety.d.ts.map +1 -1
- package/dist/hooks/safety.js +16 -3
- package/dist/hooks/safety.js.map +1 -1
- package/dist/hooks/shazam-guide.d.ts.map +1 -1
- package/dist/hooks/shazam-guide.js +3 -5
- package/dist/hooks/shazam-guide.js.map +1 -1
- package/dist/hooks/tool-logger.d.ts.map +1 -1
- package/dist/hooks/tool-logger.js +5 -38
- package/dist/hooks/tool-logger.js.map +1 -1
- package/dist/hooks/verify-state.js +2 -2
- package/dist/hooks/verify-state.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -9
- package/dist/index.js.map +1 -1
- package/dist/lsp/client.d.ts +1 -1
- package/dist/lsp/client.d.ts.map +1 -1
- package/dist/lsp/client.js +6 -3
- package/dist/lsp/client.js.map +1 -1
- package/dist/lsp/manager.d.ts +2 -1
- package/dist/lsp/manager.d.ts.map +1 -1
- package/dist/lsp/manager.js +87 -65
- package/dist/lsp/manager.js.map +1 -1
- package/dist/mcp/entry.js +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +20 -57
- package/dist/mcp/tools.js.map +1 -1
- package/dist/tools/_context.d.ts.map +1 -1
- package/dist/tools/_context.js.map +1 -1
- package/dist/tools/codesearch.js +37 -10
- package/dist/tools/codesearch.js.map +1 -1
- package/dist/tools/definitions.d.ts.map +1 -1
- package/dist/tools/definitions.js +33 -4
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/find_tests.js +1 -1
- package/dist/tools/find_tests.js.map +1 -1
- package/dist/tools/fix.d.ts.map +1 -1
- package/dist/tools/fix.js +8 -78
- package/dist/tools/fix.js.map +1 -1
- package/dist/tools/hover.d.ts.map +1 -1
- package/dist/tools/hover.js +9 -4
- package/dist/tools/hover.js.map +1 -1
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +1 -3
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/overview.d.ts +1 -1
- package/dist/tools/overview.d.ts.map +1 -1
- package/dist/tools/overview.js +10 -7
- package/dist/tools/overview.js.map +1 -1
- package/dist/tools/type_hierarchy.js +1 -1
- package/dist/tools/type_hierarchy.js.map +1 -1
- package/dist/tools/verify.d.ts +56 -0
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +39 -18
- package/dist/tools/verify.js.map +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ Compatible with any MCP-capable client. Same analysis engine, JSON-based tool in
|
|
|
91
91
|
| `issue-guard` | `tool_call` (bash) + `tool_result` | Detects `gh issue create`, blocks edits until `shazam_impact` runs |
|
|
92
92
|
| `agent-context-guard` | `tool_call` (agent) | Blocks agent spawn without structural context for review tasks |
|
|
93
93
|
|
|
94
|
-
**Auto-format support**: ruff (Python), prettier (JS/TS/JSON/MD), gofmt (Go), rustfmt (Rust), biome (JS/TS)
|
|
94
|
+
**Auto-format support**: ruff (Python), prettier (JS/TS/JSON/MD), eslint (JS/TS), gofmt (Go), rustfmt (Rust), biome (JS/TS)
|
|
95
95
|
|
|
96
96
|
Additional commands: `/shazam-setup`, `/shazam-doctor`, `/shazam-install-git-hooks`, `/shazam-remove-git-hooks`, `/shazam-pre-commit-verify`
|
|
97
97
|
|
|
@@ -186,6 +186,9 @@ pi-shazam (npm package)
|
|
|
186
186
|
├── baseline.ts In-memory session baseline
|
|
187
187
|
├── filter.ts Shared file filtering (source vs config/generated)
|
|
188
188
|
├── output.ts Standardized tool output formatting
|
|
189
|
+
├── redact.ts Shared secret redaction
|
|
190
|
+
├── formatters.ts Formatter/linter detection
|
|
191
|
+
├── audit-log.ts Audit log rotation
|
|
189
192
|
└── git-hooks.ts Git pre-commit hook management
|
|
190
193
|
```
|
|
191
194
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-shazam core/audit-log — Unified audit log rotation.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for audit log retention policy.
|
|
5
|
+
* Both mcp/tools.ts and hooks/tool-logger.ts delegate to rotateAuditLog().
|
|
6
|
+
*
|
|
7
|
+
* Policy:
|
|
8
|
+
* - Max 10 MB per log file before rotation
|
|
9
|
+
* - Keep up to 5 archived copies (shazam-calls.log.1 through .5)
|
|
10
|
+
* - Max 30 days age for any single log file
|
|
11
|
+
* - On rotation: cascade-rename .4→.5, .3→.4, …, .log→.log.1
|
|
12
|
+
* - On age: delete the entire log file (content older than 30 days is stale)
|
|
13
|
+
*/
|
|
14
|
+
/** Default directory for shazam audit logs. */
|
|
15
|
+
export declare const AUDIT_LOG_DIR: string;
|
|
16
|
+
/** Max log file size before rotation (10 MB). */
|
|
17
|
+
export declare const MAX_AUDIT_LOG_SIZE: number;
|
|
18
|
+
/** Max number of archived log copies to retain. */
|
|
19
|
+
export declare const MAX_AUDIT_LOG_FILES = 5;
|
|
20
|
+
/** Max age of a log file before it is rotated out (30 days in ms). */
|
|
21
|
+
export declare const MAX_AUDIT_LOG_AGE_MS: number;
|
|
22
|
+
/**
|
|
23
|
+
* Rotate the audit log at `logPath`.
|
|
24
|
+
*
|
|
25
|
+
* - If file size exceeds MAX_AUDIT_LOG_SIZE → cascade-rename archived copies
|
|
26
|
+
* (log.4→log.5, …, log→log.1) and let a new log file be created on next write.
|
|
27
|
+
* - If file age exceeds MAX_AUDIT_LOG_AGE_MS → delete the file (it will be
|
|
28
|
+
* recreated on next write with fresh content).
|
|
29
|
+
*/
|
|
30
|
+
export declare function rotateAuditLog(logPath: string): Promise<void>;
|
|
31
|
+
//# sourceMappingURL=audit-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../core/audit-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,+CAA+C;AAC/C,eAAO,MAAM,aAAa,QAA2C,CAAC;AAEtE,iDAAiD;AACjD,eAAO,MAAM,kBAAkB,QAAmB,CAAC;AAEnD,mDAAmD;AACnD,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,sEAAsE;AACtE,eAAO,MAAM,oBAAoB,QAA2B,CAAC;AAE7D;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BnE"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-shazam core/audit-log — Unified audit log rotation.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for audit log retention policy.
|
|
5
|
+
* Both mcp/tools.ts and hooks/tool-logger.ts delegate to rotateAuditLog().
|
|
6
|
+
*
|
|
7
|
+
* Policy:
|
|
8
|
+
* - Max 10 MB per log file before rotation
|
|
9
|
+
* - Keep up to 5 archived copies (shazam-calls.log.1 through .5)
|
|
10
|
+
* - Max 30 days age for any single log file
|
|
11
|
+
* - On rotation: cascade-rename .4→.5, .3→.4, …, .log→.log.1
|
|
12
|
+
* - On age: delete the entire log file (content older than 30 days is stale)
|
|
13
|
+
*/
|
|
14
|
+
import { stat, rename, unlink } from "node:fs/promises";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
/** Default directory for shazam audit logs. */
|
|
18
|
+
export const AUDIT_LOG_DIR = join(homedir(), ".pi", "hooks", "audit");
|
|
19
|
+
/** Max log file size before rotation (10 MB). */
|
|
20
|
+
export const MAX_AUDIT_LOG_SIZE = 10 * 1024 * 1024;
|
|
21
|
+
/** Max number of archived log copies to retain. */
|
|
22
|
+
export const MAX_AUDIT_LOG_FILES = 5;
|
|
23
|
+
/** Max age of a log file before it is rotated out (30 days in ms). */
|
|
24
|
+
export const MAX_AUDIT_LOG_AGE_MS = 30 * 24 * 60 * 60 * 1000;
|
|
25
|
+
/**
|
|
26
|
+
* Rotate the audit log at `logPath`.
|
|
27
|
+
*
|
|
28
|
+
* - If file size exceeds MAX_AUDIT_LOG_SIZE → cascade-rename archived copies
|
|
29
|
+
* (log.4→log.5, …, log→log.1) and let a new log file be created on next write.
|
|
30
|
+
* - If file age exceeds MAX_AUDIT_LOG_AGE_MS → delete the file (it will be
|
|
31
|
+
* recreated on next write with fresh content).
|
|
32
|
+
*/
|
|
33
|
+
export async function rotateAuditLog(logPath) {
|
|
34
|
+
try {
|
|
35
|
+
const st = await stat(logPath);
|
|
36
|
+
const tooBig = st.size > MAX_AUDIT_LOG_SIZE;
|
|
37
|
+
const tooOld = Date.now() - st.mtimeMs > MAX_AUDIT_LOG_AGE_MS;
|
|
38
|
+
if (tooBig) {
|
|
39
|
+
// Cascade-rename: shift archives up by one
|
|
40
|
+
for (let i = MAX_AUDIT_LOG_FILES - 1; i >= 1; i--) {
|
|
41
|
+
const src = `${logPath}.${i}`;
|
|
42
|
+
const dst = `${logPath}.${i + 1}`;
|
|
43
|
+
try {
|
|
44
|
+
await rename(src, dst);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// file may not exist yet
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Move current log to .1
|
|
51
|
+
await rename(logPath, `${logPath}.1`);
|
|
52
|
+
}
|
|
53
|
+
else if (tooOld) {
|
|
54
|
+
// Delete the entire log — it will be recreated on next write
|
|
55
|
+
await unlink(logPath);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
// File may not exist yet — first write creates it
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=audit-log.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.js","sourceRoot":"","sources":["../../core/audit-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAEtE,iDAAiD;AACjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEnD,mDAAmD;AACnD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,sEAAsE;AACtE,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IACnD,IAAI,CAAC;QACJ,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,oBAAoB,CAAC;QAE9D,IAAI,MAAM,EAAE,CAAC;YACZ,2CAA2C;YAC3C,KAAK,IAAI,CAAC,GAAG,mBAAmB,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnD,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC9B,MAAM,GAAG,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC;oBACJ,MAAM,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBACxB,CAAC;gBAAC,MAAM,CAAC;oBACR,yBAAyB;gBAC1B,CAAC;YACF,CAAC;YACD,yBAAyB;YACzB,MAAM,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,IAAI,MAAM,EAAE,CAAC;YACnB,6DAA6D;YAC7D,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,kDAAkD;IACnD,CAAC;AACF,CAAC"}
|
package/dist/core/encoding.js
CHANGED
|
@@ -157,9 +157,13 @@ function isValidUtf8(buffer) {
|
|
|
157
157
|
// Lone continuation byte (0x80-0xBF) or invalid lead (0xFE-0xFF)
|
|
158
158
|
return false;
|
|
159
159
|
}
|
|
160
|
-
// Ensure we have enough bytes remaining
|
|
160
|
+
// Ensure we have enough bytes remaining.
|
|
161
|
+
// If the sequence extends past the buffer end, it may be boundary
|
|
162
|
+
// truncation (the full file has the continuation bytes). Break
|
|
163
|
+
// instead of returning false so the caller can retry with a
|
|
164
|
+
// larger chunk or validate the full buffer (fixes #335).
|
|
161
165
|
if (i + seqLen > buffer.length)
|
|
162
|
-
|
|
166
|
+
break;
|
|
163
167
|
// All continuation bytes must match 10xxxxxx
|
|
164
168
|
for (let j = 1; j < seqLen; j++) {
|
|
165
169
|
const cb = buffer[i + j];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"encoding.js","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-shazam core/formatters — Shared formatter detection.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for detecting which formatters/linters are
|
|
5
|
+
* configured in a project. Consumed by tools/fix.ts and hooks/shazam-guide.ts.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Detect available formatters from project config files.
|
|
9
|
+
* Returns a deduplicated list of formatter names.
|
|
10
|
+
*/
|
|
11
|
+
export declare function detectFormatters(projectRoot: string): string[];
|
|
12
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../core/formatters.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CA+E9D"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-shazam core/formatters — Shared formatter detection.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for detecting which formatters/linters are
|
|
5
|
+
* configured in a project. Consumed by tools/fix.ts and hooks/shazam-guide.ts.
|
|
6
|
+
*/
|
|
7
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
8
|
+
import { join } from "node:path";
|
|
9
|
+
/**
|
|
10
|
+
* Detect available formatters from project config files.
|
|
11
|
+
* Returns a deduplicated list of formatter names.
|
|
12
|
+
*/
|
|
13
|
+
export function detectFormatters(projectRoot) {
|
|
14
|
+
const formatters = [];
|
|
15
|
+
// Prettier (standalone config files)
|
|
16
|
+
if (existsSync(join(projectRoot, ".prettierrc")) ||
|
|
17
|
+
existsSync(join(projectRoot, ".prettierrc.json")) ||
|
|
18
|
+
existsSync(join(projectRoot, ".prettierrc.js")) ||
|
|
19
|
+
existsSync(join(projectRoot, "prettier.config.js")) ||
|
|
20
|
+
existsSync(join(projectRoot, "prettier.config.mjs"))) {
|
|
21
|
+
formatters.push("prettier");
|
|
22
|
+
}
|
|
23
|
+
// ESLint
|
|
24
|
+
if (existsSync(join(projectRoot, ".eslintrc.js")) ||
|
|
25
|
+
existsSync(join(projectRoot, ".eslintrc.cjs")) ||
|
|
26
|
+
existsSync(join(projectRoot, ".eslintrc.json")) ||
|
|
27
|
+
existsSync(join(projectRoot, ".eslintrc.yaml")) ||
|
|
28
|
+
existsSync(join(projectRoot, ".eslintrc.yml")) ||
|
|
29
|
+
existsSync(join(projectRoot, "eslint.config.js")) ||
|
|
30
|
+
existsSync(join(projectRoot, "eslint.config.mjs"))) {
|
|
31
|
+
formatters.push("eslint");
|
|
32
|
+
}
|
|
33
|
+
// Biome
|
|
34
|
+
if (existsSync(join(projectRoot, "biome.json")) || existsSync(join(projectRoot, "biome.jsonc"))) {
|
|
35
|
+
formatters.push("biome");
|
|
36
|
+
}
|
|
37
|
+
// Check package.json for embedded config
|
|
38
|
+
try {
|
|
39
|
+
const pkgRaw = readFileSync(join(projectRoot, "package.json"), "utf-8");
|
|
40
|
+
const pkg = JSON.parse(pkgRaw);
|
|
41
|
+
if (pkg.prettier)
|
|
42
|
+
formatters.push("prettier");
|
|
43
|
+
if (pkg.eslintConfig)
|
|
44
|
+
formatters.push("eslint");
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// package.json not found or invalid — continue
|
|
48
|
+
}
|
|
49
|
+
// .editorconfig
|
|
50
|
+
if (existsSync(join(projectRoot, ".editorconfig"))) {
|
|
51
|
+
formatters.push("editorconfig");
|
|
52
|
+
}
|
|
53
|
+
// Python ruff
|
|
54
|
+
if (existsSync(join(projectRoot, "ruff.toml"))) {
|
|
55
|
+
formatters.push("ruff");
|
|
56
|
+
}
|
|
57
|
+
else if (existsSync(join(projectRoot, "pyproject.toml"))) {
|
|
58
|
+
try {
|
|
59
|
+
const pyproject = readFileSync(join(projectRoot, "pyproject.toml"), "utf-8");
|
|
60
|
+
if (pyproject.includes("[tool.ruff"))
|
|
61
|
+
formatters.push("ruff");
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
/* ignore */
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// Rust rustfmt
|
|
68
|
+
if (existsSync(join(projectRoot, "rustfmt.toml"))) {
|
|
69
|
+
formatters.push("rustfmt");
|
|
70
|
+
}
|
|
71
|
+
else if (existsSync(join(projectRoot, ".rustfmt.toml"))) {
|
|
72
|
+
formatters.push("rustfmt");
|
|
73
|
+
}
|
|
74
|
+
else if (existsSync(join(projectRoot, "Cargo.toml"))) {
|
|
75
|
+
try {
|
|
76
|
+
const cargo = readFileSync(join(projectRoot, "Cargo.toml"), "utf-8");
|
|
77
|
+
if (cargo.includes("[package]"))
|
|
78
|
+
formatters.push("rustfmt");
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
/* ignore */
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// Go gofmt
|
|
85
|
+
if (existsSync(join(projectRoot, "go.mod"))) {
|
|
86
|
+
formatters.push("gofmt");
|
|
87
|
+
}
|
|
88
|
+
return [...new Set(formatters)];
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../core/formatters.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-hooks.js","sourceRoot":"","sources":["../../core/git-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgI/B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IACjD,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,QAAQ,CAAC,gCAAgC,EAAE;YAC5D,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACb,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,wDAAwD;QACxD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACR,iDAAiD;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACvD,sDAAsD;IACtD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACd,sFAAsF;
|
|
1
|
+
{"version":3,"file":"git-hooks.js","sourceRoot":"","sources":["../../core/git-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACzF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgI/B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,WAAmB;IACjD,IAAI,CAAC;QACJ,MAAM,SAAS,GAAG,QAAQ,CAAC,gCAAgC,EAAE;YAC5D,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACb,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,wDAAwD;QACxD,IAAI,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QAClB,CAAC;QACD,OAAO,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC;QACR,iDAAiD;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,CAAC;AACF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAmB;IACvD,sDAAsD;IACtD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,KAAK,CACd,sFAAsF;YACrF,4EAA4E;YAC5E,4EAA4E,CAC7E,CAAC;IACH,CAAC;IACD,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACrG,MAAM,IAAI,KAAK,CACd,wEAAwE;YACvE,kCAAkC;YAClC,oBAAoB;YACpB,oBAAoB;YACpB,2BAA2B;YAC3B,8CAA8C,CAC/C,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAE9C,gCAAgC;IAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,6BAA6B,CAAC,CAAC;IAC1F,CAAC;IAED,8DAA8D;IAC9D,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzC,uBAAuB;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;YAC9D,aAAa,CAAC,UAAU,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC;IACF,CAAC;IAED,aAAa,CAAC,QAAQ,EAAE,uBAAuB,EAAE,OAAO,CAAC,CAAC;IAC1D,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAE3B,OAAO,QAAQ,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CAAC,WAAmB;IAC3D,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACtD,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,0BAA0B,CAAC,CAAC;IAE9D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,KAAK,CAAC;IAE9C,2BAA2B;IAC3B,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,aAAa,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxD,aAAa,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QAChD,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5B,CAAC;SAAM,CAAC;QACP,mCAAmC;QACnC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACtB,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACrD,IAAI,CAAC;QACJ,gCAAgC;QAChC,MAAM,aAAa,GAAG,QAAQ,CAAC,8DAA8D,EAAE;YAC9F,GAAG,EAAE,WAAW;YAChB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACb,CAAC,CAAC,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,aAAa,EAAE,CAAC;YACpB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,8BAA8B,EAAE,CAAC;QACrE,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,sEAAsE;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC;gBACJ,QAAQ,CAAC,kBAAkB,EAAE;oBAC5B,GAAG,EAAE,WAAW;oBAChB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;iBACnC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,MAAM,GAAI,GAA2B,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,gCAAgC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7E,CAAC;QACF,CAAC;QAED,sEAAsE;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC;gBACJ,QAAQ,CAAC,aAAa,EAAE;oBACvB,GAAG,EAAE,WAAW;oBAChB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;iBACnC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,MAAM,GAAI,GAA2B,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC;QACF,CAAC;QAED,sEAAsE;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC;gBACJ,QAAQ,CAAC,cAAc,EAAE;oBACxB,GAAG,EAAE,WAAW;oBAChB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;iBACnC,CAAC,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,MAAM,MAAM,GAAI,GAA2B,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,CAAC,kBAAkB,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YAC/D,CAAC;QACF,CAAC;QAED,sEAAsE;QACtE,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,EAAE,CAAC;YAClG,+BAA+B;YAC/B,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC;gBACJ,QAAQ,CAAC,WAAW,EAAE;oBACrB,GAAG,EAAE,WAAW;oBAChB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;iBACnC,CAAC,CAAC;gBACH,gBAAgB,GAAG,IAAI,CAAC;YACzB,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACvB,MAAM,QAAQ,GAAG,GAA4B,CAAC;gBAC9C,MAAM,MAAM,GAAI,QAAgC,EAAE,MAAM,IAAI,EAAE,CAAC;gBAC/D,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAK,QAAwD,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBAC5G,mCAAmC;gBACpC,CAAC;qBAAM,CAAC;oBACP,4BAA4B;oBAC5B,MAAM,CAAC,IAAI,CAAC,8BAA8B,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC1E,gBAAgB,GAAG,IAAI,CAAC,CAAC,uCAAuC;gBACjE,CAAC;YACF,CAAC;YAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACvB,IAAI,CAAC;oBACJ,QAAQ,CAAC,QAAQ,EAAE;wBAClB,GAAG,EAAE,WAAW;wBAChB,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC;qBACnC,CAAC,CAAC;gBACJ,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACd,MAAM,MAAM,GAAI,GAA2B,EAAE,MAAM,IAAI,EAAE,CAAC;oBAC1D,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC1E,CAAC;YACF,CAAC;QACF,CAAC;QAED,sEAAsE;QACtE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO;gBACN,OAAO,EAAE,MAAM;gBACf,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,wBAAwB,YAAY,CAAC,MAAM,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C;aACpJ,CAAC;QACH,CAAC;QAED,OAAO;YACN,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,yBAAyB,YAAY,CAAC,MAAM,kBAAkB;SACvE,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,OAAO;YACN,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC7F,CAAC;IACH,CAAC;AACF,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-shazam core/redact — Shared secret redaction for audit logs.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for SECRET_PATTERNS and redact().
|
|
5
|
+
* Consumed by both mcp/tools.ts and hooks/tool-logger.ts.
|
|
6
|
+
*/
|
|
7
|
+
/** Patterns matching common secret formats for log redaction. */
|
|
8
|
+
export declare const SECRET_PATTERNS: RegExp[];
|
|
9
|
+
/**
|
|
10
|
+
* Redact potential secrets from a string.
|
|
11
|
+
* Pure function — no I/O, no logging.
|
|
12
|
+
*/
|
|
13
|
+
export declare function redact(s: string): string;
|
|
14
|
+
//# sourceMappingURL=redact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../core/redact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iEAAiE;AACjE,eAAO,MAAM,eAAe,EAAE,MAAM,EAOnC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAMxC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pi-shazam core/redact — Shared secret redaction for audit logs.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for SECRET_PATTERNS and redact().
|
|
5
|
+
* Consumed by both mcp/tools.ts and hooks/tool-logger.ts.
|
|
6
|
+
*/
|
|
7
|
+
/** Patterns matching common secret formats for log redaction. */
|
|
8
|
+
export const SECRET_PATTERNS = [
|
|
9
|
+
/(?:token|secret|password|key|credential|auth)\s*[:=]\s*["'\w-]{8,}/gi,
|
|
10
|
+
/(?:ghp|gho|ghu|ghs|ghr)_[A-Za-z0-9_]{36,}/g,
|
|
11
|
+
/(?:xox[abspr]-\d+-\d+-\d+-[a-f0-9]+)/gi,
|
|
12
|
+
/AKIA[0-9A-Z]{16}/g,
|
|
13
|
+
/(?:sk|rk)-[a-zA-Z0-9]{24,}/g,
|
|
14
|
+
/(?:eyJ[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,}\.[a-zA-Z0-9_-]{10,})/g,
|
|
15
|
+
];
|
|
16
|
+
/**
|
|
17
|
+
* Redact potential secrets from a string.
|
|
18
|
+
* Pure function — no I/O, no logging.
|
|
19
|
+
*/
|
|
20
|
+
export function redact(s) {
|
|
21
|
+
let out = s;
|
|
22
|
+
for (const pattern of SECRET_PATTERNS) {
|
|
23
|
+
out = out.replace(pattern, "[REDACTED]");
|
|
24
|
+
}
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../core/redact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAa;IACxC,sEAAsE;IACtE,4CAA4C;IAC5C,wCAAwC;IACxC,mBAAmB;IACnB,6BAA6B;IAC7B,oEAAoE;CACpE,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,CAAS;IAC/B,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,OAAO,IAAI,eAAe,EAAE,CAAC;QACvC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC"}
|
package/dist/core/scanner.js
CHANGED
|
@@ -695,70 +695,75 @@ function scanIncremental(root, files, adapter, logger) {
|
|
|
695
695
|
}
|
|
696
696
|
// ── File collection ──────────────────────────────────────────────────────────
|
|
697
697
|
function collectSourceFiles(root, maxFiles) {
|
|
698
|
-
const
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
698
|
+
const options = {
|
|
699
|
+
root,
|
|
700
|
+
maxFiles,
|
|
701
|
+
files: [],
|
|
702
|
+
visitedSymlinks: new Set(),
|
|
703
|
+
};
|
|
704
|
+
_walkDirectory(root, 0, options);
|
|
705
|
+
return options.files;
|
|
706
|
+
}
|
|
707
|
+
function _walkDirectory(dir, _depth, options) {
|
|
708
|
+
const { root, maxFiles, files, visitedSymlinks } = options;
|
|
709
|
+
if (files.length >= maxFiles)
|
|
710
|
+
return;
|
|
711
|
+
let entries;
|
|
712
|
+
try {
|
|
713
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
714
|
+
}
|
|
715
|
+
catch (err) {
|
|
716
|
+
// Log directory read failures (fixes #133, #160)
|
|
717
|
+
if (err instanceof Error && (err.message.includes("EACCES") || err.message.includes("EPERM"))) {
|
|
718
|
+
console.warn(`[pi-shazam] _walkDirectory: permission denied: ${dir}`);
|
|
706
719
|
}
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
console.warn(`[pi-shazam] collectSourceFiles: permission denied: ${dir}`);
|
|
711
|
-
}
|
|
712
|
-
else {
|
|
713
|
-
const code = err?.code ?? String(err);
|
|
714
|
-
console.warn(`[pi-shazam] collectSourceFiles: unexpected error reading ${dir}: ${code}`);
|
|
715
|
-
}
|
|
716
|
-
return;
|
|
720
|
+
else {
|
|
721
|
+
const code = err?.code ?? String(err);
|
|
722
|
+
console.warn(`[pi-shazam] _walkDirectory: unexpected error reading ${dir}: ${code}`);
|
|
717
723
|
}
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
}
|
|
742
|
-
|
|
743
|
-
visitedSymlinks.add(realPath);
|
|
744
|
-
continue; // skip directory symlinks to avoid cycles
|
|
724
|
+
return;
|
|
725
|
+
}
|
|
726
|
+
for (const entry of entries) {
|
|
727
|
+
if (files.length >= maxFiles)
|
|
728
|
+
return;
|
|
729
|
+
const relPath = relative(root, join(dir, entry.name));
|
|
730
|
+
if (entry.isDirectory()) {
|
|
731
|
+
if (SKIP_DIRS.has(entry.name))
|
|
732
|
+
continue;
|
|
733
|
+
if (entry.name.startsWith("."))
|
|
734
|
+
continue;
|
|
735
|
+
_walkDirectory(join(dir, entry.name), _depth + 1, options);
|
|
736
|
+
}
|
|
737
|
+
else if (entry.isSymbolicLink()) {
|
|
738
|
+
// Resolve symlink to check whether it points to a directory or file.
|
|
739
|
+
// Use statSync (not lstatSync) to follow the symlink and get the
|
|
740
|
+
// target's actual type (isDirectory reflects the target, not the link).
|
|
741
|
+
try {
|
|
742
|
+
const realStat = statSync(join(dir, entry.name));
|
|
743
|
+
if (realStat.isDirectory()) {
|
|
744
|
+
// Symlink cycle detection: skip if we already visited this realpath
|
|
745
|
+
const realPath = realStat.isDirectory() ? join(dir, entry.name) : "";
|
|
746
|
+
if (realPath && visitedSymlinks.has(realPath)) {
|
|
747
|
+
console.warn(`[pi-shazam] _walkDirectory: skipping symlink cycle: ${relPath}`);
|
|
748
|
+
continue;
|
|
745
749
|
}
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
continue; // broken symlink, skip
|
|
750
|
+
if (realPath)
|
|
751
|
+
visitedSymlinks.add(realPath);
|
|
752
|
+
continue; // skip directory symlinks to avoid cycles
|
|
750
753
|
}
|
|
754
|
+
// Fall through: file symlink -> treat as regular file below
|
|
751
755
|
}
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
756
|
+
catch {
|
|
757
|
+
continue; // broken symlink, skip
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
else if (entry.isFile()) {
|
|
761
|
+
const ext = entry.name.slice(entry.name.lastIndexOf(".")).toLowerCase();
|
|
762
|
+
if (SOURCE_EXTS.has(ext)) {
|
|
763
|
+
files.push(relPath);
|
|
757
764
|
}
|
|
758
765
|
}
|
|
759
766
|
}
|
|
760
|
-
walk(root);
|
|
761
|
-
return files;
|
|
762
767
|
}
|
|
763
768
|
// ── Edge helpers ─────────────────────────────────────────────────────────────
|
|
764
769
|
// Per-scan set of seen edge keys to prevent duplicates (#319).
|