pi-shazam 0.1.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 (121) hide show
  1. package/dist/core/cache.d.ts +50 -0
  2. package/dist/core/cache.d.ts.map +1 -0
  3. package/dist/core/cache.js +116 -0
  4. package/dist/core/cache.js.map +1 -0
  5. package/dist/core/encoding.d.ts +25 -0
  6. package/dist/core/encoding.d.ts.map +1 -0
  7. package/dist/core/encoding.js +109 -0
  8. package/dist/core/encoding.js.map +1 -0
  9. package/dist/core/graph.d.ts +146 -0
  10. package/dist/core/graph.d.ts.map +1 -0
  11. package/dist/core/graph.js +224 -0
  12. package/dist/core/graph.js.map +1 -0
  13. package/dist/core/pagerank.d.ts +19 -0
  14. package/dist/core/pagerank.d.ts.map +1 -0
  15. package/dist/core/pagerank.js +106 -0
  16. package/dist/core/pagerank.js.map +1 -0
  17. package/dist/core/scanner.d.ts +19 -0
  18. package/dist/core/scanner.d.ts.map +1 -0
  19. package/dist/core/scanner.js +266 -0
  20. package/dist/core/scanner.js.map +1 -0
  21. package/dist/core/treesitter-queries.d.ts +19 -0
  22. package/dist/core/treesitter-queries.d.ts.map +1 -0
  23. package/dist/core/treesitter-queries.js +222 -0
  24. package/dist/core/treesitter-queries.js.map +1 -0
  25. package/dist/core/treesitter.d.ts +67 -0
  26. package/dist/core/treesitter.d.ts.map +1 -0
  27. package/dist/core/treesitter.js +624 -0
  28. package/dist/core/treesitter.js.map +1 -0
  29. package/dist/hooks/after-write.d.ts +32 -0
  30. package/dist/hooks/after-write.d.ts.map +1 -0
  31. package/dist/hooks/after-write.js +111 -0
  32. package/dist/hooks/after-write.js.map +1 -0
  33. package/dist/hooks/before-start.d.ts +23 -0
  34. package/dist/hooks/before-start.d.ts.map +1 -0
  35. package/dist/hooks/before-start.js +43 -0
  36. package/dist/hooks/before-start.js.map +1 -0
  37. package/dist/index.d.ts +13 -0
  38. package/dist/index.d.ts.map +1 -0
  39. package/dist/index.js +106 -0
  40. package/dist/index.js.map +1 -0
  41. package/dist/lsp/client.d.ts +77 -0
  42. package/dist/lsp/client.d.ts.map +1 -0
  43. package/dist/lsp/client.js +355 -0
  44. package/dist/lsp/client.js.map +1 -0
  45. package/dist/lsp/manager.d.ts +85 -0
  46. package/dist/lsp/manager.d.ts.map +1 -0
  47. package/dist/lsp/manager.js +362 -0
  48. package/dist/lsp/manager.js.map +1 -0
  49. package/dist/lsp/servers.d.ts +43 -0
  50. package/dist/lsp/servers.d.ts.map +1 -0
  51. package/dist/lsp/servers.js +140 -0
  52. package/dist/lsp/servers.js.map +1 -0
  53. package/dist/lsp/setup.d.ts +24 -0
  54. package/dist/lsp/setup.d.ts.map +1 -0
  55. package/dist/lsp/setup.js +140 -0
  56. package/dist/lsp/setup.js.map +1 -0
  57. package/dist/tools/call_chain.d.ts +9 -0
  58. package/dist/tools/call_chain.d.ts.map +1 -0
  59. package/dist/tools/call_chain.js +151 -0
  60. package/dist/tools/call_chain.js.map +1 -0
  61. package/dist/tools/check.d.ts +18 -0
  62. package/dist/tools/check.d.ts.map +1 -0
  63. package/dist/tools/check.js +141 -0
  64. package/dist/tools/check.js.map +1 -0
  65. package/dist/tools/codequery.d.ts +19 -0
  66. package/dist/tools/codequery.d.ts.map +1 -0
  67. package/dist/tools/codequery.js +128 -0
  68. package/dist/tools/codequery.js.map +1 -0
  69. package/dist/tools/codesearch.d.ts +8 -0
  70. package/dist/tools/codesearch.d.ts.map +1 -0
  71. package/dist/tools/codesearch.js +101 -0
  72. package/dist/tools/codesearch.js.map +1 -0
  73. package/dist/tools/file_detail.d.ts +9 -0
  74. package/dist/tools/file_detail.d.ts.map +1 -0
  75. package/dist/tools/file_detail.js +125 -0
  76. package/dist/tools/file_detail.js.map +1 -0
  77. package/dist/tools/fix.d.ts +25 -0
  78. package/dist/tools/fix.d.ts.map +1 -0
  79. package/dist/tools/fix.js +257 -0
  80. package/dist/tools/fix.js.map +1 -0
  81. package/dist/tools/hotspots.d.ts +9 -0
  82. package/dist/tools/hotspots.d.ts.map +1 -0
  83. package/dist/tools/hotspots.js +107 -0
  84. package/dist/tools/hotspots.js.map +1 -0
  85. package/dist/tools/impact.d.ts +14 -0
  86. package/dist/tools/impact.d.ts.map +1 -0
  87. package/dist/tools/impact.js +160 -0
  88. package/dist/tools/impact.js.map +1 -0
  89. package/dist/tools/orphan.d.ts +9 -0
  90. package/dist/tools/orphan.d.ts.map +1 -0
  91. package/dist/tools/orphan.js +124 -0
  92. package/dist/tools/orphan.js.map +1 -0
  93. package/dist/tools/overview.d.ts +9 -0
  94. package/dist/tools/overview.d.ts.map +1 -0
  95. package/dist/tools/overview.js +137 -0
  96. package/dist/tools/overview.js.map +1 -0
  97. package/dist/tools/ready.d.ts +18 -0
  98. package/dist/tools/ready.d.ts.map +1 -0
  99. package/dist/tools/ready.js +145 -0
  100. package/dist/tools/ready.js.map +1 -0
  101. package/dist/tools/refs.d.ts +9 -0
  102. package/dist/tools/refs.d.ts.map +1 -0
  103. package/dist/tools/refs.js +129 -0
  104. package/dist/tools/refs.js.map +1 -0
  105. package/dist/tools/routes.d.ts +8 -0
  106. package/dist/tools/routes.d.ts.map +1 -0
  107. package/dist/tools/routes.js +83 -0
  108. package/dist/tools/routes.js.map +1 -0
  109. package/dist/tools/state_map.d.ts +8 -0
  110. package/dist/tools/state_map.d.ts.map +1 -0
  111. package/dist/tools/state_map.js +95 -0
  112. package/dist/tools/state_map.js.map +1 -0
  113. package/dist/tools/symbol.d.ts +9 -0
  114. package/dist/tools/symbol.d.ts.map +1 -0
  115. package/dist/tools/symbol.js +84 -0
  116. package/dist/tools/symbol.js.map +1 -0
  117. package/dist/tools/verify.d.ts +24 -0
  118. package/dist/tools/verify.d.ts.map +1 -0
  119. package/dist/tools/verify.js +212 -0
  120. package/dist/tools/verify.js.map +1 -0
  121. package/package.json +70 -0
@@ -0,0 +1,24 @@
1
+ /**
2
+ * pi-shazam tools/verify — Post-edit diagnostics gate.
3
+ *
4
+ * Runs graph analysis → risk assessment → orphan detection → call-graph check.
5
+ * When LSP is available, also fetches diagnostics. Falls back to tree-sitter only
6
+ * when LSP is unavailable, annotated in output.
7
+ */
8
+ import type { ExtensionAPI } from "../types/pi-extension.js";
9
+ import type { RepoGraph } from "../core/graph.js";
10
+ export declare function registerVerify(pi: ExtensionAPI): void;
11
+ export interface VerifyOptions {
12
+ /** Quick mode: only basic stats, skip deep analysis */
13
+ quick?: boolean;
14
+ }
15
+ /**
16
+ * Run verification against the current graph.
17
+ * Returns a formatted text report.
18
+ */
19
+ export declare function executeVerify(graph: RepoGraph, projectRoot: string, options?: VerifyOptions): string;
20
+ /**
21
+ * Run verification and return structured JSON.
22
+ */
23
+ export declare function executeVerifyJson(graph: RepoGraph, projectRoot: string, options?: VerifyOptions): string;
24
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../tools/verify.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAIlD,wBAAgB,cAAc,CAAC,EAAE,EAAE,YAAY,GAAG,IAAI,CA+CrD;AAID,MAAM,WAAW,aAAa;IAC7B,uDAAuD;IACvD,KAAK,CAAC,EAAE,OAAO,CAAC;CAChB;AAID;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GACzB,MAAM,CA2FR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAChC,KAAK,EAAE,SAAS,EAChB,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,aAAkB,GACzB,MAAM,CAsCR"}
@@ -0,0 +1,212 @@
1
+ import { scanProject } from "../core/scanner.js";
2
+ import { diffBaseline, loadBaseline } from "../core/cache.js";
3
+ export function registerVerify(pi) {
4
+ pi.registerTool({
5
+ name: "shazam_verify",
6
+ label: "Verify Changes",
7
+ description: `\
8
+ MUST call after EVERY non-trivial edit or write. This is the evidence
9
+ gate — it runs git diff → risk assessment → LSP diagnostics
10
+ (pyright/tsc/rust-analyzer/gopls) → orphan symbol detection →
11
+ call-graph consistency check → contract risk analysis. All in one
12
+ pass.
13
+
14
+ If verify fails, your code has problems. Fix them BEFORE committing.
15
+ Use --quick for a 2s risk-only check after each edit. Use full verify
16
+ (no flag) before commit.
17
+
18
+ Scenario: after every edit. Before git commit. Before calling
19
+ goal_complete. When CI is red and you need local diagnostics.`,
20
+ parameters: pi.typebox.Object({
21
+ quick: pi.typebox.Optional(pi.typebox.Boolean()),
22
+ json: pi.typebox.Optional(pi.typebox.Boolean()),
23
+ }),
24
+ async execute(_toolCallId, params, _signal, _onUpdate, _ctx) {
25
+ const json = params.json ?? false;
26
+ const quick = params.quick ?? false;
27
+ const graph = scanProject(".");
28
+ if (json) {
29
+ return {
30
+ content: [
31
+ {
32
+ type: "text",
33
+ text: executeVerifyJson(graph, ".", { quick }),
34
+ },
35
+ ],
36
+ };
37
+ }
38
+ return {
39
+ content: [
40
+ {
41
+ type: "text",
42
+ text: executeVerify(graph, ".", { quick }),
43
+ },
44
+ ],
45
+ };
46
+ },
47
+ });
48
+ }
49
+ // ── Execute functions (testable without Pi) ────────────────────────────────
50
+ /**
51
+ * Run verification against the current graph.
52
+ * Returns a formatted text report.
53
+ */
54
+ export function executeVerify(graph, projectRoot, options = {}) {
55
+ const lines = [];
56
+ const quick = options.quick ?? false;
57
+ // ── Basic stats ──────────────────────────────────────────────────────
58
+ const symbolCount = graph.symbols.size;
59
+ const fileCount = graph.fileSymbols.size;
60
+ let edgeCount = 0;
61
+ for (const [, edges] of graph.outgoing) {
62
+ edgeCount += edges.length;
63
+ }
64
+ lines.push("## Verify Results");
65
+ lines.push("");
66
+ lines.push(`**Symbols:** ${symbolCount} | **Files:** ${fileCount} | **Edges:** ${edgeCount}`);
67
+ lines.push("");
68
+ // ── Baseline diff ────────────────────────────────────────────────────
69
+ const baseline = loadBaseline(projectRoot);
70
+ const diff = diffBaseline(graph, projectRoot);
71
+ if (baseline && diff) {
72
+ const added = diff.addedSymbols?.length ?? 0;
73
+ const removed = diff.removedSymbols?.length ?? 0;
74
+ const modified = diff.modifiedSymbols?.length ?? 0;
75
+ const totalChanges = added + removed + modified;
76
+ lines.push("### Baseline Diff");
77
+ if (totalChanges > 0) {
78
+ lines.push(`Changes since baseline: +${added} added, -${removed} removed, ~${modified} modified`);
79
+ }
80
+ else {
81
+ lines.push("No changes since baseline snapshot.");
82
+ }
83
+ lines.push("");
84
+ }
85
+ else if (!baseline) {
86
+ lines.push("### Baseline Diff", "", "No baseline snapshot found. Run `repomap cache save` to create one.", "");
87
+ }
88
+ // ── Orphan detection ─────────────────────────────────────────────────
89
+ const orphans = findOrphanSymbols(graph);
90
+ if (orphans.length > 0) {
91
+ lines.push("### Potential Orphan Symbols");
92
+ lines.push(`Found ${orphans.length} symbols with zero incoming references:`);
93
+ for (const orphan of orphans.slice(0, 10)) {
94
+ lines.push(`- ${orphan.kind} \`${orphan.name}\` — ${orphan.file}:${orphan.line}`);
95
+ }
96
+ if (orphans.length > 10) {
97
+ lines.push(` ... and ${orphans.length - 10} more`);
98
+ }
99
+ lines.push("");
100
+ }
101
+ else {
102
+ lines.push("### Orphan Symbols: None detected", "");
103
+ }
104
+ // ── Risk assessment ──────────────────────────────────────────────────
105
+ const risk = assessRisk(graph, diff, orphans);
106
+ lines.push("### Risk Level");
107
+ lines.push(`**${risk.level}** — ${risk.reason}`);
108
+ lines.push("");
109
+ // ── Quick mode: stop here ────────────────────────────────────────────
110
+ if (quick) {
111
+ lines.push("[Quick mode — skipped deep analysis]");
112
+ lines.push("");
113
+ }
114
+ // ── Tree-sitter parse status (full mode) ─────────────────────────────
115
+ if (!quick) {
116
+ lines.push("### Analysis");
117
+ lines.push(`Tree-sitter parsing: ${symbolCount} symbols extracted successfully.`);
118
+ lines.push("");
119
+ // LSP note
120
+ lines.push("*LSP enrichment not available in direct tool mode. Use repomap verify for full LSP diagnostics.*");
121
+ lines.push("");
122
+ }
123
+ return lines.join("\n");
124
+ }
125
+ /**
126
+ * Run verification and return structured JSON.
127
+ */
128
+ export function executeVerifyJson(graph, projectRoot, options = {}) {
129
+ const orphans = findOrphanSymbols(graph);
130
+ const diff = diffBaseline(graph, projectRoot);
131
+ const risk = assessRisk(graph, diff, orphans);
132
+ let edgeCount = 0;
133
+ for (const [, edges] of graph.outgoing) {
134
+ edgeCount += edges.length;
135
+ }
136
+ return JSON.stringify({
137
+ schema_version: "1.0",
138
+ command: "verify",
139
+ project: projectRoot,
140
+ status: "ok",
141
+ result: {
142
+ symbolCount: graph.symbols.size,
143
+ fileCount: graph.fileSymbols.size,
144
+ edgeCount,
145
+ riskLevel: risk.level,
146
+ riskReason: risk.reason,
147
+ orphanCount: orphans.length,
148
+ orphans: orphans.slice(0, 20).map((s) => ({
149
+ name: s.name,
150
+ kind: s.kind,
151
+ file: s.file,
152
+ line: s.line,
153
+ })),
154
+ baselineDiff: diff
155
+ ? {
156
+ addedSymbols: diff.addedSymbols?.length ?? 0,
157
+ removedSymbols: diff.removedSymbols?.length ?? 0,
158
+ modifiedSymbols: diff.modifiedSymbols?.length ?? 0,
159
+ }
160
+ : null,
161
+ quickMode: options.quick ?? false,
162
+ },
163
+ });
164
+ }
165
+ function assessRisk(_graph, diff, orphans) {
166
+ const totalChanges = (diff?.addedSymbols?.length ?? 0) +
167
+ (diff?.removedSymbols?.length ?? 0) +
168
+ (diff?.modifiedSymbols?.length ?? 0);
169
+ if (totalChanges === 0 && orphans.length === 0) {
170
+ return { level: "low", reason: "No changes detected, no orphan symbols." };
171
+ }
172
+ if (orphans.length > 10 || totalChanges > 50) {
173
+ return {
174
+ level: "high",
175
+ reason: `\${orphans.length} orphan symbols and \${totalChanges} graph changes detected.`,
176
+ };
177
+ }
178
+ if (orphans.length > 0 || totalChanges > 20) {
179
+ return {
180
+ level: "medium",
181
+ reason: `\${orphans.length} orphans and \${totalChanges} changes — review recommended.`,
182
+ };
183
+ }
184
+ return {
185
+ level: "low",
186
+ reason: `\${orphans.length} orphans, \${totalChanges} changes — acceptable.`,
187
+ };
188
+ }
189
+ function findOrphanSymbols(graph) {
190
+ const orphans = [];
191
+ for (const sym of graph.symbols.values()) {
192
+ const incoming = graph.incoming.get(sym.id);
193
+ if (!incoming || incoming.length === 0) {
194
+ // Skip entry-point-like symbols (exported, high pagerank)
195
+ if (sym.visibility === "exported" && sym.pagerank > 0.01)
196
+ continue;
197
+ // Skip anonymous functions and test files
198
+ if (sym.kind === "anonymous_function")
199
+ continue;
200
+ if (sym.file.includes("tests/") || sym.file.includes(".test."))
201
+ continue;
202
+ orphans.push({
203
+ name: sym.name,
204
+ kind: sym.kind,
205
+ file: sym.file,
206
+ line: sym.line,
207
+ });
208
+ }
209
+ }
210
+ return orphans;
211
+ }
212
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../tools/verify.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,70 @@
1
+ {
2
+ "name": "pi-shazam",
3
+ "version": "0.1.0",
4
+ "description": "Pi coding agent native codebase awareness extension - Shazam: power from multiple sources (repomap, pi-lens, serena MCP, tree-sitter, LSP) unified into one",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "files": [
9
+ "dist/**/*"
10
+ ],
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "typecheck": "tsc --noEmit",
14
+ "dev": "tsc --watch",
15
+ "prepublishOnly": "npm run build",
16
+ "test": "vitest run",
17
+ "test:watch": "vitest"
18
+ },
19
+ "keywords": [
20
+ "pi-package",
21
+ "pi-coding-agent",
22
+ "extension",
23
+ "codebase-analysis",
24
+ "tree-sitter",
25
+ "lsp",
26
+ "pagerank"
27
+ ],
28
+ "pi": {
29
+ "extensions": ["./dist"]
30
+ },
31
+ "author": "gjczone",
32
+ "license": "MIT",
33
+ "repository": {
34
+ "type": "git",
35
+ "url": "https://github.com/gjczone/pi-shazam.git"
36
+ },
37
+ "dependencies": {
38
+ "iconv-lite": "^0.6.3",
39
+ "tree-sitter": "^0.22.4",
40
+ "tree-sitter-c": "0.23.4",
41
+ "tree-sitter-c-sharp": "0.23.1",
42
+ "tree-sitter-cpp": "0.23.4",
43
+ "tree-sitter-css": "0.23.1",
44
+ "tree-sitter-go": "0.23.4",
45
+ "tree-sitter-html": "0.23.2",
46
+ "tree-sitter-java": "0.23.5",
47
+ "tree-sitter-javascript": "0.23.1",
48
+ "tree-sitter-json": "0.24.8",
49
+ "tree-sitter-python": "0.23.6",
50
+ "tree-sitter-ruby": "0.23.1",
51
+ "tree-sitter-rust": "0.23.2",
52
+ "tree-sitter-typescript": "0.23.2",
53
+ "vscode-jsonrpc": "^9.0.0",
54
+ "vscode-languageserver-protocol": "^3.17.0"
55
+ },
56
+ "peerDependencies": {
57
+ "typebox": "*"
58
+ },
59
+ "devDependencies": {
60
+ "@types/node": "^22.0.0",
61
+ "typescript": "^5.7.0",
62
+ "vitest": "^4.1.8"
63
+ },
64
+ "overrides": {
65
+ "tree-sitter": "^0.22.4"
66
+ },
67
+ "engines": {
68
+ "node": ">=18.0.0"
69
+ }
70
+ }