pindex 1.1.2 → 1.2.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.
package/dist/server.js CHANGED
@@ -14,6 +14,7 @@ import { searchDocs } from './tools/search_docs.js';
14
14
  import { getDocChunk } from './tools/get_doc_chunk.js';
15
15
  import { saveContext } from './tools/save_context.js';
16
16
  import { getSessionMemory } from './tools/get_session_memory.js';
17
+ import { getApiEndpoints } from './tools/get_api_endpoints.js';
17
18
  /**
18
19
  * MCP tool schemas exposed to the client (name, description, JSON input schema).
19
20
  * Returned verbatim by the ListTools handler and drive input validation on the
@@ -22,44 +23,47 @@ import { getSessionMemory } from './tools/get_session_memory.js';
22
23
  const TOOL_DEFINITIONS = [
23
24
  {
24
25
  name: 'search_symbols',
25
- description: 'Search for symbols (functions, classes, types) in the indexed codebase using full-text search. Returns matching symbols without loading full file contents.',
26
+ description: 'FTS search for symbols (functions, classes, types) across the indexed codebase.',
26
27
  inputSchema: {
27
28
  type: 'object',
28
29
  properties: {
29
- query: { type: 'string', description: 'Search query (symbol name, partial name, or keyword)' },
30
- limit: { type: 'number', description: 'Maximum results to return (default: 20)' },
30
+ query: { type: 'string', description: 'Symbol name or keyword' },
31
+ limit: { type: 'number', description: 'Max results (default: 20)' },
32
+ isAsync: { type: 'boolean', description: 'Filter async functions' },
33
+ hasTryCatch: { type: 'boolean', description: 'Filter by try/catch presence' },
34
+ snippet: { type: 'boolean', description: 'Include first 5 lines of body' },
31
35
  },
32
36
  required: ['query'],
33
37
  },
34
38
  },
35
39
  {
36
40
  name: 'get_symbol',
37
- description: 'Get details of a specific symbol: signature, location, summary, and its file dependencies.',
41
+ description: 'Symbol details: signature, location, file dependencies.',
38
42
  inputSchema: {
39
43
  type: 'object',
40
44
  properties: {
41
45
  name: { type: 'string', description: 'Symbol name' },
42
- file: { type: 'string', description: 'Optional: file path to disambiguate' },
46
+ file: { type: 'string', description: 'File path (to disambiguate)' },
43
47
  },
44
48
  required: ['name'],
45
49
  },
46
50
  },
47
51
  {
48
52
  name: 'get_context',
49
- description: 'Load a specific line range from a file. More token-efficient than reading entire files.',
53
+ description: 'Read a line range from a file (token-efficient).',
50
54
  inputSchema: {
51
55
  type: 'object',
52
56
  properties: {
53
57
  file: { type: 'string', description: 'File path (project-relative)' },
54
- line: { type: 'number', description: 'Target line number (1-indexed)' },
55
- range: { type: 'number', description: 'Number of lines to load (default: 30)' },
58
+ line: { type: 'number', description: 'Target line (1-indexed)' },
59
+ range: { type: 'number', description: 'Lines to read (default: 30)' },
56
60
  },
57
61
  required: ['file', 'line'],
58
62
  },
59
63
  },
60
64
  {
61
65
  name: 'get_file_summary',
62
- description: 'Get an overview of a file: summary, symbols, imports, and exports without loading the full content.',
66
+ description: 'File overview: symbols, imports, exports, size. No full read.',
63
67
  inputSchema: {
64
68
  type: 'object',
65
69
  properties: {
@@ -70,34 +74,41 @@ const TOOL_DEFINITIONS = [
70
74
  },
71
75
  {
72
76
  name: 'find_usages',
73
- description: 'Find all locations where a symbol is used across the codebase.',
77
+ description: 'All call sites of a symbol across the codebase.',
74
78
  inputSchema: {
75
79
  type: 'object',
76
80
  properties: {
77
- symbol: { type: 'string', description: 'Symbol name to find usages of' },
81
+ symbol: { type: 'string', description: 'Symbol name' },
78
82
  },
79
83
  required: ['symbol'],
80
84
  },
81
85
  },
82
86
  {
83
87
  name: 'get_dependencies',
84
- description: 'Get the import graph for a file: what it imports and what imports it.',
88
+ description: 'Import graph for a file (imports / imported_by / both).',
85
89
  inputSchema: {
86
90
  type: 'object',
87
91
  properties: {
88
92
  target: { type: 'string', description: 'File path (project-relative)' },
89
- direction: {
90
- type: 'string',
91
- enum: ['imports', 'imported_by', 'both'],
92
- description: 'Which direction to traverse (default: both)',
93
- },
93
+ direction: { type: 'string', enum: ['imports', 'imported_by', 'both'], description: 'Traversal direction (default: both)' },
94
94
  },
95
95
  required: ['target'],
96
96
  },
97
97
  },
98
98
  {
99
99
  name: 'get_project_overview',
100
- description: 'Get a high-level overview of the project: entry points, modules, and statistics.',
100
+ description: 'Project stats, entry points, module list. mode=brief for counts only.',
101
+ inputSchema: {
102
+ type: 'object',
103
+ properties: {
104
+ mode: { type: 'string', enum: ['brief', 'full'], description: 'brief=counts only; full=per-file symbols (default)' },
105
+ },
106
+ required: [],
107
+ },
108
+ },
109
+ {
110
+ name: 'get_api_endpoints',
111
+ description: 'All HTTP endpoints (Express routes): method, path, file, line.',
101
112
  inputSchema: {
102
113
  type: 'object',
103
114
  properties: {},
@@ -106,98 +117,95 @@ const TOOL_DEFINITIONS = [
106
117
  },
107
118
  {
108
119
  name: 'reindex',
109
- description: 'Rebuild the index for a specific file or the entire project.',
120
+ description: 'Rebuild the symbol index (one file or entire project).',
110
121
  inputSchema: {
111
122
  type: 'object',
112
123
  properties: {
113
- target: { type: 'string', description: 'File path to reindex, or omit to reindex all' },
124
+ target: { type: 'string', description: 'File path, or omit for full reindex' },
114
125
  },
115
126
  required: [],
116
127
  },
117
128
  },
118
129
  {
119
130
  name: 'get_token_stats',
120
- description: 'Get token usage statistics for the current or a specific session.',
131
+ description: 'Token usage stats for this session.',
121
132
  inputSchema: {
122
133
  type: 'object',
123
134
  properties: {
124
- session_id: { type: 'string', description: 'Session ID (omit for current session)' },
135
+ session_id: { type: 'string', description: 'Session ID (omit for current)' },
125
136
  },
126
137
  required: [],
127
138
  },
128
139
  },
129
140
  {
130
141
  name: 'start_comparison',
131
- description: 'Start a named session for A/B comparison between indexed and baseline token usage.',
142
+ description: 'Start A/B session: indexed vs baseline token usage.',
132
143
  inputSchema: {
133
144
  type: 'object',
134
145
  properties: {
135
- label: { type: 'string', description: 'Human-readable label for this session' },
136
- mode: {
137
- type: 'string',
138
- enum: ['indexed', 'baseline'],
139
- description: 'Whether to use the index (indexed) or simulate without (baseline)',
140
- },
146
+ label: { type: 'string', description: 'Session label' },
147
+ mode: { type: 'string', enum: ['indexed', 'baseline'], description: 'indexed or baseline' },
141
148
  },
142
149
  required: ['label', 'mode'],
143
150
  },
144
151
  },
145
152
  {
146
153
  name: 'search_docs',
147
- description: 'Search indexed documents and saved context entries using full-text search. Covers markdown, yaml, txt files and any context snippets saved with save_context.',
154
+ description: 'FTS search across docs and saved context.',
148
155
  inputSchema: {
149
156
  type: 'object',
150
157
  properties: {
151
158
  query: { type: 'string', description: 'Search query' },
152
- limit: { type: 'number', description: 'Maximum results to return (default: 20)' },
153
- type: {
154
- type: 'string',
155
- enum: ['docs', 'context', 'all'],
156
- description: 'Filter by result type: file-based docs, saved context entries, or all (default: all)',
157
- },
159
+ limit: { type: 'number', description: 'Max results (default: 20)' },
160
+ type: { type: 'string', enum: ['docs', 'context', 'all'], description: 'Result type filter (default: all)' },
158
161
  },
159
162
  required: ['query'],
160
163
  },
161
164
  },
162
165
  {
163
166
  name: 'get_doc_chunk',
164
- description: 'Retrieve the full content of a specific document chunk or all chunks of a file. More token-efficient than loading the entire file.',
167
+ description: 'Retrieve a document section by file and optional chunk index.',
165
168
  inputSchema: {
166
169
  type: 'object',
167
170
  properties: {
168
171
  file: { type: 'string', description: 'File path (project-relative)' },
169
- chunk_index: { type: 'number', description: 'Specific chunk to retrieve (omit for all chunks)' },
172
+ chunk_index: { type: 'number', description: 'Chunk index (omit for all)' },
170
173
  },
171
174
  required: ['file'],
172
175
  },
173
176
  },
174
177
  {
175
178
  name: 'save_context',
176
- description: 'Save an important fact, decision, or snippet to the persistent context store. Retrievable across sessions via search_docs. Use this to offload information from the context window.',
179
+ description: 'Persist a fact or snippet to the cross-session context store.',
177
180
  inputSchema: {
178
181
  type: 'object',
179
182
  properties: {
180
- content: { type: 'string', description: 'The content to save' },
181
- tags: { type: 'string', description: 'Comma-separated tags for better retrieval (e.g. "auth,jwt,security")' },
183
+ content: { type: 'string', description: 'Content to save' },
184
+ tags: { type: 'string', description: 'Comma-separated tags' },
182
185
  },
183
186
  required: ['content'],
184
187
  },
185
188
  },
186
189
  {
187
190
  name: 'get_session_memory',
188
- description: 'Retrieve session memory: auto-generated observations from previous sessions, staleness warnings, and detected anti-patterns (dead-end exploration, file thrashing, repeated failed searches, etc.). Call this at the start of a session or before working on a file to see what was observed before.',
191
+ description: 'Prior session observations, staleness warnings, anti-patterns.',
189
192
  inputSchema: {
190
193
  type: 'object',
191
194
  properties: {
192
- session_id: { type: 'string', description: 'Session ID to load (omit for current session)' },
193
- file: { type: 'string', description: 'Filter observations to a specific file path' },
194
- symbol: { type: 'string', description: 'Filter observations to a specific symbol name' },
195
- include_stale: { type: 'boolean', description: 'Include observations marked stale due to code changes (default: false)' },
195
+ session_id: { type: 'string', description: 'Session ID (omit for current)' },
196
+ file: { type: 'string', description: 'Filter to file path' },
197
+ symbol: { type: 'string', description: 'Filter to symbol name' },
198
+ include_stale: { type: 'boolean', description: 'Include stale observations (default: false)' },
196
199
  },
197
200
  required: [],
198
201
  },
199
202
  },
200
203
  ];
204
+ /** Core tools exposed when EXPOSE_CORE_TOOLS_ONLY=true (omits analytics/memory/doc tools). */
205
+ const CORE_TOOL_NAMES = new Set([
206
+ 'search_symbols', 'get_symbol', 'get_context', 'get_file_summary',
207
+ 'find_usages', 'get_dependencies', 'get_project_overview', 'get_api_endpoints',
208
+ ]);
201
209
  /**
202
210
  * Creates and configures the MCP stdio server with all registered tools.
203
211
  *
@@ -218,7 +226,9 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
218
226
  const { projectRoot, monitoringPort = 7842, baselineMode = false, federatedDbs = [], sessionId = 'default', observer } = options;
219
227
  // ─── List Tools ────────────────────────────────────────────────────────────
220
228
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
221
- tools: TOOL_DEFINITIONS,
229
+ tools: process.env.EXPOSE_CORE_TOOLS_ONLY === 'true'
230
+ ? TOOL_DEFINITIONS.filter(t => CORE_TOOL_NAMES.has(t.name))
231
+ : TOOL_DEFINITIONS,
222
232
  }));
223
233
  // ─── Handle Tool Calls ─────────────────────────────────────────────────────
224
234
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
@@ -238,7 +248,7 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
238
248
  const a = args;
239
249
  switch (name) {
240
250
  case 'search_symbols': {
241
- const r = searchSymbols(db, a, federatedDbs);
251
+ const r = searchSymbols(db, a, federatedDbs, projectRoot);
242
252
  tokensWithoutIndex = estimateResponseTokens(r) * 10;
243
253
  result = r;
244
254
  break;
@@ -272,10 +282,15 @@ export function createMcpServer(db, indexer, tokenLogger, monitoringServerInstan
272
282
  break;
273
283
  }
274
284
  case 'get_project_overview': {
275
- result = getProjectOverview(db, projectRoot, federatedDbs, sessionId);
285
+ result = getProjectOverview(db, projectRoot, federatedDbs, sessionId, a);
276
286
  tokensWithoutIndex = estimateResponseTokens(result) * 5;
277
287
  break;
278
288
  }
289
+ case 'get_api_endpoints': {
290
+ result = getApiEndpoints(db);
291
+ tokensWithoutIndex = estimateResponseTokens(result) * 8;
292
+ break;
293
+ }
279
294
  case 'reindex': {
280
295
  result = await reindex(db, indexer, a);
281
296
  break;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type Database from 'better-sqlite3';
2
+ import type { GetApiEndpointsOutput } from '../types.js';
3
+ export declare function getApiEndpoints(db: Database.Database): GetApiEndpointsOutput;
4
+ //# sourceMappingURL=get_api_endpoints.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_api_endpoints.d.ts","sourceRoot":"","sources":["../../src/tools/get_api_endpoints.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,GACpB,qBAAqB,CA0BvB"}
@@ -0,0 +1,24 @@
1
+ export function getApiEndpoints(db) {
2
+ const rows = db
3
+ .prepare(`SELECT s.name, s.signature, s.start_line, f.path AS file_path
4
+ FROM symbols s
5
+ JOIN files f ON s.file_id = f.id
6
+ WHERE s.kind = 'route'
7
+ ORDER BY f.path, s.start_line`)
8
+ .all();
9
+ const endpoints = rows.map((row) => {
10
+ // name is "METHOD /path", e.g. "GET /users/:id"
11
+ const spaceIdx = row.name.indexOf(' ');
12
+ const method = spaceIdx >= 0 ? row.name.slice(0, spaceIdx) : row.name;
13
+ const path = spaceIdx >= 0 ? row.name.slice(spaceIdx + 1) : row.signature;
14
+ return {
15
+ method,
16
+ path,
17
+ handler: row.name,
18
+ file: row.file_path,
19
+ line: row.start_line,
20
+ };
21
+ });
22
+ return { endpoints };
23
+ }
24
+ //# sourceMappingURL=get_api_endpoints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get_api_endpoints.js","sourceRoot":"","sources":["../../src/tools/get_api_endpoints.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,eAAe,CAC7B,EAAqB;IAErB,MAAM,IAAI,GAAG,EAAE;SACZ,OAAO,CACN;;;;qCAI+B,CAChC;SACA,GAAG,EAAuF,CAAC;IAE9F,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACjC,gDAAgD;QAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,MAAM,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;QACtE,MAAM,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC;QAC1E,OAAO;YACL,MAAM;YACN,IAAI;YACJ,OAAO,EAAE,GAAG,CAAC,IAAI;YACjB,IAAI,EAAE,GAAG,CAAC,SAAS;YACnB,IAAI,EAAE,GAAG,CAAC,UAAU;SACrB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,SAAS,EAAE,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"get_file_summary.d.ts","sourceRoot":"","sources":["../../src/tools/get_file_summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAc,MAAM,aAAa,CAAC;AAQzF,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB,oBAAoB,GAAG,IAAI,CAgC7B"}
1
+ {"version":3,"file":"get_file_summary.d.ts","sourceRoot":"","sources":["../../src/tools/get_file_summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAc,MAAM,aAAa,CAAC;AAQzF,wBAAgB,cAAc,CAC5B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,mBAAmB,GACzB,oBAAoB,GAAG,IAAI,CA2C7B"}
@@ -16,7 +16,17 @@ export function getFileSummary(db, input) {
16
16
  })),
17
17
  imports,
18
18
  exports,
19
+ tokenEstimate: file.raw_token_estimate ?? undefined,
19
20
  };
21
+ // Compute line count from token estimate (rough: 1 token ≈ 4 chars ≈ 0.5 lines)
22
+ // Better: count lines stored via raw_token_estimate proxy. We expose both.
23
+ // raw_token_estimate is already stored; derive line count from it if needed.
24
+ // For files that have been indexed, we can read the line count from the DB.
25
+ // Since line count is not stored, derive an estimate: ~80 chars per line.
26
+ if (file.raw_token_estimate != null) {
27
+ const estimatedChars = file.raw_token_estimate * 4;
28
+ output.lineCount = Math.round(estimatedChars / 50); // ~50 chars per line avg
29
+ }
20
30
  // Attach memory context if prior observations exist for this file
21
31
  const observations = getObservationsByFile(db, input.file, 3);
22
32
  if (observations.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"get_file_summary.js","sourceRoot":"","sources":["../../src/tools/get_file_summary.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,KAA0B;IAE1B,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAyB;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAkB;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;QACH,OAAO;QACP,OAAO;KACR,CAAC;IAEF,kEAAkE;IAClE,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,cAAc,GAAG;YACtB,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI;YACtD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACpD,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"get_file_summary.js","sourceRoot":"","sources":["../../src/tools/get_file_summary.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,cAAc,CAC5B,EAAqB,EACrB,KAA0B;IAE1B,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IAEvB,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAyB;QACnC,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAkB;YAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;SACvB,CAAC,CAAC;QACH,OAAO;QACP,OAAO;QACP,aAAa,EAAE,IAAI,CAAC,kBAAkB,IAAI,SAAS;KACpD,CAAC;IAEF,gFAAgF;IAChF,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,0EAA0E;IAC1E,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE,CAAC;QACpC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;QACnD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,yBAAyB;IAC/E,CAAC;IAED,kEAAkE;IAClE,MAAM,YAAY,GAAG,qBAAqB,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC9D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,cAAc,GAAG;YACtB,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI;YACtD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;YACpD,KAAK,EAAE,QAAQ;SAChB,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type Database from 'better-sqlite3';
2
- import type { GetProjectOverviewOutput } from '../types.js';
2
+ import type { GetProjectOverviewInput, GetProjectOverviewOutput } from '../types.js';
3
3
  import type { FederatedDb } from '../server.js';
4
- export declare function getProjectOverview(db: Database.Database, projectRoot: string, federatedDbs?: FederatedDb[], sessionId?: string): GetProjectOverviewOutput;
4
+ export declare function getProjectOverview(db: Database.Database, projectRoot: string, federatedDbs?: FederatedDb[], sessionId?: string, input?: GetProjectOverviewInput): GetProjectOverviewOutput;
5
5
  //# sourceMappingURL=get_project_overview.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_project_overview.d.ts","sourceRoot":"","sources":["../../src/tools/get_project_overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAwB,MAAM,aAAa,CAAC;AAQlF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,WAAW,EAAO,EAChC,SAAS,CAAC,EAAE,MAAM,GACjB,wBAAwB,CA8E1B"}
1
+ {"version":3,"file":"get_project_overview.d.ts","sourceRoot":"","sources":["../../src/tools/get_project_overview.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAA6C,MAAM,aAAa,CAAC;AAQhI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,kBAAkB,CAChC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,WAAW,EAAE,MAAM,EACnB,YAAY,GAAE,WAAW,EAAO,EAChC,SAAS,CAAC,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,uBAAuB,GAC9B,wBAAwB,CAiH1B"}
@@ -1,5 +1,6 @@
1
1
  import { getAllFiles, getSymbolsByFileId, countStaleObservations, countPriorSessions, getAntiPatternEvents, } from '../db/queries.js';
2
- export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId) {
2
+ export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId, input) {
3
+ const mode = input?.mode ?? 'full';
3
4
  const files = getAllFiles(db);
4
5
  if (files.length === 0) {
5
6
  return {
@@ -21,13 +22,22 @@ export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId
21
22
  .map((f) => f.path)
22
23
  .filter((p) => /\/(index|main|app)\.(ts|tsx|js)$/.test(p) ||
23
24
  /^(index|main|app)\.(ts|tsx|js)$/.test(p));
24
- // Build module summaries
25
25
  let totalSymbols = 0;
26
- const modules = files.map((f) => {
27
- const symbols = getSymbolsByFileId(db, f.id);
28
- totalSymbols += symbols.length;
29
- return { path: f.path, summary: f.summary, symbolCount: symbols.length };
30
- });
26
+ let modules;
27
+ if (mode === 'brief') {
28
+ // Brief mode: count all symbols in one query, skip per-file lookups
29
+ const row = db.prepare('SELECT COUNT(*) as cnt FROM symbols').get();
30
+ totalSymbols = row.cnt;
31
+ modules = files.map((f) => ({ path: f.path, summary: null, symbolCount: 0 }));
32
+ }
33
+ else {
34
+ // Full mode: per-file symbol counts
35
+ modules = files.map((f) => {
36
+ const symbols = getSymbolsByFileId(db, f.id);
37
+ totalSymbols += symbols.length;
38
+ return { path: f.path, summary: f.summary, symbolCount: symbols.length };
39
+ });
40
+ }
31
41
  const primaryResult = {
32
42
  rootPath: projectRoot,
33
43
  language,
@@ -52,6 +62,27 @@ export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId
52
62
  };
53
63
  primaryResult.session_memory = session_memory;
54
64
  }
65
+ // ── Index recommendation ──────────────────────────────────────────────────
66
+ // Estimate whether using PindeX tools saves tokens vs direct file reads.
67
+ // Break-even: tool-def overhead (~800 tokens/turn × ~6 turns = ~5K) vs
68
+ // savings from avoiding full-file reads (avgFileTokens × avoidsPerSession).
69
+ // Heuristic thresholds tuned against benchmark data.
70
+ const BREAK_EVEN_FILES = 40;
71
+ const BREAK_EVEN_AVG_LINES = 150;
72
+ const tokenRow = db.prepare('SELECT COALESCE(SUM(raw_token_estimate), 0) as total FROM files').get();
73
+ const avgFileTokens = files.length > 0 ? tokenRow.total / files.length : 0;
74
+ // 1 token ≈ 4 chars ≈ 1/50 line (assuming ~200 chars/line avg)
75
+ const avgFileLinesEstimate = Math.round(avgFileTokens * 4 / 50);
76
+ const worthwhile = files.length >= BREAK_EVEN_FILES || avgFileLinesEstimate >= BREAK_EVEN_AVG_LINES;
77
+ const recommendation = {
78
+ worthwhile,
79
+ reason: worthwhile
80
+ ? `${files.length} files, avg ~${avgFileLinesEstimate} lines/file — index tools save tokens`
81
+ : `Small project (${files.length} files, avg ~${avgFileLinesEstimate} lines/file) — direct reads may be more efficient than index overhead`,
82
+ avgFileLinesEstimate,
83
+ breakEvenFiles: BREAK_EVEN_FILES,
84
+ };
85
+ primaryResult.index_recommendation = recommendation;
55
86
  if (federatedDbs.length === 0)
56
87
  return primaryResult;
57
88
  // Append per-federated-repo stats
@@ -1 +1 @@
1
- {"version":3,"file":"get_project_overview.js","sourceRoot":"","sources":["../../src/tools/get_project_overview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"get_project_overview.js","sourceRoot":"","sources":["../../src/tools/get_project_overview.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type Database from 'better-sqlite3';
2
2
  import type { SearchSymbolsInput, SymbolSearchResult } from '../types.js';
3
3
  import type { FederatedDb } from '../server.js';
4
- export declare function searchSymbols(db: Database.Database, input: SearchSymbolsInput, federatedDbs?: FederatedDb[]): SymbolSearchResult[];
4
+ export declare function searchSymbols(db: Database.Database, input: SearchSymbolsInput, federatedDbs?: FederatedDb[], projectRoot?: string): SymbolSearchResult[];
5
5
  //# sourceMappingURL=search_symbols.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search_symbols.d.ts","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,kBAAkB,EACzB,YAAY,GAAE,WAAW,EAAO,GAC/B,kBAAkB,EAAE,CAmCtB"}
1
+ {"version":3,"file":"search_symbols.d.ts","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,wBAAgB,aAAa,CAC3B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,kBAAkB,EACzB,YAAY,GAAE,WAAW,EAAO,EAChC,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,EAAE,CAwDtB"}
@@ -1,29 +1,48 @@
1
+ import { readFileSync, existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
1
3
  import { searchSymbolsFts } from '../db/queries.js';
2
- export function searchSymbols(db, input, federatedDbs = []) {
4
+ export function searchSymbols(db, input, federatedDbs = [], projectRoot) {
3
5
  const limit = input.limit ?? 20;
6
+ const filters = {
7
+ isAsync: input.isAsync,
8
+ hasTryCatch: input.hasTryCatch,
9
+ };
10
+ function mapRow(row, root) {
11
+ const result = {
12
+ name: row.name,
13
+ kind: row.kind,
14
+ signature: row.signature,
15
+ summary: row.summary,
16
+ file: row.file_path,
17
+ line: row.start_line,
18
+ isAsync: row.is_async === 1,
19
+ hasTryCatch: row.has_try_catch === 1,
20
+ };
21
+ if (input.snippet && root) {
22
+ const absPath = join(root, row.file_path);
23
+ if (existsSync(absPath)) {
24
+ try {
25
+ const lines = readFileSync(absPath, 'utf-8').split('\n');
26
+ const startIdx = Math.max(0, row.start_line - 1);
27
+ result.snippet = lines.slice(startIdx, startIdx + 5).join('\n');
28
+ }
29
+ catch {
30
+ // ignore read errors
31
+ }
32
+ }
33
+ }
34
+ return result;
35
+ }
4
36
  // Search primary DB
5
- const primary = searchSymbolsFts(db, input.query, limit).map((row) => ({
6
- name: row.name,
7
- kind: row.kind,
8
- signature: row.signature,
9
- summary: row.summary,
10
- file: row.file_path,
11
- line: row.start_line,
12
- }));
37
+ const primary = searchSymbolsFts(db, input.query, limit, filters).map((row) => mapRow(row, projectRoot));
13
38
  if (federatedDbs.length === 0)
14
39
  return primary;
15
40
  // Search each federated DB and tag results with project name
16
41
  const federated = federatedDbs.flatMap(({ path, db: fedDb }) => {
17
- const projectName = path.split('/').pop() ?? path;
18
42
  try {
19
- return searchSymbolsFts(fedDb, input.query, limit).map((row) => ({
20
- name: row.name,
21
- kind: row.kind,
22
- signature: row.signature,
23
- summary: row.summary,
24
- file: row.file_path,
25
- line: row.start_line,
26
- project: projectName,
43
+ return searchSymbolsFts(fedDb, input.query, limit, filters).map((row) => ({
44
+ ...mapRow(row),
45
+ project: path.split('/').pop() ?? path,
27
46
  }));
28
47
  }
29
48
  catch {
@@ -1 +1 @@
1
- {"version":3,"file":"search_symbols.js","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,MAAM,UAAU,aAAa,CAC3B,EAAqB,EACrB,KAAyB,EACzB,eAA8B,EAAE;IAEhC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;IAEhC,oBAAoB;IACpB,MAAM,OAAO,GAAG,gBAAgB,CAAC,EAAE,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,IAAI,EAAE,GAAG,CAAC,SAAS;QACnB,IAAI,EAAE,GAAG,CAAC,UAAU;KACrB,CAAC,CAAC,CAAC;IAEJ,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IAE9C,6DAA6D;IAC7D,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7D,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC;QAClD,IAAI,CAAC;YACH,OAAO,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;gBAC/D,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,GAAG,CAAC,SAAS;gBACnB,IAAI,EAAE,GAAG,CAAC,UAAU;gBACpB,OAAO,EAAE,WAAW;aACrB,CAAC,CAAC,CAAC;QACN,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,mDAAmD;IACnD,OAAO,CAAC,GAAG,OAAO,EAAE,GAAG,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;AAChF,CAAC"}
1
+ {"version":3,"file":"search_symbols.js","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"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"}