pindex 1.3.0 → 1.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 (87) hide show
  1. package/README.md +35 -12
  2. package/dist/cli/federate.d.ts +6 -0
  3. package/dist/cli/federate.d.ts.map +1 -0
  4. package/dist/cli/federate.js +128 -0
  5. package/dist/cli/federate.js.map +1 -0
  6. package/dist/cli/index.js +40 -0
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/cli/init.d.ts.map +1 -1
  9. package/dist/cli/init.js +13 -7
  10. package/dist/cli/init.js.map +1 -1
  11. package/dist/cli/project-detector.d.ts +9 -3
  12. package/dist/cli/project-detector.d.ts.map +1 -1
  13. package/dist/cli/project-detector.js +55 -6
  14. package/dist/cli/project-detector.js.map +1 -1
  15. package/dist/federation/merge.d.ts +4 -0
  16. package/dist/federation/merge.d.ts.map +1 -0
  17. package/dist/federation/merge.js +15 -0
  18. package/dist/federation/merge.js.map +1 -0
  19. package/dist/federation/registry-name.d.ts +6 -0
  20. package/dist/federation/registry-name.d.ts.map +1 -0
  21. package/dist/federation/registry-name.js +17 -0
  22. package/dist/federation/registry-name.js.map +1 -0
  23. package/dist/federation/repo-set.d.ts +27 -0
  24. package/dist/federation/repo-set.d.ts.map +1 -0
  25. package/dist/federation/repo-set.js +39 -0
  26. package/dist/federation/repo-set.js.map +1 -0
  27. package/dist/index.js +20 -3
  28. package/dist/index.js.map +1 -1
  29. package/dist/indexer/index.d.ts +3 -0
  30. package/dist/indexer/index.d.ts.map +1 -1
  31. package/dist/indexer/index.js +25 -0
  32. package/dist/indexer/index.js.map +1 -1
  33. package/dist/indexer/lsp-mapper.d.ts +6 -0
  34. package/dist/indexer/lsp-mapper.d.ts.map +1 -0
  35. package/dist/indexer/lsp-mapper.js +40 -0
  36. package/dist/indexer/lsp-mapper.js.map +1 -0
  37. package/dist/indexer/lsp-python.d.ts +43 -0
  38. package/dist/indexer/lsp-python.d.ts.map +1 -0
  39. package/dist/indexer/lsp-python.js +234 -0
  40. package/dist/indexer/lsp-python.js.map +1 -0
  41. package/dist/server.d.ts +5 -0
  42. package/dist/server.d.ts.map +1 -1
  43. package/dist/server.js +16 -13
  44. package/dist/server.js.map +1 -1
  45. package/dist/tools/find_usages.d.ts +2 -2
  46. package/dist/tools/find_usages.d.ts.map +1 -1
  47. package/dist/tools/find_usages.js +24 -10
  48. package/dist/tools/find_usages.js.map +1 -1
  49. package/dist/tools/get_context.d.ts +2 -2
  50. package/dist/tools/get_context.d.ts.map +1 -1
  51. package/dist/tools/get_context.js +54 -50
  52. package/dist/tools/get_context.js.map +1 -1
  53. package/dist/tools/get_dependencies.d.ts +2 -2
  54. package/dist/tools/get_dependencies.d.ts.map +1 -1
  55. package/dist/tools/get_dependencies.js +21 -11
  56. package/dist/tools/get_dependencies.js.map +1 -1
  57. package/dist/tools/get_doc_chunk.d.ts +2 -2
  58. package/dist/tools/get_doc_chunk.d.ts.map +1 -1
  59. package/dist/tools/get_doc_chunk.js +35 -29
  60. package/dist/tools/get_doc_chunk.js.map +1 -1
  61. package/dist/tools/get_file_summary.d.ts +2 -2
  62. package/dist/tools/get_file_summary.d.ts.map +1 -1
  63. package/dist/tools/get_file_summary.js +43 -37
  64. package/dist/tools/get_file_summary.js.map +1 -1
  65. package/dist/tools/get_project_overview.d.ts +2 -3
  66. package/dist/tools/get_project_overview.d.ts.map +1 -1
  67. package/dist/tools/get_project_overview.js +22 -22
  68. package/dist/tools/get_project_overview.js.map +1 -1
  69. package/dist/tools/get_symbol.d.ts +2 -2
  70. package/dist/tools/get_symbol.d.ts.map +1 -1
  71. package/dist/tools/get_symbol.js +33 -27
  72. package/dist/tools/get_symbol.js.map +1 -1
  73. package/dist/tools/schemas.d.ts +9 -0
  74. package/dist/tools/schemas.d.ts.map +1 -1
  75. package/dist/tools/schemas.js +10 -0
  76. package/dist/tools/schemas.js.map +1 -1
  77. package/dist/tools/search_docs.d.ts +2 -2
  78. package/dist/tools/search_docs.d.ts.map +1 -1
  79. package/dist/tools/search_docs.js +40 -28
  80. package/dist/tools/search_docs.js.map +1 -1
  81. package/dist/tools/search_symbols.d.ts +2 -3
  82. package/dist/tools/search_symbols.d.ts.map +1 -1
  83. package/dist/tools/search_symbols.js +35 -46
  84. package/dist/tools/search_symbols.js.map +1 -1
  85. package/dist/types.d.ts +24 -10
  86. package/dist/types.d.ts.map +1 -1
  87. package/package.json +6 -1
@@ -1 +1 @@
1
- {"version":3,"file":"get_dependencies.d.ts","sourceRoot":"","sources":["../../src/tools/get_dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG/E,wBAAgB,eAAe,CAC7B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,oBAAoB,GAC1B,qBAAqB,CAmBvB"}
1
+ {"version":3,"file":"get_dependencies.d.ts","sourceRoot":"","sources":["../../src/tools/get_dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAE/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,oBAAoB,GAC1B,qBAAqB,EAAE,CA0BzB"}
@@ -1,16 +1,26 @@
1
1
  import { getFileByPath, getDependenciesByFile, getImportedByFile } from '../db/queries.js';
2
- export function getDependencies(db, input) {
2
+ export function getDependencies(repoSet, input) {
3
+ const repos = repoSet.filter(input.repos);
3
4
  const direction = input.direction ?? 'both';
4
- const file = getFileByPath(db, input.target);
5
- if (!file) {
6
- return { imports: [], importedBy: [] };
5
+ const out = [];
6
+ for (const repo of repos) {
7
+ const file = getFileByPath(repo.db, input.target);
8
+ if (!file)
9
+ continue;
10
+ const result = {
11
+ file: input.target,
12
+ project: repo.name,
13
+ imports: [],
14
+ importedBy: [],
15
+ };
16
+ if (direction === 'imports' || direction === 'both') {
17
+ result.imports = getDependenciesByFile(repo.db, file.id);
18
+ }
19
+ if (direction === 'imported_by' || direction === 'both') {
20
+ result.importedBy = getImportedByFile(repo.db, file.id);
21
+ }
22
+ out.push(result);
7
23
  }
8
- const imports = direction === 'imports' || direction === 'both'
9
- ? getDependenciesByFile(db, file.id)
10
- : [];
11
- const importedBy = direction === 'imported_by' || direction === 'both'
12
- ? getImportedByFile(db, file.id)
13
- : [];
14
- return { imports, importedBy };
24
+ return out;
15
25
  }
16
26
  //# sourceMappingURL=get_dependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_dependencies.js","sourceRoot":"","sources":["../../src/tools/get_dependencies.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE3F,MAAM,UAAU,eAAe,CAC7B,EAAqB,EACrB,KAA2B;IAE3B,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC;IAE5C,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,OAAO,GACX,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM;QAC7C,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QACpC,CAAC,CAAC,EAAE,CAAC;IAET,MAAM,UAAU,GACd,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,MAAM;QACjD,CAAC,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAChC,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"get_dependencies.js","sourceRoot":"","sources":["../../src/tools/get_dependencies.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG3F,MAAM,UAAU,eAAe,CAC7B,OAAgB,EAChB,KAA2B;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC;IAC5C,MAAM,GAAG,GAA4B,EAAE,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,MAAM,GAA0B;YACpC,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACxD,MAAM,CAAC,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1D,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,4 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { GetDocChunkInput, GetDocChunkOutput } from '../types.js';
3
- export declare function getDocChunk(db: Database.Database, input: GetDocChunkInput): GetDocChunkOutput | null;
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function getDocChunk(repoSet: RepoSet, input: GetDocChunkInput): GetDocChunkOutput[];
4
4
  //# sourceMappingURL=get_doc_chunk.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_doc_chunk.d.ts","sourceRoot":"","sources":["../../src/tools/get_doc_chunk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAY,MAAM,aAAa,CAAC;AAGjF,wBAAgB,WAAW,CACzB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,gBAAgB,GACtB,iBAAiB,GAAG,IAAI,CA+B1B"}
1
+ {"version":3,"file":"get_doc_chunk.d.ts","sourceRoot":"","sources":["../../src/tools/get_doc_chunk.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAY,MAAM,aAAa,CAAC;AAEjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,EAAE,CAuC1F"}
@@ -1,32 +1,38 @@
1
1
  import { getFileByPath, getDocumentChunksByFileId } from '../db/queries.js';
2
- export function getDocChunk(db, input) {
3
- const fileRecord = getFileByPath(db, input.file);
4
- if (!fileRecord)
5
- return null;
6
- const allChunks = getDocumentChunksByFileId(db, fileRecord.id);
7
- if (allChunks.length === 0)
8
- return null;
9
- const chunks = input.chunk_index !== undefined
10
- ? allChunks
11
- .filter((c) => c.chunk_index === input.chunk_index)
12
- .map((c) => ({
13
- index: c.chunk_index,
14
- heading: c.heading,
15
- start_line: c.start_line,
16
- end_line: c.end_line,
17
- content: c.content,
18
- }))
19
- : allChunks.map((c) => ({
20
- index: c.chunk_index,
21
- heading: c.heading,
22
- start_line: c.start_line,
23
- end_line: c.end_line,
24
- content: c.content,
25
- }));
26
- return {
27
- file: input.file,
28
- total_chunks: allChunks.length,
29
- chunks,
30
- };
2
+ export function getDocChunk(repoSet, input) {
3
+ const repos = repoSet.filter(input.repos);
4
+ const out = [];
5
+ for (const repo of repos) {
6
+ const fileRecord = getFileByPath(repo.db, input.file);
7
+ if (!fileRecord)
8
+ continue;
9
+ const allChunks = getDocumentChunksByFileId(repo.db, fileRecord.id);
10
+ if (allChunks.length === 0)
11
+ continue;
12
+ const chunks = input.chunk_index !== undefined
13
+ ? allChunks
14
+ .filter((c) => c.chunk_index === input.chunk_index)
15
+ .map((c) => ({
16
+ index: c.chunk_index,
17
+ heading: c.heading,
18
+ start_line: c.start_line,
19
+ end_line: c.end_line,
20
+ content: c.content,
21
+ }))
22
+ : allChunks.map((c) => ({
23
+ index: c.chunk_index,
24
+ heading: c.heading,
25
+ start_line: c.start_line,
26
+ end_line: c.end_line,
27
+ content: c.content,
28
+ }));
29
+ out.push({
30
+ file: input.file,
31
+ total_chunks: allChunks.length,
32
+ chunks,
33
+ project: repo.name,
34
+ });
35
+ }
36
+ return out;
31
37
  }
32
38
  //# sourceMappingURL=get_doc_chunk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_doc_chunk.js","sourceRoot":"","sources":["../../src/tools/get_doc_chunk.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAE5E,MAAM,UAAU,WAAW,CACzB,EAAqB,EACrB,KAAuB;IAEvB,MAAM,UAAU,GAAG,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,SAAS,GAAG,yBAAyB,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAC/D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,MAAM,GACV,KAAK,CAAC,WAAW,KAAK,SAAS;QAC7B,CAAC,CAAC,SAAS;aACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,CAAC;aAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,KAAK,EAAE,CAAC,CAAC,WAAW;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC;QACP,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACpB,KAAK,EAAE,CAAC,CAAC,WAAW;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,OAAO,EAAE,CAAC,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;IAEV,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,YAAY,EAAE,SAAS,CAAC,MAAM;QAC9B,MAAM;KACP,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"get_doc_chunk.js","sourceRoot":"","sources":["../../src/tools/get_doc_chunk.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAG5E,MAAM,UAAU,WAAW,CAAC,OAAgB,EAAE,KAAuB;IACnE,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAwB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,MAAM,SAAS,GAAG,yBAAyB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACpE,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAErC,MAAM,MAAM,GACV,KAAK,CAAC,WAAW,KAAK,SAAS;YAC7B,CAAC,CAAC,SAAS;iBACN,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,CAAC;iBAClD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,KAAK,EAAE,CAAC,CAAC,WAAW;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC;YACP,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpB,KAAK,EAAE,CAAC,CAAC,WAAW;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;aACnB,CAAC,CAAC,CAAC;QAEV,GAAG,CAAC,IAAI,CAAC;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,YAAY,EAAE,SAAS,CAAC,MAAM;YAC9B,MAAM;YACN,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,4 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { GetFileSummaryInput, GetFileSummaryOutput } from '../types.js';
3
- export declare function getFileSummary(db: Database.Database, input: GetFileSummaryInput): GetFileSummaryOutput | null;
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function getFileSummary(repoSet: RepoSet, input: GetFileSummaryInput): GetFileSummaryOutput[];
4
4
  //# sourceMappingURL=get_file_summary.d.ts.map
@@ -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,CA2C7B"}
1
+ {"version":3,"file":"get_file_summary.d.ts","sourceRoot":"","sources":["../../src/tools/get_file_summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,oBAAoB,EAAc,MAAM,aAAa,CAAC;AAOzF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,mBAAmB,GACzB,oBAAoB,EAAE,CAmDxB"}
@@ -1,42 +1,48 @@
1
1
  import { getFileByPath, getSymbolsByFileId, getDependenciesByFile, getObservationsByFile, } from '../db/queries.js';
2
- export function getFileSummary(db, input) {
3
- const file = getFileByPath(db, input.file);
4
- if (!file)
5
- return null;
6
- const symbols = getSymbolsByFileId(db, file.id);
7
- const imports = getDependenciesByFile(db, file.id);
8
- const exports = symbols.filter((s) => s.is_exported === 1).map((s) => s.name);
9
- const output = {
10
- summary: file.summary,
11
- language: file.language,
12
- symbols: symbols.map((s) => ({
13
- name: s.name,
14
- kind: s.kind,
15
- signature: s.signature,
16
- })),
17
- imports,
18
- exports,
19
- tokenEstimate: file.raw_token_estimate ?? undefined,
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
- }
30
- // Attach memory context if prior observations exist for this file
31
- const observations = getObservationsByFile(db, input.file, 3);
32
- if (observations.length > 0) {
33
- const hasStale = observations.some((o) => o.stale === 1);
34
- output.memory_context = {
35
- last_seen_session: observations[0]?.session_id ?? null,
36
- observations: observations.map((o) => o.observation),
37
- stale: hasStale,
2
+ export function getFileSummary(repoSet, input) {
3
+ const repos = repoSet.filter(input.repos);
4
+ const out = [];
5
+ for (const repo of repos) {
6
+ const file = getFileByPath(repo.db, input.file);
7
+ if (!file)
8
+ continue;
9
+ const symbols = getSymbolsByFileId(repo.db, file.id);
10
+ const imports = getDependenciesByFile(repo.db, file.id);
11
+ const exports = symbols.filter((s) => s.is_exported === 1).map((s) => s.name);
12
+ const summary = {
13
+ summary: file.summary,
14
+ language: file.language,
15
+ symbols: symbols.map((s) => ({
16
+ name: s.name,
17
+ kind: s.kind,
18
+ signature: s.signature,
19
+ })),
20
+ imports,
21
+ exports,
22
+ tokenEstimate: file.raw_token_estimate ?? undefined,
23
+ project: repo.name,
38
24
  };
25
+ // Compute line count from token estimate (rough: 1 token ≈ 4 chars ≈ 0.5 lines)
26
+ // Better: count lines stored via raw_token_estimate proxy. We expose both.
27
+ // raw_token_estimate is already stored; derive line count from it if needed.
28
+ // For files that have been indexed, we can read the line count from the DB.
29
+ // Since line count is not stored, derive an estimate: ~80 chars per line.
30
+ if (file.raw_token_estimate != null) {
31
+ const estimatedChars = file.raw_token_estimate * 4;
32
+ summary.lineCount = Math.round(estimatedChars / 50); // ~50 chars per line avg
33
+ }
34
+ // Attach memory context if prior observations exist for this file
35
+ const observations = getObservationsByFile(repo.db, input.file, 3);
36
+ if (observations.length > 0) {
37
+ const hasStale = observations.some((o) => o.stale === 1);
38
+ summary.memory_context = {
39
+ last_seen_session: observations[0]?.session_id ?? null,
40
+ observations: observations.map((o) => o.observation),
41
+ stale: hasStale,
42
+ };
43
+ }
44
+ out.push(summary);
39
45
  }
40
- return output;
46
+ return out;
41
47
  }
42
48
  //# sourceMappingURL=get_file_summary.js.map
@@ -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;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
+ {"version":3,"file":"get_file_summary.js","sourceRoot":"","sources":["../../src/tools/get_file_summary.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,UAAU,cAAc,CAC5B,OAAgB,EAChB,KAA0B;IAE1B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAA2B,EAAE,CAAC;IAEvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,IAAI;YAAE,SAAS;QAEpB,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACxD,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;QAE9E,MAAM,OAAO,GAAyB;YACpC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,CAAC,CAAC,IAAkB;gBAC1B,SAAS,EAAE,CAAC,CAAC,SAAS;aACvB,CAAC,CAAC;YACH,OAAO;YACP,OAAO;YACP,aAAa,EAAE,IAAI,CAAC,kBAAkB,IAAI,SAAS;YACnD,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC;QAEF,gFAAgF;QAChF,2EAA2E;QAC3E,6EAA6E;QAC7E,4EAA4E;QAC5E,0EAA0E;QAC1E,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;YACnD,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC,yBAAyB;QAChF,CAAC;QAED,kEAAkE;QAClE,MAAM,YAAY,GAAG,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,cAAc,GAAG;gBACvB,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI;gBACtD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;gBACpD,KAAK,EAAE,QAAQ;aAChB,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,5 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { GetProjectOverviewInput, GetProjectOverviewOutput } from '../types.js';
3
- import type { FederatedDb } from '../server.js';
4
- export declare function getProjectOverview(db: Database.Database, projectRoot: string, federatedDbs?: FederatedDb[], sessionId?: string, input?: GetProjectOverviewInput): GetProjectOverviewOutput;
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function getProjectOverview(repoSet: RepoSet, primaryProjectRoot: string, sessionId?: string, input?: GetProjectOverviewInput): GetProjectOverviewOutput;
5
4
  //# 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,uBAAuB,EAAE,wBAAwB,EAA6C,MAAM,aAAa,CAAC;AAOhI,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,CAqH1B"}
1
+ {"version":3,"file":"get_project_overview.d.ts","sourceRoot":"","sources":["../../src/tools/get_project_overview.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,uBAAuB,EACvB,wBAAwB,EAIzB,MAAM,aAAa,CAAC;AAOrB,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAkHzD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,kBAAkB,EAAE,MAAM,EAC1B,SAAS,GAAE,MAAkB,EAC7B,KAAK,CAAC,EAAE,uBAAuB,GAC9B,wBAAwB,CAsB1B"}
@@ -1,10 +1,10 @@
1
1
  import { getAllFiles, countStaleObservations, countPriorSessions, getAntiPatternEvents, } from '../db/queries.js';
2
- export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId, input) {
3
- const mode = input?.mode ?? 'full';
2
+ function buildSnapshot(db, name, sessionId, projectRoot, mode = 'full') {
4
3
  const files = getAllFiles(db);
5
4
  if (files.length === 0) {
6
5
  return {
7
- rootPath: projectRoot,
6
+ project: name,
7
+ rootPath: projectRoot ?? '',
8
8
  language: 'unknown',
9
9
  entryPoints: [],
10
10
  modules: [],
@@ -45,14 +45,15 @@ export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId
45
45
  symbolCount: symbolCounts.get(f.id) ?? 0,
46
46
  }));
47
47
  }
48
- const primaryResult = {
49
- rootPath: projectRoot,
48
+ const snapshot = {
49
+ project: name,
50
+ rootPath: projectRoot ?? '',
50
51
  language,
51
52
  entryPoints,
52
53
  modules,
53
54
  stats: { totalFiles: files.length, totalSymbols },
54
55
  };
55
- // Session memory summary (passive surfacing)
56
+ // Session memory summary (passive surfacing) — only for primary
56
57
  if (sessionId) {
57
58
  const staleCount = countStaleObservations(db);
58
59
  const priorSessions = countPriorSessions(db, sessionId);
@@ -67,18 +68,13 @@ export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId
67
68
  active_anti_patterns: antiPatterns,
68
69
  hint: hasContext ? 'call get_session_memory for details' : null,
69
70
  };
70
- primaryResult.session_memory = session_memory;
71
+ snapshot.session_memory = session_memory;
71
72
  }
72
73
  // ── Index recommendation ──────────────────────────────────────────────────
73
- // Estimate whether using PindeX tools saves tokens vs direct file reads.
74
- // Break-even: tool-def overhead (~800 tokens/turn × ~6 turns = ~5K) vs
75
- // savings from avoiding full-file reads (avgFileTokens × avoidsPerSession).
76
- // Heuristic thresholds tuned against benchmark data.
77
74
  const BREAK_EVEN_FILES = 40;
78
75
  const BREAK_EVEN_AVG_LINES = 150;
79
76
  const tokenRow = db.prepare('SELECT COALESCE(SUM(raw_token_estimate), 0) as total FROM files').get();
80
77
  const avgFileTokens = files.length > 0 ? tokenRow.total / files.length : 0;
81
- // 1 token ≈ 4 chars ≈ 1/50 line (assuming ~200 chars/line avg)
82
78
  const avgFileLinesEstimate = Math.round(avgFileTokens * 4 / 50);
83
79
  const worthwhile = files.length >= BREAK_EVEN_FILES || avgFileLinesEstimate >= BREAK_EVEN_AVG_LINES;
84
80
  const recommendation = {
@@ -89,15 +85,19 @@ export function getProjectOverview(db, projectRoot, federatedDbs = [], sessionId
89
85
  avgFileLinesEstimate,
90
86
  breakEvenFiles: BREAK_EVEN_FILES,
91
87
  };
92
- primaryResult.index_recommendation = recommendation;
93
- if (federatedDbs.length === 0)
94
- return primaryResult;
95
- // Append per-federated-repo stats
96
- const federatedProjects = federatedDbs.map(({ path, db: fedDb }) => {
97
- const fedFiles = getAllFiles(fedDb);
98
- const fedTotalSymbols = fedDb.prepare('SELECT COUNT(*) as cnt FROM symbols').get().cnt;
99
- return { rootPath: path, stats: { totalFiles: fedFiles.length, totalSymbols: fedTotalSymbols } };
100
- });
101
- return { ...primaryResult, federatedProjects };
88
+ snapshot.index_recommendation = recommendation;
89
+ return snapshot;
90
+ }
91
+ export function getProjectOverview(repoSet, primaryProjectRoot, sessionId = 'default', input) {
92
+ const mode = input?.mode ?? 'full';
93
+ const repos = repoSet.filter(input?.repos);
94
+ const primary = repoSet.primary;
95
+ const snapshots = repos.map((repo) => buildSnapshot(repo.db, repo.name, repo.isPrimary ? sessionId : '', repo.isPrimary ? primaryProjectRoot : repo.path, mode));
96
+ const primarySnap = snapshots.find((s) => s.project === primary.name) ?? snapshots[0];
97
+ const federated = snapshots.filter((s) => s !== primarySnap);
98
+ return {
99
+ ...primarySnap,
100
+ federated_projects: federated.length > 0 ? federated : undefined,
101
+ };
102
102
  }
103
103
  //# sourceMappingURL=get_project_overview.js.map
@@ -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,4 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { GetSymbolInput, GetSymbolOutput } from '../types.js';
3
- export declare function getSymbol(db: Database.Database, input: GetSymbolInput): GetSymbolOutput | null;
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function getSymbol(repoSet: RepoSet, input: GetSymbolInput): GetSymbolOutput[];
4
4
  //# sourceMappingURL=get_symbol.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_symbol.d.ts","sourceRoot":"","sources":["../../src/tools/get_symbol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAQnE,wBAAgB,SAAS,CACvB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,cAAc,GACpB,eAAe,GAAG,IAAI,CAgCxB"}
1
+ {"version":3,"file":"get_symbol.d.ts","sourceRoot":"","sources":["../../src/tools/get_symbol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAEzD,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,GAAG,eAAe,EAAE,CAwCpF"}
@@ -1,32 +1,38 @@
1
1
  import { getSymbolByName, getDependenciesByFile, getFileByPath, getObservationsByFileSymbol, } from '../db/queries.js';
2
- export function getSymbol(db, input) {
3
- const symbol = getSymbolByName(db, input.name, input.file);
4
- if (!symbol)
5
- return null;
6
- // Get the file's import dependencies as context for this symbol
7
- const file = getFileByPath(db, symbol.file_path);
8
- const dependencies = file ? getDependenciesByFile(db, file.id) : [];
9
- const output = {
10
- name: symbol.name,
11
- kind: symbol.kind,
12
- signature: symbol.signature,
13
- summary: symbol.summary,
14
- file: symbol.file_path,
15
- startLine: symbol.start_line,
16
- endLine: symbol.end_line,
17
- isExported: symbol.is_exported === 1,
18
- dependencies,
19
- };
20
- // Attach memory context if prior observations exist for this symbol
21
- const observations = getObservationsByFileSymbol(db, symbol.file_path, symbol.name, 3);
22
- if (observations.length > 0) {
23
- const hasStale = observations.some((o) => o.stale === 1);
24
- output.memory_context = {
25
- last_seen_session: observations[0]?.session_id ?? null,
26
- observations: observations.map((o) => o.observation),
27
- stale: hasStale,
2
+ export function getSymbol(repoSet, input) {
3
+ const repos = repoSet.filter(input.repos);
4
+ const out = [];
5
+ for (const repo of repos) {
6
+ const symbol = getSymbolByName(repo.db, input.name, input.file);
7
+ if (!symbol)
8
+ continue;
9
+ // Get the file's import dependencies as context for this symbol
10
+ const file = getFileByPath(repo.db, symbol.file_path);
11
+ const dependencies = file ? getDependenciesByFile(repo.db, file.id) : [];
12
+ const detail = {
13
+ name: symbol.name,
14
+ kind: symbol.kind,
15
+ signature: symbol.signature,
16
+ summary: symbol.summary,
17
+ file: symbol.file_path,
18
+ startLine: symbol.start_line,
19
+ endLine: symbol.end_line,
20
+ isExported: symbol.is_exported === 1,
21
+ dependencies,
22
+ project: repo.name,
28
23
  };
24
+ // Attach memory context if prior observations exist for this symbol
25
+ const observations = getObservationsByFileSymbol(repo.db, symbol.file_path, symbol.name, 3);
26
+ if (observations.length > 0) {
27
+ const hasStale = observations.some((o) => o.stale === 1);
28
+ detail.memory_context = {
29
+ last_seen_session: observations[0]?.session_id ?? null,
30
+ observations: observations.map((o) => o.observation),
31
+ stale: hasStale,
32
+ };
33
+ }
34
+ out.push(detail);
29
35
  }
30
- return output;
36
+ return out;
31
37
  }
32
38
  //# sourceMappingURL=get_symbol.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"get_symbol.js","sourceRoot":"","sources":["../../src/tools/get_symbol.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,UAAU,SAAS,CACvB,EAAqB,EACrB,KAAqB;IAErB,MAAM,MAAM,GAAG,eAAe,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,gEAAgE;IAChE,MAAM,IAAI,GAAG,aAAa,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEpE,MAAM,MAAM,GAAoB;QAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,SAAS;QACtB,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ;QACxB,UAAU,EAAE,MAAM,CAAC,WAAW,KAAK,CAAC;QACpC,YAAY;KACb,CAAC;IAEF,oEAAoE;IACpE,MAAM,YAAY,GAAG,2BAA2B,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACvF,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_symbol.js","sourceRoot":"","sources":["../../src/tools/get_symbol.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAG1B,MAAM,UAAU,SAAS,CAAC,OAAgB,EAAE,KAAqB;IAC/D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAsB,EAAE,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,gEAAgE;QAChE,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzE,MAAM,MAAM,GAAoB;YAC9B,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,IAAI,EAAE,MAAM,CAAC,SAAS;YACtB,SAAS,EAAE,MAAM,CAAC,UAAU;YAC5B,OAAO,EAAE,MAAM,CAAC,QAAQ;YACxB,UAAU,EAAE,MAAM,CAAC,WAAW,KAAK,CAAC;YACpC,YAAY;YACZ,OAAO,EAAE,IAAI,CAAC,IAAI;SACnB,CAAC;QAEF,oEAAoE;QACpE,MAAM,YAAY,GAAG,2BAA2B,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5F,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YACzD,MAAM,CAAC,cAAc,GAAG;gBACtB,iBAAiB,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,IAAI,IAAI;gBACtD,YAAY,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;gBACpD,KAAK,EAAE,QAAQ;aAChB,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -5,21 +5,26 @@ export declare const SearchSymbolsSchema: z.ZodObject<{
5
5
  isAsync: z.ZodOptional<z.ZodBoolean>;
6
6
  hasTryCatch: z.ZodOptional<z.ZodBoolean>;
7
7
  snippet: z.ZodOptional<z.ZodBoolean>;
8
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
9
  }, z.core.$strip>;
9
10
  export declare const GetSymbolSchema: z.ZodObject<{
10
11
  name: z.ZodString;
11
12
  file: z.ZodOptional<z.ZodString>;
13
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
12
14
  }, z.core.$strip>;
13
15
  export declare const GetContextSchema: z.ZodObject<{
14
16
  file: z.ZodString;
15
17
  line: z.ZodNumber;
16
18
  range: z.ZodOptional<z.ZodNumber>;
19
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
17
20
  }, z.core.$strip>;
18
21
  export declare const GetFileSummarySchema: z.ZodObject<{
19
22
  file: z.ZodString;
23
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
20
24
  }, z.core.$strip>;
21
25
  export declare const FindUsagesSchema: z.ZodObject<{
22
26
  symbol: z.ZodString;
27
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
23
28
  }, z.core.$strip>;
24
29
  export declare const GetDependenciesSchema: z.ZodObject<{
25
30
  target: z.ZodString;
@@ -28,12 +33,14 @@ export declare const GetDependenciesSchema: z.ZodObject<{
28
33
  imported_by: "imported_by";
29
34
  both: "both";
30
35
  }>>;
36
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
31
37
  }, z.core.$strip>;
32
38
  export declare const GetProjectOverviewSchema: z.ZodObject<{
33
39
  mode: z.ZodOptional<z.ZodEnum<{
34
40
  brief: "brief";
35
41
  full: "full";
36
42
  }>>;
43
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
37
44
  }, z.core.$strip>;
38
45
  export declare const ReindexSchema: z.ZodObject<{
39
46
  target: z.ZodOptional<z.ZodString>;
@@ -56,10 +63,12 @@ export declare const SearchDocsSchema: z.ZodObject<{
56
63
  context: "context";
57
64
  all: "all";
58
65
  }>>;
66
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
59
67
  }, z.core.$strip>;
60
68
  export declare const GetDocChunkSchema: z.ZodObject<{
61
69
  file: z.ZodString;
62
70
  chunk_index: z.ZodOptional<z.ZodNumber>;
71
+ repos: z.ZodOptional<z.ZodArray<z.ZodString>>;
63
72
  }, z.core.$strip>;
64
73
  export declare const SaveContextSchema: z.ZodObject<{
65
74
  content: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,mBAAmB;;;;;;iBAM9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;iBAE/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;iBAEnC,CAAC;AAEH,eAAO,MAAM,aAAa;;iBAExB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;iBAI3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAKH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAepD,CAAC"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,mBAAmB;;;;;;;iBAO9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;iBAI1B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;iBAG/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;iBAG3B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;iBAIhC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;iBAGnC,CAAC;AAEH,eAAO,MAAM,aAAa;;iBAExB,CAAC;AAEH,eAAO,MAAM,mBAAmB;;iBAE9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;iBAGhC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;iBAK3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;iBAI5B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;iBAG5B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;iBAKjC,CAAC;AAKH,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,CAepD,CAAC"}
@@ -1,33 +1,41 @@
1
1
  import { z } from 'zod';
2
2
  // ─── Zod Schemas for MCP Tool Input Validation ──────────────────────────────
3
+ const reposField = z.array(z.string()).optional();
3
4
  export const SearchSymbolsSchema = z.object({
4
5
  query: z.string().min(1),
5
6
  limit: z.number().int().positive().optional(),
6
7
  isAsync: z.boolean().optional(),
7
8
  hasTryCatch: z.boolean().optional(),
8
9
  snippet: z.boolean().optional(),
10
+ repos: reposField,
9
11
  });
10
12
  export const GetSymbolSchema = z.object({
11
13
  name: z.string().min(1),
12
14
  file: z.string().optional(),
15
+ repos: reposField,
13
16
  });
14
17
  export const GetContextSchema = z.object({
15
18
  file: z.string().min(1),
16
19
  line: z.number().int().positive(),
17
20
  range: z.number().int().positive().optional(),
21
+ repos: reposField,
18
22
  });
19
23
  export const GetFileSummarySchema = z.object({
20
24
  file: z.string().min(1),
25
+ repos: reposField,
21
26
  });
22
27
  export const FindUsagesSchema = z.object({
23
28
  symbol: z.string().min(1),
29
+ repos: reposField,
24
30
  });
25
31
  export const GetDependenciesSchema = z.object({
26
32
  target: z.string().min(1),
27
33
  direction: z.enum(['imports', 'imported_by', 'both']).optional(),
34
+ repos: reposField,
28
35
  });
29
36
  export const GetProjectOverviewSchema = z.object({
30
37
  mode: z.enum(['brief', 'full']).optional(),
38
+ repos: reposField,
31
39
  });
32
40
  export const ReindexSchema = z.object({
33
41
  target: z.string().optional(),
@@ -43,10 +51,12 @@ export const SearchDocsSchema = z.object({
43
51
  query: z.string().min(1),
44
52
  limit: z.number().int().positive().optional(),
45
53
  type: z.enum(['docs', 'context', 'all']).optional(),
54
+ repos: reposField,
46
55
  });
47
56
  export const GetDocChunkSchema = z.object({
48
57
  file: z.string().min(1),
49
58
  chunk_index: z.number().int().nonnegative().optional(),
59
+ repos: reposField,
50
60
  });
51
61
  export const SaveContextSchema = z.object({
52
62
  content: z.string().min(1),