@spikedpunch/mast 0.1.0 → 0.3.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 (84) hide show
  1. package/MAST_SPEC.md +196 -52
  2. package/README.md +86 -11
  3. package/assets/skill.md +49 -10
  4. package/dist/ast/types.d.ts +173 -1
  5. package/dist/ast/types.d.ts.map +1 -1
  6. package/dist/cli/query.d.ts +40 -1
  7. package/dist/cli/query.d.ts.map +1 -1
  8. package/dist/cli/query.js +36 -2
  9. package/dist/cli/query.js.map +1 -1
  10. package/dist/cli/search-cmd.d.ts +6 -1
  11. package/dist/cli/search-cmd.d.ts.map +1 -1
  12. package/dist/cli/search-cmd.js +9 -2
  13. package/dist/cli/search-cmd.js.map +1 -1
  14. package/dist/cli/serve.d.ts +6 -1
  15. package/dist/cli/serve.d.ts.map +1 -1
  16. package/dist/cli/serve.js +14 -4
  17. package/dist/cli/serve.js.map +1 -1
  18. package/dist/cli/status.d.ts +15 -0
  19. package/dist/cli/status.d.ts.map +1 -1
  20. package/dist/cli/status.js +32 -6
  21. package/dist/cli/status.js.map +1 -1
  22. package/dist/indexer/freshness.d.ts +10 -0
  23. package/dist/indexer/freshness.d.ts.map +1 -1
  24. package/dist/indexer/freshness.js +7 -1
  25. package/dist/indexer/freshness.js.map +1 -1
  26. package/dist/indexer/import-resolver.js +28 -16
  27. package/dist/indexer/import-resolver.js.map +1 -1
  28. package/dist/indexer/index.d.ts +38 -3
  29. package/dist/indexer/index.d.ts.map +1 -1
  30. package/dist/indexer/index.js +47 -4
  31. package/dist/indexer/index.js.map +1 -1
  32. package/dist/indexer/watcher.d.ts +16 -0
  33. package/dist/indexer/watcher.d.ts.map +1 -1
  34. package/dist/indexer/watcher.js +8 -0
  35. package/dist/indexer/watcher.js.map +1 -1
  36. package/dist/mcp/context.d.ts +16 -0
  37. package/dist/mcp/context.d.ts.map +1 -1
  38. package/dist/mcp/freshness-probe.d.ts +82 -0
  39. package/dist/mcp/freshness-probe.d.ts.map +1 -0
  40. package/dist/mcp/freshness-probe.js +111 -0
  41. package/dist/mcp/freshness-probe.js.map +1 -0
  42. package/dist/mcp/server.d.ts +46 -3
  43. package/dist/mcp/server.d.ts.map +1 -1
  44. package/dist/mcp/server.js +65 -3
  45. package/dist/mcp/server.js.map +1 -1
  46. package/dist/mcp/tools/_helpers.d.ts +42 -0
  47. package/dist/mcp/tools/_helpers.d.ts.map +1 -1
  48. package/dist/mcp/tools/_helpers.js +29 -0
  49. package/dist/mcp/tools/_helpers.js.map +1 -1
  50. package/dist/mcp/tools/callers.d.ts.map +1 -1
  51. package/dist/mcp/tools/callers.js +6 -1
  52. package/dist/mcp/tools/callers.js.map +1 -1
  53. package/dist/mcp/tools/dependencies.d.ts.map +1 -1
  54. package/dist/mcp/tools/dependencies.js +2 -1
  55. package/dist/mcp/tools/dependencies.js.map +1 -1
  56. package/dist/mcp/tools/exports.d.ts.map +1 -1
  57. package/dist/mcp/tools/exports.js +11 -2
  58. package/dist/mcp/tools/exports.js.map +1 -1
  59. package/dist/mcp/tools/implementors.d.ts.map +1 -1
  60. package/dist/mcp/tools/implementors.js +10 -2
  61. package/dist/mcp/tools/implementors.js.map +1 -1
  62. package/dist/mcp/tools/project-skeleton.d.ts.map +1 -1
  63. package/dist/mcp/tools/project-skeleton.js +2 -1
  64. package/dist/mcp/tools/project-skeleton.js.map +1 -1
  65. package/dist/mcp/tools/reindex.d.ts.map +1 -1
  66. package/dist/mcp/tools/reindex.js +3 -0
  67. package/dist/mcp/tools/reindex.js.map +1 -1
  68. package/dist/mcp/tools/rename-impact.d.ts.map +1 -1
  69. package/dist/mcp/tools/rename-impact.js +4 -1
  70. package/dist/mcp/tools/rename-impact.js.map +1 -1
  71. package/dist/mcp/tools/search.d.ts.map +1 -1
  72. package/dist/mcp/tools/search.js +13 -2
  73. package/dist/mcp/tools/search.js.map +1 -1
  74. package/dist/mcp/tools/signature.d.ts.map +1 -1
  75. package/dist/mcp/tools/signature.js +15 -2
  76. package/dist/mcp/tools/signature.js.map +1 -1
  77. package/dist/mcp/tools/status.d.ts.map +1 -1
  78. package/dist/mcp/tools/status.js +8 -2
  79. package/dist/mcp/tools/status.js.map +1 -1
  80. package/dist/search/potential-matches.d.ts +15 -0
  81. package/dist/search/potential-matches.d.ts.map +1 -1
  82. package/dist/search/potential-matches.js +17 -2
  83. package/dist/search/potential-matches.js.map +1 -1
  84. package/package.json +4 -2
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { buildToolStats, recordToolCall, buildArgsJson, buildResultsJson } from '../../telemetry/metrics.js';
3
3
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
4
4
  import { querySymbolByName, queryVerifiedCallers } from '../../graph/queries.js';
5
- import { jitRefreshFile, collectPotentialMatches, isIndexEmpty } from './_helpers.js';
5
+ import { jitRefreshFile, collectPotentialMatches, isIndexEmpty, unindexedFilesField } from './_helpers.js';
6
6
  export function registerCallersTool(server, ctx) {
7
7
  server.tool('mast_callers', 'Call sites of a named symbol, partitioned into verified (graph-resolved) and potential (identifier-FTS) sets. Always check both sets — the graph only covers statically-linked call sites. Verified entries with resolution "checker" were proven by the opt-in `mast index --checker` TypeScript pass; the same pass drops non-call-site / wrong-declaration noise out of potential_matches (summary.checker_classified_* report how many).', {
8
8
  symbol: z.string().describe('Symbol name whose callers to find'),
@@ -33,6 +33,7 @@ export function registerCallersTool(server, ctx) {
33
33
  // §9.0 TOCTOU policy: omitted when false, never present-and-false.
34
34
  ...(fileBusy ? { file_busy_returning_stale_cache: true } : {}),
35
35
  ...indexEmptyField,
36
+ ...unindexedFilesField(ctx, 'exhaustive-set', true),
36
37
  summary: {
37
38
  verified_count: 0,
38
39
  potential_count: 0,
@@ -85,6 +86,10 @@ export function registerCallersTool(server, ctx) {
85
86
  // §9.0 TOCTOU policy: omitted when false, never present-and-false.
86
87
  ...(fileBusy ? { file_busy_returning_stale_cache: true } : {}),
87
88
  ...indexEmptyField,
89
+ // Always, not only when empty: "3 verified callers" over a corpus
90
+ // missing forty files reads exactly like a complete answer, and is the
91
+ // one that gets acted on.
92
+ ...unindexedFilesField(ctx, 'exhaustive-set', false),
88
93
  summary: {
89
94
  verified_count: verified_callers.length,
90
95
  potential_count: potential_matches.length,
@@ -1 +1 @@
1
- {"version":3,"file":"callers.js","sourceRoot":"","sources":["../../../src/mcp/tools/callers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"callers.js","sourceRoot":"","sources":["../../../src/mcp/tools/callers.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/dependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAOhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAsCjF"}
1
+ {"version":3,"file":"dependencies.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/dependencies.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAOhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAuCjF"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { buildToolStats, recordToolCall } from '../../telemetry/metrics.js';
3
3
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
4
4
  import { queryDependencies } from '../../graph/queries.js';
5
- import { jitRefreshFile, isIndexEmpty } from './_helpers.js';
5
+ import { jitRefreshFile, isIndexEmpty, unindexedFilesField } from './_helpers.js';
6
6
  export function registerDependenciesTool(server, ctx) {
7
7
  server.tool('mast_dependencies', 'All imports for a file — what it depends on, whether each dependency is external or internal, and the resolved path for monorepo imports.', {
8
8
  file_path: z.string().describe('Path to the file, relative to the project root'),
@@ -23,6 +23,7 @@ export function registerDependenciesTool(server, ctx) {
23
23
  imports,
24
24
  // §9.0 TOCTOU policy: omitted when false, never present-and-false.
25
25
  ...(busy ? { file_busy_returning_stale_cache: true } : {}),
26
+ ...unindexedFilesField(ctx, 'named-lookup', imports.length === 0),
26
27
  ...indexEmptyField,
27
28
  _stats: buildToolStats('mast_dependencies', tokens, tokensFullFileBound, [args.file_path], durationMs),
28
29
  };
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/mcp/tools/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7D,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,GAAe;IACzE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,2IAA2I,EAC3I;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1E,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAEtC,4DAA4D;QAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,YAAY,CAAC,GAAG,CAAC;YACrE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAyB;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO;YACP,mEAAmE;YACnE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,+BAA+B,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,eAAe;YAClB,MAAM,EAAE,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;SACvG,CAAC;QACF,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1B,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB;YAC1E,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI;SACnD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAClF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../src/mcp/tools/dependencies.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAG,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAElF,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,GAAe;IACzE,MAAM,CAAC,IAAI,CACT,mBAAmB,EACnB,2IAA2I,EAC3I;QACE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KACjF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEzB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAE1E,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEhE,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACtG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAEtC,4DAA4D;QAC5D,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,YAAY,CAAC,GAAG,CAAC;YACrE,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,QAAQ,GAAyB;YACrC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO;YACP,mEAAmE;YACnE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,+BAA+B,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,GAAG,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;YACjE,GAAG,eAAe;YAClB,MAAM,EAAE,cAAc,CAAC,mBAAmB,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC;SACvG,CAAC;QACF,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1B,QAAQ,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB;YAC1E,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI;SACnD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAClF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/exports.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA8D5E"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/exports.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAwE5E"}
@@ -3,10 +3,11 @@ import { join } from 'node:path';
3
3
  import { buildToolStats, recordToolCall, buildArgsJson, buildResultsJson } from '../../telemetry/metrics.js';
4
4
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
5
5
  import { extractFileSignatures } from '../../ast/extract.js';
6
- import { extractDoc, jitRefreshFile, isIndexEmpty } from './_helpers.js';
6
+ import { extractDoc, jitRefreshFile, isIndexEmpty, DEFAULT_RESULT_LIMIT, unindexedFilesField } from './_helpers.js';
7
7
  export function registerExportsTool(server, ctx) {
8
8
  server.tool('mast_exports', 'All exported symbols from a single file with type signatures. No function bodies. Use to answer "what does this file expose?" before deciding whether to open it.', {
9
9
  file_path: z.string().describe('Path to the file, relative to the project root'),
10
+ limit: z.number().int().min(1).max(500).optional().describe('Max exports to return (default: 50). The response reports the real total in `exports_truncated` when it caps.'),
10
11
  }, async (args) => {
11
12
  const start = Date.now();
12
13
  const { busy } = await jitRefreshFile(ctx.db, ctx.config, args.file_path);
@@ -17,7 +18,12 @@ export function registerExportsTool(server, ctx) {
17
18
  const sigByName = new Map(sigs.map((s) => [s.name, s]));
18
19
  // Methods surface through their class_shell — omit them here.
19
20
  const topLevel = chunks.filter((c) => c.is_exported && c.chunk_type !== 'method');
20
- const exports = topLevel.map((c) => {
21
+ // D043. `topLevel` is already in memory, so the real total is its length —
22
+ // no second COUNT query, unlike F10's identifier-FTS path where the capped
23
+ // fetch genuinely hides the total.
24
+ const limit = args.limit ?? DEFAULT_RESULT_LIMIT;
25
+ const exportsTruncated = topLevel.length > limit ? topLevel.length : undefined;
26
+ const exports = topLevel.slice(0, limit).map((c) => {
21
27
  const sig = c.symbol_name !== null ? sigByName.get(c.symbol_name) : undefined;
22
28
  return {
23
29
  name: c.symbol_name ?? '',
@@ -38,8 +44,11 @@ export function registerExportsTool(server, ctx) {
38
44
  const response = {
39
45
  file_path: args.file_path,
40
46
  exports,
47
+ // Omitted when nothing was capped — never present-and-false (F10's convention).
48
+ ...(exportsTruncated !== undefined ? { exports_truncated: exportsTruncated } : {}),
41
49
  // §9.0 TOCTOU policy: omitted when false, never present-and-false.
42
50
  ...(busy ? { file_busy_returning_stale_cache: true } : {}),
51
+ ...unindexedFilesField(ctx, 'named-lookup', exports.length === 0),
43
52
  ...indexEmptyField,
44
53
  _stats: buildToolStats('mast_exports', tokens, tokensFullFileBound, [args.file_path], durationMs),
45
54
  };
@@ -1 +1 @@
1
- {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/mcp/tools/exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"exports.js","sourceRoot":"","sources":["../../../src/mcp/tools/exports.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"implementors.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/implementors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA+CjF"}
1
+ {"version":3,"file":"implementors.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/implementors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAwDjF"}
@@ -3,13 +3,19 @@ import { buildToolStats, recordToolCall } from '../../telemetry/metrics.js';
3
3
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
4
4
  import { queryImplementors } from '../../graph/queries.js';
5
5
  import { findStaleFiles } from '../staleness.js';
6
- import { isIndexEmpty } from './_helpers.js';
6
+ import { isIndexEmpty, DEFAULT_RESULT_LIMIT, unindexedFilesField } from './_helpers.js';
7
7
  export function registerImplementorsTool(server, ctx) {
8
8
  server.tool('mast_implementors', 'All classes that implement a named interface, with the list of methods each class provides.', {
9
9
  interface_name: z.string().describe('Name of the interface to find implementors of'),
10
+ limit: z.number().int().min(1).max(500).optional().describe('Max implementors to return (default: 50). The response reports the real total in `results_truncated` when it caps.'),
10
11
  }, async (args) => {
11
12
  const start = Date.now();
12
- const results = await queryImplementors(ctx.db, args.interface_name);
13
+ const allResults = await queryImplementors(ctx.db, args.interface_name);
14
+ // D043. Capped before the staleness stat below, so a truncated response
15
+ // does not pay to stat files it will not mention.
16
+ const limit = args.limit ?? DEFAULT_RESULT_LIMIT;
17
+ const results = allResults.slice(0, limit);
18
+ const resultsTruncated = allResults.length > limit ? allResults.length : undefined;
13
19
  const filesReferenced = [...new Set(results.map((r) => r.file_path))];
14
20
  // F7/C1: stat-and-flag, not JIT refresh — surfaced as `stale`, not
15
21
  // `file_busy_returning_stale_cache` (that name is reserved for the
@@ -34,7 +40,9 @@ export function registerImplementorsTool(server, ctx) {
34
40
  : {};
35
41
  const response = {
36
42
  results: flaggedResults,
43
+ ...(resultsTruncated !== undefined ? { results_truncated: resultsTruncated } : {}),
37
44
  ...indexEmptyField,
45
+ ...unindexedFilesField(ctx, 'exhaustive-set', flaggedResults.length === 0),
38
46
  _stats: buildToolStats('mast_implementors', tokens, tokensFullFileBound, filesReferenced, durationMs),
39
47
  };
40
48
  void recordToolCall(ctx.db, {
@@ -1 +1 @@
1
- {"version":3,"file":"implementors.js","sourceRoot":"","sources":["../../../src/mcp/tools/implementors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"implementors.js","sourceRoot":"","sources":["../../../src/mcp/tools/implementors.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"project-skeleton.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/project-skeleton.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAOhD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAkEpF"}
1
+ {"version":3,"file":"project-skeleton.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/project-skeleton.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAOhD,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAmEpF"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { buildToolStats, recordToolCall } from '../../telemetry/metrics.js';
3
3
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
4
4
  import { queryProjectSkeleton } from '../../graph/queries.js';
5
- import { globToRegex, isIndexEmpty } from './_helpers.js';
5
+ import { globToRegex, isIndexEmpty, unindexedFilesField } from './_helpers.js';
6
6
  export function registerProjectSkeletonTool(server, ctx) {
7
7
  server.tool('mast_project_skeleton', 'All file paths in the project with their exported top-level symbol names. Returns names only — no signatures or bodies. Use early in a task for architectural orientation.', {
8
8
  directory: z.string().nullable().optional().describe('Scope to a subtree of the project (e.g. "api/services/auth")'),
@@ -49,6 +49,7 @@ export function registerProjectSkeletonTool(server, ctx) {
49
49
  const response = {
50
50
  files,
51
51
  ...indexEmptyField,
52
+ ...unindexedFilesField(ctx, 'exhaustive-set', files.length === 0),
52
53
  _stats: buildToolStats('mast_project_skeleton', tokens, tokensFullFileBound, filesReferenced, durationMs),
53
54
  };
54
55
  void recordToolCall(ctx.db, {
@@ -1 +1 @@
1
- {"version":3,"file":"project-skeleton.js","sourceRoot":"","sources":["../../../src/mcp/tools/project-skeleton.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-skeleton.js","sourceRoot":"","sources":["../../../src/mcp/tools/project-skeleton.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/reindex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAc5E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAYlE"}
1
+ {"version":3,"file":"reindex.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/reindex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAEpE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAiB5E;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAYlE"}
@@ -5,6 +5,9 @@ export function registerReindexTool(server, ctx) {
5
5
  full: z.boolean().optional().describe('Force a full reindex of all files (slow; use only after large structural changes)'),
6
6
  }, async (args) => {
7
7
  const result = await runIndex(ctx.config, { incremental: !(args.full ?? false) });
8
+ // Whatever the cached freshness count was, this run just changed it —
9
+ // and leaving it would warn `mast_search` about files this call indexed.
10
+ ctx.freshness?.invalidate();
8
11
  const reindexResult = toReindexResult(result);
9
12
  return { content: [{ type: 'text', text: JSON.stringify(reindexResult) }] };
10
13
  });
@@ -1 +1 @@
1
- {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/mcp/tools/reindex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,QAAQ,EAAoB,MAAM,wBAAwB,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,GAAe;IACpE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,2LAA2L,EAC3L;QACE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;KAC3H,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QAElF,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,OAAO;QACL,aAAa,EAAI,MAAM,CAAC,YAAY;QACpC,aAAa,EAAI,MAAM,CAAC,YAAY;QACpC,YAAY,EAAK,MAAM,CAAC,WAAW;QACnC,cAAc,EAAG,MAAM,CAAC,aAAa;QACrC,YAAY,EAAK,MAAM,CAAC,WAAW;QACnC,YAAY,EAAK,MAAM,CAAC,WAAW;QACnC,sBAAsB,EAAE,MAAM,CAAC,oBAAoB;QACnD,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,KAAK;QAC9C,WAAW,EAAM,MAAM,CAAC,UAAU;KACnC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"reindex.js","sourceRoot":"","sources":["../../../src/mcp/tools/reindex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAAE,QAAQ,EAAoB,MAAM,wBAAwB,CAAC;AAEpE,MAAM,UAAU,mBAAmB,CAAC,MAAiB,EAAE,GAAe;IACpE,MAAM,CAAC,IAAI,CACT,cAAc,EACd,2LAA2L,EAC3L;QACE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mFAAmF,CAAC;KAC3H,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QAClF,sEAAsE;QACtE,yEAAyE;QACzE,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;QAE5B,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9C,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;IACvF,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAmB;IACjD,OAAO;QACL,aAAa,EAAI,MAAM,CAAC,YAAY;QACpC,aAAa,EAAI,MAAM,CAAC,YAAY;QACpC,YAAY,EAAK,MAAM,CAAC,WAAW;QACnC,cAAc,EAAG,MAAM,CAAC,aAAa;QACrC,YAAY,EAAK,MAAM,CAAC,WAAW;QACnC,YAAY,EAAK,MAAM,CAAC,WAAW;QACnC,sBAAsB,EAAE,MAAM,CAAC,oBAAoB;QACnD,gBAAgB,EAAE,MAAM,CAAC,eAAe,CAAC,KAAK;QAC9C,WAAW,EAAM,MAAM,CAAC,UAAU;KACnC,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rename-impact.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/rename-impact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA2BhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA0HjF"}
1
+ {"version":3,"file":"rename-impact.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/rename-impact.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AA2BhD,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA6HjF"}
@@ -2,7 +2,7 @@ import { z } from 'zod';
2
2
  import { buildToolStats, recordToolCall } from '../../telemetry/metrics.js';
3
3
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
4
4
  import { querySymbolByName, queryVerifiedCallers, queryBarrelExports } from '../../graph/queries.js';
5
- import { jitRefreshFile, collectPotentialMatches, isIndexEmpty } from './_helpers.js';
5
+ import { jitRefreshFile, collectPotentialMatches, isIndexEmpty, unindexedFilesField } from './_helpers.js';
6
6
  /**
7
7
  * Compose the "N verified sites, M review-required sites, K barrel exports"
8
8
  * framing the agent acts on. A sentence rather than only counts so the tool
@@ -99,6 +99,9 @@ export function registerRenameImpactTool(server, ctx) {
99
99
  // §9.0 TOCTOU policy: omitted when false, never present-and-false.
100
100
  ...(fileBusy ? { file_busy_returning_stale_cache: true } : {}),
101
101
  ...indexEmptyField,
102
+ // Always, not only when empty: a rename checklist that is missing the
103
+ // files nobody indexed is the exact input that produces a broken rename.
104
+ ...unindexedFilesField(ctx, 'exhaustive-set', false),
102
105
  summary: {
103
106
  declaration_count: declaration_sites.length,
104
107
  verified_count: verified_callers.length,
@@ -1 +1 @@
1
- {"version":3,"file":"rename-impact.js","sourceRoot":"","sources":["../../../src/mcp/tools/rename-impact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rename-impact.js","sourceRoot":"","sources":["../../../src/mcp/tools/rename-impact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAClF,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACrG,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAG,mBAAmB,EAAC,MAAM,eAAe,CAAC;AAE3G;;;;GAIG;AACH,SAAS,cAAc,CAAC,QAAgB,EAAE,SAAiB,EAAE,OAAe;IAC1E,OAAO;QACL,GAAG,QAAQ,kCAAkC;QAC7C,GAAG,SAAS,uCAAuC;QACnD,GAAG,OAAO,6BAA6B;KACxC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,MAAiB,EAAE,GAAe;IACzE,MAAM,CAAC,IAAI,CACT,oBAAoB,EACpB,kXAAkX,EAClX;QACE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kEAAkE,CAAC;QAC/F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;KACtH,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAExC,sEAAsE;QACtE,uEAAuE;QACvE,gDAAgD;QAChD,oEAAoE;QACpE,8DAA8D;QAC9D,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,MAAM,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7D,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC;QACpB,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;QAEpF,MAAM,iBAAiB,GAAsB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/D,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,CAAC,CAAC,WAAW,KAAK,CAAC;SACjC,CAAC,CAAC,CAAC;QAEJ,+DAA+D;QAC/D,sEAAsE;QACtE,6DAA6D;QAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QAE1B,IAAI,gBAAgB,GAAqB,EAAE,CAAC;QAC5C,IAAI,iBAAiB,GAA8B,EAAE,CAAC;QACtD,IAAI,cAAc,GAAuB,EAAE,CAAC;QAC5C,IAAI,4BAA4B,GAAG,CAAC,CAAC;QACrC,IAAI,qCAAqC,GAAG,CAAC,CAAC;QAC9C,IAAI,kBAAsC,CAAC;QAE3C,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,uEAAuE;YACvE,6EAA6E;YAC7E,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YAC1E,gBAAgB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1C,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,UAAU,EAAE,CAAC,CAAC,UAA8B;aAC7C,CAAC,CAAC,CAAC;YAEJ,MAAM,eAAe,GAAG,MAAM,uBAAuB,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YACxH,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC;YAC5C,4BAA4B,GAAG,eAAe,CAAC,4BAA4B,CAAC;YAC5E,qCAAqC,GAAG,eAAe,CAAC,qCAAqC,CAAC;YAC9F,kBAAkB,GAAG,eAAe,CAAC,mBAAmB,CAAC;YAEzD,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YAC5F,cAAc,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACtC,SAAS,EAAE,CAAC,CAAC,SAAS;gBACtB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,GAAG,EAAE,CAAC,CAAC,GAAG;aACX,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,eAAe,GAAG;YACtB,GAAG,IAAI,GAAG,CAAC;gBACT,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5C,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC3C,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5C,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aAC1C,CAAC;SACH,CAAC;QACF,MAAM,IAAI,GAAG,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;QACxF,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC;QACrG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC;QAEtC,0EAA0E;QAC1E,MAAM,eAAe,GACnB,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC9B,gBAAgB,CAAC,MAAM,KAAK,CAAC;YAC7B,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAC9B,cAAc,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,EAAE,WAAW,EAAE,IAAa,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,QAAQ,GAAyB;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,IAAI;YACP,mEAAmE;YACnE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,+BAA+B,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,GAAG,eAAe;YAClB,sEAAsE;YACtE,yEAAyE;YACzE,GAAG,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,CAAC;YACpD,OAAO,EAAE;gBACP,iBAAiB,EAAE,iBAAiB,CAAC,MAAM;gBAC3C,cAAc,EAAE,gBAAgB,CAAC,MAAM;gBACvC,eAAe,EAAE,iBAAiB,CAAC,MAAM;gBACzC,YAAY,EAAE,cAAc,CAAC,MAAM;gBACnC,SAAS,EACP,MAAM,KAAK,SAAS;oBAClB,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,+CAA+C;oBACvE,CAAC,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,EAAE,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC,MAAM,CAAC;gBAC9F,gCAAgC,EAAE,4BAA4B;gBAC9D,wCAAwC,EAAE,qCAAqC;gBAC/E,8EAA8E;gBAC9E,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACzF;YACD,MAAM,EAAE,cAAc,CAAC,oBAAoB,EAAE,MAAM,EAAE,mBAAmB,EAAE,eAAe,EAAE,UAAU,CAAC;SACvG,CAAC;QACF,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE;YAC1B,QAAQ,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB;YAC3E,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI;SACnD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAClF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAuE3E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAQhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAkF3E"}
@@ -3,9 +3,9 @@ import { buildToolStats, recordToolCall, buildArgsJson, buildResultsJson, buildD
3
3
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
4
4
  import { fusedSearch } from '../../search/fused.js';
5
5
  import { findStaleFiles } from '../staleness.js';
6
- import { isIndexEmpty } from './_helpers.js';
6
+ import { isIndexEmpty, unindexedFilesField } from './_helpers.js';
7
7
  export function registerSearchTool(server, ctx) {
8
- server.tool('mast_search', 'Lexical BM25 + declaration-exact search over the indexed codebase. Returns chunks (not full files) ranked by relevance. Use this for code discovery — replaces Grep, Glob, and exploratory Read.', {
8
+ server.tool('mast_search', 'Lexical BM25 + declaration-exact search over the indexed codebase. Returns chunks (not full files) ranked by relevance. Use this for code discovery — replaces Grep, Glob, and exploratory Read. If a response carries `unindexed_files`, that many files on disk are not in the index yet, so an empty or thin result set may mean "not indexed" rather than "not present" — run mast_reindex before concluding a symbol is absent.', {
9
9
  query: z.string().describe('Natural language or identifier-based search query'),
10
10
  limit: z.number().int().min(1).max(50).optional().describe('Max results to return (default: 10)'),
11
11
  language: z.enum(['typescript', 'javascript', 'markdown']).nullable().optional(),
@@ -41,10 +41,21 @@ export function registerSearchTool(server, ctx) {
41
41
  const indexEmptyField = flaggedResults.length === 0 && await isIndexEmpty(ctx)
42
42
  ? { index_empty: true }
43
43
  : {};
44
+ // The partial-index warning. `peekUnindexed` is synchronous and returns
45
+ // the server's last cached measurement; it may schedule a background
46
+ // refresh, but this handler never awaits one (freshness-probe.ts, which
47
+ // documents the residual cost). `null` means no measurement has landed
48
+ // yet: unknown, so say nothing rather than imply a clean index we have
49
+ // not verified.
50
+ // Search claims exhaustiveness, so this fires with results as well as
51
+ // without: a ranked list drawn from an incomplete corpus is thin rather
52
+ // than empty, and reads the same as a complete one.
53
+ const unindexedField = unindexedFilesField(ctx, 'exhaustive-set', flaggedResults.length === 0);
44
54
  const response = {
45
55
  results: flaggedResults,
46
56
  ...suggestionsField,
47
57
  ...indexEmptyField,
58
+ ...unindexedField,
48
59
  _stats: buildToolStats('mast_search', tokens, tokensFullFileBound, filesReferenced, durationMs),
49
60
  };
50
61
  // Identity pairs in rank order — the "did a later chain-analysis call
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/mcp/tools/search.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAgChD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAgH9E"}
1
+ {"version":3,"file":"signature.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/signature.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAgChD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA8H9E"}
@@ -4,7 +4,7 @@ import { buildToolStats, recordToolCall, buildArgsJson, buildResultsJson } from
4
4
  import { countTokens, estimateFullFileBound } from '../../telemetry/tokenizer.js';
5
5
  import { querySymbolByName, resolveTypeContext } from '../../graph/queries.js';
6
6
  import { extractFileSignatures } from '../../ast/extract.js';
7
- import { jitRefreshFile, isIndexEmpty } from './_helpers.js';
7
+ import { jitRefreshFile, isIndexEmpty, DEFAULT_RESULT_LIMIT, unindexedFilesField } from './_helpers.js';
8
8
  // TypeScript built-in types that are never worth resolving as user-defined types.
9
9
  const BUILTIN_TYPES = new Set([
10
10
  'string', 'number', 'boolean', 'void', 'null', 'undefined', 'never', 'any',
@@ -32,6 +32,7 @@ export function registerSignatureTool(server, ctx) {
32
32
  server.tool('mast_signature', 'Declaration, TSDoc, and resolved parameter type context for a named symbol. Returns an array — always pass file_path to disambiguate when you expect a single result.', {
33
33
  symbol: z.string().describe('Symbol name to look up (e.g. "handleLogin", "AuthService")'),
34
34
  file_path: z.string().nullable().optional().describe('Narrow to a specific file; omit to search across the whole codebase'),
35
+ limit: z.number().int().min(1).max(500).optional().describe('Max declarations to return (default: 50). The response reports the real total in `results_truncated` when it caps.'),
35
36
  }, async (args) => {
36
37
  const start = Date.now();
37
38
  const filePath = args.file_path ?? null;
@@ -44,7 +45,16 @@ export function registerSignatureTool(server, ctx) {
44
45
  const r = await jitRefreshFile(ctx.db, ctx.config, filePath);
45
46
  topLevelBusy = r.busy;
46
47
  }
47
- const symbols = await querySymbolByName(ctx.db, args.symbol, filePath ?? undefined);
48
+ const allSymbols = await querySymbolByName(ctx.db, args.symbol, filePath ?? undefined);
49
+ // D043: capped HERE, before the loop below, not after it. The loop parses
50
+ // a file and resolves type context PER SYMBOL, which is where the 78
51
+ // seconds went on n8n's `execute` (580 declarations across 516 files).
52
+ // Trimming the response afterwards would have fixed the payload and left
53
+ // the latency — and the latency is what made the tool unusable over MCP,
54
+ // where it blew the client's 60 s timeout and returned nothing at all.
55
+ const limit = args.limit ?? DEFAULT_RESULT_LIMIT;
56
+ const symbols = allSymbols.slice(0, limit);
57
+ const resultsTruncated = allSymbols.length > limit ? allSymbols.length : undefined;
48
58
  // Parse each referenced file at most once for its signatures.
49
59
  const sigsByFile = new Map();
50
60
  const sigsFor = (relPath) => {
@@ -102,12 +112,15 @@ export function registerSignatureTool(server, ctx) {
102
112
  : {};
103
113
  const response = {
104
114
  results,
115
+ // Omitted when nothing was capped — never present-and-false (F10's convention).
116
+ ...(resultsTruncated !== undefined ? { results_truncated: resultsTruncated } : {}),
105
117
  // F14: with zero results the per-result busy carrier vanishes, and a
106
118
  // stale index would read as "symbol doesn't exist" — surface the
107
119
  // top-level busy signal on the envelope in exactly that case.
108
120
  ...(topLevelBusy && results.length === 0
109
121
  ? { file_busy_returning_stale_cache: true }
110
122
  : {}),
123
+ ...unindexedFilesField(ctx, 'named-lookup', results.length === 0),
111
124
  ...indexEmptyField,
112
125
  _stats: buildToolStats('mast_signature', tokens, tokensFullFileBound, filesReferenced, durationMs),
113
126
  };
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/mcp/tools/signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/mcp/tools/signature.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CA6B3E"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAMhD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,GAAG,IAAI,CAmC3E"}
@@ -9,7 +9,8 @@ export function registerStatusTool(server, ctx) {
9
9
  // The same producer `mast status` uses — the two surfaces answer one
10
10
  // question and must not compute it twice
11
11
  // (`mcp/tools/__tests__/status-surface-parity.test.ts`).
12
- const stale_files = (await measureFreshness(ctx.config, ctx.db)).total;
12
+ const freshness = await measureFreshness(ctx.config, ctx.db);
13
+ const stale_files = freshness.total;
13
14
  const result = {
14
15
  state_dir: ctx.config.resolved_state_dir,
15
16
  // From the binary, never from index.json — see StatusResult.schema_version.
@@ -18,10 +19,15 @@ export function registerStatusTool(server, ctx) {
18
19
  indexed_files: meta?.file_count ?? 0,
19
20
  chunk_count: meta?.chunk_count ?? 0,
20
21
  stale_files,
22
+ stale_breakdown: {
23
+ changed: freshness.stale,
24
+ unindexed: freshness.unindexed,
25
+ deleted: freshness.deleted,
26
+ },
21
27
  parse_errors: meta?.parse_errors ?? 0,
22
28
  write_errors: meta?.write_errors ?? 0,
23
29
  index_fresh: meta !== null && stale_files === 0,
24
- freshness_cause: freshnessCause(stale_files),
30
+ freshness_cause: freshnessCause(freshness),
25
31
  seed_commit: meta?.seed_commit,
26
32
  };
27
33
  return { content: [{ type: 'text', text: JSON.stringify(result) }] };
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,GAAe;IACnE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gGAAgG;IAChG,uBAAuB;IACvB,EAAE,EACF,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC1D,qEAAqE;QACrE,yCAAyC;QACzC,yDAAyD;QACzD,MAAM,WAAW,GAAG,CAAC,MAAM,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACvE,MAAM,MAAM,GAAiB;YAC3B,SAAS,EAAO,GAAG,CAAC,MAAM,CAAC,kBAAkB;YAC7C,4EAA4E;YAC5E,cAAc,EAAE,sBAAsB;YACtC,YAAY,EAAI,IAAI,EAAE,YAAY,IAAI,IAAI;YAC1C,aAAa,EAAG,IAAI,EAAE,UAAU,IAAI,CAAC;YACrC,WAAW,EAAK,IAAI,EAAE,WAAW,IAAI,CAAC;YACtC,WAAW;YACX,YAAY,EAAI,IAAI,EAAE,YAAY,IAAI,CAAC;YACvC,YAAY,EAAI,IAAI,EAAE,YAAY,IAAI,CAAC;YACvC,WAAW,EAAK,IAAI,KAAK,IAAI,IAAI,WAAW,KAAK,CAAC;YAClD,eAAe,EAAE,cAAc,CAAC,WAAW,CAAC;YAC5C,WAAW,EAAK,IAAI,EAAE,WAAW;SAClC,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/mcp/tools/status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,UAAU,kBAAkB,CAAC,MAAiB,EAAE,GAAe;IACnE,MAAM,CAAC,IAAI,CACT,aAAa,EACb,gGAAgG;IAChG,uBAAuB;IACvB,EAAE,EACF,KAAK,EAAE,KAAK,EAAE,EAAE;QACd,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAC1D,qEAAqE;QACrE,yCAAyC;QACzC,yDAAyD;QACzD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,SAAS,CAAC,KAAK,CAAC;QACpC,MAAM,MAAM,GAAiB;YAC3B,SAAS,EAAO,GAAG,CAAC,MAAM,CAAC,kBAAkB;YAC7C,4EAA4E;YAC5E,cAAc,EAAE,sBAAsB;YACtC,YAAY,EAAI,IAAI,EAAE,YAAY,IAAI,IAAI;YAC1C,aAAa,EAAG,IAAI,EAAE,UAAU,IAAI,CAAC;YACrC,WAAW,EAAK,IAAI,EAAE,WAAW,IAAI,CAAC;YACtC,WAAW;YACX,eAAe,EAAE;gBACf,OAAO,EAAI,SAAS,CAAC,KAAK;gBAC1B,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,OAAO,EAAI,SAAS,CAAC,OAAO;aAC7B;YACD,YAAY,EAAI,IAAI,EAAE,YAAY,IAAI,CAAC;YACvC,YAAY,EAAI,IAAI,EAAE,YAAY,IAAI,CAAC;YACvC,WAAW,EAAK,IAAI,KAAK,IAAI,IAAI,WAAW,KAAK,CAAC;YAClD,eAAe,EAAE,cAAc,CAAC,SAAS,CAAC;YAC1C,WAAW,EAAK,IAAI,EAAE,WAAW;SAClC,CAAC;QACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;IAChF,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -38,6 +38,21 @@ export interface PotentialMatchCandidate {
38
38
  * code with no enclosing declaration). */
39
39
  readonly chunk_symbol_name: string | null;
40
40
  }
41
+ /**
42
+ * The page size every capped read tool uses — `mast_callers` / `mast_rename_impact`'s
43
+ * potential matches (F10, since 2026-08), and `mast_signature` / `mast_implementors` /
44
+ * `mast_exports` (D043, 2026-08-20).
45
+ *
46
+ * ONE constant, exported and re-exported rather than repeated, and that is the point. D043 was
47
+ * not "a tool had no cap" — it was a cap applied to the tool where the problem was noticed and
48
+ * to none of its three siblings. A second literal `50` elsewhere would be the same defect
49
+ * wearing the same number, and would drift the first time one of them was tuned.
50
+ *
51
+ * 50 is inherited from F10 rather than re-derived. It is a page size, not a limit on what
52
+ * exists: every tool reports the real uncapped total alongside a truncated page, so a caller can
53
+ * always tell a full answer from a first page.
54
+ */
55
+ export declare const DEFAULT_RESULT_LIMIT = 50;
41
56
  export interface PotentialMatchCandidatesResult {
42
57
  readonly candidates: readonly PotentialMatchCandidate[];
43
58
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"potential-matches.d.ts","sourceRoot":"","sources":["../../src/search/potential-matches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AActE,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;CAClF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;+CAE2C;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACxD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,KAAK,SAAK,GACT,OAAO,CAAC,8BAA8B,CAAC,CA2BzC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,mGAAmG;IACnG,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,+FAA+F;IAC/F,QAAQ,CAAC,qCAAqC,EAAE,MAAM,CAAC;IACvD,+GAA+G;IAC/G,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,KAAK,SAAK,GACT,OAAO,CAAC,sBAAsB,CAAC,CAwBjC"}
1
+ {"version":3,"file":"potential-matches.d.ts","sourceRoot":"","sources":["../../src/search/potential-matches.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AActE,4DAA4D;AAC5D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;CAClF;AAED;;;;;;GAMG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;+CAE2C;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AAEvC,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACxD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED;;;;GAIG;AACH,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,eAAe,EAC5B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,KAAK,SAAuB,GAC3B,OAAO,CAAC,8BAA8B,CAAC,CA2BzC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,mGAAmG;IACnG,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,+FAA+F;IAC/F,QAAQ,CAAC,qCAAqC,EAAE,MAAM,CAAC;IACvD,+GAA+G;IAC/G,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;CACvC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,EAAE,EACN,WAAW,EAAE,eAAe,EAC5B,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,KAAK,SAAuB,GAC3B,OAAO,CAAC,sBAAsB,CAAC,CAwBjC"}