pindex 1.4.0 → 1.7.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 (126) hide show
  1. package/README.md +53 -23
  2. package/dist/cli/daemon.d.ts +1 -1
  3. package/dist/cli/daemon.d.ts.map +1 -1
  4. package/dist/cli/daemon.js +25 -6
  5. package/dist/cli/daemon.js.map +1 -1
  6. package/dist/cli/federate.d.ts +6 -0
  7. package/dist/cli/federate.d.ts.map +1 -0
  8. package/dist/cli/federate.js +121 -0
  9. package/dist/cli/federate.js.map +1 -0
  10. package/dist/cli/index.js +46 -2
  11. package/dist/cli/index.js.map +1 -1
  12. package/dist/cli/init.d.ts.map +1 -1
  13. package/dist/cli/init.js +14 -7
  14. package/dist/cli/init.js.map +1 -1
  15. package/dist/cli/project-detector.d.ts +16 -3
  16. package/dist/cli/project-detector.d.ts.map +1 -1
  17. package/dist/cli/project-detector.js +83 -11
  18. package/dist/cli/project-detector.js.map +1 -1
  19. package/dist/cli/setup.d.ts.map +1 -1
  20. package/dist/cli/setup.js +3 -5
  21. package/dist/cli/setup.js.map +1 -1
  22. package/dist/db/queries.d.ts +14 -0
  23. package/dist/db/queries.d.ts.map +1 -1
  24. package/dist/db/queries.js +22 -3
  25. package/dist/db/queries.js.map +1 -1
  26. package/dist/federation/merge.d.ts +4 -0
  27. package/dist/federation/merge.d.ts.map +1 -0
  28. package/dist/federation/merge.js +15 -0
  29. package/dist/federation/merge.js.map +1 -0
  30. package/dist/federation/registry-name.d.ts +6 -0
  31. package/dist/federation/registry-name.d.ts.map +1 -0
  32. package/dist/federation/registry-name.js +17 -0
  33. package/dist/federation/registry-name.js.map +1 -0
  34. package/dist/federation/repo-set.d.ts +27 -0
  35. package/dist/federation/repo-set.d.ts.map +1 -0
  36. package/dist/federation/repo-set.js +41 -0
  37. package/dist/federation/repo-set.js.map +1 -0
  38. package/dist/federation/repos-env.d.ts +16 -0
  39. package/dist/federation/repos-env.d.ts.map +1 -0
  40. package/dist/federation/repos-env.js +27 -0
  41. package/dist/federation/repos-env.js.map +1 -0
  42. package/dist/gui/server.d.ts.map +1 -1
  43. package/dist/gui/server.js +63 -23
  44. package/dist/gui/server.js.map +1 -1
  45. package/dist/index.js +36 -34
  46. package/dist/index.js.map +1 -1
  47. package/dist/indexer/detect-languages.d.ts +10 -0
  48. package/dist/indexer/detect-languages.d.ts.map +1 -0
  49. package/dist/indexer/detect-languages.js +36 -0
  50. package/dist/indexer/detect-languages.js.map +1 -0
  51. package/dist/indexer/index.d.ts +2 -0
  52. package/dist/indexer/index.d.ts.map +1 -1
  53. package/dist/indexer/index.js +21 -9
  54. package/dist/indexer/index.js.map +1 -1
  55. package/dist/indexer/parser.d.ts.map +1 -1
  56. package/dist/indexer/parser.js +36 -5
  57. package/dist/indexer/parser.js.map +1 -1
  58. package/dist/indexer/summarizer.d.ts.map +1 -1
  59. package/dist/indexer/summarizer.js +3 -0
  60. package/dist/indexer/summarizer.js.map +1 -1
  61. package/dist/memory/retention.d.ts +16 -0
  62. package/dist/memory/retention.d.ts.map +1 -0
  63. package/dist/memory/retention.js +32 -0
  64. package/dist/memory/retention.js.map +1 -0
  65. package/dist/monitoring/server.d.ts.map +1 -1
  66. package/dist/monitoring/server.js +22 -1
  67. package/dist/monitoring/server.js.map +1 -1
  68. package/dist/monitoring/ui/dashboard.js +83 -31
  69. package/dist/monitoring/ui/esc.js +17 -0
  70. package/dist/monitoring/ui/index.html +17 -11
  71. package/dist/monitoring/ui/styles.css +24 -4
  72. package/dist/server-config.d.ts +18 -0
  73. package/dist/server-config.d.ts.map +1 -0
  74. package/dist/server-config.js +41 -0
  75. package/dist/server-config.js.map +1 -0
  76. package/dist/server.d.ts +5 -0
  77. package/dist/server.d.ts.map +1 -1
  78. package/dist/server.js +21 -14
  79. package/dist/server.js.map +1 -1
  80. package/dist/tools/find_usages.d.ts +2 -2
  81. package/dist/tools/find_usages.d.ts.map +1 -1
  82. package/dist/tools/find_usages.js +24 -10
  83. package/dist/tools/find_usages.js.map +1 -1
  84. package/dist/tools/get_context.d.ts +2 -2
  85. package/dist/tools/get_context.d.ts.map +1 -1
  86. package/dist/tools/get_context.js +54 -50
  87. package/dist/tools/get_context.js.map +1 -1
  88. package/dist/tools/get_dependencies.d.ts +2 -2
  89. package/dist/tools/get_dependencies.d.ts.map +1 -1
  90. package/dist/tools/get_dependencies.js +24 -11
  91. package/dist/tools/get_dependencies.js.map +1 -1
  92. package/dist/tools/get_doc_chunk.d.ts +2 -2
  93. package/dist/tools/get_doc_chunk.d.ts.map +1 -1
  94. package/dist/tools/get_doc_chunk.js +38 -29
  95. package/dist/tools/get_doc_chunk.js.map +1 -1
  96. package/dist/tools/get_file_summary.d.ts +2 -2
  97. package/dist/tools/get_file_summary.d.ts.map +1 -1
  98. package/dist/tools/get_file_summary.js +48 -37
  99. package/dist/tools/get_file_summary.js.map +1 -1
  100. package/dist/tools/get_project_overview.d.ts +2 -3
  101. package/dist/tools/get_project_overview.d.ts.map +1 -1
  102. package/dist/tools/get_project_overview.js +22 -22
  103. package/dist/tools/get_project_overview.js.map +1 -1
  104. package/dist/tools/get_symbol.d.ts +2 -2
  105. package/dist/tools/get_symbol.d.ts.map +1 -1
  106. package/dist/tools/get_symbol.js +33 -27
  107. package/dist/tools/get_symbol.js.map +1 -1
  108. package/dist/tools/schemas.d.ts +9 -0
  109. package/dist/tools/schemas.d.ts.map +1 -1
  110. package/dist/tools/schemas.js +20 -2
  111. package/dist/tools/schemas.js.map +1 -1
  112. package/dist/tools/search_docs.d.ts +2 -2
  113. package/dist/tools/search_docs.d.ts.map +1 -1
  114. package/dist/tools/search_docs.js +40 -28
  115. package/dist/tools/search_docs.js.map +1 -1
  116. package/dist/tools/search_symbols.d.ts +2 -3
  117. package/dist/tools/search_symbols.d.ts.map +1 -1
  118. package/dist/tools/search_symbols.js +35 -46
  119. package/dist/tools/search_symbols.js.map +1 -1
  120. package/dist/types.d.ts +24 -10
  121. package/dist/types.d.ts.map +1 -1
  122. package/dist/util/net.d.ts +25 -0
  123. package/dist/util/net.d.ts.map +1 -0
  124. package/dist/util/net.js +50 -0
  125. package/dist/util/net.js.map +1 -0
  126. package/package.json +5 -5
@@ -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":"AAQA,OAAO,EACL,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,SAAS,aAAa,CACpB,EAAqB,EACrB,IAAY,EACZ,SAAiB,EACjB,WAAoB,EACpB,OAAyB,MAAM;IAE/B,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;IAE9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,WAAW,IAAI,EAAE;YAC3B,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,EAAE;YACf,OAAO,EAAE,EAAE;YACX,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;SAC1C,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,QAAQ,GACZ,CAAC,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IAE7E,oCAAoC;IACpC,MAAM,WAAW,GAAG,KAAK;SACtB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,MAAM,CACL,CAAC,CAAC,EAAE,EAAE,CACJ,kCAAkC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,iCAAiC,CAAC,IAAI,CAAC,CAAC,CAAC,CAC5C,CAAC;IAEJ,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAA6E,CAAC;IAElF,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,oEAAoE;QACpE,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,EAAqB,CAAC;QACvF,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC;QACvB,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAChF,CAAC;SAAM,CAAC;QACN,oEAAoE;QACpE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAC/C,MAAM,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC,+DAA+D,CAAC;aACrF,GAAG,EAA6C,CAAC;QACpD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,YAAY,IAAI,GAAG,CAAC,GAAG,CAAC;QAC1B,CAAC;QACD,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC1B,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,WAAW,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC;SACzC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,QAAQ,GAA4B;QACxC,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,WAAW,IAAI,EAAE;QAC3B,QAAQ;QACR,WAAW;QACX,OAAO;QACP,KAAK,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,MAAM,EAAE,YAAY,EAAE;KAClD,CAAC;IAEF,gEAAgE;IAChE,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,UAAU,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,kBAAkB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,oBAAoB,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7E,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,OAAO,GAAG,CAAC,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,UAAU,GAAG,CAAC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC;QAClF,MAAM,cAAc,GAAyB;YAC3C,cAAc,EAAE,aAAa;YAC7B,kBAAkB,EAAE,UAAU;YAC9B,oBAAoB,EAAE,YAAY;YAClC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,IAAI;SAChE,CAAC;QACF,QAAQ,CAAC,cAAc,GAAG,cAAc,CAAC;IAC3C,CAAC;IAED,6EAA6E;IAC7E,MAAM,gBAAgB,GAAG,EAAE,CAAC;IAC5B,MAAM,oBAAoB,GAAG,GAAG,CAAC;IACjC,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,iEAAiE,CAClE,CAAC,GAAG,EAAuB,CAAC;IAC7B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAE,QAAQ,CAAC,KAAgB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC;IAChE,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,gBAAgB,IAAI,oBAAoB,IAAI,oBAAoB,CAAC;IAEpG,MAAM,cAAc,GAAwB;QAC1C,UAAU;QACV,MAAM,EAAE,UAAU;YAChB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,gBAAgB,oBAAoB,uCAAuC;YAC5F,CAAC,CAAC,kBAAkB,KAAK,CAAC,MAAM,gBAAgB,oBAAoB,uEAAuE;QAC7I,oBAAoB;QACpB,cAAc,EAAE,gBAAgB;KACjC,CAAC;IACF,QAAQ,CAAC,oBAAoB,GAAG,cAAc,CAAC;IAE/C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,kBAA0B,EAC1B,YAAoB,SAAS,EAC7B,KAA+B;IAE/B,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,IAAI,MAAM,CAAC;IACnC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACnC,aAAa,CACX,IAAI,CAAC,EAAE,EACP,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAC/B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAC/C,IAAI,CACL,CACF,CAAC;IAEF,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC;IAE7D,OAAO;QACL,GAAG,WAAW;QACd,kBAAkB,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;KACjE,CAAC;AACJ,CAAC"}
@@ -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;AAmBxB,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,52 +1,70 @@
1
1
  import { z } from 'zod';
2
2
  // ─── Zod Schemas for MCP Tool Input Validation ──────────────────────────────
3
+ const reposField = z.array(z.string()).optional();
4
+ /** A project-relative path that may not be absolute or contain ".." traversal
5
+ * segments. Defense-in-depth on top of the runtime resolveWithinRoot guard. */
6
+ const safeRelPath = z
7
+ .string()
8
+ .min(1)
9
+ .refine((p) => !p.startsWith('/') &&
10
+ !/^[A-Za-z]:[\\/]/.test(p) &&
11
+ !p.split(/[\\/]/).includes('..'), { message: 'Path must be project-relative and contain no ".." segments' });
3
12
  export const SearchSymbolsSchema = z.object({
4
13
  query: z.string().min(1),
5
14
  limit: z.number().int().positive().optional(),
6
15
  isAsync: z.boolean().optional(),
7
16
  hasTryCatch: z.boolean().optional(),
8
17
  snippet: z.boolean().optional(),
18
+ repos: reposField,
9
19
  });
10
20
  export const GetSymbolSchema = z.object({
11
21
  name: z.string().min(1),
12
22
  file: z.string().optional(),
23
+ repos: reposField,
13
24
  });
14
25
  export const GetContextSchema = z.object({
15
26
  file: z.string().min(1),
16
27
  line: z.number().int().positive(),
17
28
  range: z.number().int().positive().optional(),
29
+ repos: reposField,
18
30
  });
19
31
  export const GetFileSummarySchema = z.object({
20
32
  file: z.string().min(1),
33
+ repos: reposField,
21
34
  });
22
35
  export const FindUsagesSchema = z.object({
23
36
  symbol: z.string().min(1),
37
+ repos: reposField,
24
38
  });
25
39
  export const GetDependenciesSchema = z.object({
26
40
  target: z.string().min(1),
27
41
  direction: z.enum(['imports', 'imported_by', 'both']).optional(),
42
+ repos: reposField,
28
43
  });
29
44
  export const GetProjectOverviewSchema = z.object({
30
45
  mode: z.enum(['brief', 'full']).optional(),
46
+ repos: reposField,
31
47
  });
32
48
  export const ReindexSchema = z.object({
33
- target: z.string().optional(),
49
+ target: safeRelPath.optional(),
34
50
  });
35
51
  export const GetTokenStatsSchema = z.object({
36
52
  session_id: z.string().optional(),
37
53
  });
38
54
  export const StartComparisonSchema = z.object({
39
- label: z.string().min(1),
55
+ label: z.string().min(1).max(200),
40
56
  mode: z.enum(['indexed', 'baseline']),
41
57
  });
42
58
  export const SearchDocsSchema = z.object({
43
59
  query: z.string().min(1),
44
60
  limit: z.number().int().positive().optional(),
45
61
  type: z.enum(['docs', 'context', 'all']).optional(),
62
+ repos: reposField,
46
63
  });
47
64
  export const GetDocChunkSchema = z.object({
48
65
  file: z.string().min(1),
49
66
  chunk_index: z.number().int().nonnegative().optional(),
67
+ repos: reposField,
50
68
  });
51
69
  export const SaveContextSchema = z.object({
52
70
  content: z.string().min(1),
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { SearchDocsInput, DocSearchResult } from '../types.js';
3
- export declare function searchDocs(db: Database.Database, input: SearchDocsInput): DocSearchResult[];
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function searchDocs(repoSet: RepoSet, input: SearchDocsInput): DocSearchResult[];
4
4
  //# sourceMappingURL=search_docs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search_docs.d.ts","sourceRoot":"","sources":["../../src/tools/search_docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAYpE,wBAAgB,UAAU,CACxB,EAAE,EAAE,QAAQ,CAAC,QAAQ,EACrB,KAAK,EAAE,eAAe,GACrB,eAAe,EAAE,CAmCnB"}
1
+ {"version":3,"file":"search_docs.d.ts","sourceRoot":"","sources":["../../src/tools/search_docs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEpE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAYzD,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,GAAG,eAAe,EAAE,CAkDtF"}
@@ -1,4 +1,5 @@
1
1
  import { searchDocumentsFts, searchContextEntriesFts } from '../db/queries.js';
2
+ import { dedupByKey } from '../federation/merge.js';
2
3
  const PREVIEW_LENGTH = 200;
3
4
  function preview(content) {
4
5
  const trimmed = content.trim();
@@ -6,37 +7,48 @@ function preview(content) {
6
7
  ? trimmed
7
8
  : trimmed.substring(0, PREVIEW_LENGTH) + '…';
8
9
  }
9
- export function searchDocs(db, input) {
10
+ export function searchDocs(repoSet, input) {
10
11
  const { query, limit = 20, type = 'all' } = input;
11
- const results = [];
12
- if (type === 'docs' || type === 'all') {
13
- const docLimit = type === 'all' ? Math.ceil(limit * 0.7) : limit;
14
- const docRows = searchDocumentsFts(db, query, docLimit);
15
- for (const row of docRows) {
16
- results.push({
17
- type: 'doc',
18
- id: row.id,
19
- content_preview: preview(row.content),
20
- file: row.file_path,
21
- heading: row.heading,
22
- start_line: row.start_line,
23
- });
12
+ const repos = repoSet.filter(input.repos);
13
+ const all = [];
14
+ for (const repo of repos) {
15
+ try {
16
+ if (type === 'docs' || type === 'all') {
17
+ const docLimit = type === 'all' ? Math.ceil(limit * 0.7) : limit;
18
+ const docRows = searchDocumentsFts(repo.db, query, docLimit);
19
+ for (const row of docRows) {
20
+ all.push({
21
+ type: 'doc',
22
+ id: row.id,
23
+ content_preview: preview(row.content),
24
+ project: repo.name,
25
+ file: row.file_path,
26
+ heading: row.heading,
27
+ start_line: row.start_line,
28
+ });
29
+ }
30
+ }
31
+ if (type === 'context' || type === 'all') {
32
+ const ctxLimit = type === 'all' ? Math.ceil(limit * 0.3) : limit;
33
+ const ctxRows = searchContextEntriesFts(repo.db, query, ctxLimit);
34
+ for (const row of ctxRows) {
35
+ all.push({
36
+ type: 'context',
37
+ id: row.id,
38
+ content_preview: preview(row.content),
39
+ project: repo.name,
40
+ tags: row.tags,
41
+ session_id: row.session_id,
42
+ created_at: row.created_at,
43
+ });
44
+ }
45
+ }
24
46
  }
25
- }
26
- if (type === 'context' || type === 'all') {
27
- const ctxLimit = type === 'all' ? Math.ceil(limit * 0.3) : limit;
28
- const ctxRows = searchContextEntriesFts(db, query, ctxLimit);
29
- for (const row of ctxRows) {
30
- results.push({
31
- type: 'context',
32
- id: row.id,
33
- content_preview: preview(row.content),
34
- tags: row.tags,
35
- session_id: row.session_id,
36
- created_at: row.created_at,
37
- });
47
+ catch (err) {
48
+ process.stderr.write(`[pindex] search_docs failed for repo '${repo.name}': ${String(err)}\n`);
38
49
  }
39
50
  }
40
- return results.slice(0, limit);
51
+ const deduped = dedupByKey(all, (r) => `${r.project}::${r.file ?? r.id}::${r.start_line ?? r.created_at ?? ''}`);
52
+ return deduped.slice(0, limit * Math.max(repos.length, 1));
41
53
  }
42
54
  //# sourceMappingURL=search_docs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search_docs.js","sourceRoot":"","sources":["../../src/tools/search_docs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAS,OAAO,CAAC,OAAe;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,IAAI,cAAc;QACrC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,EAAqB,EACrB,KAAsB;IAEtB,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAClD,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,MAAM,OAAO,GAAG,kBAAkB,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,KAAK;gBACX,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,SAAS;gBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,UAAU,EAAE,GAAG,CAAC,UAAU;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACjE,MAAM,OAAO,GAAG,uBAAuB,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC7D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,SAAS;gBACf,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;gBACrC,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,UAAU,EAAE,GAAG,CAAC,UAAU;gBAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;aAC3B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"search_docs.js","sourceRoot":"","sources":["../../src/tools/search_docs.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAS,OAAO,CAAC,OAAe;IAC9B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC/B,OAAO,OAAO,CAAC,MAAM,IAAI,cAAc;QACrC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,GAAG,CAAC;AACjD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,OAAgB,EAAE,KAAsB;IACjE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,IAAI,GAAG,KAAK,EAAE,GAAG,KAAK,CAAC;IAClD,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,IAAI,CAAC;YACH,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACtC,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjE,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC7D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,GAAG,CAAC,IAAI,CAAC;wBACP,IAAI,EAAE,KAAK;wBACX,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;wBACrC,OAAO,EAAE,IAAI,CAAC,IAAI;wBAClB,IAAI,EAAE,GAAG,CAAC,SAAS;wBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,UAAU,EAAE,GAAG,CAAC,UAAU;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACzC,MAAM,QAAQ,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;gBACjE,MAAM,OAAO,GAAG,uBAAuB,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAClE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;oBAC1B,GAAG,CAAC,IAAI,CAAC;wBACP,IAAI,EAAE,SAAS;wBACf,EAAE,EAAE,GAAG,CAAC,EAAE;wBACV,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;wBACrC,OAAO,EAAE,IAAI,CAAC,IAAI;wBAClB,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,UAAU,EAAE,GAAG,CAAC,UAAU;wBAC1B,UAAU,EAAE,GAAG,CAAC,UAAU;qBAC3B,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yCAAyC,IAAI,CAAC,IAAI,MAAM,MAAM,CAAC,GAAG,CAAC,IAAI,CACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CACxB,GAAG,EACH,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,EAAE,CAChF,CAAC;IACF,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC"}
@@ -1,5 +1,4 @@
1
- import type Database from 'better-sqlite3';
2
1
  import type { SearchSymbolsInput, SymbolSearchResult } from '../types.js';
3
- import type { FederatedDb } from '../server.js';
4
- export declare function searchSymbols(db: Database.Database, input: SearchSymbolsInput, federatedDbs?: FederatedDb[], projectRoot?: string): SymbolSearchResult[];
2
+ import type { RepoSet } from '../federation/repo-set.js';
3
+ export declare function searchSymbols(repoSet: RepoSet, input: SearchSymbolsInput): SymbolSearchResult[];
5
4
  //# 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":"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;AAGhD,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,CAyDtB"}
1
+ {"version":3,"file":"search_symbols.d.ts","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE1E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAIzD,wBAAgB,aAAa,CAC3B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,GACxB,kBAAkB,EAAE,CA2CtB"}
@@ -1,57 +1,46 @@
1
1
  import { readFileSync, existsSync } from 'node:fs';
2
- import { basename } from 'node:path';
3
2
  import { searchSymbolsFts } from '../db/queries.js';
3
+ import { dedupByKey } from '../federation/merge.js';
4
4
  import { resolveWithinRoot } from '../util/paths.js';
5
- export function searchSymbols(db, input, federatedDbs = [], projectRoot) {
5
+ export function searchSymbols(repoSet, input) {
6
6
  const limit = input.limit ?? 20;
7
- const filters = {
8
- isAsync: input.isAsync,
9
- hasTryCatch: input.hasTryCatch,
10
- };
11
- function mapRow(row, root) {
12
- const result = {
13
- name: row.name,
14
- kind: row.kind,
15
- signature: row.signature,
16
- summary: row.summary,
17
- file: row.file_path,
18
- line: row.start_line,
19
- isAsync: row.is_async === 1,
20
- hasTryCatch: row.has_try_catch === 1,
21
- };
22
- if (input.snippet && root) {
23
- const absPath = resolveWithinRoot(root, row.file_path);
24
- if (absPath && existsSync(absPath)) {
25
- try {
26
- const lines = readFileSync(absPath, 'utf-8').split('\n');
27
- const startIdx = Math.max(0, row.start_line - 1);
28
- result.snippet = lines.slice(startIdx, startIdx + 5).join('\n');
29
- }
30
- catch (err) {
31
- process.stderr.write(`[pindex] search_symbols snippet read failed for ${absPath}: ${String(err)}\n`);
7
+ const filters = { isAsync: input.isAsync, hasTryCatch: input.hasTryCatch };
8
+ const repos = repoSet.filter(input.repos);
9
+ const all = [];
10
+ for (const repo of repos) {
11
+ try {
12
+ for (const row of searchSymbolsFts(repo.db, input.query, limit, filters)) {
13
+ const result = {
14
+ name: row.name,
15
+ kind: row.kind,
16
+ signature: row.signature,
17
+ summary: row.summary,
18
+ file: row.file_path,
19
+ line: row.start_line,
20
+ isAsync: row.is_async === 1,
21
+ hasTryCatch: row.has_try_catch === 1,
22
+ project: repo.name,
23
+ };
24
+ if (input.snippet && repo.path) {
25
+ const absPath = resolveWithinRoot(repo.path, row.file_path);
26
+ if (absPath && existsSync(absPath)) {
27
+ try {
28
+ const lines = readFileSync(absPath, 'utf-8').split('\n');
29
+ const startIdx = Math.max(0, row.start_line - 1);
30
+ result.snippet = lines.slice(startIdx, startIdx + 5).join('\n');
31
+ }
32
+ catch (err) {
33
+ process.stderr.write(`[pindex] search_symbols snippet read failed for ${absPath}: ${String(err)}\n`);
34
+ }
35
+ }
32
36
  }
37
+ all.push(result);
33
38
  }
34
39
  }
35
- return result;
36
- }
37
- // Search primary DB
38
- const primary = searchSymbolsFts(db, input.query, limit, filters).map((row) => mapRow(row, projectRoot));
39
- if (federatedDbs.length === 0)
40
- return primary;
41
- // Search each federated DB and tag results with project name
42
- const federated = federatedDbs.flatMap(({ path, db: fedDb }) => {
43
- try {
44
- return searchSymbolsFts(fedDb, input.query, limit, filters).map((row) => ({
45
- ...mapRow(row),
46
- project: basename(path),
47
- }));
48
- }
49
40
  catch (err) {
50
- process.stderr.write(`[pindex] Federated search failed for ${path}: ${err}\n`);
51
- return [];
41
+ process.stderr.write(`[pindex] search_symbols failed for repo '${repo.name}': ${String(err)}\n`);
52
42
  }
53
- });
54
- // Merge; each DB contributes up to `limit` results
55
- return [...primary, ...federated].slice(0, limit * (1 + federatedDbs.length));
43
+ }
44
+ return dedupByKey(all, (r) => `${r.project}::${r.name}::${r.kind}`).slice(0, limit * Math.max(repos.length, 1));
56
45
  }
57
46
  //# sourceMappingURL=search_symbols.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search_symbols.js","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search_symbols.js","sourceRoot":"","sources":["../../src/tools/search_symbols.ts"],"names":[],"mappings":"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"}