pi-shazam 0.1.6 → 0.1.8

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 (96) hide show
  1. package/dist/core/filter.d.ts +9 -0
  2. package/dist/core/filter.d.ts.map +1 -0
  3. package/dist/core/filter.js +28 -0
  4. package/dist/core/filter.js.map +1 -0
  5. package/dist/core/lsp-global.d.ts +17 -0
  6. package/dist/core/lsp-global.d.ts.map +1 -0
  7. package/dist/core/lsp-global.js +14 -0
  8. package/dist/core/lsp-global.js.map +1 -0
  9. package/dist/core/output.d.ts +67 -0
  10. package/dist/core/output.d.ts.map +1 -0
  11. package/dist/core/output.js +203 -0
  12. package/dist/core/output.js.map +1 -0
  13. package/dist/core/scanner.d.ts +9 -0
  14. package/dist/core/scanner.d.ts.map +1 -1
  15. package/dist/core/scanner.js +75 -1
  16. package/dist/core/scanner.js.map +1 -1
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +13 -6
  19. package/dist/index.js.map +1 -1
  20. package/dist/tools/call_chain.d.ts +10 -0
  21. package/dist/tools/call_chain.d.ts.map +1 -1
  22. package/dist/tools/call_chain.js +107 -3
  23. package/dist/tools/call_chain.js.map +1 -1
  24. package/dist/tools/check.d.ts +5 -5
  25. package/dist/tools/check.d.ts.map +1 -1
  26. package/dist/tools/check.js +290 -16
  27. package/dist/tools/check.js.map +1 -1
  28. package/dist/tools/codesearch.d.ts +0 -3
  29. package/dist/tools/codesearch.d.ts.map +1 -1
  30. package/dist/tools/codesearch.js +156 -13
  31. package/dist/tools/codesearch.js.map +1 -1
  32. package/dist/tools/file_detail.d.ts.map +1 -1
  33. package/dist/tools/file_detail.js +7 -0
  34. package/dist/tools/file_detail.js.map +1 -1
  35. package/dist/tools/find_tests.d.ts +23 -0
  36. package/dist/tools/find_tests.d.ts.map +1 -0
  37. package/dist/tools/find_tests.js +190 -0
  38. package/dist/tools/find_tests.js.map +1 -0
  39. package/dist/tools/fix.d.ts.map +1 -1
  40. package/dist/tools/fix.js +7 -0
  41. package/dist/tools/fix.js.map +1 -1
  42. package/dist/tools/hotspots.d.ts +0 -2
  43. package/dist/tools/hotspots.d.ts.map +1 -1
  44. package/dist/tools/hotspots.js +9 -14
  45. package/dist/tools/hotspots.js.map +1 -1
  46. package/dist/tools/hover.d.ts +22 -0
  47. package/dist/tools/hover.d.ts.map +1 -0
  48. package/dist/tools/hover.js +168 -0
  49. package/dist/tools/hover.js.map +1 -0
  50. package/dist/tools/impact.d.ts.map +1 -1
  51. package/dist/tools/impact.js +7 -0
  52. package/dist/tools/impact.js.map +1 -1
  53. package/dist/tools/overview.d.ts +2 -2
  54. package/dist/tools/overview.d.ts.map +1 -1
  55. package/dist/tools/overview.js +41 -10
  56. package/dist/tools/overview.js.map +1 -1
  57. package/dist/tools/ready.d.ts.map +1 -1
  58. package/dist/tools/ready.js +8 -1
  59. package/dist/tools/ready.js.map +1 -1
  60. package/dist/tools/rename_symbol.d.ts +21 -0
  61. package/dist/tools/rename_symbol.d.ts.map +1 -0
  62. package/dist/tools/rename_symbol.js +90 -0
  63. package/dist/tools/rename_symbol.js.map +1 -0
  64. package/dist/tools/routes.d.ts.map +1 -1
  65. package/dist/tools/routes.js +10 -1
  66. package/dist/tools/routes.js.map +1 -1
  67. package/dist/tools/safe_delete.d.ts +23 -0
  68. package/dist/tools/safe_delete.d.ts.map +1 -0
  69. package/dist/tools/safe_delete.js +121 -0
  70. package/dist/tools/safe_delete.js.map +1 -0
  71. package/dist/tools/state_map.d.ts.map +1 -1
  72. package/dist/tools/state_map.js +8 -1
  73. package/dist/tools/state_map.js.map +1 -1
  74. package/dist/tools/symbol.d.ts.map +1 -1
  75. package/dist/tools/symbol.js +7 -0
  76. package/dist/tools/symbol.js.map +1 -1
  77. package/dist/tools/type_hierarchy.d.ts +27 -0
  78. package/dist/tools/type_hierarchy.d.ts.map +1 -0
  79. package/dist/tools/type_hierarchy.js +170 -0
  80. package/dist/tools/type_hierarchy.js.map +1 -0
  81. package/dist/tools/verify.d.ts.map +1 -1
  82. package/dist/tools/verify.js +54 -13
  83. package/dist/tools/verify.js.map +1 -1
  84. package/package.json +1 -1
  85. package/dist/tools/codequery.d.ts +0 -19
  86. package/dist/tools/codequery.d.ts.map +0 -1
  87. package/dist/tools/codequery.js +0 -129
  88. package/dist/tools/codequery.js.map +0 -1
  89. package/dist/tools/orphan.d.ts +0 -9
  90. package/dist/tools/orphan.d.ts.map +0 -1
  91. package/dist/tools/orphan.js +0 -134
  92. package/dist/tools/orphan.js.map +0 -1
  93. package/dist/tools/refs.d.ts +0 -9
  94. package/dist/tools/refs.d.ts.map +0 -1
  95. package/dist/tools/refs.js +0 -130
  96. package/dist/tools/refs.js.map +0 -1
@@ -0,0 +1,9 @@
1
+ /**
2
+ * pi-shazam core/filter — Shared file filtering utilities.
3
+ *
4
+ * Centralises the "is this a source file?" logic used by hotspots, orphan,
5
+ * verify, overview, and check tools. Keeps filtering consistent across the
6
+ * codebase and avoids pattern duplication.
7
+ */
8
+ export declare function isNonSourceFile(file: string): boolean;
9
+ //# sourceMappingURL=filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.d.ts","sourceRoot":"","sources":["../../core/filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * pi-shazam core/filter — Shared file filtering utilities.
3
+ *
4
+ * Centralises the "is this a source file?" logic used by hotspots, orphan,
5
+ * verify, overview, and check tools. Keeps filtering consistent across the
6
+ * codebase and avoids pattern duplication.
7
+ */
8
+ /**
9
+ * Config files, generated files, and lockfiles — excluded from source-file
10
+ * analysis (hotspots, orphan detection, overview, check).
11
+ *
12
+ * The list is deliberately narrow: it covers *non-source* files that
13
+ * tree-sitter would still parse (JSON, lockfiles) and inflate symbol counts.
14
+ *
15
+ * @returns true if the file path matches a known non-source pattern.
16
+ */
17
+ const NON_SOURCE_FILE_PATTERNS = [
18
+ "package-lock.json",
19
+ "package.json",
20
+ "tsconfig.json",
21
+ "node_modules/",
22
+ "dist/",
23
+ ".json",
24
+ ];
25
+ export function isNonSourceFile(file) {
26
+ return NON_SOURCE_FILE_PATTERNS.some((p) => file.includes(p));
27
+ }
28
+ //# sourceMappingURL=filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../core/filter.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,MAAM,wBAAwB,GAAsB;IACnD,mBAAmB;IACnB,cAAc;IACd,eAAe;IACf,eAAe;IACf,OAAO;IACP,OAAO;CACP,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,OAAO,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * pi-shazam core/lsp-global — Global LspManager reference for tool access.
3
+ *
4
+ * Tools (e.g., shazam_check) need access to the active LspManager to
5
+ * collect real-time LSP diagnostics. This module provides a global
6
+ * reference set during extension initialization.
7
+ */
8
+ import { LspManager } from "../lsp/manager.js";
9
+ /**
10
+ * Set the active LspManager (called from index.ts during init).
11
+ */
12
+ export declare function setLspManager(mgr: LspManager): void;
13
+ /**
14
+ * Get the active LspManager, or null if not initialized.
15
+ */
16
+ export declare function getLspManager(): LspManager | null;
17
+ //# sourceMappingURL=lsp-global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-global.d.ts","sourceRoot":"","sources":["../../core/lsp-global.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAI/C;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAEnD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,UAAU,GAAG,IAAI,CAEjD"}
@@ -0,0 +1,14 @@
1
+ let _manager = null;
2
+ /**
3
+ * Set the active LspManager (called from index.ts during init).
4
+ */
5
+ export function setLspManager(mgr) {
6
+ _manager = mgr;
7
+ }
8
+ /**
9
+ * Get the active LspManager, or null if not initialized.
10
+ */
11
+ export function getLspManager() {
12
+ return _manager;
13
+ }
14
+ //# sourceMappingURL=lsp-global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lsp-global.js","sourceRoot":"","sources":["../../core/lsp-global.ts"],"names":[],"mappings":"AASA,IAAI,QAAQ,GAAsB,IAAI,CAAC;AAEvC;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAe;IAC5C,QAAQ,GAAG,GAAG,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC5B,OAAO,QAAQ,CAAC;AACjB,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * pi-shazam core/output — Standardized tool output formatting.
3
+ *
4
+ * All tool outputs follow a three-section skeleton:
5
+ * 1. ## Result Summary (key-value table / quick summary)
6
+ * 2. ### Detail (per-item expansion)
7
+ * 3. ### Next (actionable tool recommendations)
8
+ *
9
+ * This module provides builders for each section.
10
+ */
11
+ import type { RepoGraph } from "./graph.js";
12
+ export type NextLevel = "required" | "recommended" | "also";
13
+ export interface NextRecommendation {
14
+ tool: string;
15
+ params?: Record<string, string | number | boolean>;
16
+ label: string;
17
+ level: NextLevel;
18
+ }
19
+ /**
20
+ * Build a standardized "Next" section with tool recommendations.
21
+ * 🔴 Required / 🟡 Recommended / ⚪ Also
22
+ */
23
+ export declare function formatNextSection(nextItems: NextRecommendation[]): string;
24
+ /**
25
+ * Get standardized Next recommendations for a given tool and context.
26
+ * Follows the Next 分级系统 table from issue #18.
27
+ * Pass available context (topFile, topSymbol, orphanCount, riskLevel, etc.)
28
+ * to generate context-aware recommendations.
29
+ */
30
+ export declare function getNextForTool(toolName: string, context?: {
31
+ topFile?: string;
32
+ topSymbol?: string;
33
+ hasErrors?: boolean;
34
+ hasFixes?: boolean;
35
+ riskLevel?: string;
36
+ orphanCount?: number;
37
+ testFunc?: string;
38
+ handlerFile?: string;
39
+ usageFile?: string;
40
+ brokenFile?: string;
41
+ }): NextRecommendation[];
42
+ /**
43
+ * Build a standardized Result Summary section with key-value pairs.
44
+ */
45
+ export declare function formatResultSummary(title: string, pairs: [string, string | number][]): string;
46
+ /**
47
+ * Build a file-item line for the Detail section.
48
+ */
49
+ export declare function formatFileItem(file: string, line: number, label: string, extra?: string): string;
50
+ /**
51
+ * Build the full three-section output for any tool.
52
+ * Each section is optional — pass empty/null to skip.
53
+ */
54
+ export declare function buildToolOutput(resultSection: string, detailSection: string | null, nextSection: string | null): string;
55
+ /**
56
+ * Get the number of uncommitted git changes (for context in output).
57
+ */
58
+ export declare function getGitChangeCount(): number;
59
+ /**
60
+ * Get overall project stats from the graph.
61
+ */
62
+ export declare function getGraphSummary(graph: RepoGraph): {
63
+ symbols: number;
64
+ files: number;
65
+ edges: number;
66
+ };
67
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../core/output.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,MAAM,CAiBzE;AAWD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IACT,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,GACC,kBAAkB,EAAE,CAgGtB;AAID;;GAEG;AACH,wBAAgB,mBAAmB,CAClC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,EAAE,GAChC,MAAM,CAOR;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC7B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,CAAC,EAAE,MAAM,GACZ,MAAM,CAIR;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,CAW1C;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"}
@@ -0,0 +1,203 @@
1
+ /**
2
+ * pi-shazam core/output — Standardized tool output formatting.
3
+ *
4
+ * All tool outputs follow a three-section skeleton:
5
+ * 1. ## Result Summary (key-value table / quick summary)
6
+ * 2. ### Detail (per-item expansion)
7
+ * 3. ### Next (actionable tool recommendations)
8
+ *
9
+ * This module provides builders for each section.
10
+ */
11
+ import { execSync } from "node:child_process";
12
+ /**
13
+ * Build a standardized "Next" section with tool recommendations.
14
+ * 🔴 Required / 🟡 Recommended / ⚪ Also
15
+ */
16
+ export function formatNextSection(nextItems) {
17
+ if (nextItems.length === 0)
18
+ return "";
19
+ const lines = ["### Next (Recommended)", ""];
20
+ for (const item of nextItems) {
21
+ const icon = item.level === "required"
22
+ ? "🔴"
23
+ : item.level === "recommended"
24
+ ? "🟡"
25
+ : "⚪";
26
+ const cmd = buildToolCommand(item);
27
+ lines.push(`- ${icon} ${item.label}: \`${cmd}\``);
28
+ }
29
+ return lines.join("\n");
30
+ }
31
+ function buildToolCommand(item) {
32
+ const params = item.params
33
+ ? Object.entries(item.params)
34
+ .map(([k, v]) => `--${k} ${v}`)
35
+ .join(" ")
36
+ : "";
37
+ return `shazam_${item.tool} ${params}`.trim();
38
+ }
39
+ /**
40
+ * Get standardized Next recommendations for a given tool and context.
41
+ * Follows the Next 分级系统 table from issue #18.
42
+ * Pass available context (topFile, topSymbol, orphanCount, riskLevel, etc.)
43
+ * to generate context-aware recommendations.
44
+ */
45
+ export function getNextForTool(toolName, context) {
46
+ const c = context ?? {};
47
+ const items = [];
48
+ switch (toolName) {
49
+ case "overview":
50
+ if (c.topFile)
51
+ items.push({ tool: "file_detail", params: { file: c.topFile }, label: "Inspect top file", level: "recommended" });
52
+ items.push({ tool: "codesearch", params: { query: "<keyword>" }, label: "Search for related symbols", level: "also" });
53
+ break;
54
+ case "hotspots":
55
+ if (c.topFile)
56
+ items.push({ tool: "file_detail", params: { file: c.topFile }, label: "Inspect top hotspot", level: "recommended" });
57
+ items.push({ tool: "overview", label: "Review project overview", level: "also" });
58
+ break;
59
+ case "symbol":
60
+ if (c.topSymbol)
61
+ items.push({ tool: "call_chain", params: { symbol: c.topSymbol }, label: "Trace call chain", level: "recommended" });
62
+ if (c.topSymbol)
63
+ items.push({ tool: "hover", params: { name: c.topSymbol }, label: "Get type info", level: "also" });
64
+ break;
65
+ case "codesearch":
66
+ if (c.topSymbol)
67
+ items.push({ tool: "symbol", params: { name: c.topSymbol }, label: "View top result details", level: "recommended" });
68
+ items.push({ tool: "find_tests", label: "Find related tests", level: "also" });
69
+ break;
70
+ case "call_chain":
71
+ items.push({ tool: "impact", params: { files: "<caller-file>" }, label: "Assess blast radius", level: "recommended" });
72
+ if (c.topSymbol)
73
+ items.push({ tool: "hover", params: { name: c.topSymbol }, label: "Inspect symbol type", level: "also" });
74
+ break;
75
+ case "hover":
76
+ if (c.topSymbol)
77
+ items.push({ tool: "symbol", params: { name: c.topSymbol }, label: "View symbol graph info", level: "recommended" });
78
+ if (c.topSymbol)
79
+ items.push({ tool: "type_hierarchy", params: { name: c.topSymbol }, label: "Explore type hierarchy", level: "also" });
80
+ break;
81
+ case "file_detail":
82
+ if (c.topSymbol)
83
+ items.push({ tool: "symbol", params: { name: c.topSymbol }, label: "Inspect top symbol", level: "recommended" });
84
+ if (c.topFile)
85
+ items.push({ tool: "find_tests", params: { sourceFile: c.topFile }, label: "Find tests for this file", level: "also" });
86
+ break;
87
+ case "find_tests":
88
+ if (c.testFunc)
89
+ items.push({ tool: "call_chain", params: { symbol: c.testFunc }, label: "Trace test function", level: "recommended" });
90
+ break;
91
+ case "routes":
92
+ if (c.handlerFile)
93
+ items.push({ tool: "file_detail", params: { file: c.handlerFile }, label: "Inspect handler", level: "recommended" });
94
+ break;
95
+ case "state_map":
96
+ if (c.usageFile)
97
+ items.push({ tool: "impact", params: { files: c.usageFile }, label: "Assess usage impact", level: "recommended" });
98
+ break;
99
+ case "type_hierarchy":
100
+ items.push({ tool: "find_tests", label: "Find tests for related types", level: "recommended" });
101
+ items.push({ tool: "hover", label: "Get hover info", level: "also" });
102
+ break;
103
+ case "impact":
104
+ items.push({ tool: "verify", label: "Run verification after changes", level: "required" });
105
+ if (c.topSymbol)
106
+ items.push({ tool: "call_chain", params: { symbol: c.topSymbol }, label: "Trace top impacted symbol", level: "recommended" });
107
+ break;
108
+ case "check":
109
+ if (c.hasErrors)
110
+ items.push({ tool: "verify", label: "Run full verification", level: "required" });
111
+ if (c.hasFixes)
112
+ items.push({ tool: "fix", label: "Auto-fix format issues", level: "recommended" });
113
+ if (c.brokenFile)
114
+ items.push({ tool: "symbol", params: { name: "--file " + c.brokenFile }, label: "Check broken file symbols", level: "also" });
115
+ break;
116
+ case "verify":
117
+ if (c.riskLevel === "high")
118
+ items.push({ tool: "ready", label: "Run pre-commit readiness check", level: "required" });
119
+ if (c.orphanCount && c.orphanCount > 0)
120
+ items.push({ tool: "call_chain", params: { symbol: "<orphan>" }, label: "Trace orphan symbols", level: "recommended" });
121
+ break;
122
+ case "fix":
123
+ items.push({ tool: "verify", label: "Verify after fixing", level: "required" });
124
+ items.push({ tool: "check", label: "Re-check for remaining issues", level: "recommended" });
125
+ break;
126
+ case "ready":
127
+ items.push({ tool: "", label: "Commit and push changes", level: "required" });
128
+ break;
129
+ case "rename_symbol":
130
+ if (c.topSymbol)
131
+ items.push({ tool: "call_chain", params: { symbol: c.topSymbol }, label: "Verify blast radius before rename", level: "required" });
132
+ items.push({ tool: "hover", label: "Inspect symbol type", level: "also" });
133
+ break;
134
+ case "safe_delete":
135
+ if (c.topSymbol)
136
+ items.push({ tool: "call_chain", params: { symbol: c.topSymbol }, label: "Verify zero references before delete", level: "required" });
137
+ break;
138
+ default:
139
+ break;
140
+ }
141
+ return items;
142
+ }
143
+ // ── Section builders ──────────────────────────────────────────────────────
144
+ /**
145
+ * Build a standardized Result Summary section with key-value pairs.
146
+ */
147
+ export function formatResultSummary(title, pairs) {
148
+ const lines = [`## ${title}`, ""];
149
+ for (const [key, value] of pairs) {
150
+ lines.push(`**${key}:** ${value}`);
151
+ }
152
+ lines.push("");
153
+ return lines.join("\n");
154
+ }
155
+ /**
156
+ * Build a file-item line for the Detail section.
157
+ */
158
+ export function formatFileItem(file, line, label, extra) {
159
+ const loc = line > 0 ? `:${line}` : "";
160
+ const suffix = extra ? ` — ${extra}` : "";
161
+ return `- ${label} \`${file}${loc}\`${suffix}`;
162
+ }
163
+ /**
164
+ * Build the full three-section output for any tool.
165
+ * Each section is optional — pass empty/null to skip.
166
+ */
167
+ export function buildToolOutput(resultSection, detailSection, nextSection) {
168
+ const parts = [resultSection.trim()];
169
+ if (detailSection)
170
+ parts.push(detailSection.trim());
171
+ if (nextSection)
172
+ parts.push(nextSection.trim());
173
+ return parts.join("\n\n") + "\n";
174
+ }
175
+ // ── Context helpers ───────────────────────────────────────────────────────
176
+ /**
177
+ * Get the number of uncommitted git changes (for context in output).
178
+ */
179
+ export function getGitChangeCount() {
180
+ try {
181
+ const output = execSync("git diff --stat 2>/dev/null | tail -1", { encoding: "utf-8", timeout: 3000 }).trim();
182
+ const match = output.match(/(\d+)\s+file/);
183
+ return match ? parseInt(match[1], 10) : 0;
184
+ }
185
+ catch {
186
+ return 0;
187
+ }
188
+ }
189
+ /**
190
+ * Get overall project stats from the graph.
191
+ */
192
+ export function getGraphSummary(graph) {
193
+ let edgeCount = 0;
194
+ for (const [, edges] of graph.outgoing) {
195
+ edgeCount += edges.length;
196
+ }
197
+ return {
198
+ symbols: graph.symbols.size,
199
+ files: graph.fileSymbols.size,
200
+ edges: edgeCount,
201
+ };
202
+ }
203
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../core/output.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,19 @@
7
7
  * This is the main entry point that all tools compose from.
8
8
  */
9
9
  import type { RepoGraph } from "./graph.js";
10
+ /**
11
+ * Get (or build) the project graph with caching.
12
+ * Returns a cached graph if no files have been modified since the last scan.
13
+ * The cache is per-process (not persisted to disk).
14
+ */
15
+ export declare function getProjectGraph(projectRoot?: string, log?: (msg: string) => void): RepoGraph;
10
16
  /**
11
17
  * Scan a project directory, parse all source files, build the dependency graph,
12
18
  * and compute PageRank scores.
13
19
  *
20
+ * Uses an in-memory cache: subsequent calls within the same process return the
21
+ * cached graph unless file modification times have changed.
22
+ *
14
23
  * @param projectPath - Absolute or relative path to the project root
15
24
  * @param log - Optional logger
16
25
  * @returns The fully built RepoGraph with PageRank scores set
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../core/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,YAAY,CAAC;AAgC1D;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAC1B,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,SAAS,CAuIX"}
1
+ {"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../core/scanner.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,SAAS,EAAgB,MAAM,YAAY,CAAC;AA6E1D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,WAAW,GAAE,MAAY,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,CAYjG;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAC1B,WAAW,EAAE,MAAM,EACnB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,GACzB,SAAS,CAkJX"}
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * This is the main entry point that all tools compose from.
8
8
  */
9
- import { readdirSync } from "node:fs";
9
+ import { readdirSync, statSync } from "node:fs";
10
10
  import { join, relative, resolve } from "node:path";
11
11
  import { TreeSitterAdapter, EXT_TO_LANG } from "./treesitter.js";
12
12
  import { createRepoGraph, createEdge, } from "./graph.js";
@@ -34,11 +34,76 @@ const SKIP_DIRS = new Set([
34
34
  const MAX_FILES = 20_000;
35
35
  /** File extensions to scan */
36
36
  const SOURCE_EXTS = new Set(Object.keys(EXT_TO_LANG));
37
+ // ── In-memory cache ─────────────────────────────────────────────────────────
38
+ let cachedGraph = null;
39
+ let cachedProjectPath = "";
40
+ let cachedMtime = 0;
41
+ /**
42
+ * Get the latest file modification time in the project (for cache invalidation).
43
+ * Walks project directories (same skip rules as collectSourceFiles) but only
44
+ * stats files instead of parsing them, so it's much cheaper than a full scan.
45
+ */
46
+ function getLatestFileMtime(root) {
47
+ let latest = 0;
48
+ function walk(dir) {
49
+ let entries;
50
+ try {
51
+ entries = readdirSync(dir, { withFileTypes: true });
52
+ }
53
+ catch {
54
+ return;
55
+ }
56
+ for (const entry of entries) {
57
+ const fullPath = join(dir, entry.name);
58
+ if (entry.isDirectory()) {
59
+ if (SKIP_DIRS.has(entry.name))
60
+ continue;
61
+ if (entry.name.startsWith("."))
62
+ continue;
63
+ walk(fullPath);
64
+ }
65
+ else if (entry.isFile()) {
66
+ const ext = entry.name.slice(entry.name.lastIndexOf(".")).toLowerCase();
67
+ if (SOURCE_EXTS.has(ext)) {
68
+ try {
69
+ const mtime = statSync(fullPath).mtimeMs;
70
+ if (mtime > latest)
71
+ latest = mtime;
72
+ }
73
+ catch {
74
+ // skip unstatable files
75
+ }
76
+ }
77
+ }
78
+ }
79
+ }
80
+ walk(resolve(root));
81
+ return latest;
82
+ }
83
+ /**
84
+ * Get (or build) the project graph with caching.
85
+ * Returns a cached graph if no files have been modified since the last scan.
86
+ * The cache is per-process (not persisted to disk).
87
+ */
88
+ export function getProjectGraph(projectRoot = ".", log) {
89
+ const root = resolve(projectRoot);
90
+ const currentMtime = getLatestFileMtime(root);
91
+ if (cachedGraph && cachedProjectPath === root && cachedMtime >= currentMtime) {
92
+ return cachedGraph;
93
+ }
94
+ cachedGraph = scanProject(root, log);
95
+ cachedProjectPath = root;
96
+ cachedMtime = currentMtime;
97
+ return cachedGraph;
98
+ }
37
99
  // ── Scanner ──────────────────────────────────────────────────────────────────
38
100
  /**
39
101
  * Scan a project directory, parse all source files, build the dependency graph,
40
102
  * and compute PageRank scores.
41
103
  *
104
+ * Uses an in-memory cache: subsequent calls within the same process return the
105
+ * cached graph unless file modification times have changed.
106
+ *
42
107
  * @param projectPath - Absolute or relative path to the project root
43
108
  * @param log - Optional logger
44
109
  * @returns The fully built RepoGraph with PageRank scores set
@@ -46,6 +111,11 @@ const SOURCE_EXTS = new Set(Object.keys(EXT_TO_LANG));
46
111
  export function scanProject(projectPath, log) {
47
112
  const root = resolve(projectPath);
48
113
  const logger = log ?? (() => { });
114
+ // Check cache
115
+ const currentMtime = getLatestFileMtime(root);
116
+ if (cachedGraph && cachedProjectPath === root && cachedMtime >= currentMtime) {
117
+ return cachedGraph;
118
+ }
49
119
  const adapter = new TreeSitterAdapter(logger);
50
120
  const graph = createRepoGraph();
51
121
  // Collect all source files
@@ -150,6 +220,10 @@ export function scanProject(projectPath, log) {
150
220
  }
151
221
  // Phase 3: Compute PageRank
152
222
  calculatePageRank(graph);
223
+ // Update cache
224
+ cachedGraph = graph;
225
+ cachedProjectPath = root;
226
+ cachedMtime = currentMtime;
153
227
  return graph;
154
228
  }
155
229
  // ── File collection ──────────────────────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../core/scanner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../core/scanner.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,YAAY,EAEZ,MAAM,yBAAyB,CAAC;AA0BjC,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CAsF/C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACX,YAAY,EAEZ,MAAM,yBAAyB,CAAC;AA6BjC,MAAM,CAAC,OAAO,WAAW,EAAE,EAAE,YAAY,GAAG,IAAI,CA2F/C"}
package/dist/index.js CHANGED
@@ -10,26 +10,29 @@
10
10
  */
11
11
  import { LspManager } from "./lsp/manager.js";
12
12
  import { generateSetupReport } from "./lsp/setup.js";
13
+ import { setLspManager } from "./core/lsp-global.js";
13
14
  // ── Hook registrations ───────────────────────────────────────────────────
14
15
  import { registerBeforeStartHook } from "./hooks/before-start.js";
15
16
  import { registerAfterWriteHook } from "./hooks/after-write.js";
16
17
  // ── Tool registrations ────────────────────────────────────────────────────
17
18
  import { registerOverview } from "./tools/overview.js";
18
19
  import { registerImpact } from "./tools/impact.js";
19
- import { registerCodequery } from "./tools/codequery.js";
20
20
  import { registerCallChain } from "./tools/call_chain.js";
21
21
  import { registerVerify } from "./tools/verify.js";
22
22
  import { registerCheck } from "./tools/check.js";
23
23
  import { registerFix } from "./tools/fix.js";
24
24
  import { registerReady } from "./tools/ready.js";
25
- import { registerRefs } from "./tools/refs.js";
26
25
  import { registerRoutes } from "./tools/routes.js";
27
26
  import { registerStateMap } from "./tools/state_map.js";
28
- import { registerOrphan } from "./tools/orphan.js";
29
27
  import { registerHotspots } from "./tools/hotspots.js";
30
28
  import { registerCodesearch } from "./tools/codesearch.js";
31
29
  import { registerFileDetail } from "./tools/file_detail.js";
32
30
  import { registerSymbol } from "./tools/symbol.js";
31
+ import { registerHover } from "./tools/hover.js";
32
+ import { registerFindTests } from "./tools/find_tests.js";
33
+ import { registerTypeHierarchy } from "./tools/type_hierarchy.js";
34
+ import { registerRenameSymbol } from "./tools/rename_symbol.js";
35
+ import { registerSafeDelete } from "./tools/safe_delete.js";
33
36
  export default function (pi) {
34
37
  const projectRoot = process.cwd();
35
38
  const log = (msg) => {
@@ -38,6 +41,8 @@ export default function (pi) {
38
41
  };
39
42
  // ── LSP manager ─────────────────────────────────────────────────────────
40
43
  const lspManager = new LspManager(projectRoot, log);
44
+ // Share LspManager with tools via global reference
45
+ setLspManager(lspManager);
41
46
  // Auto-initialize LSP on agent start
42
47
  pi.on("before_agent_start", async (_event, _ctx) => {
43
48
  try {
@@ -90,20 +95,22 @@ export default function (pi) {
90
95
  // ── Tools (LLM-visible) ────────────────────────────────────────────────
91
96
  registerOverview(pi);
92
97
  registerImpact(pi);
93
- registerCodequery(pi);
94
98
  registerCallChain(pi);
95
99
  registerVerify(pi);
96
100
  registerCheck(pi);
97
101
  registerFix(pi);
98
102
  registerReady(pi);
99
- registerRefs(pi);
100
103
  registerRoutes(pi);
101
104
  registerStateMap(pi);
102
- registerOrphan(pi);
103
105
  registerHotspots(pi);
104
106
  registerCodesearch(pi);
105
107
  registerFileDetail(pi);
106
108
  registerSymbol(pi);
109
+ registerHover(pi);
110
+ registerFindTests(pi);
111
+ registerTypeHierarchy(pi);
112
+ registerRenameSymbol(pi);
113
+ registerSafeDelete(pi);
107
114
  log("pi-shazam loaded");
108
115
  }
109
116
  //# sourceMappingURL=index.js.map