pi-shazam 0.4.1 → 0.5.1
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 +123 -83
- package/dist/core/baseline.js +2 -2
- package/dist/core/baseline.js.map +1 -1
- package/dist/core/cache.d.ts +15 -12
- package/dist/core/cache.d.ts.map +1 -1
- package/dist/core/cache.js +10 -21
- package/dist/core/cache.js.map +1 -1
- package/dist/core/encoding.d.ts +5 -2
- package/dist/core/encoding.d.ts.map +1 -1
- package/dist/core/encoding.js +107 -22
- package/dist/core/encoding.js.map +1 -1
- package/dist/core/filter.d.ts +2 -0
- package/dist/core/filter.d.ts.map +1 -1
- package/dist/core/filter.js +33 -0
- package/dist/core/filter.js.map +1 -1
- package/dist/core/git-hooks.d.ts +15 -4
- package/dist/core/git-hooks.d.ts.map +1 -1
- package/dist/core/git-hooks.js +230 -58
- package/dist/core/git-hooks.js.map +1 -1
- package/dist/core/graph.d.ts +4 -17
- package/dist/core/graph.d.ts.map +1 -1
- package/dist/core/graph.js +25 -32
- package/dist/core/graph.js.map +1 -1
- package/dist/core/output.d.ts +3 -0
- package/dist/core/output.d.ts.map +1 -1
- package/dist/core/output.js +9 -5
- package/dist/core/output.js.map +1 -1
- package/dist/core/pagerank.d.ts.map +1 -1
- package/dist/core/pagerank.js +12 -0
- package/dist/core/pagerank.js.map +1 -1
- package/dist/core/scanner.d.ts.map +1 -1
- package/dist/core/scanner.js +162 -58
- package/dist/core/scanner.js.map +1 -1
- package/dist/core/treesitter-queries.d.ts +0 -3
- package/dist/core/treesitter-queries.d.ts.map +1 -1
- package/dist/core/treesitter-queries.js +0 -19
- package/dist/core/treesitter-queries.js.map +1 -1
- package/dist/core/treesitter.d.ts +1 -2
- package/dist/core/treesitter.d.ts.map +1 -1
- package/dist/core/treesitter.js +1 -37
- package/dist/core/treesitter.js.map +1 -1
- package/dist/hooks/before-start.d.ts +13 -2
- package/dist/hooks/before-start.d.ts.map +1 -1
- package/dist/hooks/before-start.js +44 -10
- package/dist/hooks/before-start.js.map +1 -1
- package/dist/hooks/pre-edit.d.ts.map +1 -1
- package/dist/hooks/pre-edit.js +11 -1
- package/dist/hooks/pre-edit.js.map +1 -1
- package/dist/hooks/shazam-guide.d.ts.map +1 -1
- package/dist/hooks/shazam-guide.js +2 -26
- 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 +6 -2
- package/dist/hooks/tool-logger.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +26 -7
- package/dist/index.js.map +1 -1
- package/dist/lsp/client.d.ts +45 -9
- package/dist/lsp/client.d.ts.map +1 -1
- package/dist/lsp/client.js +249 -53
- package/dist/lsp/client.js.map +1 -1
- package/dist/lsp/manager.d.ts +9 -4
- package/dist/lsp/manager.d.ts.map +1 -1
- package/dist/lsp/manager.js +126 -66
- package/dist/lsp/manager.js.map +1 -1
- package/dist/lsp/servers.js +10 -10
- package/dist/lsp/servers.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 +23 -15
- package/dist/mcp/tools.js.map +1 -1
- package/dist/tools/_context.d.ts +5 -0
- package/dist/tools/_context.d.ts.map +1 -1
- package/dist/tools/_context.js +19 -0
- package/dist/tools/_context.js.map +1 -1
- package/dist/tools/_factory.d.ts.map +1 -1
- package/dist/tools/_factory.js +11 -1
- package/dist/tools/_factory.js.map +1 -1
- package/dist/tools/codesearch.d.ts +17 -3
- package/dist/tools/codesearch.d.ts.map +1 -1
- package/dist/tools/codesearch.js +39 -20
- package/dist/tools/codesearch.js.map +1 -1
- package/dist/tools/file_detail.d.ts +0 -7
- package/dist/tools/file_detail.d.ts.map +1 -1
- package/dist/tools/file_detail.js +55 -0
- package/dist/tools/file_detail.js.map +1 -1
- package/dist/tools/find_tests.d.ts +1 -0
- package/dist/tools/find_tests.d.ts.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 +1 -0
- package/dist/tools/fix.d.ts.map +1 -1
- package/dist/tools/fix.js +236 -4
- package/dist/tools/fix.js.map +1 -1
- package/dist/tools/hover.d.ts +5 -2
- package/dist/tools/hover.d.ts.map +1 -1
- package/dist/tools/hover.js +178 -5
- package/dist/tools/hover.js.map +1 -1
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +12 -0
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/lsp_enrich.d.ts +14 -15
- package/dist/tools/lsp_enrich.d.ts.map +1 -1
- package/dist/tools/lsp_enrich.js +27 -38
- package/dist/tools/lsp_enrich.js.map +1 -1
- package/dist/tools/overview.d.ts.map +1 -1
- package/dist/tools/overview.js +14 -7
- package/dist/tools/overview.js.map +1 -1
- package/dist/tools/rename_symbol.d.ts +9 -9
- package/dist/tools/rename_symbol.d.ts.map +1 -1
- package/dist/tools/rename_symbol.js +165 -16
- package/dist/tools/rename_symbol.js.map +1 -1
- package/dist/tools/safe_delete.d.ts +1 -0
- package/dist/tools/safe_delete.d.ts.map +1 -1
- package/dist/tools/safe_delete.js +1 -1
- package/dist/tools/safe_delete.js.map +1 -1
- package/dist/tools/type_hierarchy.d.ts +2 -1
- package/dist/tools/type_hierarchy.d.ts.map +1 -1
- package/dist/tools/type_hierarchy.js +80 -25
- package/dist/tools/type_hierarchy.js.map +1 -1
- package/dist/tools/verify.d.ts +1 -0
- package/dist/tools/verify.d.ts.map +1 -1
- package/dist/tools/verify.js +94 -54
- package/dist/tools/verify.js.map +1 -1
- package/package.json +7 -3
- package/dist/hooks/after-write.d.ts +0 -34
- package/dist/hooks/after-write.d.ts.map +0 -1
- package/dist/hooks/after-write.js +0 -307
- package/dist/hooks/after-write.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,133 +1,154 @@
|
|
|
1
1
|
# pi-shazam
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> **Pi coding agent native codebase awareness toolkit** — 14 structural analysis tools built natively for Pi agent. MCP support available for non-Pi agents (Cursor, Claude Desktop, Windsurf, etc.)
|
|
4
4
|
|
|
5
5
|
[](https://www.npmjs.com/package/pi-shazam)
|
|
6
6
|
[](https://github.com/gjczone/pi-shazam/actions/workflows/ci.yml)
|
|
7
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
8
|
|
|
8
|
-
## What It
|
|
9
|
+
## What It Does
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
**pi-shazam** is a native codebase analysis toolkit built for the **Pi coding agent**. It provides 14 structural analysis tools that help AI agents understand project architecture before reading code.
|
|
11
12
|
|
|
12
|
-
pi-shazam
|
|
13
|
+
For non-Pi agents, pi-shazam also exposes the same tools via **MCP (Model Context Protocol)**. Supported MCP clients include Cursor, Claude Desktop, Windsurf, Qoder, Kimi Code, and more. **Note: the MCP interface is a compatibility layer — the primary and recommended deployment model is as a native Pi extension.**
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
- "What will break if I change this file?" → `shazam_impact`
|
|
16
|
-
- "Who calls this function?" → `shazam_call_chain`
|
|
17
|
-
- "Did my edit introduce errors?" → `shazam_verify`
|
|
15
|
+
## Core Capabilities
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
- **Tree-sitter parsing** — 14 programming languages, full symbol dependency graph
|
|
18
|
+
- **PageRank ranking** — Identify core files and key symbols
|
|
19
|
+
- **LSP integration** — Type checking, diagnostics, type hierarchy (5 languages)
|
|
20
|
+
- **Incremental analysis** — Baseline comparison, focus on changes
|
|
21
|
+
- **Smart verification** — Post-edit verification with PASS/WARN/FAIL verdict
|
|
20
22
|
|
|
21
|
-
##
|
|
23
|
+
## Quick Start
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
### Pi Agent (Default — Recommended)
|
|
26
|
+
|
|
27
|
+
**This is the primary installation method.** pi-shazam is designed and optimized for Pi agent first.
|
|
24
28
|
|
|
25
29
|
```bash
|
|
26
30
|
pi install npm:pi-shazam
|
|
27
31
|
```
|
|
28
32
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
## Also: MCP Server
|
|
33
|
+
After installation, all 14 analysis tools register as native Pi tools alongside `read`, `write`, and `bash`. Automatic hooks inject project structure into system prompts, verify code after edits, and log tool usage. **Full hook lifecycle (before_agent_start, session_start, session_shutdown, tool_call, tool_result) available only in Pi mode.**
|
|
32
34
|
|
|
33
|
-
|
|
35
|
+
### MCP (For Non-Pi Agents Only)
|
|
34
36
|
|
|
35
|
-
|
|
37
|
+
Use this only if you are **not** using Pi agent. The MCP interface provides the same 14 tools but without Pi-specific hooks and lifecycle integration.
|
|
36
38
|
|
|
37
39
|
```json
|
|
38
40
|
{
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
41
|
+
"mcpServers": {
|
|
42
|
+
"pi-shazam": {
|
|
43
|
+
"command": "npx",
|
|
44
|
+
"args": ["pi-shazam-mcp"]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
45
47
|
}
|
|
46
48
|
```
|
|
47
49
|
|
|
48
|
-
|
|
50
|
+
Compatible with any MCP-capable client. Same analysis engine, JSON-based tool interface.
|
|
49
51
|
|
|
50
52
|
## Tools
|
|
51
53
|
|
|
52
|
-
### Query (
|
|
53
|
-
|
|
54
|
-
| Tool
|
|
55
|
-
|
|
56
|
-
| `shazam_overview`
|
|
57
|
-
| `shazam_impact`
|
|
58
|
-
| `shazam_codesearch`
|
|
59
|
-
| `shazam_symbol`
|
|
60
|
-
| `shazam_hover`
|
|
61
|
-
| `shazam_file_detail`
|
|
62
|
-
| `shazam_call_chain`
|
|
63
|
-
| `shazam_find_tests`
|
|
64
|
-
| `shazam_hotspots`
|
|
65
|
-
| `shazam_type_hierarchy` | Class/interface inheritance chain
|
|
54
|
+
### Query (Read-Only)
|
|
55
|
+
|
|
56
|
+
| Tool | What It Does |
|
|
57
|
+
|------|--------------|
|
|
58
|
+
| `shazam_overview` | Project structure, top-10 core files by PageRank, key dependencies, recent commits |
|
|
59
|
+
| `shazam_impact` | Change impact analysis: affected files, symbols, tests |
|
|
60
|
+
| `shazam_codesearch` | BM25 symbol search — ranked alternative to grep |
|
|
61
|
+
| `shazam_symbol` | Symbol definition, signature, callers, callees |
|
|
62
|
+
| `shazam_hover` | Type signatures and JSDoc — rich info from LSP |
|
|
63
|
+
| `shazam_file_detail` | All symbols in a file: signatures, PageRank, call counts, LSP hierarchy |
|
|
64
|
+
| `shazam_call_chain` | Full upstream/downstream call graph |
|
|
65
|
+
| `shazam_find_tests` | Find test files covering a module |
|
|
66
|
+
| `shazam_hotspots` | Files ranked by complexity — where bugs hurt most |
|
|
67
|
+
| `shazam_type_hierarchy` | Class/interface inheritance chain |
|
|
66
68
|
|
|
67
69
|
### Write & Verify
|
|
68
70
|
|
|
69
|
-
| Tool
|
|
70
|
-
|
|
71
|
-
| `shazam_verify`
|
|
72
|
-
| `shazam_fix`
|
|
73
|
-
| `shazam_rename_symbol` | Safe project-wide rename
|
|
74
|
-
| `shazam_safe_delete`
|
|
71
|
+
| Tool | What It Does |
|
|
72
|
+
|------|--------------|
|
|
73
|
+
| `shazam_verify` | Post-edit verification: LSP diagnostics + risk assessment + orphan detection |
|
|
74
|
+
| `shazam_fix` | Auto-fix format issues (prettier, biome, eslint, ruff, gofmt) |
|
|
75
|
+
| `shazam_rename_symbol` | Safe project-wide rename — verify references first |
|
|
76
|
+
| `shazam_safe_delete` | Delete with zero-reference confirmation |
|
|
77
|
+
|
|
78
|
+
## Platform Support
|
|
79
|
+
|
|
80
|
+
### Pi Agent Features
|
|
81
|
+
|
|
82
|
+
| Hook | Trigger | What It Does |
|
|
83
|
+
|------|---------|--------------|
|
|
84
|
+
| `before_agent_start` | Agent starts | Inject project structure overview into system prompt |
|
|
85
|
+
| `shazam-guide` | Key lifecycle | Guide agent to use tools at the right moments |
|
|
86
|
+
| `pre-edit-guard` | Before write | Detect multi-file edits, suggest `shazam_impact` first |
|
|
87
|
+
|
|
88
|
+
Additional commands: `/shazam-setup`, `/shazam-doctor`, `/shazam-install-git-hooks`, etc.
|
|
89
|
+
|
|
90
|
+
### MCP Client Support
|
|
91
|
+
|
|
92
|
+
pi-shazam's MCP server supports all MCP-compatible clients:
|
|
93
|
+
|
|
94
|
+
- **Cursor** — Built-in MCP support
|
|
95
|
+
- **Claude Desktop** — Via configuration file
|
|
96
|
+
- **Windsurf** — Native MCP support
|
|
97
|
+
- **Qoder** — AI coding assistant
|
|
98
|
+
- **Kimi Code** — Moonshot AI coding assistant
|
|
99
|
+
- **Others** — Any tool implementing MCP protocol
|
|
100
|
+
|
|
101
|
+
## Platform & Build
|
|
75
102
|
|
|
76
|
-
|
|
103
|
+
### npm Auto-Build
|
|
77
104
|
|
|
78
|
-
|
|
105
|
+
pi-shazam is published via npm with automatic platform support:
|
|
79
106
|
|
|
80
|
-
|
|
|
81
|
-
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
| `shazam-guide` | Key lifecycle events | Nudges agent to use shazam tools at the right moments |
|
|
85
|
-
| `tool-logger` | Every shazam call | Logs usage to `~/.pi/hooks/audit/shazam-calls.log` for optimization |
|
|
86
|
-
| `pre-edit-guard` | Before write/edit | Detects multi-file edits and suggests `shazam_impact` first |
|
|
107
|
+
| Platform | Architecture | Status |
|
|
108
|
+
|----------|--------------|--------|
|
|
109
|
+
| **Linux** | x64, arm64 | Fully supported |
|
|
110
|
+
| **macOS** | x64 (Intel), arm64 (Apple Silicon) | Fully supported |
|
|
87
111
|
|
|
88
|
-
|
|
89
|
-
`/shazam-install-git-hooks` (pre-commit hook), `/shazam-remove-git-hooks` (undo),
|
|
90
|
-
and `/shazam-pre-commit-verify` (internal hook script).
|
|
112
|
+
> **Note**: Windows is not supported due to path handling differences.
|
|
91
113
|
|
|
92
|
-
|
|
114
|
+
### Dependencies
|
|
93
115
|
|
|
94
|
-
|
|
116
|
+
pi-shazam uses `tree-sitter` for code parsing, a native Node.js module. npm automatically compiles binaries for your platform during installation — no manual steps required.
|
|
95
117
|
|
|
96
|
-
|
|
118
|
+
Supported Node.js versions: **>= 18.0.0**
|
|
97
119
|
|
|
98
|
-
|
|
120
|
+
### Community Format/Version Support
|
|
121
|
+
|
|
122
|
+
- **TypeScript/JavaScript**: `.ts`, `.tsx`, `.mts`, `.cts`, `.js`, `.jsx`, `.mjs`, `.cjs`
|
|
123
|
+
- **Python**: `.py`, `.pyi`, `.pyx`, `.pxd`
|
|
124
|
+
- **Rust**: `.rs`
|
|
125
|
+
- **Go**: `.go`
|
|
126
|
+
- **Java**: `.java`
|
|
127
|
+
- **C/C++**: `.c`, `.cpp`, `.h`, `.hpp`
|
|
128
|
+
- **C#**: `.cs`
|
|
129
|
+
- **Ruby**: `.rb`
|
|
130
|
+
- **Web**: `.css`, `.html`
|
|
131
|
+
- **Data formats**: `.json`, `.yaml`, `.yml`
|
|
99
132
|
|
|
100
133
|
## Architecture
|
|
101
134
|
|
|
102
135
|
```
|
|
103
136
|
pi-shazam (npm package)
|
|
104
|
-
├── Pi
|
|
105
|
-
│ index.ts ──tools/*.ts
|
|
106
|
-
│ │ │
|
|
107
|
-
│ └──── core/ + lsp/
|
|
108
|
-
│ (shared,
|
|
137
|
+
├── Pi Extension MCP Server
|
|
138
|
+
│ index.ts ──tools/*.ts mcp/entry.ts ──mcp/tools.ts
|
|
139
|
+
│ │ │ │ │
|
|
140
|
+
│ └──── core/ + lsp/ ───────────────┘──────────────┘
|
|
141
|
+
│ (shared core, zero duplication)
|
|
109
142
|
│
|
|
110
|
-
├── hooks/
|
|
111
|
-
│ ├── before-start.ts
|
|
112
|
-
│ ├──
|
|
113
|
-
│ ├──
|
|
114
|
-
│
|
|
115
|
-
│ └── tool-logger.ts usage analytics
|
|
143
|
+
├── hooks/ Automatic hooks
|
|
144
|
+
│ ├── before-start.ts Inject project overview
|
|
145
|
+
│ ├── pre-edit.ts Multi-file edit protection
|
|
146
|
+
│ ├── shazam-guide.ts Tool usage guidance
|
|
147
|
+
│ └── tool-logger.ts Usage analytics
|
|
116
148
|
│
|
|
117
|
-
└── core/ + lsp/
|
|
149
|
+
└── core/ + lsp/ Pure analysis engine (zero Pi/MCP dependencies)
|
|
118
150
|
```
|
|
119
151
|
|
|
120
|
-
## MCP Sync Discipline
|
|
121
|
-
|
|
122
|
-
Pi and MCP tools ship in the same package, from the same codebase. When Pi tools change, MCP tools must update in the same PR:
|
|
123
|
-
|
|
124
|
-
| Pi change | MCP action |
|
|
125
|
-
| ------------------- | ------------------------------------ |
|
|
126
|
-
| New tool | Add `registerTool` in `mcp/tools.ts` |
|
|
127
|
-
| Tool deleted | Remove from `mcp/tools.ts` |
|
|
128
|
-
| Schema changed | Update Zod schema |
|
|
129
|
-
| Description updated | Sync to MCP tool description |
|
|
130
|
-
|
|
131
152
|
## Development
|
|
132
153
|
|
|
133
154
|
```bash
|
|
@@ -137,10 +158,29 @@ npm install --legacy-peer-deps
|
|
|
137
158
|
|
|
138
159
|
npm run dev # tsc --watch
|
|
139
160
|
npm run typecheck # tsc --noEmit
|
|
140
|
-
npm test # vitest
|
|
161
|
+
npm test # vitest
|
|
141
162
|
npm run build # tsc → dist/
|
|
142
163
|
```
|
|
143
164
|
|
|
165
|
+
## LSP Support
|
|
166
|
+
|
|
167
|
+
| Language | LSP Server | Status |
|
|
168
|
+
|----------|-----------|--------|
|
|
169
|
+
| TypeScript/JavaScript | typescript-language-server | Supported |
|
|
170
|
+
| Python | pyright-langserver / pylsp | Supported |
|
|
171
|
+
| Go | gopls | Supported |
|
|
172
|
+
| Rust | rust-analyzer | Supported |
|
|
173
|
+
| YAML | yaml-language-server | Supported |
|
|
174
|
+
|
|
175
|
+
When LSP servers are unavailable, tools automatically fall back to tree-sitter mode.
|
|
176
|
+
|
|
144
177
|
## License
|
|
145
178
|
|
|
146
179
|
MIT
|
|
180
|
+
|
|
181
|
+
## Links
|
|
182
|
+
|
|
183
|
+
- [npm](https://www.npmjs.com/package/pi-shazam)
|
|
184
|
+
- [GitHub](https://github.com/gjczone/pi-shazam)
|
|
185
|
+
- [Pi Agent](https://pi.dev)
|
|
186
|
+
- [MCP Protocol](https://modelcontextprotocol.io)
|
package/dist/core/baseline.js
CHANGED
|
@@ -60,7 +60,7 @@ export function createBaseline(graph, lspErrors, lspWarnings, branch, commit) {
|
|
|
60
60
|
// Cache current orphan set for future diff
|
|
61
61
|
_previousOrphans = new Map();
|
|
62
62
|
for (const orphan of findOrphans(graph)) {
|
|
63
|
-
_previousOrphans.set(orphan.name
|
|
63
|
+
_previousOrphans.set(`${orphan.name}::${orphan.file}`, orphan);
|
|
64
64
|
}
|
|
65
65
|
return baseline;
|
|
66
66
|
}
|
|
@@ -75,7 +75,7 @@ export function diffFromBaseline(graph, lspErrors, lspWarnings) {
|
|
|
75
75
|
const currentOrphans = findOrphans(graph);
|
|
76
76
|
const currentOrphanCount = currentOrphans.length;
|
|
77
77
|
// Find new orphans (not in previous baseline)
|
|
78
|
-
const newOrphans = currentOrphans.filter((o) => !_previousOrphans.has(o.name
|
|
78
|
+
const newOrphans = currentOrphans.filter((o) => !_previousOrphans.has(`${o.name}::${o.file}`));
|
|
79
79
|
// Count edge changes
|
|
80
80
|
const previousEdges = _baseline.graphEdges;
|
|
81
81
|
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,WAAW,CAAC,QAAyB;IACpD,SAAS,GAAG,QAAQ,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC5B,SAAS,GAAG,IAAI,CAAC;IACjB,gBAAgB,GAAG,IAAI,GAAG,EAAE,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW;IAC1B,OAAO,SAAS,KAAK,IAAI,CAAC;AAC3B,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,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;IAE9C,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,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACzC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"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"}
|
package/dist/core/cache.d.ts
CHANGED
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-shazam core/cache — Graph baseline save/diff for incremental analysis.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Uses Node.js fs + path for file I/O, matching repomap's convention of
|
|
8
|
-
* storing cache under ~/.cache/repomap/<project-slug>.
|
|
4
|
+
* Provides persistent graph caching with mtime-based invalidation.
|
|
5
|
+
* Stores cache under ~/.cache/repomap/<project-slug> for process-isolated
|
|
6
|
+
* cache directories. Supports V2 serialization with file-level data.
|
|
9
7
|
*/
|
|
10
|
-
import {
|
|
11
|
-
import type { RepoGraph,
|
|
8
|
+
import { compareGraphSnapshots } from "./graph.js";
|
|
9
|
+
import type { RepoGraph, GraphDiff, SerializedSymbol, SerializedEdge } from "./graph.js";
|
|
12
10
|
/**
|
|
13
11
|
* Get the cache directory for a specific project.
|
|
14
12
|
* Uses MD5 hash of canonical path for isolation.
|
|
@@ -23,13 +21,18 @@ export declare function getCachePaths(projectPath: string): {
|
|
|
23
21
|
lastSnapshot: string;
|
|
24
22
|
};
|
|
25
23
|
/**
|
|
26
|
-
*
|
|
24
|
+
* V1 baseline data format (kept for reading legacy baseline files).
|
|
27
25
|
*/
|
|
28
|
-
|
|
26
|
+
interface BaselineData {
|
|
27
|
+
symbols: SerializedSymbol[];
|
|
28
|
+
edges: SerializedEdge[];
|
|
29
|
+
version: number;
|
|
30
|
+
timestamp: number;
|
|
31
|
+
}
|
|
29
32
|
/**
|
|
30
|
-
* Load a previously saved baseline snapshot.
|
|
33
|
+
* Load a previously saved baseline snapshot (V1 format).
|
|
31
34
|
*/
|
|
32
|
-
export declare function loadBaseline(projectPath: string):
|
|
35
|
+
export declare function loadBaseline(projectPath: string): BaselineData | null;
|
|
33
36
|
/**
|
|
34
37
|
* Compute the difference between the current graph and a saved baseline.
|
|
35
38
|
* Returns a structured diff with added/removed/modified symbols and edges.
|
|
@@ -52,5 +55,5 @@ export declare function loadGraphCache(cachePath: string): GraphCacheData | null
|
|
|
52
55
|
/**
|
|
53
56
|
* Re-export serialization helpers for convenience.
|
|
54
57
|
*/
|
|
55
|
-
export {
|
|
58
|
+
export { compareGraphSnapshots };
|
|
56
59
|
//# sourceMappingURL=cache.d.ts.map
|
package/dist/core/cache.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,EAGN,qBAAqB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAgB,gBAAgB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMvG;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAO9D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACrB,CAOA;AAID;;GAEG;AACH,UAAU,YAAY;IACrB,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAcrE;AAID;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAapF;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIzG;AAED,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,SAAS,CAAC;IACjB,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAmBvE;AAED;;GAEG;AACH,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
package/dist/core/cache.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* pi-shazam core/cache — Graph baseline save/diff for incremental analysis.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Uses Node.js fs + path for file I/O, matching repomap's convention of
|
|
8
|
-
* storing cache under ~/.cache/repomap/<project-slug>.
|
|
4
|
+
* Provides persistent graph caching with mtime-based invalidation.
|
|
5
|
+
* Stores cache under ~/.cache/repomap/<project-slug> for process-isolated
|
|
6
|
+
* cache directories. Supports V2 serialization with file-level data.
|
|
9
7
|
*/
|
|
10
8
|
import { mkdirSync, readFileSync, writeFileSync, existsSync } from "node:fs";
|
|
11
9
|
import { join, dirname } from "node:path";
|
|
12
10
|
import { homedir } from "node:os";
|
|
13
11
|
import { createHash } from "node:crypto";
|
|
14
|
-
import {
|
|
12
|
+
import { serializeGraphV2, deserializeGraphV2, compareGraphSnapshots, } from "./graph.js";
|
|
15
13
|
// ── Cache directory management ───────────────────────────────────────────────
|
|
16
14
|
const CACHE_ROOT = join(homedir(), ".cache", "repomap");
|
|
17
15
|
/**
|
|
@@ -37,19 +35,8 @@ export function getCachePaths(projectPath) {
|
|
|
37
35
|
lastSnapshot: join(dir, "last_snapshot.json"),
|
|
38
36
|
};
|
|
39
37
|
}
|
|
40
|
-
// ── Baseline save/load ───────────────────────────────────────────────────────
|
|
41
|
-
/**
|
|
42
|
-
* Save the current graph as a baseline snapshot.
|
|
43
|
-
*/
|
|
44
|
-
export function saveBaseline(graph, projectPath) {
|
|
45
|
-
const { symbols } = getCachePaths(projectPath);
|
|
46
|
-
const serialized = serializeGraph(graph);
|
|
47
|
-
mkdirSync(dirname(symbols), { recursive: true });
|
|
48
|
-
writeFileSync(symbols, JSON.stringify(serialized, null, 2), "utf-8");
|
|
49
|
-
return symbols;
|
|
50
|
-
}
|
|
51
38
|
/**
|
|
52
|
-
* Load a previously saved baseline snapshot.
|
|
39
|
+
* Load a previously saved baseline snapshot (V1 format).
|
|
53
40
|
*/
|
|
54
41
|
export function loadBaseline(projectPath) {
|
|
55
42
|
const { symbols } = getCachePaths(projectPath);
|
|
@@ -63,7 +50,8 @@ export function loadBaseline(projectPath) {
|
|
|
63
50
|
}
|
|
64
51
|
return data;
|
|
65
52
|
}
|
|
66
|
-
catch {
|
|
53
|
+
catch (err) {
|
|
54
|
+
console.warn(`[pi-shazam] loadBaseline: failed to parse baseline cache: ${err}`);
|
|
67
55
|
return null;
|
|
68
56
|
}
|
|
69
57
|
}
|
|
@@ -116,12 +104,13 @@ export function loadGraphCache(cachePath) {
|
|
|
116
104
|
}
|
|
117
105
|
return { graph, fileMtimes, timestamp: data.timestamp };
|
|
118
106
|
}
|
|
119
|
-
catch {
|
|
107
|
+
catch (err) {
|
|
108
|
+
console.warn(`[pi-shazam] loadGraphCache: failed to parse graph cache: ${err}`);
|
|
120
109
|
return null;
|
|
121
110
|
}
|
|
122
111
|
}
|
|
123
112
|
/**
|
|
124
113
|
* Re-export serialization helpers for convenience.
|
|
125
114
|
*/
|
|
126
|
-
export {
|
|
115
|
+
export { compareGraphSnapshots };
|
|
127
116
|
//# sourceMappingURL=cache.js.map
|
package/dist/core/cache.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"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"}
|
package/dist/core/encoding.d.ts
CHANGED
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* pi-shazam core/encoding — Adaptive file encoding reader.
|
|
3
3
|
*
|
|
4
4
|
* Reads files with UTF-8 → GBK → GB2312 fallback.
|
|
5
|
-
*
|
|
5
|
+
* Includes OOM protection via file size limits (2MB max) and
|
|
6
|
+
* encoding validation on first 64KB chunk to reduce memory pressure.
|
|
6
7
|
*/
|
|
7
8
|
/**
|
|
8
9
|
* Read a file with adaptive encoding fallback:
|
|
@@ -11,7 +12,9 @@
|
|
|
11
12
|
* 3. Try GB2312
|
|
12
13
|
*
|
|
13
14
|
* Returns the decoded string content.
|
|
14
|
-
* Throws if the file exceeds MAX_FILE_SIZE (
|
|
15
|
+
* Throws if the file exceeds MAX_FILE_SIZE (2MB) to prevent OOM.
|
|
16
|
+
* For encoding detection, validates only the first 64KB to avoid
|
|
17
|
+
* allocating huge strings during multi-encoding fallback.
|
|
15
18
|
*/
|
|
16
19
|
export declare function readFileAdaptive(filePath: string): string;
|
|
17
20
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../../core/encoding.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAgBH;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA0CzD;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA4BrD;AAiGD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E"}
|