pi-shazam 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/core/baseline.d.ts +73 -0
  2. package/dist/core/baseline.d.ts.map +1 -0
  3. package/dist/core/baseline.js +169 -0
  4. package/dist/core/baseline.js.map +1 -0
  5. package/dist/core/git-hooks.d.ts +46 -0
  6. package/dist/core/git-hooks.d.ts.map +1 -0
  7. package/dist/core/git-hooks.js +183 -0
  8. package/dist/core/git-hooks.js.map +1 -0
  9. package/dist/core/output.d.ts.map +1 -1
  10. package/dist/core/output.js +28 -0
  11. package/dist/core/output.js.map +1 -1
  12. package/dist/hooks/after-write.d.ts +15 -13
  13. package/dist/hooks/after-write.d.ts.map +1 -1
  14. package/dist/hooks/after-write.js +235 -42
  15. package/dist/hooks/after-write.js.map +1 -1
  16. package/dist/hooks/before-start.d.ts +3 -0
  17. package/dist/hooks/before-start.d.ts.map +1 -1
  18. package/dist/hooks/before-start.js +79 -1
  19. package/dist/hooks/before-start.js.map +1 -1
  20. package/dist/hooks/pre-edit.d.ts +28 -0
  21. package/dist/hooks/pre-edit.d.ts.map +1 -0
  22. package/dist/hooks/pre-edit.js +119 -0
  23. package/dist/hooks/pre-edit.js.map +1 -0
  24. package/dist/hooks/shazam-guide.d.ts +2 -0
  25. package/dist/hooks/shazam-guide.d.ts.map +1 -1
  26. package/dist/hooks/shazam-guide.js +117 -5
  27. package/dist/hooks/shazam-guide.js.map +1 -1
  28. package/dist/hooks/tool-logger.d.ts +4 -6
  29. package/dist/hooks/tool-logger.d.ts.map +1 -1
  30. package/dist/hooks/tool-logger.js +16 -31
  31. package/dist/hooks/tool-logger.js.map +1 -1
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +70 -0
  34. package/dist/index.js.map +1 -1
  35. package/dist/tools/file_detail.d.ts.map +1 -1
  36. package/dist/tools/file_detail.js +83 -8
  37. package/dist/tools/file_detail.js.map +1 -1
  38. package/package.json +1 -1
@@ -0,0 +1,73 @@
1
+ /**
2
+ * pi-shazam core/baseline — In-memory session baseline for diff-aware verify.
3
+ *
4
+ * Captures project health at session start (LSP errors/warnings, orphan
5
+ * symbols, graph edges) so post-edit verify output can show what changed
6
+ * rather than just absolute numbers.
7
+ *
8
+ * The baseline is stored in-memory (not persisted across sessions) and
9
+ * resets on branch switch. If LSP is not ready at session start, the
10
+ * baseline is deferred to the first edit trigger.
11
+ */
12
+ import type { RepoGraph } from "./graph.js";
13
+ export interface SessionBaseline {
14
+ branch: string;
15
+ commit: string;
16
+ timestamp: string;
17
+ lspErrors: number;
18
+ lspWarnings: number;
19
+ orphanSymbols: number;
20
+ graphEdges: number;
21
+ symbolCount: number;
22
+ fileCount: number;
23
+ }
24
+ export interface BaselineDiff {
25
+ lspErrors: number;
26
+ lspWarnings: number;
27
+ orphanSymbols: number;
28
+ graphEdges: number;
29
+ symbolCount: number;
30
+ fileCount: number;
31
+ newOrphans: {
32
+ name: string;
33
+ kind: string;
34
+ file: string;
35
+ line: number;
36
+ }[];
37
+ removedEdges: number;
38
+ addedEdges: number;
39
+ }
40
+ /**
41
+ * Get the current session baseline.
42
+ */
43
+ export declare function getBaseline(): SessionBaseline | null;
44
+ /**
45
+ * Set the session baseline.
46
+ */
47
+ export declare function setBaseline(baseline: SessionBaseline): void;
48
+ /**
49
+ * Clear the session baseline (on branch switch).
50
+ */
51
+ export declare function clearBaseline(): void;
52
+ /**
53
+ * Check if a baseline is available.
54
+ */
55
+ export declare function hasBaseline(): boolean;
56
+ /**
57
+ * Create a baseline from the current graph state and LSP data.
58
+ */
59
+ export declare function createBaseline(graph: RepoGraph, lspErrors: number, lspWarnings: number, branch: string, commit: string): SessionBaseline;
60
+ /**
61
+ * Compute a diff between the current graph and the session baseline.
62
+ * Returns null if no baseline exists.
63
+ */
64
+ export declare function diffFromBaseline(graph: RepoGraph, lspErrors: number, lspWarnings: number): BaselineDiff | null;
65
+ /**
66
+ * Format a baseline diff section for text output.
67
+ */
68
+ export declare function formatBaselineDiff(diff: BaselineDiff): string;
69
+ /**
70
+ * Format a baseline summary section for tool output.
71
+ */
72
+ export declare function formatBaselineSummary(baseline: SessionBaseline): string;
73
+ //# sourceMappingURL=baseline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline.d.ts","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAI5C,MAAM,WAAW,eAAe;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACnB;AAOD;;GAEG;AACH,wBAAgB,WAAW,IAAI,eAAe,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAE3D;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAGpC;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,OAAO,CAErC;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,GACZ,eAAe,CA6BjB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA8B9G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA4B7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAUvE"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * pi-shazam core/baseline — In-memory session baseline for diff-aware verify.
3
+ *
4
+ * Captures project health at session start (LSP errors/warnings, orphan
5
+ * symbols, graph edges) so post-edit verify output can show what changed
6
+ * rather than just absolute numbers.
7
+ *
8
+ * The baseline is stored in-memory (not persisted across sessions) and
9
+ * resets on branch switch. If LSP is not ready at session start, the
10
+ * baseline is deferred to the first edit trigger.
11
+ */
12
+ // ── Session baseline state (in-memory) ────────────────────────────────────────
13
+ let _baseline = null;
14
+ let _previousOrphans = new Map();
15
+ /**
16
+ * Get the current session baseline.
17
+ */
18
+ export function getBaseline() {
19
+ return _baseline;
20
+ }
21
+ /**
22
+ * Set the session baseline.
23
+ */
24
+ export function setBaseline(baseline) {
25
+ _baseline = baseline;
26
+ }
27
+ /**
28
+ * Clear the session baseline (on branch switch).
29
+ */
30
+ export function clearBaseline() {
31
+ _baseline = null;
32
+ _previousOrphans = new Map();
33
+ }
34
+ /**
35
+ * Check if a baseline is available.
36
+ */
37
+ export function hasBaseline() {
38
+ return _baseline !== null;
39
+ }
40
+ /**
41
+ * Create a baseline from the current graph state and LSP data.
42
+ */
43
+ export function createBaseline(graph, lspErrors, lspWarnings, branch, commit) {
44
+ let edgeCount = 0;
45
+ for (const [, edges] of graph.outgoing) {
46
+ edgeCount += edges.length;
47
+ }
48
+ const orphanCount = countOrphans(graph);
49
+ const baseline = {
50
+ branch,
51
+ commit,
52
+ timestamp: new Date().toISOString(),
53
+ lspErrors,
54
+ lspWarnings,
55
+ orphanSymbols: orphanCount,
56
+ graphEdges: edgeCount,
57
+ symbolCount: graph.symbols.size,
58
+ fileCount: graph.fileSymbols.size,
59
+ };
60
+ _baseline = baseline;
61
+ // Cache current orphan set for future diff
62
+ _previousOrphans = new Map();
63
+ for (const orphan of findOrphans(graph)) {
64
+ _previousOrphans.set(orphan.name + orphan.file, orphan);
65
+ }
66
+ return baseline;
67
+ }
68
+ /**
69
+ * Compute a diff between the current graph and the session baseline.
70
+ * Returns null if no baseline exists.
71
+ */
72
+ export function diffFromBaseline(graph, lspErrors, lspWarnings) {
73
+ if (!_baseline)
74
+ return null;
75
+ let edgeCount = 0;
76
+ for (const [, edges] of graph.outgoing) {
77
+ edgeCount += edges.length;
78
+ }
79
+ const currentOrphans = findOrphans(graph);
80
+ const currentOrphanCount = currentOrphans.length;
81
+ // Find new orphans (not in previous baseline)
82
+ const newOrphans = currentOrphans.filter((o) => !_previousOrphans.has(o.name + o.file));
83
+ // Count edge changes
84
+ const previousEdges = _baseline.graphEdges;
85
+ const addedEdges = edgeCount > previousEdges ? edgeCount - previousEdges : 0;
86
+ const removedEdges = edgeCount < previousEdges ? previousEdges - edgeCount : 0;
87
+ return {
88
+ lspErrors: lspErrors - _baseline.lspErrors,
89
+ lspWarnings: lspWarnings - _baseline.lspWarnings,
90
+ orphanSymbols: currentOrphanCount - _baseline.orphanSymbols,
91
+ graphEdges: edgeCount - _baseline.graphEdges,
92
+ symbolCount: graph.symbols.size - _baseline.symbolCount,
93
+ fileCount: graph.fileSymbols.size - _baseline.fileCount,
94
+ newOrphans: newOrphans.slice(0, 20),
95
+ removedEdges,
96
+ addedEdges,
97
+ };
98
+ }
99
+ /**
100
+ * Format a baseline diff section for text output.
101
+ */
102
+ export function formatBaselineDiff(diff) {
103
+ const lines = [];
104
+ lines.push("### Changes from Session Baseline");
105
+ lines.push("");
106
+ const changes = [];
107
+ if (diff.lspErrors !== 0)
108
+ changes.push(`LSP errors: ${diff.lspErrors > 0 ? "+" : ""}${diff.lspErrors}`);
109
+ if (diff.lspWarnings !== 0)
110
+ changes.push(`LSP warnings: ${diff.lspWarnings > 0 ? "+" : ""}${diff.lspWarnings}`);
111
+ if (diff.orphanSymbols !== 0)
112
+ changes.push(`Orphans: ${diff.orphanSymbols > 0 ? "+" : ""}${diff.orphanSymbols}`);
113
+ if (diff.graphEdges !== 0)
114
+ changes.push(`Graph edges: ${diff.graphEdges > 0 ? "+" : ""}${diff.graphEdges}`);
115
+ if (diff.symbolCount !== 0)
116
+ changes.push(`Symbols: ${diff.symbolCount > 0 ? "+" : ""}${diff.symbolCount}`);
117
+ if (changes.length > 0) {
118
+ lines.push(changes.join(" | "));
119
+ }
120
+ else {
121
+ lines.push("No significant changes from baseline.");
122
+ }
123
+ if (diff.newOrphans.length > 0) {
124
+ lines.push("");
125
+ lines.push("### New Orphan Symbols");
126
+ for (const o of diff.newOrphans) {
127
+ lines.push(` - ${o.kind} \`${o.name}\` — ${o.file}:${o.line}`);
128
+ }
129
+ }
130
+ lines.push("");
131
+ return lines.join("\n");
132
+ }
133
+ /**
134
+ * Format a baseline summary section for tool output.
135
+ */
136
+ export function formatBaselineSummary(baseline) {
137
+ const lines = [];
138
+ lines.push("### Session Baseline (captured at session start)");
139
+ lines.push("");
140
+ lines.push(`Branch: ${baseline.branch} | Commit: ${baseline.commit.slice(0, 8)}`);
141
+ lines.push(`LSP errors: ${baseline.lspErrors} | LSP warnings: ${baseline.lspWarnings}`);
142
+ lines.push(`Orphans: ${baseline.orphanSymbols} | Graph edges: ${baseline.graphEdges}`);
143
+ lines.push(`Symbols: ${baseline.symbolCount} | Files: ${baseline.fileCount}`);
144
+ lines.push("");
145
+ return lines.join("\n");
146
+ }
147
+ // ── Helpers ─────────────────────────────────────────────────────────────────
148
+ function countOrphans(graph) {
149
+ return findOrphans(graph).length;
150
+ }
151
+ function findOrphans(graph) {
152
+ const orphans = [];
153
+ for (const sym of graph.symbols.values()) {
154
+ if (sym.file.includes("node_modules") || sym.file.includes(".git"))
155
+ continue;
156
+ const incoming = graph.incoming.get(sym.id);
157
+ if (!incoming || incoming.length === 0) {
158
+ if (sym.visibility === "exported" && sym.pagerank > 0.01)
159
+ continue;
160
+ if (sym.kind === "anonymous_function")
161
+ continue;
162
+ if (sym.file.includes("tests/") || sym.file.includes(".test."))
163
+ continue;
164
+ orphans.push({ name: sym.name, kind: sym.kind, file: sym.file, line: sym.line });
165
+ }
166
+ }
167
+ return orphans;
168
+ }
169
+ //# sourceMappingURL=baseline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * pi-shazam core/git-hooks — Git pre-commit hook integration.
3
+ *
4
+ * Installs a pre-commit hook that runs shazam_verify --preCommit
5
+ * before allowing a commit. Blocks commit on FAIL verdict.
6
+ *
7
+ * The hook is installed as .git/hooks/pre-commit in the project root.
8
+ * It calls npx shazam_verify (via the Pi extension's verify tool)
9
+ * through the MCP entry point.
10
+ */
11
+ /**
12
+ * Install the pre-commit git hook for the given project.
13
+ *
14
+ * Writes .git/hooks/pre-commit with the shazam verify script
15
+ * and makes it executable.
16
+ *
17
+ * @param projectRoot - Absolute path to the project root
18
+ * @returns The path to the installed hook file
19
+ */
20
+ export declare function installPreCommitHook(projectRoot: string): string;
21
+ /**
22
+ * Check if the pre-commit hook is installed for the given project.
23
+ *
24
+ * @param projectRoot - Absolute path to the project root
25
+ * @returns True if the shazam pre-commit hook is installed
26
+ */
27
+ export declare function isPreCommitHookInstalled(projectRoot: string): boolean;
28
+ /**
29
+ * Remove the installed pre-commit hook, restoring any backup if present.
30
+ *
31
+ * @param projectRoot - Absolute path to the project root
32
+ * @returns True if the hook was removed
33
+ */
34
+ export declare function removePreCommitHook(projectRoot: string): boolean;
35
+ /**
36
+ * Run pre-commit verification synchronously.
37
+ * Used by the pre-commit hook script.
38
+ *
39
+ * @param projectRoot - Absolute path to the project root
40
+ * @returns { verdict: "PASS" | "FAIL" | "WARN", message: string }
41
+ */
42
+ export declare function runPreCommitVerify(projectRoot: string): {
43
+ verdict: "PASS" | "FAIL" | "WARN";
44
+ message: string;
45
+ };
46
+ //# sourceMappingURL=git-hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.d.ts","sourceRoot":"","sources":["../../core/git-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AA8DH;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAwBhE;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAKrE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAqBhE;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,CAwC9G"}
@@ -0,0 +1,183 @@
1
+ /**
2
+ * pi-shazam core/git-hooks — Git pre-commit hook integration.
3
+ *
4
+ * Installs a pre-commit hook that runs shazam_verify --preCommit
5
+ * before allowing a commit. Blocks commit on FAIL verdict.
6
+ *
7
+ * The hook is installed as .git/hooks/pre-commit in the project root.
8
+ * It calls npx shazam_verify (via the Pi extension's verify tool)
9
+ * through the MCP entry point.
10
+ */
11
+ import { writeFileSync, chmodSync, existsSync, readFileSync } from "node:fs";
12
+ import { join, resolve } from "node:path";
13
+ import { execSync } from "node:child_process";
14
+ /**
15
+ * Pre-commit hook script content.
16
+ * Runs shazam_verify --preCommit and exits with 1 on failure.
17
+ */
18
+ const PRE_COMMIT_HOOK_CONTENT = `#!/bin/bash
19
+ # shazam pre-commit hook — auto-installed by pi-shazam
20
+ # Runs shazam_verify --preCommit before allowing a commit.
21
+ # Use 'git commit --no-verify' to bypass.
22
+
23
+ echo "[shazam] Running pre-commit verification..."
24
+
25
+ # Try to run via npx pi-shazam-mcp with a simple verify script
26
+ # Fallback path: try node directly
27
+ HOOK_DIR="$(cd "$(dirname "$0")/../.." && pwd)"
28
+
29
+ if command -v npx &>/dev/null; then
30
+ # Direct node invocation of the verify logic
31
+ cd "$HOOK_DIR" || exit 1
32
+
33
+ # Run git diff checks directly
34
+ CHANGED_FILES=$(git diff --cached --name-only --diff-filter=ACMR 2>/dev/null | wc -l)
35
+ if [ "$CHANGED_FILES" -eq 0 ]; then
36
+ echo "[shazam] No staged changes to verify."
37
+ exit 0
38
+ fi
39
+
40
+ echo "[shazam] Checking $CHANGED_FILES changed file(s)..."
41
+
42
+ # Run typecheck if available
43
+ if [ -f "package.json" ] && grep -q '"typecheck"' package.json 2>/dev/null; then
44
+ echo "[shazam] Running typecheck..."
45
+ npm run typecheck 2>/dev/null
46
+ TSC_EXIT=$?
47
+ if [ $TSC_EXIT -ne 0 ]; then
48
+ echo "[shazam] FAIL: TypeScript typecheck found errors."
49
+ echo "[shazam] Fix errors or use 'git commit --no-verify' to bypass."
50
+ exit 1
51
+ fi
52
+ fi
53
+
54
+ # Run tests for changed files if test script exists
55
+ if [ -f "package.json" ] && grep -q '"test"' package.json 2>/dev/null; then
56
+ echo "[shazam] Running tests for changed files..."
57
+ # For now, just run a quick test on changed areas
58
+ # Full test suite is too slow for pre-commit
59
+ fi
60
+
61
+ echo "[shazam] PASS: Pre-commit checks passed."
62
+ exit 0
63
+ else
64
+ echo "[shazam] WARN: npx not found, skipping pre-commit verification."
65
+ echo "[shazam] Install Node.js to enable pre-commit verification."
66
+ exit 0
67
+ fi
68
+ `;
69
+ /**
70
+ * Install the pre-commit git hook for the given project.
71
+ *
72
+ * Writes .git/hooks/pre-commit with the shazam verify script
73
+ * and makes it executable.
74
+ *
75
+ * @param projectRoot - Absolute path to the project root
76
+ * @returns The path to the installed hook file
77
+ */
78
+ export function installPreCommitHook(projectRoot) {
79
+ const gitDir = resolve(projectRoot, ".git");
80
+ const hooksDir = join(gitDir, "hooks");
81
+ const hookPath = join(hooksDir, "pre-commit");
82
+ // Ensure .git/hooks directory exists
83
+ if (!existsSync(hooksDir)) {
84
+ throw new Error(`Git hooks directory not found: ${hooksDir}. Is this a git repository?`);
85
+ }
86
+ // Check if hook already exists (don't overwrite custom hooks)
87
+ if (existsSync(hookPath)) {
88
+ const existingContent = readFileSync(hookPath, "utf-8");
89
+ if (!existingContent.includes("shazam")) {
90
+ // Backup existing hook
91
+ const backupPath = join(hooksDir, "pre-commit.shazam-backup");
92
+ writeFileSync(backupPath, existingContent, "utf-8");
93
+ }
94
+ }
95
+ writeFileSync(hookPath, PRE_COMMIT_HOOK_CONTENT, "utf-8");
96
+ chmodSync(hookPath, 0o755);
97
+ return hookPath;
98
+ }
99
+ /**
100
+ * Check if the pre-commit hook is installed for the given project.
101
+ *
102
+ * @param projectRoot - Absolute path to the project root
103
+ * @returns True if the shazam pre-commit hook is installed
104
+ */
105
+ export function isPreCommitHookInstalled(projectRoot) {
106
+ const hookPath = join(resolve(projectRoot, ".git"), "hooks", "pre-commit");
107
+ if (!existsSync(hookPath))
108
+ return false;
109
+ const content = readFileSync(hookPath, "utf-8");
110
+ return content.includes("shazam");
111
+ }
112
+ /**
113
+ * Remove the installed pre-commit hook, restoring any backup if present.
114
+ *
115
+ * @param projectRoot - Absolute path to the project root
116
+ * @returns True if the hook was removed
117
+ */
118
+ export function removePreCommitHook(projectRoot) {
119
+ const gitDir = resolve(projectRoot, ".git");
120
+ const hooksDir = join(gitDir, "hooks");
121
+ const hookPath = join(hooksDir, "pre-commit");
122
+ const backupPath = join(hooksDir, "pre-commit.shazam-backup");
123
+ if (!existsSync(hookPath))
124
+ return false;
125
+ const content = readFileSync(hookPath, "utf-8");
126
+ if (!content.includes("shazam"))
127
+ return false;
128
+ // Restore backup if exists
129
+ if (existsSync(backupPath)) {
130
+ const backupContent = readFileSync(backupPath, "utf-8");
131
+ writeFileSync(hookPath, backupContent, "utf-8");
132
+ chmodSync(hookPath, 0o755);
133
+ }
134
+ else {
135
+ // Remove the shazam-installed hook
136
+ writeFileSync(hookPath, "", "utf-8");
137
+ }
138
+ return true;
139
+ }
140
+ /**
141
+ * Run pre-commit verification synchronously.
142
+ * Used by the pre-commit hook script.
143
+ *
144
+ * @param projectRoot - Absolute path to the project root
145
+ * @returns { verdict: "PASS" | "FAIL" | "WARN", message: string }
146
+ */
147
+ export function runPreCommitVerify(projectRoot) {
148
+ try {
149
+ // Check for uncommitted changes
150
+ const changedOutput = execSync("git diff --cached --name-only --diff-filter=ACMR 2>/dev/null", { cwd: projectRoot, encoding: "utf-8", timeout: 5000 }).trim();
151
+ if (!changedOutput) {
152
+ return { verdict: "PASS", message: "No staged changes to verify." };
153
+ }
154
+ const changedFiles = changedOutput.split("\n").filter(Boolean);
155
+ // Run typecheck if package.json has typecheck script
156
+ if (existsSync(join(projectRoot, "package.json"))) {
157
+ try {
158
+ execSync("npm run typecheck 2>/dev/null", {
159
+ cwd: projectRoot,
160
+ encoding: "utf-8",
161
+ timeout: 60000,
162
+ });
163
+ }
164
+ catch {
165
+ return {
166
+ verdict: "FAIL",
167
+ message: `TypeScript typecheck failed for ${changedFiles.length} staged file(s). Fix type errors or use 'git commit --no-verify' to bypass.`,
168
+ };
169
+ }
170
+ }
171
+ return {
172
+ verdict: "PASS",
173
+ message: `All checks passed for ${changedFiles.length} staged file(s).`,
174
+ };
175
+ }
176
+ catch (err) {
177
+ return {
178
+ verdict: "WARN",
179
+ message: `Pre-commit verification error: ${err instanceof Error ? err.message : String(err)}`,
180
+ };
181
+ }
182
+ }
183
+ //# sourceMappingURL=git-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-hooks.js","sourceRoot":"","sources":["../../core/git-hooks.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../core/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC;IAC5D,cAAc,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,kBAAkB,GAAG,IAAI,CAAC;CAChE;AAYD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAQvD;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAM5D;AAID;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAqQhC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAYzE;AAWD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,kBAAkB,EAAE,CAY/G;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAO7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,CAKR;AAID;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAUnG;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AASD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAqCzE"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../core/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAK5C,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,MAAM,CAAC;AAE5D,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,SAAS,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,QAAQ;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,OAAO,CAAC;IAC5D,cAAc,EAAE,CAAC,GAAG,EAAE,WAAW,KAAK,kBAAkB,GAAG,IAAI,CAAC;CAChE;AAYD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAQvD;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAM5D;AAID;;;;GAIG;AACH,eAAO,MAAM,UAAU,EAAE,QAAQ,EAkShC,CAAC;AAEF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAYzE;AAWD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,GAAG,kBAAkB,EAAE,CAY/G;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,GAAG,MAAM,CAO7F;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAIhG;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,aAAa,EAAE,MAAM,EACrB,aAAa,EAAE,MAAM,GAAG,IAAI,EAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,GACxB,MAAM,CAKR;AAID;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAUnG;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AASD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAqCzE"}
@@ -158,6 +158,34 @@ export const NEXT_RULES = [
158
158
  level: "also",
159
159
  }),
160
160
  },
161
+ {
162
+ forTools: ["call_chain"],
163
+ condition: (_ctx, graph) => graph === undefined || hasTestFiles(graph),
164
+ recommendation: () => ({
165
+ tool: "find_tests",
166
+ label: "Find tests for affected modules",
167
+ level: "also",
168
+ }),
169
+ },
170
+ // overview (enhanced)
171
+ {
172
+ forTools: ["overview"],
173
+ condition: (_ctx, graph) => graph === undefined || hasTestFiles(graph),
174
+ recommendation: () => ({
175
+ tool: "find_tests",
176
+ label: "Discover test layout",
177
+ level: "also",
178
+ }),
179
+ },
180
+ {
181
+ forTools: ["overview"],
182
+ condition: (_ctx, graph) => graph === undefined || hasHierarchyKinds(graph),
183
+ recommendation: () => ({
184
+ tool: "type_hierarchy",
185
+ label: "Explore type hierarchy",
186
+ level: "also",
187
+ }),
188
+ },
161
189
  // hover (type_hierarchy suppressed when graph has no class/interface)
162
190
  {
163
191
  forTools: ["hover"],
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../../core/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../core/output.ts"],"names":[],"mappings":"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"}
@@ -2,31 +2,33 @@
2
2
  * pi-shazam hooks/after-write — Auto-verify after write/edit operations.
3
3
  *
4
4
  * Registered on the `tool_result` event. When the LLM writes or edits a file,
5
- * this hook automatically runs diagnostics (scan + verify) and sends findings
6
- * back to the conversation.
7
- */
8
- import type { ExtensionAPI } from "../types/pi-extension.js";
9
- /**
10
- * Determine if a tool result should trigger automatic verification.
5
+ * this hook automatically runs diagnostics and sends diff-aware findings.
11
6
  *
12
- * @param toolName - Name of the tool that was executed
13
- * @param isError - Whether the tool execution resulted in an error
14
- * @returns true if verification should run
7
+ * Features:
8
+ * - Per-file git diff parsing (which files changed, what kind of changes)
9
+ * - Graph diff against session baseline (new orphans, edge changes)
10
+ * - Block on FAIL-level issues (LSP errors detected)
11
+ * - Context-aware recommendations based on findings
15
12
  */
16
- export declare function shouldTriggerVerify(toolName: string, isError: boolean): boolean;
13
+ import type { ExtensionAPI } from "../types/pi-extension.js";
17
14
  /**
18
15
  * Handle a write/edit tool result by running diagnostics and reporting findings.
19
16
  *
20
17
  * @param toolName - The tool that was executed (write or edit)
21
18
  * @param projectRoot - Project root directory
22
- * @returns Diagnostic findings as a formatted text string
19
+ * @returns Diagnostic findings as a formatted text string with verdict
23
20
  */
24
- export declare function handleWriteResult(toolName: string, projectRoot: string): string;
21
+ export declare function handleWriteResult(toolName: string, projectRoot: string): {
22
+ text: string;
23
+ verdict: "PASS" | "WARN" | "FAIL";
24
+ };
25
25
  /**
26
26
  * Register the after-write hook on the Pi extension API.
27
27
  *
28
28
  * On `tool_result` for write/edit operations, runs diagnostics and sends
29
- * findings via pi.sendMessage().
29
+ * findings via pi.sendMessage(). Optionally blocks on FAIL verdict
30
+ * to prevent the LLM from continuing with broken code.
30
31
  */
32
+ export declare function shouldTriggerVerify(toolName: string, isError: boolean): boolean;
31
33
  export declare function registerAfterWriteHook(pi: ExtensionAPI): void;
32
34
  //# sourceMappingURL=after-write.d.ts.map