pi-shazam 0.4.1 → 0.5.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 (125) hide show
  1. package/README.md +123 -83
  2. package/dist/core/baseline.js +2 -2
  3. package/dist/core/baseline.js.map +1 -1
  4. package/dist/core/cache.d.ts +15 -12
  5. package/dist/core/cache.d.ts.map +1 -1
  6. package/dist/core/cache.js +10 -21
  7. package/dist/core/cache.js.map +1 -1
  8. package/dist/core/encoding.d.ts +5 -2
  9. package/dist/core/encoding.d.ts.map +1 -1
  10. package/dist/core/encoding.js +107 -22
  11. package/dist/core/encoding.js.map +1 -1
  12. package/dist/core/filter.d.ts +2 -0
  13. package/dist/core/filter.d.ts.map +1 -1
  14. package/dist/core/filter.js +33 -0
  15. package/dist/core/filter.js.map +1 -1
  16. package/dist/core/git-hooks.d.ts +15 -4
  17. package/dist/core/git-hooks.d.ts.map +1 -1
  18. package/dist/core/git-hooks.js +229 -58
  19. package/dist/core/git-hooks.js.map +1 -1
  20. package/dist/core/graph.d.ts +0 -17
  21. package/dist/core/graph.d.ts.map +1 -1
  22. package/dist/core/graph.js +4 -30
  23. package/dist/core/graph.js.map +1 -1
  24. package/dist/core/output.d.ts +3 -0
  25. package/dist/core/output.d.ts.map +1 -1
  26. package/dist/core/output.js +9 -5
  27. package/dist/core/output.js.map +1 -1
  28. package/dist/core/pagerank.d.ts.map +1 -1
  29. package/dist/core/pagerank.js +12 -0
  30. package/dist/core/pagerank.js.map +1 -1
  31. package/dist/core/scanner.d.ts.map +1 -1
  32. package/dist/core/scanner.js +43 -35
  33. package/dist/core/scanner.js.map +1 -1
  34. package/dist/core/treesitter-queries.d.ts +0 -3
  35. package/dist/core/treesitter-queries.d.ts.map +1 -1
  36. package/dist/core/treesitter-queries.js +0 -19
  37. package/dist/core/treesitter-queries.js.map +1 -1
  38. package/dist/core/treesitter.d.ts +1 -2
  39. package/dist/core/treesitter.d.ts.map +1 -1
  40. package/dist/core/treesitter.js +1 -37
  41. package/dist/core/treesitter.js.map +1 -1
  42. package/dist/hooks/before-start.d.ts +13 -2
  43. package/dist/hooks/before-start.d.ts.map +1 -1
  44. package/dist/hooks/before-start.js +44 -10
  45. package/dist/hooks/before-start.js.map +1 -1
  46. package/dist/hooks/pre-edit.d.ts.map +1 -1
  47. package/dist/hooks/pre-edit.js +11 -1
  48. package/dist/hooks/pre-edit.js.map +1 -1
  49. package/dist/hooks/shazam-guide.d.ts.map +1 -1
  50. package/dist/hooks/shazam-guide.js +2 -26
  51. package/dist/hooks/shazam-guide.js.map +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +13 -6
  54. package/dist/index.js.map +1 -1
  55. package/dist/lsp/client.d.ts +44 -9
  56. package/dist/lsp/client.d.ts.map +1 -1
  57. package/dist/lsp/client.js +234 -51
  58. package/dist/lsp/client.js.map +1 -1
  59. package/dist/lsp/manager.d.ts +8 -4
  60. package/dist/lsp/manager.d.ts.map +1 -1
  61. package/dist/lsp/manager.js +81 -36
  62. package/dist/lsp/manager.js.map +1 -1
  63. package/dist/lsp/servers.js +10 -10
  64. package/dist/lsp/servers.js.map +1 -1
  65. package/dist/mcp/entry.js +1 -1
  66. package/dist/mcp/tools.d.ts.map +1 -1
  67. package/dist/mcp/tools.js +23 -15
  68. package/dist/mcp/tools.js.map +1 -1
  69. package/dist/tools/_context.d.ts.map +1 -1
  70. package/dist/tools/_context.js +6 -0
  71. package/dist/tools/_context.js.map +1 -1
  72. package/dist/tools/_factory.d.ts.map +1 -1
  73. package/dist/tools/_factory.js +11 -1
  74. package/dist/tools/_factory.js.map +1 -1
  75. package/dist/tools/codesearch.d.ts +17 -3
  76. package/dist/tools/codesearch.d.ts.map +1 -1
  77. package/dist/tools/codesearch.js +39 -20
  78. package/dist/tools/codesearch.js.map +1 -1
  79. package/dist/tools/file_detail.d.ts +0 -7
  80. package/dist/tools/file_detail.d.ts.map +1 -1
  81. package/dist/tools/file_detail.js +55 -0
  82. package/dist/tools/file_detail.js.map +1 -1
  83. package/dist/tools/find_tests.d.ts +1 -0
  84. package/dist/tools/find_tests.d.ts.map +1 -1
  85. package/dist/tools/find_tests.js +1 -1
  86. package/dist/tools/find_tests.js.map +1 -1
  87. package/dist/tools/fix.d.ts +1 -0
  88. package/dist/tools/fix.d.ts.map +1 -1
  89. package/dist/tools/fix.js +236 -4
  90. package/dist/tools/fix.js.map +1 -1
  91. package/dist/tools/hover.d.ts +5 -2
  92. package/dist/tools/hover.d.ts.map +1 -1
  93. package/dist/tools/hover.js +178 -5
  94. package/dist/tools/hover.js.map +1 -1
  95. package/dist/tools/impact.d.ts.map +1 -1
  96. package/dist/tools/impact.js +12 -0
  97. package/dist/tools/impact.js.map +1 -1
  98. package/dist/tools/lsp_enrich.d.ts +12 -17
  99. package/dist/tools/lsp_enrich.d.ts.map +1 -1
  100. package/dist/tools/lsp_enrich.js +24 -41
  101. package/dist/tools/lsp_enrich.js.map +1 -1
  102. package/dist/tools/overview.d.ts.map +1 -1
  103. package/dist/tools/overview.js +14 -7
  104. package/dist/tools/overview.js.map +1 -1
  105. package/dist/tools/rename_symbol.d.ts +9 -9
  106. package/dist/tools/rename_symbol.d.ts.map +1 -1
  107. package/dist/tools/rename_symbol.js +165 -16
  108. package/dist/tools/rename_symbol.js.map +1 -1
  109. package/dist/tools/safe_delete.d.ts +1 -0
  110. package/dist/tools/safe_delete.d.ts.map +1 -1
  111. package/dist/tools/safe_delete.js +1 -1
  112. package/dist/tools/safe_delete.js.map +1 -1
  113. package/dist/tools/type_hierarchy.d.ts +2 -1
  114. package/dist/tools/type_hierarchy.d.ts.map +1 -1
  115. package/dist/tools/type_hierarchy.js +80 -25
  116. package/dist/tools/type_hierarchy.js.map +1 -1
  117. package/dist/tools/verify.d.ts +1 -0
  118. package/dist/tools/verify.d.ts.map +1 -1
  119. package/dist/tools/verify.js +94 -54
  120. package/dist/tools/verify.js.map +1 -1
  121. package/package.json +7 -3
  122. package/dist/hooks/after-write.d.ts +0 -34
  123. package/dist/hooks/after-write.d.ts.map +0 -1
  124. package/dist/hooks/after-write.js +0 -307
  125. package/dist/hooks/after-write.js.map +0 -1
package/README.md CHANGED
@@ -1,133 +1,154 @@
1
1
  # pi-shazam
2
2
 
3
- > Give your AI agent structural awareness of your codebase before it reads a single file.
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
  [![npm version](https://img.shields.io/npm/v/pi-shazam)](https://www.npmjs.com/package/pi-shazam)
6
6
  [![CI](https://github.com/gjczone/pi-shazam/actions/workflows/ci.yml/badge.svg)](https://github.com/gjczone/pi-shazam/actions/workflows/ci.yml)
7
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
8
 
8
- ## What It Solves
9
+ ## What It Does
9
10
 
10
- AI coding agents start blind. They see a file tree, maybe a README. They don't know which files are the "spine" of the project, what depends on what, or which callers will break when a function signature changes. They guess. Sometimes they guess wrong.
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 answers the questions every agent should ask before touching code:
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
- - "What's the structure of this project?" → `shazam_overview`
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
- Under the hood it parses **every source file** with tree-sitter (14 languages), builds a **full dependency graph** (symbols, imports, calls, references), ranks them with **PageRank**, and optionally enriches results with **LSP diagnostics** (6 languages). The agent gets precise, ranked answers in one call — no grep, no guesswork.
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
- ## Primary: Pi Package
23
+ ## Quick Start
22
24
 
23
- pi-shazam is a **Pi coding agent package** the native, first-class experience. Install once, tools appear alongside `read` and `bash`:
25
+ ### Pi Agent (DefaultRecommended)
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
- All 14 analysis tools register as native Pi tools. Automatic hooks inject structural overviews into the system prompt, verify code after every edit, log tool usage, and guard against risky multi-file edits. This is the recommended setup for Pi users.
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
- pi-shazam ships with an MCP server (`npx pi-shazam-mcp`) so **any MCP-compatible client** can use the same analysis tools. No Pi required.
35
+ ### MCP (For Non-Pi Agents Only)
34
36
 
35
- Supported clients: Cursor, Claude Desktop, Windsurf, Qoder, Kimi Code, and any tool that speaks MCP.
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
- "mcpServers": {
40
- "pi-shazam": {
41
- "command": "npx",
42
- "args": ["pi-shazam-mcp"]
43
- }
44
- }
41
+ "mcpServers": {
42
+ "pi-shazam": {
43
+ "command": "npx",
44
+ "args": ["pi-shazam-mcp"]
45
+ }
46
+ }
45
47
  }
46
48
  ```
47
49
 
48
- The same 14 tools, the same analysis engine, the same output format. MCP tools sync with Pi tools in every release.
50
+ Compatible with any MCP-capable client. Same analysis engine, JSON-based tool interface.
49
51
 
50
52
  ## Tools
51
53
 
52
- ### Query (read-only)
53
-
54
- | Tool | What it tells the agent |
55
- | ----------------------- | ------------------------------------------------------------------------------------------ |
56
- | `shazam_overview` | Project structure, top-10 files by PageRank, key dependencies, recent commits, HTTP routes |
57
- | `shazam_impact` | Every file, symbol, and test affected by your planned changes |
58
- | `shazam_codesearch` | BM25-ranked symbol search — use instead of grep |
59
- | `shazam_symbol` | Definition, kind, signature, callers, callees for any symbol. `mode: "state"` for enums |
60
- | `shazam_hover` | Type signatures and JSDoc via LSP content raw reads miss |
61
- | `shazam_file_detail` | All symbols in a file with signatures, PageRank, call counts, LSP hierarchy |
62
- | `shazam_call_chain` | Full upstream/downstream call graph. `flat: true` for reference list |
63
- | `shazam_find_tests` | Which test files cover a given module |
64
- | `shazam_hotspots` | Files ranked by complexity — where bugs hurt most |
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 | What it tells the agent |
70
- | ---------------------- | ----------------------------------------------------------------------------- |
71
- | `shazam_verify` | Post-edit gate: LSP diagnostics + risk + orphans + graph diff. PASS/WARN/FAIL |
72
- | `shazam_fix` | Auto-fix format issues (prettier, biome, eslint, ruff, gofmt) |
73
- | `shazam_rename_symbol` | Safe project-wide rename via LSP verifies references first |
74
- | `shazam_safe_delete` | Confirms zero incoming references before removing a symbol |
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
- ## Pi-Only Features
103
+ ### npm Auto-Build
77
104
 
78
- These run automatically when installed as a Pi package:
105
+ pi-shazam is published via npm with automatic platform support:
79
106
 
80
- | Hook | When | What it does |
81
- | -------------------- | -------------------- | ------------------------------------------------------------------- |
82
- | `before_agent_start` | Agent starts | Injects project structure overview into system prompt |
83
- | `after_write/edit` | Agent writes/edits | Auto-verifies changes, reports structural impact |
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
- Plus five commands: `/shazam-setup` (LSP detection), `/shazam-doctor` (health check),
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
- ## Supported Languages
114
+ ### Dependencies
93
115
 
94
- **Tree-sitter parsing (14)**: TypeScript/TSX, JavaScript/JSX, Python, Rust, Go, Java, C, C++, C#, Ruby, CSS, HTML, JSON
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
- **LSP diagnostics (6)**: TypeScript/JavaScript, Python (pyright), Rust (rust-analyzer), Go (gopls), JSON, YAML
118
+ Supported Node.js versions: **>= 18.0.0**
97
119
 
98
- When LSP servers are unavailable, tools fall back to tree-sitter only.
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 extension MCP server
105
- │ index.ts ──tools/*.ts mcp/entry.ts ──mcp/tools.ts
106
- │ │ │ │ │
107
- │ └──── core/ + lsp/ ───────────┘──────────────┘
108
- │ (shared, no duplication)
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 inject overview into prompt
112
- │ ├── after-write.ts auto-verify after edits
113
- │ ├── pre-edit.ts pre-edit guard for multi-file edits
114
- ├── shazam-guide.ts nudge agent to use tools
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/ pure analysis (zero Pi/MCP imports)
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 (208 tests)
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)
@@ -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 + orphan.file, orphan);
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 + o.file));
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":"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"}
1
+ {"version":3,"file":"baseline.js","sourceRoot":"","sources":["../../core/baseline.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,12 @@
1
1
  /**
2
2
  * pi-shazam core/cache — Graph baseline save/diff for incremental analysis.
3
3
  *
4
- * Ported from repomap/src/__init__.py (get_project_cache_dir, compare_graph_snapshots,
5
- * IncrementalCache).
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 { serializeGraph, serializeSymbol, serializeEdge, compareGraphSnapshots } from "./graph.js";
11
- import type { RepoGraph, SerializedGraph, GraphDiff } from "./graph.js";
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
- * Save the current graph as a baseline snapshot.
24
+ * V1 baseline data format (kept for reading legacy baseline files).
27
25
  */
28
- export declare function saveBaseline(graph: RepoGraph, projectPath: string): string;
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): SerializedGraph | null;
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 { serializeGraph, serializeSymbol, serializeEdge, compareGraphSnapshots };
58
+ export { compareGraphSnapshots };
56
59
  //# sourceMappingURL=cache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EACN,cAAc,EACd,eAAe,EACf,aAAa,EAGb,qBAAqB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAgB,MAAM,YAAY,CAAC;AAMtF;;;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,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAM1E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAaxE;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,CAkBvE;AAED;;GAEG;AACH,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC"}
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"}
@@ -1,17 +1,15 @@
1
1
  /**
2
2
  * pi-shazam core/cache — Graph baseline save/diff for incremental analysis.
3
3
  *
4
- * Ported from repomap/src/__init__.py (get_project_cache_dir, compare_graph_snapshots,
5
- * IncrementalCache).
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 { serializeGraph, serializeSymbol, serializeEdge, serializeGraphV2, deserializeGraphV2, compareGraphSnapshots, } from "./graph.js";
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 { serializeGraph, serializeSymbol, serializeEdge, compareGraphSnapshots };
115
+ export { compareGraphSnapshots };
127
116
  //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../core/cache.ts"],"names":[],"mappings":"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"}
@@ -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
- * Ported from repomap's encoding detection pattern.
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 (10MB) to prevent OOM.
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;;;;;GAKG;AAUH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CA6BzD;AAID;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA4BrD;AAiCD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E"}
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"}