@jcode.labs/ragmir 2.17.1 → 2.18.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 (203) hide show
  1. package/README.md +53 -6
  2. package/dist/access-log.d.ts +10 -0
  3. package/dist/access-log.d.ts.map +1 -1
  4. package/dist/access-log.js +119 -49
  5. package/dist/access-log.js.map +1 -1
  6. package/dist/chunking.d.ts +5 -1
  7. package/dist/chunking.d.ts.map +1 -1
  8. package/dist/chunking.js +102 -16
  9. package/dist/chunking.js.map +1 -1
  10. package/dist/citation.d.ts +18 -0
  11. package/dist/citation.d.ts.map +1 -0
  12. package/dist/citation.js +54 -0
  13. package/dist/citation.js.map +1 -0
  14. package/dist/cli-entry.d.ts +3 -0
  15. package/dist/cli-entry.d.ts.map +1 -0
  16. package/dist/cli-entry.js +16 -0
  17. package/dist/cli-entry.js.map +1 -0
  18. package/dist/cli-fast.d.ts +13 -0
  19. package/dist/cli-fast.d.ts.map +1 -0
  20. package/dist/cli-fast.js +145 -0
  21. package/dist/cli-fast.js.map +1 -0
  22. package/dist/cli-options.d.ts +3 -0
  23. package/dist/cli-options.d.ts.map +1 -1
  24. package/dist/cli-options.js +7 -0
  25. package/dist/cli-options.js.map +1 -1
  26. package/dist/cli-stdin.d.ts +3 -0
  27. package/dist/cli-stdin.d.ts.map +1 -0
  28. package/dist/cli-stdin.js +15 -0
  29. package/dist/cli-stdin.js.map +1 -0
  30. package/dist/cli.js +254 -47
  31. package/dist/cli.js.map +1 -1
  32. package/dist/client.d.ts +13 -2
  33. package/dist/client.d.ts.map +1 -1
  34. package/dist/client.js +155 -10
  35. package/dist/client.js.map +1 -1
  36. package/dist/config.d.ts +6 -0
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +227 -49
  39. package/dist/config.js.map +1 -1
  40. package/dist/context-resources.d.ts +4 -2
  41. package/dist/context-resources.d.ts.map +1 -1
  42. package/dist/context-resources.js +55 -24
  43. package/dist/context-resources.js.map +1 -1
  44. package/dist/defaults.d.ts +27 -0
  45. package/dist/defaults.d.ts.map +1 -1
  46. package/dist/defaults.js +42 -2
  47. package/dist/defaults.js.map +1 -1
  48. package/dist/destroy.d.ts +2 -2
  49. package/dist/destroy.d.ts.map +1 -1
  50. package/dist/destroy.js +34 -20
  51. package/dist/destroy.js.map +1 -1
  52. package/dist/doctor.d.ts +3 -2
  53. package/dist/doctor.d.ts.map +1 -1
  54. package/dist/doctor.js +86 -41
  55. package/dist/doctor.js.map +1 -1
  56. package/dist/durable-file.d.ts +13 -0
  57. package/dist/durable-file.d.ts.map +1 -0
  58. package/dist/durable-file.js +56 -0
  59. package/dist/durable-file.js.map +1 -0
  60. package/dist/embeddings.d.ts +14 -3
  61. package/dist/embeddings.d.ts.map +1 -1
  62. package/dist/embeddings.js +233 -95
  63. package/dist/embeddings.js.map +1 -1
  64. package/dist/errors.d.ts +1 -1
  65. package/dist/errors.d.ts.map +1 -1
  66. package/dist/errors.js.map +1 -1
  67. package/dist/evaluate.d.ts +4 -3
  68. package/dist/evaluate.d.ts.map +1 -1
  69. package/dist/evaluate.js +611 -110
  70. package/dist/evaluate.js.map +1 -1
  71. package/dist/files.d.ts +4 -1
  72. package/dist/files.d.ts.map +1 -1
  73. package/dist/files.js +119 -33
  74. package/dist/files.js.map +1 -1
  75. package/dist/generation-retention.d.ts +52 -0
  76. package/dist/generation-retention.d.ts.map +1 -0
  77. package/dist/generation-retention.js +318 -0
  78. package/dist/generation-retention.js.map +1 -0
  79. package/dist/index-diagnostics.d.ts +3 -2
  80. package/dist/index-diagnostics.d.ts.map +1 -1
  81. package/dist/index-diagnostics.js +32 -3
  82. package/dist/index-diagnostics.js.map +1 -1
  83. package/dist/index-policy.d.ts.map +1 -1
  84. package/dist/index-policy.js +3 -0
  85. package/dist/index-policy.js.map +1 -1
  86. package/dist/index-write-lock.d.ts +16 -1
  87. package/dist/index-write-lock.d.ts.map +1 -1
  88. package/dist/index-write-lock.js +392 -13
  89. package/dist/index-write-lock.js.map +1 -1
  90. package/dist/index.d.ts +12 -4
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +5 -2
  93. package/dist/index.js.map +1 -1
  94. package/dist/ingest.d.ts +11 -2
  95. package/dist/ingest.d.ts.map +1 -1
  96. package/dist/ingest.js +680 -165
  97. package/dist/ingest.js.map +1 -1
  98. package/dist/ingestion-metrics.d.ts +58 -0
  99. package/dist/ingestion-metrics.d.ts.map +1 -0
  100. package/dist/ingestion-metrics.js +216 -0
  101. package/dist/ingestion-metrics.js.map +1 -0
  102. package/dist/ingestion-state.d.ts +11 -2
  103. package/dist/ingestion-state.d.ts.map +1 -1
  104. package/dist/ingestion-state.js +480 -49
  105. package/dist/ingestion-state.js.map +1 -1
  106. package/dist/limits.d.ts.map +1 -1
  107. package/dist/limits.js +11 -1
  108. package/dist/limits.js.map +1 -1
  109. package/dist/mcp-output.d.ts +44 -4
  110. package/dist/mcp-output.d.ts.map +1 -1
  111. package/dist/mcp-output.js +132 -159
  112. package/dist/mcp-output.js.map +1 -1
  113. package/dist/mcp-summaries.d.ts +32 -0
  114. package/dist/mcp-summaries.d.ts.map +1 -0
  115. package/dist/mcp-summaries.js +227 -0
  116. package/dist/mcp-summaries.js.map +1 -0
  117. package/dist/mcp.d.ts +1 -1
  118. package/dist/mcp.d.ts.map +1 -1
  119. package/dist/mcp.js +85 -46
  120. package/dist/mcp.js.map +1 -1
  121. package/dist/ocr-cache.d.ts +15 -0
  122. package/dist/ocr-cache.d.ts.map +1 -0
  123. package/dist/ocr-cache.js +90 -0
  124. package/dist/ocr-cache.js.map +1 -0
  125. package/dist/ocr.d.ts +31 -0
  126. package/dist/ocr.d.ts.map +1 -1
  127. package/dist/ocr.js +193 -17
  128. package/dist/ocr.js.map +1 -1
  129. package/dist/parsing.d.ts.map +1 -1
  130. package/dist/parsing.js +482 -85
  131. package/dist/parsing.js.map +1 -1
  132. package/dist/permissions.js +2 -2
  133. package/dist/permissions.js.map +1 -1
  134. package/dist/preview.d.ts.map +1 -1
  135. package/dist/preview.js +10 -11
  136. package/dist/preview.js.map +1 -1
  137. package/dist/quality-report.d.ts +12 -0
  138. package/dist/quality-report.d.ts.map +1 -0
  139. package/dist/quality-report.js +146 -0
  140. package/dist/quality-report.js.map +1 -0
  141. package/dist/query.d.ts +7 -4
  142. package/dist/query.d.ts.map +1 -1
  143. package/dist/query.js +371 -284
  144. package/dist/query.js.map +1 -1
  145. package/dist/ranking.d.ts +38 -0
  146. package/dist/ranking.d.ts.map +1 -0
  147. package/dist/ranking.js +278 -0
  148. package/dist/ranking.js.map +1 -0
  149. package/dist/redaction.d.ts +6 -1
  150. package/dist/redaction.d.ts.map +1 -1
  151. package/dist/redaction.js +118 -4
  152. package/dist/redaction.js.map +1 -1
  153. package/dist/research.d.ts +6 -1
  154. package/dist/research.d.ts.map +1 -1
  155. package/dist/research.js +330 -130
  156. package/dist/research.js.map +1 -1
  157. package/dist/runtime-info.d.ts +3 -0
  158. package/dist/runtime-info.d.ts.map +1 -0
  159. package/dist/runtime-info.js +81 -0
  160. package/dist/runtime-info.js.map +1 -0
  161. package/dist/security.d.ts +3 -2
  162. package/dist/security.d.ts.map +1 -1
  163. package/dist/security.js +242 -45
  164. package/dist/security.js.map +1 -1
  165. package/dist/semantic-config.d.ts +7 -1
  166. package/dist/semantic-config.d.ts.map +1 -1
  167. package/dist/semantic-config.js +30 -4
  168. package/dist/semantic-config.js.map +1 -1
  169. package/dist/setup.js +6 -3
  170. package/dist/setup.js.map +1 -1
  171. package/dist/skill.js +34 -12
  172. package/dist/skill.js.map +1 -1
  173. package/dist/source-fingerprint-cache.d.ts +20 -0
  174. package/dist/source-fingerprint-cache.d.ts.map +1 -0
  175. package/dist/source-fingerprint-cache.js +133 -0
  176. package/dist/source-fingerprint-cache.js.map +1 -0
  177. package/dist/storage-maintenance.d.ts +46 -0
  178. package/dist/storage-maintenance.d.ts.map +1 -0
  179. package/dist/storage-maintenance.js +329 -0
  180. package/dist/storage-maintenance.js.map +1 -0
  181. package/dist/store.d.ts +39 -2
  182. package/dist/store.d.ts.map +1 -1
  183. package/dist/store.js +559 -24
  184. package/dist/store.js.map +1 -1
  185. package/dist/text.d.ts +1 -1
  186. package/dist/text.d.ts.map +1 -1
  187. package/dist/text.js +12 -2
  188. package/dist/text.js.map +1 -1
  189. package/dist/types.d.ts +414 -5
  190. package/dist/types.d.ts.map +1 -1
  191. package/dist/vector-index.d.ts +42 -0
  192. package/dist/vector-index.d.ts.map +1 -0
  193. package/dist/vector-index.js +249 -0
  194. package/dist/vector-index.js.map +1 -0
  195. package/dist/version.d.ts +1 -1
  196. package/dist/version.js +1 -1
  197. package/dist/workload.d.ts +22 -0
  198. package/dist/workload.d.ts.map +1 -0
  199. package/dist/workload.js +181 -0
  200. package/dist/workload.js.map +1 -0
  201. package/examples/document-evidence-benchmark/README.md +3 -2
  202. package/examples/document-evidence-benchmark/golden-queries.json +1 -1
  203. package/package.json +36 -11
package/dist/research.js CHANGED
@@ -3,18 +3,28 @@ import path from "node:path";
3
3
  import fg from "fast-glob";
4
4
  import { recordAccess } from "./access-log.js";
5
5
  import { loadConfig } from "./config.js";
6
+ import { RagmirError } from "./errors.js";
6
7
  import { countSkippedByReason, DEFAULT_FAST_GLOB_IGNORES, isSensitiveFilePath } from "./files.js";
7
- import { audit } from "./ingest.js";
8
+ import { auditWithConfig } from "./ingest.js";
8
9
  import { operationSignal, throwIfAborted } from "./operation.js";
9
10
  import { searchWithConfig } from "./query.js";
10
11
  import { redactText } from "./redaction.js";
11
- import { securityAudit } from "./security.js";
12
+ import { securityAuditWithConfig } from "./security.js";
13
+ import { closeIndexReadSnapshot, loadIndexReadSnapshot } from "./store.js";
12
14
  import { normalizeForMatch } from "./text.js";
13
15
  const DEFAULT_RESEARCH_QUERY_LIMIT = 5;
14
16
  const DEFAULT_CODE_EVIDENCE_LIMIT = 20;
15
- const CODE_EVIDENCE_CANDIDATE_MULTIPLIER = 5;
17
+ const DEFAULT_CODE_SCAN_MAX_FILES = 1_000;
18
+ const DEFAULT_CODE_SCAN_MAX_BYTES = 32 * 1024 * 1024;
19
+ const DEFAULT_CODE_SCAN_CONCURRENCY = 4;
20
+ const MAX_CODE_EVIDENCE_LIMIT = 100;
21
+ const MAX_CODE_SCAN_FILES = 10_000;
22
+ const MAX_CODE_SCAN_BYTES = 256 * 1024 * 1024;
23
+ const MAX_CODE_SCAN_CONCURRENCY = 16;
16
24
  const COMPACT_SNIPPET_LENGTH = 260;
17
25
  const CODE_SCAN_MAX_BYTES = 256_000;
26
+ const RESEARCH_RRF_K = 60;
27
+ const PRIMARY_QUERY_WEIGHT_FACTOR = 2;
18
28
  const CODE_SCAN_EXTENSIONS = new Set([
19
29
  ".c",
20
30
  ".cjs",
@@ -67,7 +77,7 @@ export async function research(query, options = {}) {
67
77
  const config = await loadConfig(String(options.cwd ?? process.cwd()));
68
78
  return researchWithConfig(query, options, config);
69
79
  }
70
- export async function researchWithConfig(query, options, config, connection) {
80
+ export async function researchWithConfig(query, options, config, connection, suppliedSnapshot) {
71
81
  const signal = operationSignal(options);
72
82
  throwIfAborted(signal);
73
83
  const normalizedQuery = query.trim();
@@ -75,82 +85,89 @@ export async function researchWithConfig(query, options, config, connection) {
75
85
  throw new Error("Research query must not be empty.");
76
86
  }
77
87
  const topK = options.topK ?? config.topK;
78
- const operationOptions = signal ? { signal } : {};
79
- const [auditReport, securityReport] = await Promise.all([
80
- audit(config.projectRoot, operationOptions),
81
- securityAudit(config.projectRoot, operationOptions),
82
- ]);
83
- throwIfAborted(signal);
84
88
  const generatedQueries = researchQueries(normalizedQuery);
85
89
  const includeCode = config.privacyProfile === "strict" ? false : options.includeCode !== false;
90
+ const budget = researchBudget(options);
86
91
  const perQueryTopK = Math.max(2, Math.ceil(topK / 2));
87
- const searchResults = await Promise.all(generatedQueries.map(async (generatedQuery) => ({
88
- query: generatedQuery,
89
- results: await searchWithConfig(generatedQuery, {
90
- cwd: config.projectRoot,
91
- topK: perQueryTopK,
92
- ...(options.includePaths ? { includePaths: options.includePaths } : {}),
93
- ...(options.excludePaths ? { excludePaths: options.excludePaths } : {}),
94
- ...(options.contextPaths ? { contextPaths: options.contextPaths } : {}),
95
- }, config, connection, signal),
96
- })));
97
- throwIfAborted(signal);
98
- const evidence = mergeEvidence(searchResults).slice(0, topK);
99
- const codeEvidence = !includeCode
100
- ? []
101
- : await findCodeEvidence(config, normalizedQuery, DEFAULT_CODE_EVIDENCE_LIMIT, signal);
102
- throwIfAborted(signal);
103
- const unsupportedFiles = countSkippedByReason(auditReport.skippedFiles, "unsupported-extension");
104
- const oversizedFiles = countSkippedByReason(auditReport.skippedFiles, "oversized");
105
- const gaps = researchGaps({
106
- evidenceCount: evidence.length,
107
- codeEvidenceCount: codeEvidence.length,
108
- includeCode,
109
- missingFromIndex: auditReport.missingFromIndex.length,
110
- staleInIndex: auditReport.staleInIndex.length,
111
- emptyTextFiles: auditReport.emptyTextFiles.length,
112
- securityWarnings: securityReport.warnings.length,
113
- unsupportedFiles,
114
- oversizedFiles,
115
- duplicateCandidates: auditReport.sourceDiagnostics.duplicateCandidates.length,
116
- archiveCandidates: auditReport.sourceDiagnostics.archiveCandidates.length,
117
- mirrorCandidates: auditReport.sourceDiagnostics.mirrorCandidates.length,
118
- });
119
- await recordAccess(config, {
120
- action: "research",
121
- query: normalizedQuery,
122
- topK,
123
- resultCount: evidence.length,
124
- });
125
- return {
126
- query: normalizedQuery,
127
- generatedQueries,
128
- ready: evidence.length > 0 &&
129
- auditReport.missingFromIndex.length === 0 &&
130
- auditReport.staleInIndex.length === 0 &&
131
- auditReport.emptyTextFiles.length === 0 &&
132
- oversizedFiles === 0 &&
133
- securityReport.warnings.length === 0,
134
- audit: {
135
- supportedFiles: auditReport.supportedFiles.length,
136
- supportedBytes: auditReport.supportedBytes,
137
- largestFileBytes: auditReport.largestFileBytes,
138
- skippedFiles: auditReport.skippedFiles.length,
139
- unsupportedFiles,
140
- oversizedFiles,
141
- indexedFiles: auditReport.indexedFiles.length,
142
- totalChunks: auditReport.totalChunks,
143
- missingFromIndex: auditReport.missingFromIndex.length,
144
- staleInIndex: auditReport.staleInIndex.length,
145
- emptyTextFiles: auditReport.emptyTextFiles.length,
146
- },
147
- securityWarnings: securityReport.warnings,
148
- sourceDiagnostics: auditReport.sourceDiagnostics,
149
- evidence,
150
- codeEvidence,
151
- gaps,
152
- nextSteps: researchNextSteps(gaps),
153
- };
92
+ const ownsSnapshot = suppliedSnapshot === undefined;
93
+ const snapshot = suppliedSnapshot ?? (await loadIndexReadSnapshot(config, connection));
94
+ try {
95
+ throwIfAborted(signal);
96
+ const [health, searchResults, codeScan] = await Promise.all([
97
+ researchHealthSnapshot(config, options.fullAudit === true, snapshot.manifest, signal),
98
+ Promise.all(generatedQueries.map(async (generatedQuery) => ({
99
+ query: generatedQuery,
100
+ results: await searchWithConfig(generatedQuery, {
101
+ cwd: config.projectRoot,
102
+ topK: perQueryTopK,
103
+ ...(options.includePaths ? { includePaths: options.includePaths } : {}),
104
+ ...(options.excludePaths ? { excludePaths: options.excludePaths } : {}),
105
+ ...(options.contextPaths ? { contextPaths: options.contextPaths } : {}),
106
+ }, config, connection, signal, snapshot),
107
+ }))),
108
+ includeCode
109
+ ? findCodeEvidence(config, normalizedQuery, budget, signal)
110
+ : Promise.resolve(emptyCodeScan()),
111
+ ]);
112
+ throwIfAborted(signal);
113
+ const evidence = rankResearchEvidence(searchResults, normalizedQuery).slice(0, topK);
114
+ const codeEvidence = codeScan.evidence;
115
+ const gaps = researchGaps({
116
+ indexAvailable: health.indexAvailable,
117
+ evidenceCount: evidence.length,
118
+ codeEvidenceCount: codeEvidence.length,
119
+ includeCode,
120
+ missingFromIndex: health.audit.missingFromIndex,
121
+ staleInIndex: health.audit.staleInIndex,
122
+ emptyTextFiles: health.audit.emptyTextFiles,
123
+ securityWarnings: health.securityWarnings.length,
124
+ unsupportedFiles: health.audit.unsupportedFiles,
125
+ oversizedFiles: health.audit.oversizedFiles,
126
+ duplicateCandidates: health.sourceDiagnostics.duplicateCandidates.length,
127
+ archiveCandidates: health.sourceDiagnostics.archiveCandidates.length,
128
+ mirrorCandidates: health.sourceDiagnostics.mirrorCandidates.length,
129
+ });
130
+ await recordAccess(config, {
131
+ action: "research",
132
+ query: normalizedQuery,
133
+ topK,
134
+ resultCount: evidence.length,
135
+ });
136
+ return {
137
+ query: normalizedQuery,
138
+ generatedQueries,
139
+ ready: health.indexAvailable &&
140
+ evidence.length > 0 &&
141
+ health.audit.missingFromIndex === 0 &&
142
+ health.audit.staleInIndex === 0 &&
143
+ health.audit.emptyTextFiles === 0 &&
144
+ health.audit.oversizedFiles === 0 &&
145
+ health.securityWarnings.length === 0,
146
+ audit: health.audit,
147
+ securityWarnings: health.securityWarnings,
148
+ sourceDiagnostics: health.sourceDiagnostics,
149
+ evidence,
150
+ codeEvidence,
151
+ budgets: {
152
+ timeoutMs: options.timeoutMs ?? null,
153
+ evidenceTopK: topK,
154
+ codeEvidenceTopK: budget.codeTopK,
155
+ codeScanMaxFiles: budget.codeScanMaxFiles,
156
+ codeScanMaxBytes: budget.codeScanMaxBytes,
157
+ codeScanConcurrency: budget.codeScanConcurrency,
158
+ codeFilesScanned: codeScan.filesScanned,
159
+ codeBytesScanned: codeScan.bytesScanned,
160
+ codeScanTruncated: codeScan.truncated,
161
+ },
162
+ gaps,
163
+ nextSteps: researchNextSteps(gaps),
164
+ };
165
+ }
166
+ finally {
167
+ if (ownsSnapshot) {
168
+ closeIndexReadSnapshot(snapshot, config);
169
+ }
170
+ }
154
171
  }
155
172
  export function compactSearchResults(results, maxLength = COMPACT_SNIPPET_LENGTH) {
156
173
  return results.map((result) => ({
@@ -184,57 +201,198 @@ export function compactResearchReport(report) {
184
201
  pageStart: evidence.pageStart,
185
202
  pageEnd: evidence.pageEnd,
186
203
  queries: evidence.queries,
204
+ bestRank: evidence.bestRank,
205
+ researchScore: evidence.researchScore,
187
206
  })),
188
207
  };
189
208
  }
190
209
  function researchQueries(query) {
191
210
  const trimmed = query.trim();
211
+ const keywordQuery = meaningfulTerms(trimmed).join(" ");
192
212
  const queries = [
193
213
  trimmed,
194
- `${trimmed} scope requirements rules`,
195
- `${trimmed} actors permissions workflow status validation`,
196
- `${trimmed} dates deadlines planning risks blockers`,
197
- `${trimmed} integration API data model export dependencies`,
198
- ];
214
+ keywordQuery,
215
+ ...researchSuffixes(trimmed).map((suffix) => `${trimmed} ${suffix}`),
216
+ ].filter(Boolean);
199
217
  return [...new Set(queries)].slice(0, DEFAULT_RESEARCH_QUERY_LIMIT);
200
218
  }
201
- function mergeEvidence(searchResults) {
219
+ export function rankResearchEvidence(searchResults, primaryQuery) {
220
+ const canonicalResults = [...searchResults].sort((left, right) => compareResearchQueries(left.query, right.query, primaryQuery));
221
+ const primaryWeight = Math.max(1, canonicalResults.length * PRIMARY_QUERY_WEIGHT_FACTOR);
202
222
  const bySource = new Map();
203
- for (const searchResult of searchResults) {
204
- for (const result of searchResult.results) {
223
+ for (const searchResult of canonicalResults) {
224
+ const weight = searchResult.query === primaryQuery ? primaryWeight : 1;
225
+ for (const [index, result] of searchResult.results.entries()) {
205
226
  const key = `${result.relativePath}\0${result.chunkIndex}`;
227
+ const rank = index + 1;
206
228
  const existing = bySource.get(key);
207
229
  if (existing) {
208
- existing.queries.push(searchResult.query);
230
+ existing.queryRanks.set(searchResult.query, Math.min(existing.queryRanks.get(searchResult.query) ?? rank, rank));
231
+ existing.researchScore += weight / (RESEARCH_RRF_K + rank);
232
+ if (compareResearchResultChoice(searchResult.query, rank, existing.resultQuery, existing.resultRank, primaryQuery) < 0) {
233
+ existing.result = result;
234
+ existing.resultQuery = searchResult.query;
235
+ existing.resultRank = rank;
236
+ }
209
237
  continue;
210
238
  }
211
239
  bySource.set(key, {
212
- source: result.source,
213
- relativePath: result.relativePath,
214
- chunkIndex: result.chunkIndex,
215
- contextPath: result.contextPath,
216
- citation: result.citation,
217
- text: result.text,
218
- distance: result.distance,
219
- lineStart: result.lineStart,
220
- lineEnd: result.lineEnd,
221
- pageStart: result.pageStart,
222
- pageEnd: result.pageEnd,
223
- queries: [searchResult.query],
240
+ result,
241
+ resultQuery: searchResult.query,
242
+ resultRank: rank,
243
+ queryRanks: new Map([[searchResult.query, rank]]),
244
+ researchScore: weight / (RESEARCH_RRF_K + rank),
224
245
  });
225
246
  }
226
247
  }
227
- return [...bySource.values()];
248
+ return [...bySource.values()]
249
+ .map(({ result, queryRanks, researchScore }) => ({
250
+ source: result.source,
251
+ relativePath: result.relativePath,
252
+ chunkIndex: result.chunkIndex,
253
+ contextPath: result.contextPath,
254
+ citation: result.citation,
255
+ text: result.text,
256
+ distance: result.distance,
257
+ lineStart: result.lineStart,
258
+ lineEnd: result.lineEnd,
259
+ pageStart: result.pageStart,
260
+ pageEnd: result.pageEnd,
261
+ queries: [...queryRanks.keys()].sort((left, right) => compareResearchQueries(left, right, primaryQuery)),
262
+ bestRank: Math.min(...queryRanks.values()),
263
+ researchScore: Number(researchScore.toFixed(12)),
264
+ }))
265
+ .sort(compareResearchEvidence);
266
+ }
267
+ async function researchHealthSnapshot(config, fullAudit, manifest, signal) {
268
+ const operationOptions = signal ? { signal } : {};
269
+ if (fullAudit) {
270
+ const [auditReport, securityReport] = await Promise.all([
271
+ auditWithConfig(config, operationOptions),
272
+ securityAuditWithConfig(config, operationOptions),
273
+ ]);
274
+ throwIfAborted(signal);
275
+ return {
276
+ indexAvailable: manifest !== null,
277
+ audit: {
278
+ mode: "full",
279
+ inventoryVerified: true,
280
+ supportedFiles: auditReport.supportedFiles.length,
281
+ supportedBytes: auditReport.supportedBytes,
282
+ largestFileBytes: auditReport.largestFileBytes,
283
+ skippedFiles: auditReport.skippedFiles.length,
284
+ unsupportedFiles: countSkippedByReason(auditReport.skippedFiles, "unsupported-extension"),
285
+ oversizedFiles: countSkippedByReason(auditReport.skippedFiles, "oversized"),
286
+ indexedFiles: auditReport.indexedFiles.length,
287
+ totalChunks: auditReport.totalChunks,
288
+ missingFromIndex: auditReport.missingFromIndex.length,
289
+ staleInIndex: auditReport.staleInIndex.length,
290
+ emptyTextFiles: auditReport.emptyTextFiles.length,
291
+ },
292
+ securityWarnings: securityReport.warnings,
293
+ sourceDiagnostics: auditReport.sourceDiagnostics,
294
+ };
295
+ }
296
+ const health = manifest?.health;
297
+ return {
298
+ indexAvailable: manifest !== null && health !== undefined,
299
+ audit: {
300
+ mode: "manifest",
301
+ inventoryVerified: false,
302
+ supportedFiles: health?.supportedFiles ?? 0,
303
+ supportedBytes: health?.supportedBytes ?? 0,
304
+ largestFileBytes: health?.largestFileBytes ?? 0,
305
+ skippedFiles: health?.skippedFiles ?? 0,
306
+ unsupportedFiles: health?.unsupportedFiles ?? 0,
307
+ oversizedFiles: health?.oversizedFiles ?? 0,
308
+ indexedFiles: manifest?.fileCount ?? 0,
309
+ totalChunks: manifest?.chunkCount ?? 0,
310
+ missingFromIndex: health?.missingFromIndex ?? 0,
311
+ staleInIndex: health?.staleInIndex ?? manifest?.staleFiles?.length ?? 0,
312
+ emptyTextFiles: health?.emptyTextFiles ?? 0,
313
+ },
314
+ securityWarnings: health?.securityWarnings ?? [],
315
+ sourceDiagnostics: health?.sourceDiagnostics ?? emptySourceDiagnostics(),
316
+ };
317
+ }
318
+ function researchBudget(options) {
319
+ return {
320
+ codeTopK: boundedResearchOption("codeTopK", options.codeTopK, DEFAULT_CODE_EVIDENCE_LIMIT, MAX_CODE_EVIDENCE_LIMIT),
321
+ codeScanMaxFiles: boundedResearchOption("codeScanMaxFiles", options.codeScanMaxFiles, DEFAULT_CODE_SCAN_MAX_FILES, MAX_CODE_SCAN_FILES),
322
+ codeScanMaxBytes: boundedResearchOption("codeScanMaxBytes", options.codeScanMaxBytes, DEFAULT_CODE_SCAN_MAX_BYTES, MAX_CODE_SCAN_BYTES),
323
+ codeScanConcurrency: boundedResearchOption("codeScanConcurrency", options.codeScanConcurrency, DEFAULT_CODE_SCAN_CONCURRENCY, MAX_CODE_SCAN_CONCURRENCY),
324
+ };
325
+ }
326
+ function boundedResearchOption(name, value, fallback, maximum) {
327
+ const resolved = value ?? fallback;
328
+ if (!Number.isSafeInteger(resolved) || resolved <= 0 || resolved > maximum) {
329
+ throw new RagmirError("INVALID_ARGUMENT", `${name} must be a positive integer no greater than ${maximum}.`);
330
+ }
331
+ return resolved;
332
+ }
333
+ function compareResearchEvidence(left, right) {
334
+ return (right.researchScore - left.researchScore ||
335
+ left.bestRank - right.bestRank ||
336
+ left.relativePath.localeCompare(right.relativePath) ||
337
+ left.chunkIndex - right.chunkIndex);
228
338
  }
229
- async function findCodeEvidence(config, query, limit, signal) {
339
+ function compareResearchQueries(left, right, primaryQuery) {
340
+ if (left === primaryQuery) {
341
+ return right === primaryQuery ? 0 : -1;
342
+ }
343
+ if (right === primaryQuery) {
344
+ return 1;
345
+ }
346
+ return left.localeCompare(right);
347
+ }
348
+ function compareResearchResultChoice(query, rank, currentQuery, currentRank, primaryQuery) {
349
+ const primaryDifference = Number(query !== primaryQuery) - Number(currentQuery !== primaryQuery);
350
+ return primaryDifference || rank - currentRank || query.localeCompare(currentQuery);
351
+ }
352
+ function researchSuffixes(query) {
353
+ if (/\p{Script=Thai}/u.test(query)) {
354
+ return [
355
+ "ขอบเขต ข้อกำหนด กฎ",
356
+ "ผู้เกี่ยวข้อง สิทธิ์ ขั้นตอน สถานะ การตรวจสอบ",
357
+ "วันที่ กำหนดเวลา ความเสี่ยง อุปสรรค",
358
+ "การเชื่อมต่อ ข้อมูล การพึ่งพา",
359
+ ];
360
+ }
361
+ if (/\p{Script=Han}|\p{Script=Hiragana}|\p{Script=Katakana}/u.test(query)) {
362
+ return [
363
+ "範囲 要件 規則",
364
+ "関係者 権限 手順 状態 検証",
365
+ "日付 期限 計画 リスク",
366
+ "統合 API データ 依存関係",
367
+ ];
368
+ }
369
+ if (/[àâçéèêëîïôùûüÿœ]/iu.test(query) ||
370
+ /\b(avec|dans|des|exigences|les|politique|pour|quelle?|règles?|une)\b/iu.test(query)) {
371
+ return [
372
+ "périmètre exigences règles",
373
+ "acteurs permissions processus statut validation",
374
+ "dates échéances planification risques blocages",
375
+ "intégration API données dépendances",
376
+ ];
377
+ }
378
+ return [
379
+ "scope requirements rules",
380
+ "actors permissions workflow status validation",
381
+ "dates deadlines planning risks blockers",
382
+ "integration API data model export dependencies",
383
+ ];
384
+ }
385
+ function emptySourceDiagnostics() {
386
+ return { duplicateCandidates: [], archiveCandidates: [], mirrorCandidates: [] };
387
+ }
388
+ async function findCodeEvidence(config, query, budget, signal) {
230
389
  throwIfAborted(signal);
231
390
  const terms = meaningfulTerms(query);
232
391
  if (terms.length === 0) {
233
- return [];
392
+ return emptyCodeScan();
234
393
  }
235
394
  const ignore = [...CODE_SCAN_IGNORE, ...projectRelativeIgnores(config)];
236
395
  const minimumMatchedTerms = terms.length === 1 ? 1 : 2;
237
- const candidateLimit = Math.max(limit, limit * CODE_EVIDENCE_CANDIDATE_MULTIPLIER);
238
396
  const entries = (await fg("**/*", {
239
397
  cwd: config.projectRoot,
240
398
  absolute: true,
@@ -246,46 +404,85 @@ async function findCodeEvidence(config, query, limit, signal) {
246
404
  stats: true,
247
405
  unique: true,
248
406
  }));
249
- const candidates = [];
250
- for (const entry of entries) {
251
- throwIfAborted(signal);
252
- if (candidates.length >= candidateLimit) {
253
- break;
254
- }
407
+ const eligible = entries
408
+ .map((entry) => {
255
409
  const absolutePath = path.isAbsolute(entry.path)
256
410
  ? entry.path
257
411
  : path.resolve(config.projectRoot, entry.path);
258
- if (!isScannableCodePath(absolutePath) ||
259
- isSensitiveFilePath(absolutePath) ||
260
- (entry.stats?.size ?? 0) > CODE_SCAN_MAX_BYTES) {
412
+ return {
413
+ absolutePath,
414
+ relativePath: path.relative(config.projectRoot, absolutePath),
415
+ size: entry.stats?.size ?? 0,
416
+ };
417
+ })
418
+ .filter((entry) => isScannableCodePath(entry.absolutePath) &&
419
+ !isSensitiveFilePath(entry.absolutePath) &&
420
+ entry.size <= CODE_SCAN_MAX_BYTES)
421
+ .sort((left, right) => left.relativePath.localeCompare(right.relativePath));
422
+ const selected = [];
423
+ let bytesScanned = 0;
424
+ for (const entry of eligible) {
425
+ if (selected.length >= budget.codeScanMaxFiles) {
426
+ break;
427
+ }
428
+ if (bytesScanned + entry.size > budget.codeScanMaxBytes) {
261
429
  continue;
262
430
  }
263
- const relativePath = path.relative(config.projectRoot, absolutePath);
264
- const content = await readFile(absolutePath, "utf8").catch(() => null);
431
+ selected.push(entry);
432
+ bytesScanned += entry.size;
433
+ }
434
+ const candidates = [];
435
+ for (let offset = 0; offset < selected.length; offset += budget.codeScanConcurrency) {
265
436
  throwIfAborted(signal);
266
- if (content === null) {
437
+ const batch = selected.slice(offset, offset + budget.codeScanConcurrency);
438
+ const matches = await Promise.all(batch.map((entry) => scanCodeEntry(entry, query, terms, minimumMatchedTerms, config, signal)));
439
+ for (const match of matches) {
440
+ if (match) {
441
+ candidates.push(match);
442
+ }
443
+ }
444
+ }
445
+ return {
446
+ evidence: candidates.sort(compareCodeEvidence).slice(0, budget.codeTopK),
447
+ filesScanned: selected.length,
448
+ bytesScanned,
449
+ truncated: selected.length < eligible.length,
450
+ };
451
+ }
452
+ async function scanCodeEntry(entry, query, terms, minimumMatchedTerms, config, signal) {
453
+ const content = await readFile(entry.absolutePath, { encoding: "utf8", signal }).catch(() => null);
454
+ throwIfAborted(signal);
455
+ if (content === null) {
456
+ return null;
457
+ }
458
+ const normalizedQuery = normalizeForMatch(query);
459
+ let best = null;
460
+ for (const [index, line] of content.split(/\r?\n/u).entries()) {
461
+ const normalizedLine = normalizeForMatch(line);
462
+ const matchedTerms = terms.filter((term) => normalizedLine.includes(term));
463
+ if (matchedTerms.length < minimumMatchedTerms) {
267
464
  continue;
268
465
  }
269
- for (const [index, line] of content.split(/\r?\n/u).entries()) {
270
- const normalizedLine = normalizeForMatch(line);
271
- const matchedTerms = terms.filter((term) => normalizedLine.includes(term));
272
- if (matchedTerms.length < minimumMatchedTerms) {
273
- continue;
274
- }
275
- const redactedSnippet = redactText(line.trim(), config).text;
276
- candidates.push({
277
- relativePath,
278
- lineNumber: index + 1,
279
- snippet: redactedSnippet.slice(0, COMPACT_SNIPPET_LENGTH),
280
- matchedTerms,
281
- });
282
- break;
466
+ const redactedSnippet = redactText(line.trim(), config).text;
467
+ const candidate = {
468
+ relativePath: entry.relativePath,
469
+ lineNumber: index + 1,
470
+ snippet: redactedSnippet.slice(0, COMPACT_SNIPPET_LENGTH),
471
+ matchedTerms,
472
+ score: matchedTerms.length * 100 + Number(normalizedLine.includes(normalizedQuery)) * 1_000,
473
+ };
474
+ if (!best || compareCodeEvidence(candidate, best) < 0) {
475
+ best = candidate;
283
476
  }
284
477
  }
285
- return candidates.sort(compareCodeEvidence).slice(0, limit);
478
+ return best;
479
+ }
480
+ function emptyCodeScan() {
481
+ return { evidence: [], filesScanned: 0, bytesScanned: 0, truncated: false };
286
482
  }
287
483
  function compareCodeEvidence(a, b) {
288
- return (b.matchedTerms.length - a.matchedTerms.length ||
484
+ return (b.score - a.score ||
485
+ b.matchedTerms.length - a.matchedTerms.length ||
289
486
  a.relativePath.localeCompare(b.relativePath) ||
290
487
  a.lineNumber - b.lineNumber);
291
488
  }
@@ -308,6 +505,9 @@ function meaningfulTerms(query) {
308
505
  }
309
506
  function researchGaps(input) {
310
507
  const gaps = [];
508
+ if (!input.indexAvailable) {
509
+ gaps.push("No active index manifest is available for research.");
510
+ }
311
511
  if (input.evidenceCount === 0) {
312
512
  gaps.push("No retrieved evidence matched the research query.");
313
513
  }
@@ -1 +1 @@
1
- {"version":3,"file":"research.js","sourceRoot":"","sources":["../src/research.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"research.js","sourceRoot":"","sources":["../src/research.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { RuntimeInfo } from "./types.js";
2
+ export declare function runtimeInfo(): RuntimeInfo;
3
+ //# sourceMappingURL=runtime-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-info.d.ts","sourceRoot":"","sources":["../src/runtime-info.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAyB,MAAM,YAAY,CAAA;AAKpE,wBAAgB,WAAW,IAAI,WAAW,CAqBzC"}