pi-shazam 0.15.2 → 0.16.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.
- package/README.md +2 -1
- package/dist/core/audit-log.d.ts +4 -4
- package/dist/core/audit-log.d.ts.map +1 -1
- package/dist/core/audit-log.js +8 -6
- package/dist/core/audit-log.js.map +1 -1
- package/dist/core/baseline.js +3 -3
- package/dist/core/baseline.js.map +1 -1
- package/dist/core/cache.d.ts +1 -1
- package/dist/core/cache.js +7 -7
- package/dist/core/cache.js.map +1 -1
- package/dist/core/encoding.d.ts +2 -2
- package/dist/core/encoding.d.ts.map +1 -1
- package/dist/core/encoding.js +18 -6
- package/dist/core/encoding.js.map +1 -1
- package/dist/core/formatters.d.ts.map +1 -1
- package/dist/core/formatters.js +3 -2
- package/dist/core/formatters.js.map +1 -1
- package/dist/core/git-hooks.d.ts.map +1 -1
- package/dist/core/git-hooks.js +28 -23
- package/dist/core/git-hooks.js.map +1 -1
- package/dist/core/git-utils.d.ts +46 -25
- package/dist/core/git-utils.d.ts.map +1 -1
- package/dist/core/git-utils.js +70 -37
- package/dist/core/git-utils.js.map +1 -1
- package/dist/core/graph.d.ts +1 -1
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +4 -4
- package/dist/core/output.d.ts.map +1 -1
- package/dist/core/output.js +7 -6
- package/dist/core/output.js.map +1 -1
- package/dist/core/redact.d.ts.map +1 -1
- package/dist/core/redact.js +41 -1
- package/dist/core/redact.js.map +1 -1
- package/dist/core/risk.d.ts +38 -0
- package/dist/core/risk.d.ts.map +1 -0
- package/dist/core/risk.js +66 -0
- package/dist/core/risk.js.map +1 -0
- package/dist/core/scanner.d.ts.map +1 -1
- package/dist/core/scanner.js +36 -16
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/treesitter-queries.d.ts +1 -0
- package/dist/core/treesitter-queries.d.ts.map +1 -1
- package/dist/core/treesitter-queries.js +8 -0
- package/dist/core/treesitter-queries.js.map +1 -1
- package/dist/core/treesitter.d.ts +22 -9
- package/dist/core/treesitter.d.ts.map +1 -1
- package/dist/core/treesitter.js +99 -24
- package/dist/core/treesitter.js.map +1 -1
- package/dist/hooks/_bash-utils.d.ts +13 -8
- package/dist/hooks/_bash-utils.d.ts.map +1 -1
- package/dist/hooks/_bash-utils.js +174 -32
- package/dist/hooks/_bash-utils.js.map +1 -1
- package/dist/hooks/agent-context-guard.d.ts.map +1 -1
- package/dist/hooks/agent-context-guard.js +14 -7
- package/dist/hooks/agent-context-guard.js.map +1 -1
- package/dist/hooks/before-start.d.ts.map +1 -1
- package/dist/hooks/before-start.js +17 -12
- package/dist/hooks/before-start.js.map +1 -1
- package/dist/hooks/failure-recovery.d.ts.map +1 -1
- package/dist/hooks/failure-recovery.js +24 -5
- package/dist/hooks/failure-recovery.js.map +1 -1
- package/dist/hooks/impact-state.d.ts +1 -1
- package/dist/hooks/impact-state.d.ts.map +1 -1
- package/dist/hooks/impact-state.js +13 -1
- package/dist/hooks/impact-state.js.map +1 -1
- package/dist/hooks/safety.d.ts.map +1 -1
- package/dist/hooks/safety.js +14 -4
- package/dist/hooks/safety.js.map +1 -1
- package/dist/hooks/shazam-guide.d.ts.map +1 -1
- package/dist/hooks/shazam-guide.js +6 -2
- 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 +4 -2
- package/dist/hooks/tool-logger.js.map +1 -1
- package/dist/hooks/verify-state.d.ts +1 -1
- package/dist/hooks/verify-state.d.ts.map +1 -1
- package/dist/hooks/verify-state.js +3 -2
- package/dist/hooks/verify-state.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +18 -19
- package/dist/index.js.map +1 -1
- package/dist/lsp/client.d.ts +7 -1
- package/dist/lsp/client.d.ts.map +1 -1
- package/dist/lsp/client.js +77 -35
- package/dist/lsp/client.js.map +1 -1
- package/dist/lsp/manager.d.ts.map +1 -1
- package/dist/lsp/manager.js +41 -16
- package/dist/lsp/manager.js.map +1 -1
- package/dist/lsp/servers.d.ts +2 -2
- package/dist/lsp/servers.d.ts.map +1 -1
- package/dist/lsp/servers.js +13 -13
- package/dist/lsp/servers.js.map +1 -1
- package/dist/lsp/setup.d.ts.map +1 -1
- package/dist/lsp/setup.js +4 -3
- package/dist/lsp/setup.js.map +1 -1
- package/dist/mcp/entry.js +17 -2
- package/dist/mcp/entry.js.map +1 -1
- package/dist/mcp/tools.d.ts +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +21 -8
- package/dist/mcp/tools.js.map +1 -1
- package/dist/tools/_factory.d.ts +6 -0
- package/dist/tools/_factory.d.ts.map +1 -1
- package/dist/tools/_factory.js +29 -3
- package/dist/tools/_factory.js.map +1 -1
- package/dist/tools/changes.d.ts.map +1 -1
- package/dist/tools/changes.js +10 -34
- package/dist/tools/changes.js.map +1 -1
- package/dist/tools/definitions.d.ts +1 -1
- package/dist/tools/definitions.js +3 -3
- package/dist/tools/format.d.ts +0 -2
- package/dist/tools/format.d.ts.map +1 -1
- package/dist/tools/format.js +24 -29
- package/dist/tools/format.js.map +1 -1
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +12 -25
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/lookup.d.ts +9 -5
- package/dist/tools/lookup.d.ts.map +1 -1
- package/dist/tools/lookup.js +126 -70
- package/dist/tools/lookup.js.map +1 -1
- package/dist/tools/lsp_enrich.d.ts +2 -0
- package/dist/tools/lsp_enrich.d.ts.map +1 -1
- package/dist/tools/lsp_enrich.js +48 -28
- package/dist/tools/lsp_enrich.js.map +1 -1
- package/dist/tools/overview.d.ts +15 -6
- package/dist/tools/overview.d.ts.map +1 -1
- package/dist/tools/overview.js +27 -94
- package/dist/tools/overview.js.map +1 -1
- package/dist/tools/rename_symbol.d.ts +1 -1
- package/dist/tools/rename_symbol.d.ts.map +1 -1
- package/dist/tools/rename_symbol.js +32 -11
- package/dist/tools/rename_symbol.js.map +1 -1
- package/dist/tools/verify.d.ts +1 -9
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +44 -64
- package/dist/tools/verify.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -43,7 +43,7 @@ Use this only if you are **not** using Pi agent. The MCP interface provides the
|
|
|
43
43
|
"mcpServers": {
|
|
44
44
|
"pi-shazam": {
|
|
45
45
|
"command": "npx",
|
|
46
|
-
"args": ["-y", "-p", "pi-shazam", "pi-shazam-mcp"]
|
|
46
|
+
"args": ["-y", "-p", "pi-shazam@latest", "pi-shazam-mcp"]
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
}
|
|
@@ -149,6 +149,7 @@ pi-shazam (npm package)
|
|
|
149
149
|
│ ├── verify-state.ts Shared verify tracking state for safety + stop-verify
|
|
150
150
|
│ ├── impact-state.ts Shared impact tracking state for issue-guard + pre-edit
|
|
151
151
|
│ ├── issue-guard.ts Detect gh issue create, set pending impact flag
|
|
152
|
+
│ ├── agent-context-guard.ts Block agent spawn without structural context
|
|
152
153
|
│ ├── rename-state.ts Session-scoped rename review state
|
|
153
154
|
│ └── _bash-utils.ts Shared bash command utilities
|
|
154
155
|
│
|
package/dist/core/audit-log.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Max 10 MB per log file before rotation
|
|
9
9
|
* - Keep up to 5 archived copies (shazam-calls.log.1 through .5)
|
|
10
10
|
* - Max 30 days age for any single log file
|
|
11
|
-
* - On rotation: cascade-rename .4
|
|
11
|
+
* - On rotation: cascade-rename .4->.5, .3->.4, …, .log->.log.1
|
|
12
12
|
* - On age: delete the entire log file (content older than 30 days is stale)
|
|
13
13
|
*/
|
|
14
14
|
/** Default directory for shazam audit logs. */
|
|
@@ -22,9 +22,9 @@ export declare const MAX_AUDIT_LOG_AGE_MS: number;
|
|
|
22
22
|
/**
|
|
23
23
|
* Rotate the audit log at `logPath`.
|
|
24
24
|
*
|
|
25
|
-
* - If file size exceeds MAX_AUDIT_LOG_SIZE
|
|
26
|
-
* (log.4
|
|
27
|
-
* - If file age exceeds MAX_AUDIT_LOG_AGE_MS
|
|
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
28
|
* recreated on next write with fresh content).
|
|
29
29
|
*/
|
|
30
30
|
export declare function rotateAuditLog(logPath: string): Promise<void>;
|
|
@@ -1 +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,
|
|
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,CA4BnE"}
|
package/dist/core/audit-log.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* - Max 10 MB per log file before rotation
|
|
9
9
|
* - Keep up to 5 archived copies (shazam-calls.log.1 through .5)
|
|
10
10
|
* - Max 30 days age for any single log file
|
|
11
|
-
* - On rotation: cascade-rename .4
|
|
11
|
+
* - On rotation: cascade-rename .4->.5, .3->.4, …, .log->.log.1
|
|
12
12
|
* - On age: delete the entire log file (content older than 30 days is stale)
|
|
13
13
|
*/
|
|
14
14
|
import { stat, rename, unlink } from "node:fs/promises";
|
|
@@ -25,9 +25,9 @@ export const MAX_AUDIT_LOG_AGE_MS = 30 * 24 * 60 * 60 * 1000;
|
|
|
25
25
|
/**
|
|
26
26
|
* Rotate the audit log at `logPath`.
|
|
27
27
|
*
|
|
28
|
-
* - If file size exceeds MAX_AUDIT_LOG_SIZE
|
|
29
|
-
* (log.4
|
|
30
|
-
* - If file age exceeds MAX_AUDIT_LOG_AGE_MS
|
|
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
31
|
* recreated on next write with fresh content).
|
|
32
32
|
*/
|
|
33
33
|
export async function rotateAuditLog(logPath) {
|
|
@@ -43,8 +43,9 @@ export async function rotateAuditLog(logPath) {
|
|
|
43
43
|
try {
|
|
44
44
|
await rename(src, dst);
|
|
45
45
|
}
|
|
46
|
-
catch {
|
|
46
|
+
catch (err) {
|
|
47
47
|
// file may not exist yet
|
|
48
|
+
console.warn(`[pi-shazam] rotateAuditLog: rename ${src} -> ${dst} failed`, err);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
// Move current log to .1
|
|
@@ -55,8 +56,9 @@ export async function rotateAuditLog(logPath) {
|
|
|
55
56
|
await unlink(logPath);
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
|
-
catch {
|
|
59
|
+
catch (err) {
|
|
59
60
|
// File may not exist yet — first write creates it
|
|
61
|
+
console.warn(`[pi-shazam] rotateAuditLog: stat/unlink failed for ${logPath}`, err);
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
64
|
//# sourceMappingURL=audit-log.js.map
|
|
@@ -1 +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,
|
|
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,OAAO,GAAG,EAAE,CAAC;oBACd,yBAAyB;oBACzB,OAAO,CAAC,IAAI,CAAC,sCAAsC,GAAG,OAAO,GAAG,SAAS,EAAE,GAAG,CAAC,CAAC;gBACjF,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,OAAO,GAAG,EAAE,CAAC;QACd,kDAAkD;QAClD,OAAO,CAAC,IAAI,CAAC,sDAAsD,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC;IACpF,CAAC;AACF,CAAC"}
|
package/dist/core/baseline.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { getGraphEdgeCount } from "./graph.js";
|
|
13
13
|
import { findOrphans } from "./filter.js";
|
|
14
|
-
//
|
|
14
|
+
// -- Session baseline state (in-memory) ----------------------------------------
|
|
15
15
|
let _baseline = null;
|
|
16
16
|
let _previousOrphans = new Map();
|
|
17
17
|
/**
|
|
@@ -42,7 +42,7 @@ export function createBaseline(graph, lspErrors, lspWarnings, branch, commit) {
|
|
|
42
42
|
// Cache current orphan set for future diff
|
|
43
43
|
_previousOrphans = new Map();
|
|
44
44
|
for (const orphan of orphanResult.all) {
|
|
45
|
-
_previousOrphans.set(`${orphan.name}::${orphan.file}`, orphan);
|
|
45
|
+
_previousOrphans.set(`${orphan.name}::${orphan.file}::${orphan.kind}::${orphan.line}`, orphan);
|
|
46
46
|
}
|
|
47
47
|
return baseline;
|
|
48
48
|
}
|
|
@@ -58,7 +58,7 @@ export function diffFromBaseline(graph, lspErrors, lspWarnings) {
|
|
|
58
58
|
const currentOrphans = orphanResult.all;
|
|
59
59
|
const currentOrphanCount = currentOrphans.length;
|
|
60
60
|
// Find new orphans (not in previous baseline)
|
|
61
|
-
const newOrphans = currentOrphans.filter((o) => !_previousOrphans.has(`${o.name}::${o.file}`));
|
|
61
|
+
const newOrphans = currentOrphans.filter((o) => !_previousOrphans.has(`${o.name}::${o.file}::${o.kind}::${o.line}`));
|
|
62
62
|
// Count edge changes
|
|
63
63
|
const previousEdges = _baseline.graphEdges;
|
|
64
64
|
const addedEdges = edgeCount > previousEdges ? edgeCount - previousEdges : 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA4B1C,iFAAiF;AAEjF,IAAI,SAAS,GAA2B,IAAI,CAAC;AAC7C,IAAI,gBAAgB,GAA4E,IAAI,GAAG,EAAE,CAAC;AAE1G;;GAEG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC7B,KAAgB,EAChB,SAAiB,EACjB,WAAmB,EACnB,MAAc,EACd,MAAc;IAEd,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE3C,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;IAE5C,MAAM,QAAQ,GAAoB;QACjC,MAAM;QACN,MAAM;QACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS;QACT,WAAW;QACX,aAAa,EAAE,WAAW;QAC1B,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;QAC/B,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,IAAI;KACjC,CAAC;IAEF,SAAS,GAAG,QAAQ,CAAC;IAErB,2CAA2C;IAC3C,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;IAC7B,KAAK,MAAM,MAAM,IAAI,YAAY,CAAC,GAAG,EAAE,CAAC;QACvC,gBAAgB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"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"}
|
package/dist/core/cache.d.ts
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
import type { RepoGraph, GraphCacheData as GraphCacheDataExport } from "./graph.js";
|
|
9
9
|
/**
|
|
10
10
|
* Get the cache directory for a specific project.
|
|
11
|
-
* Uses
|
|
11
|
+
* Uses SHA-256 hash of canonical path for isolation.
|
|
12
12
|
*/
|
|
13
13
|
export declare function getProjectCacheDir(projectPath: string): string;
|
|
14
14
|
/**
|
package/dist/core/cache.js
CHANGED
|
@@ -10,21 +10,21 @@ import { join, dirname } from "node:path";
|
|
|
10
10
|
import { homedir } from "node:os";
|
|
11
11
|
import { createHash } from "node:crypto";
|
|
12
12
|
import { serializeGraphV2, deserializeGraphV2 } from "./graph.js";
|
|
13
|
-
//
|
|
13
|
+
// -- Cache directory management -----------------------------------------------
|
|
14
14
|
const CACHE_ROOT = join(homedir(), ".cache", "repomap");
|
|
15
15
|
/**
|
|
16
16
|
* Get the cache directory for a specific project.
|
|
17
|
-
* Uses
|
|
17
|
+
* Uses SHA-256 hash of canonical path for isolation.
|
|
18
18
|
*/
|
|
19
19
|
export function getProjectCacheDir(projectPath) {
|
|
20
20
|
const canonical = projectPath.replace(/\/$/, "");
|
|
21
|
-
const hash = createHash("
|
|
21
|
+
const hash = createHash("sha256").update(canonical).digest("hex").slice(0, 8);
|
|
22
22
|
const projectName = canonical.split("/").pop() || "unknown";
|
|
23
23
|
const cacheDir = join(CACHE_ROOT, `${projectName}_${hash}`);
|
|
24
24
|
mkdirSync(cacheDir, { recursive: true });
|
|
25
25
|
return cacheDir;
|
|
26
26
|
}
|
|
27
|
-
//
|
|
27
|
+
// -- Persistent graph cache (V2) ----------------------------------------------
|
|
28
28
|
/** Max age for a cached graph file before it is considered stale. */
|
|
29
29
|
const CACHE_MAX_AGE_MS = 24 * 60 * 60 * 1000; // 1 day — prevents stale cache in active projects (fixes #100)
|
|
30
30
|
/**
|
|
@@ -42,7 +42,7 @@ function atomicRename(tmpPath, targetPath) {
|
|
|
42
42
|
unlinkSync(targetPath);
|
|
43
43
|
}
|
|
44
44
|
catch {
|
|
45
|
-
|
|
45
|
+
console.warn("[pi-shazam] atomicRename: unlinkSync target failed (may not exist)");
|
|
46
46
|
}
|
|
47
47
|
renameSync(tmpPath, targetPath);
|
|
48
48
|
}
|
|
@@ -69,7 +69,7 @@ export function saveGraphCache(graph, fileMtimes, cachePath) {
|
|
|
69
69
|
unlinkSync(tmpPath);
|
|
70
70
|
}
|
|
71
71
|
catch {
|
|
72
|
-
|
|
72
|
+
console.warn("[pi-shazam] saveGraphCache: failed to clean up tmp file");
|
|
73
73
|
}
|
|
74
74
|
throw err;
|
|
75
75
|
}
|
|
@@ -82,7 +82,7 @@ export function loadGraphCache(cachePath) {
|
|
|
82
82
|
if (!existsSync(cachePath))
|
|
83
83
|
return null;
|
|
84
84
|
try {
|
|
85
|
-
const MAX_CACHE_SIZE =
|
|
85
|
+
const MAX_CACHE_SIZE = 20 * 1024 * 1024; // 20MB
|
|
86
86
|
const cacheStat = statSync(cachePath);
|
|
87
87
|
if (cacheStat.size > MAX_CACHE_SIZE) {
|
|
88
88
|
console.warn(`[pi-shazam] Cache file too large (${cacheStat.size} bytes), skipping`);
|
package/dist/core/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/G,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAGlE,gFAAgF;AAEhF,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IACrD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACjD,MAAM,IAAI,GAAG,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/core/encoding.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-shazam core/encoding — Adaptive file encoding reader.
|
|
3
3
|
*
|
|
4
|
-
* Reads files with UTF-8
|
|
4
|
+
* Reads files with UTF-8 -> GBK -> GB2312 fallback.
|
|
5
5
|
* Includes OOM protection via file size limits (2MB max) and
|
|
6
6
|
* encoding validation on first 64KB chunk to reduce memory pressure.
|
|
7
7
|
*/
|
|
@@ -30,7 +30,7 @@ export declare class FileTooLargeError extends Error {
|
|
|
30
30
|
export declare function readFileAdaptive(filePath: string): string;
|
|
31
31
|
/**
|
|
32
32
|
* Async variant of readFileAdaptive using fs.promises.
|
|
33
|
-
* Same encoding fallback logic (UTF-8
|
|
33
|
+
* Same encoding fallback logic (UTF-8 -> GBK -> GB2312) but non-blocking.
|
|
34
34
|
* Use this in async contexts (e.g., LSP enrichment) to avoid blocking the event loop.
|
|
35
35
|
*/
|
|
36
36
|
export declare function readFileAdaptiveAsync(filePath: string): Promise<string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAOrD;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAWH;;;;GAIG;AACH,qBAAa,iBAAkB,SAAQ,KAAK;IAC3C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,KAAK,EAAE,MAAM,CAAC;gBAElB,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;CAOrD;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA2CzD;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAwC7E"}
|
package/dist/core/encoding.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-shazam core/encoding — Adaptive file encoding reader.
|
|
3
3
|
*
|
|
4
|
-
* Reads files with UTF-8
|
|
4
|
+
* Reads files with UTF-8 -> GBK -> GB2312 fallback.
|
|
5
5
|
* Includes OOM protection via file size limits (2MB max) and
|
|
6
6
|
* encoding validation on first 64KB chunk to reduce memory pressure.
|
|
7
7
|
*/
|
|
@@ -32,7 +32,7 @@ export class FileTooLargeError extends Error {
|
|
|
32
32
|
// Chunk size for encoding validation — only validate first 64KB
|
|
33
33
|
// to avoid allocating huge strings for large files
|
|
34
34
|
const VALIDATION_CHUNK_SIZE = 64 * 1024;
|
|
35
|
-
//
|
|
35
|
+
// -- Encoding detection and reading -------------------------------------------
|
|
36
36
|
/**
|
|
37
37
|
* Read a file with adaptive encoding fallback:
|
|
38
38
|
* 1. Try UTF-8
|
|
@@ -58,6 +58,7 @@ export function readFileAdaptive(filePath) {
|
|
|
58
58
|
if (err instanceof FileTooLargeError) {
|
|
59
59
|
throw err; // re-throw our size error
|
|
60
60
|
}
|
|
61
|
+
console.warn(`[pi-shazam] readFileAdaptive: stat failed for ${filePath}: ${err}`);
|
|
61
62
|
// stat failed (permission, missing) — fall through to readFileSync which will error with a clearer message
|
|
62
63
|
}
|
|
63
64
|
const buffer = readFileSync(filePath);
|
|
@@ -85,7 +86,7 @@ export function readFileAdaptive(filePath) {
|
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
87
88
|
* Async variant of readFileAdaptive using fs.promises.
|
|
88
|
-
* Same encoding fallback logic (UTF-8
|
|
89
|
+
* Same encoding fallback logic (UTF-8 -> GBK -> GB2312) but non-blocking.
|
|
89
90
|
* Use this in async contexts (e.g., LSP enrichment) to avoid blocking the event loop.
|
|
90
91
|
*/
|
|
91
92
|
export async function readFileAdaptiveAsync(filePath) {
|
|
@@ -100,6 +101,7 @@ export async function readFileAdaptiveAsync(filePath) {
|
|
|
100
101
|
if (err instanceof FileTooLargeError) {
|
|
101
102
|
throw err;
|
|
102
103
|
}
|
|
104
|
+
console.warn(`[pi-shazam] readFileAdaptiveAsync: stat failed for ${filePath}: ${err}`);
|
|
103
105
|
// stat failed — fall through to readFile which will error with a clearer message
|
|
104
106
|
}
|
|
105
107
|
const buffer = await readFileAsync(filePath);
|
|
@@ -124,7 +126,7 @@ export async function readFileAdaptiveAsync(filePath) {
|
|
|
124
126
|
// Last resort: UTF-8 with replacement
|
|
125
127
|
return buffer.toString("utf-8");
|
|
126
128
|
}
|
|
127
|
-
//
|
|
129
|
+
// -- Internal helpers ---------------------------------------------------------
|
|
128
130
|
/**
|
|
129
131
|
* Validate that a buffer contains only valid UTF-8 byte sequences.
|
|
130
132
|
* Performs byte-level validation: rejects overlong encodings, lone continuation
|
|
@@ -212,13 +214,23 @@ function tryDecode(buffer, encoding) {
|
|
|
212
214
|
}
|
|
213
215
|
// For iconv-lite encodings, decode and check for errors
|
|
214
216
|
const str = iconv.decode(buffer, encoding);
|
|
215
|
-
//
|
|
216
|
-
// by verifying the decoded content doesn't have too many unknown chars
|
|
217
|
+
// Empty result with non-empty buffer: definitely wrong encoding
|
|
217
218
|
if (str.length === 0 && buffer.length > 0)
|
|
218
219
|
return null;
|
|
220
|
+
// Replacement-character ratio check (#368): iconv-lite emits U+FFFD for
|
|
221
|
+
// unmappable bytes. If >5% of decoded characters are replacements,
|
|
222
|
+
// the encoding is wrong — reject to try the next fallback.
|
|
223
|
+
let replacementCount = 0;
|
|
224
|
+
for (const ch of str) {
|
|
225
|
+
if (ch === "�")
|
|
226
|
+
replacementCount++;
|
|
227
|
+
}
|
|
228
|
+
if (replacementCount / str.length > 0.05)
|
|
229
|
+
return null;
|
|
219
230
|
return str;
|
|
220
231
|
}
|
|
221
232
|
catch {
|
|
233
|
+
console.warn("[pi-shazam] tryDecode: encoding decode failed");
|
|
222
234
|
return null;
|
|
223
235
|
}
|
|
224
236
|
}
|
|
@@ -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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"}
|
|
@@ -1 +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,
|
|
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,CAgF9D"}
|
package/dist/core/formatters.js
CHANGED
|
@@ -44,6 +44,7 @@ export function detectFormatters(projectRoot) {
|
|
|
44
44
|
formatters.push("eslint");
|
|
45
45
|
}
|
|
46
46
|
catch {
|
|
47
|
+
console.warn("[pi-shazam] detectFormatters: package.json not found or invalid");
|
|
47
48
|
// package.json not found or invalid — continue
|
|
48
49
|
}
|
|
49
50
|
// .editorconfig
|
|
@@ -61,7 +62,7 @@ export function detectFormatters(projectRoot) {
|
|
|
61
62
|
formatters.push("ruff");
|
|
62
63
|
}
|
|
63
64
|
catch {
|
|
64
|
-
|
|
65
|
+
console.warn("[pi-shazam] detectFormatters: pyproject.toml parse failed");
|
|
65
66
|
}
|
|
66
67
|
}
|
|
67
68
|
// Rust rustfmt
|
|
@@ -78,7 +79,7 @@ export function detectFormatters(projectRoot) {
|
|
|
78
79
|
formatters.push("rustfmt");
|
|
79
80
|
}
|
|
80
81
|
catch {
|
|
81
|
-
|
|
82
|
+
console.warn("[pi-shazam] detectFormatters: Cargo.toml parse failed");
|
|
82
83
|
}
|
|
83
84
|
}
|
|
84
85
|
// Go gofmt
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../core/formatters.ts"],"names":[],"mappings":"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
|
|
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.d.ts","sourceRoot":"","sources":["../../core/git-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiJH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"git-hooks.d.ts","sourceRoot":"","sources":["../../core/git-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiJH;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAoB1D;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CA0ChE;AAED;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAMrE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAoBhE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAwH9G"}
|
package/dist/core/git-hooks.js
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { writeFileSync, chmodSync, existsSync, readFileSync, unlinkSync } from "node:fs";
|
|
13
13
|
import { join, resolve } from "node:path";
|
|
14
|
-
import {
|
|
14
|
+
import { execFileSync } from "node:child_process";
|
|
15
15
|
/**
|
|
16
16
|
* Pre-commit hook script content.
|
|
17
17
|
* Detects project language and runs appropriate checks:
|
|
@@ -44,13 +44,13 @@ echo "[shazam] Checking $CHANGED_FILES changed file(s)..."
|
|
|
44
44
|
|
|
45
45
|
ERRORS=0
|
|
46
46
|
|
|
47
|
-
#
|
|
47
|
+
# -- TypeScript/JavaScript ----------------------------------------------
|
|
48
48
|
if [ -f "tsconfig.json" ] || [ -f "package.json" ]; then
|
|
49
49
|
# Type check
|
|
50
50
|
if command -v npx &>/dev/null; then
|
|
51
51
|
if [ -f "tsconfig.json" ]; then
|
|
52
52
|
echo "[shazam] Running TypeScript typecheck..."
|
|
53
|
-
if ! npx tsc --noEmit 2>&1; then
|
|
53
|
+
if ! npx --no-install tsc --noEmit 2>&1; then
|
|
54
54
|
echo "[shazam] FAIL: TypeScript typecheck found errors."
|
|
55
55
|
ERRORS=$((ERRORS + 1))
|
|
56
56
|
fi
|
|
@@ -59,13 +59,13 @@ if [ -f "tsconfig.json" ] || [ -f "package.json" ]; then
|
|
|
59
59
|
# Lint (eslint or biome)
|
|
60
60
|
if [ -f "eslint.config.js" ] || [ -f "eslint.config.mjs" ] || [ -f ".eslintrc.js" ] || [ -f ".eslintrc.json" ]; then
|
|
61
61
|
echo "[shazam] Running eslint..."
|
|
62
|
-
if ! npx eslint . --max-warnings=0 2>&1; then
|
|
62
|
+
if ! npx --no-install eslint . --max-warnings=0 2>&1; then
|
|
63
63
|
echo "[shazam] FAIL: eslint found issues."
|
|
64
64
|
ERRORS=$((ERRORS + 1))
|
|
65
65
|
fi
|
|
66
66
|
elif [ -f "biome.json" ] || [ -f "biome.jsonc" ]; then
|
|
67
67
|
echo "[shazam] Running biome check..."
|
|
68
|
-
if ! npx biome check . 2>&1; then
|
|
68
|
+
if ! npx --no-install biome check . 2>&1; then
|
|
69
69
|
echo "[shazam] FAIL: biome found issues."
|
|
70
70
|
ERRORS=$((ERRORS + 1))
|
|
71
71
|
fi
|
|
@@ -73,7 +73,7 @@ if [ -f "tsconfig.json" ] || [ -f "package.json" ]; then
|
|
|
73
73
|
fi
|
|
74
74
|
fi
|
|
75
75
|
|
|
76
|
-
#
|
|
76
|
+
# -- Rust ---------------------------------------------------------------
|
|
77
77
|
if [ -f "Cargo.toml" ]; then
|
|
78
78
|
if command -v cargo &>/dev/null; then
|
|
79
79
|
echo "[shazam] Running cargo check..."
|
|
@@ -93,7 +93,7 @@ if [ -f "Cargo.toml" ]; then
|
|
|
93
93
|
fi
|
|
94
94
|
fi
|
|
95
95
|
|
|
96
|
-
#
|
|
96
|
+
# -- Go -----------------------------------------------------------------
|
|
97
97
|
if [ -f "go.mod" ]; then
|
|
98
98
|
if command -v go &>/dev/null; then
|
|
99
99
|
echo "[shazam] Running go vet..."
|
|
@@ -113,7 +113,7 @@ if [ -f "go.mod" ]; then
|
|
|
113
113
|
fi
|
|
114
114
|
fi
|
|
115
115
|
|
|
116
|
-
#
|
|
116
|
+
# -- Python -------------------------------------------------------------
|
|
117
117
|
if [ -f "pyproject.toml" ] || [ -f "setup.py" ] || [ -f "requirements.txt" ]; then
|
|
118
118
|
# Type check (pyright or mypy)
|
|
119
119
|
if command -v pyright &>/dev/null; then
|
|
@@ -140,7 +140,7 @@ if [ -f "pyproject.toml" ] || [ -f "setup.py" ] || [ -f "requirements.txt" ]; th
|
|
|
140
140
|
fi
|
|
141
141
|
fi
|
|
142
142
|
|
|
143
|
-
#
|
|
143
|
+
# -- Summary ------------------------------------------------------------
|
|
144
144
|
if [ $ERRORS -gt 0 ]; then
|
|
145
145
|
echo "[shazam] FAIL: $ERRORS check(s) failed."
|
|
146
146
|
echo "[shazam] Fix errors or use 'git commit --no-verify' to bypass."
|
|
@@ -159,11 +159,13 @@ exit 0
|
|
|
159
159
|
*/
|
|
160
160
|
export function getGitHooksDir(projectRoot) {
|
|
161
161
|
try {
|
|
162
|
-
const hooksPath =
|
|
162
|
+
const hooksPath = execFileSync("git", ["rev-parse", "--git-path", "hooks"], {
|
|
163
163
|
cwd: projectRoot,
|
|
164
164
|
encoding: "utf-8",
|
|
165
165
|
timeout: 5000,
|
|
166
|
-
})
|
|
166
|
+
})
|
|
167
|
+
.toString()
|
|
168
|
+
.trim();
|
|
167
169
|
// If the path is relative, resolve against project root
|
|
168
170
|
if (hooksPath.startsWith("/")) {
|
|
169
171
|
return hooksPath;
|
|
@@ -171,6 +173,7 @@ export function getGitHooksDir(projectRoot) {
|
|
|
171
173
|
return resolve(projectRoot, hooksPath);
|
|
172
174
|
}
|
|
173
175
|
catch {
|
|
176
|
+
console.warn("[pi-shazam] getGitHooksDir: git rev-parse failed, falling back to .git/hooks");
|
|
174
177
|
// Fallback to .git/hooks for non-git directories
|
|
175
178
|
const gitDir = resolve(projectRoot, ".git");
|
|
176
179
|
return join(gitDir, "hooks");
|
|
@@ -276,20 +279,22 @@ export function removePreCommitHook(projectRoot) {
|
|
|
276
279
|
export function runPreCommitVerify(projectRoot) {
|
|
277
280
|
try {
|
|
278
281
|
// Check for uncommitted changes
|
|
279
|
-
const changedOutput =
|
|
282
|
+
const changedOutput = execFileSync("git", ["diff", "--cached", "--name-only", "--diff-filter=ACMR"], {
|
|
280
283
|
cwd: projectRoot,
|
|
281
284
|
encoding: "utf-8",
|
|
282
285
|
timeout: 5000,
|
|
283
|
-
})
|
|
286
|
+
})
|
|
287
|
+
.toString()
|
|
288
|
+
.trim();
|
|
284
289
|
if (!changedOutput) {
|
|
285
290
|
return { verdict: "PASS", message: "No staged changes to verify." };
|
|
286
291
|
}
|
|
287
292
|
const changedFiles = changedOutput.split("\n").filter(Boolean);
|
|
288
293
|
const errors = [];
|
|
289
|
-
//
|
|
294
|
+
// -- TypeScript/JavaScript ------------------------------------------
|
|
290
295
|
if (existsSync(join(projectRoot, "tsconfig.json"))) {
|
|
291
296
|
try {
|
|
292
|
-
|
|
297
|
+
execFileSync("npx", ["--no-install", "tsc", "--noEmit"], {
|
|
293
298
|
cwd: projectRoot,
|
|
294
299
|
encoding: "utf-8",
|
|
295
300
|
timeout: 60000,
|
|
@@ -301,10 +306,10 @@ export function runPreCommitVerify(projectRoot) {
|
|
|
301
306
|
errors.push(`TypeScript typecheck failed: ${String(stderr).slice(0, 500)}`);
|
|
302
307
|
}
|
|
303
308
|
}
|
|
304
|
-
//
|
|
309
|
+
// -- Rust -----------------------------------------------------------
|
|
305
310
|
if (existsSync(join(projectRoot, "Cargo.toml"))) {
|
|
306
311
|
try {
|
|
307
|
-
|
|
312
|
+
execFileSync("cargo", ["check"], {
|
|
308
313
|
cwd: projectRoot,
|
|
309
314
|
encoding: "utf-8",
|
|
310
315
|
timeout: 120000,
|
|
@@ -316,10 +321,10 @@ export function runPreCommitVerify(projectRoot) {
|
|
|
316
321
|
errors.push(`cargo check failed: ${String(stderr).slice(0, 500)}`);
|
|
317
322
|
}
|
|
318
323
|
}
|
|
319
|
-
//
|
|
324
|
+
// -- Go -------------------------------------------------------------
|
|
320
325
|
if (existsSync(join(projectRoot, "go.mod"))) {
|
|
321
326
|
try {
|
|
322
|
-
|
|
327
|
+
execFileSync("go", ["vet", "./..."], {
|
|
323
328
|
cwd: projectRoot,
|
|
324
329
|
encoding: "utf-8",
|
|
325
330
|
timeout: 60000,
|
|
@@ -331,12 +336,12 @@ export function runPreCommitVerify(projectRoot) {
|
|
|
331
336
|
errors.push(`go vet failed: ${String(stderr).slice(0, 500)}`);
|
|
332
337
|
}
|
|
333
338
|
}
|
|
334
|
-
//
|
|
339
|
+
// -- Python ---------------------------------------------------------
|
|
335
340
|
if (existsSync(join(projectRoot, "pyproject.toml")) || existsSync(join(projectRoot, "setup.py"))) {
|
|
336
341
|
// Try pyright first, then mypy
|
|
337
342
|
let pyrightAvailable = false;
|
|
338
343
|
try {
|
|
339
|
-
|
|
344
|
+
execFileSync("pyright", ["."], {
|
|
340
345
|
cwd: projectRoot,
|
|
341
346
|
encoding: "utf-8",
|
|
342
347
|
timeout: 60000,
|
|
@@ -358,7 +363,7 @@ export function runPreCommitVerify(projectRoot) {
|
|
|
358
363
|
}
|
|
359
364
|
if (!pyrightAvailable) {
|
|
360
365
|
try {
|
|
361
|
-
|
|
366
|
+
execFileSync("mypy", ["."], {
|
|
362
367
|
cwd: projectRoot,
|
|
363
368
|
encoding: "utf-8",
|
|
364
369
|
timeout: 60000,
|
|
@@ -371,7 +376,7 @@ export function runPreCommitVerify(projectRoot) {
|
|
|
371
376
|
}
|
|
372
377
|
}
|
|
373
378
|
}
|
|
374
|
-
//
|
|
379
|
+
// -- Summary --------------------------------------------------------
|
|
375
380
|
if (errors.length > 0) {
|
|
376
381
|
return {
|
|
377
382
|
verdict: "FAIL",
|