@spikedpunch/mast 0.2.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 (80) hide show
  1. package/MAST_SPEC.md +169 -44
  2. package/README.md +86 -11
  3. package/assets/skill.md +49 -10
  4. package/dist/ast/types.d.ts +137 -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 +40 -0
  47. package/dist/mcp/tools/_helpers.d.ts.map +1 -1
  48. package/dist/mcp/tools/_helpers.js +27 -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 +2 -1
  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 +2 -1
  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 +2 -1
  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/package.json +4 -2
package/assets/skill.md CHANGED
@@ -6,13 +6,19 @@ graph, so prefer it over reading files or grepping.
6
6
 
7
7
  ## Rules
8
8
 
9
- - Call `mast_status` at the start of a session to confirm the index is fresh.
9
+ - Call `mast_status` at the start of a session to confirm the index is fresh. Read
10
+ **`stale_breakdown.unindexed`**: any non-zero value means files exist that MAST has never
11
+ seen, and no amount of querying will find them. Read that field rather than
12
+ `freshness_cause`, which reports a single ranked cause and shows `"phase1_stale"` ahead of
13
+ `"unindexed_files"` whenever both are non-zero.
10
14
  - **Search before opening any file.** No file path without a MAST result behind it.
11
15
  - **Use code tokens in queries** — function names, type names, column names.
12
16
  `createTable uuid primaryKey` beats `migration pattern`. An exact symbol name in the
13
17
  query anchors its declaration to the top.
14
18
  - When a query returns nothing, **change vocabulary — do not repeat it**.
15
- - Call `mast_reindex` after writing files, to keep the index current.
19
+ - **Call `mast_reindex` after creating or renaming files**, before any query that depends
20
+ on what you just wrote. Editing the *body* of a file MAST already knows is handled for
21
+ you (see below); a **new** file is not, and is invisible until an index pass runs.
16
22
 
17
23
  ## Picking the right tool
18
24
 
@@ -30,16 +36,49 @@ graph, so prefer it over reading files or grepping.
30
36
  | `mast_status` | index freshness and health |
31
37
  | `mast_reindex` | refresh the index after edits |
32
38
 
39
+ ## How MAST handles a file that changed since it was indexed
40
+
41
+ Two mechanisms, and which one you get depends on the tool. Neither can see a file that
42
+ was never indexed at all.
43
+
44
+ - **Re-parsed for you, before the answer** — `mast_signature`, `mast_callers`,
45
+ `mast_exports`, `mast_dependencies`, `mast_rename_impact`. If the re-parse loses a
46
+ race with a writer, the result carries `file_busy_returning_stale_cache`.
47
+ - **Flagged, not re-parsed** — `mast_search`, `mast_implementors`. Affected results
48
+ carry `stale: true`. The code and line numbers shown may be out of date; call one of
49
+ the tools above, or `mast_reindex`, to get the current version.
50
+
51
+ Both only cover files already in the index. That is why creating a file needs an
52
+ explicit `mast_reindex`.
53
+
33
54
  ## Reading the answers honestly
34
55
 
35
- MAST reports what it does not know, and those signals are load-bearing:
56
+ MAST reports what it does not know. These signals are load-bearing. All but the last are
57
+ **omitted entirely when they do not apply** — so their absence is meaningful, and their
58
+ presence is never `false`. `truncated` is the exception: it is always present on a
59
+ `type_context` entry, so check its value rather than its presence.
60
+
61
+ | signal | on | means |
62
+ |---|---|---|
63
+ | `stale` | per result of `mast_search`, `mast_implementors` | this result's file changed since indexing; line numbers may be wrong |
64
+ | `file_busy_returning_stale_cache` | the five re-parsing tools | a refresh was attempted and lost to a writer; retry shortly |
65
+ | `index_empty` | the empty answer of any of the eight tools that return a result set | **nothing is indexed at all.** This is not "no match" — run `mast_reindex`, or check that `mast_status` names the tree you meant |
66
+ | `unindexed_files` | `mast_search`, `mast_callers`, `mast_implementors`, `mast_rename_impact`, `mast_project_skeleton` (always); `mast_signature`, `mast_exports`, `mast_dependencies` (on an empty answer only) | that many files on disk are not in the index, so this answer was computed over an incomplete corpus. **An empty result carrying this is not evidence of absence.** The set-returning tools report it even with hits — a short list of callers reads exactly like a complete one |
67
+ | `results_truncated` | `mast_signature`, `mast_implementors` | you got the first page, not the answer. The field carries the real total; raise `limit` or narrow the query |
68
+ | `exports_truncated` | `mast_exports` | the same, for a module's export list |
69
+ | `potential_truncated` | `mast_callers`, `mast_rename_impact` | the unresolved-candidate set was capped; the real count is larger |
70
+ | `truncated` | a type in `mast_signature`'s `type_context` | that declaration was clipped at 50 lines |
71
+
72
+ Two more things that are not flags:
36
73
 
37
- - A result carrying **`file_busy_returning_stale_cache`** or a staleness flag means the
38
- answer may predate the file on disk. Do not treat it as current.
39
- - A **`truncated`** or **`potential_truncated`** flag means the set was capped. The real
40
- count is larger than what you were shown.
74
+ - In `mast_callers` and `mast_rename_impact`, **`verified_callers` and
75
+ `potential_matches` are not the same claim.** A verified caller carries a `resolution`
76
+ and is safe to act on. A potential match carries a `reason` and is a name match with
77
+ no proven edge review it before editing it.
41
78
  - An **empty result is not proof of absence.** MAST indexes TypeScript, JavaScript, and
42
79
  Markdown only — a symbol defined in Python, Go, Java, or any other language is absent
43
- from the index, not absent from the repository. Check the flags before concluding
44
- "it isn't there", and never delete or rewrite code on the strength of an empty result
45
- alone.
80
+ from the index, not absent from the repository. Check `index_empty` and
81
+ `unindexed_files` before concluding "it isn't there", and **never delete or rewrite
82
+ code on the strength of an empty result alone.** Every result-set tool carries
83
+ `unindexed_files` now, not just `mast_search` — so an empty `mast_callers` answer that
84
+ carries it is not a green light to delete the function.
@@ -216,6 +216,24 @@ export interface SearchResponse {
216
216
  * nothing extra.
217
217
  */
218
218
  readonly index_empty?: true;
219
+ /**
220
+ * Files on disk that the index has never seen, as of the server's last
221
+ * freshness measurement. Present only when the count is one or more, and
222
+ * only when the surface has a freshness probe wired (`AppContext.freshness`)
223
+ * that has completed a measurement — omitted, never present-and-zero, per
224
+ * the `stale`/`index_empty` omitted-when-false convention (MAST_SPEC.md
225
+ * §9.0).
226
+ *
227
+ * Where `index_empty` says "nothing is indexed", this says "the index is
228
+ * populated but behind": these `results` were ranked over a corpus that is
229
+ * missing N files, so a zero-hit or thin result set may mean "not indexed"
230
+ * rather than "not present". Advisory only — it does not say whether any of
231
+ * the N would have matched this query.
232
+ *
233
+ * Read from a TTL-cached value (`mcp/freshness-probe.ts`); computing it on
234
+ * the request path would cost a full project walk per search.
235
+ */
236
+ readonly unindexed_files?: number;
219
237
  readonly _stats: ToolStats;
220
238
  }
221
239
  export interface ProjectSkeletonInput {
@@ -231,6 +249,18 @@ export interface ProjectSkeletonResponse {
231
249
  readonly files: readonly FileSkeleton[];
232
250
  /** @see {@link SearchResponse.index_empty} — same empty-index signal, keyed on `files`. */
233
251
  readonly index_empty?: true;
252
+ /**
253
+ * Files on disk that the index has never seen, when the count is known and
254
+ * non-zero (D054). Omitted when the index is complete, and equally when no
255
+ * measurement has landed yet — absent means *not warned*, never *verified
256
+ * clean*.
257
+ *
258
+ * The results below were computed over a corpus missing this many files, so
259
+ * an empty or thin answer may mean "not indexed" rather than "not present".
260
+ * Distinct from {@link SearchResponse.index_empty}, which is the
261
+ * all-or-nothing case; this is the partial one.
262
+ */
263
+ readonly unindexed_files?: number;
234
264
  readonly _stats: ToolStats;
235
265
  }
236
266
  export interface ExportsInput {
@@ -268,6 +298,18 @@ export interface ExportsResponse {
268
298
  readonly file_busy_returning_stale_cache?: true;
269
299
  /** @see {@link SearchResponse.index_empty} — same empty-index signal, keyed on `exports`. */
270
300
  readonly index_empty?: true;
301
+ /**
302
+ * Files on disk that the index has never seen, when the count is known and
303
+ * non-zero (D054). Omitted when the index is complete, and equally when no
304
+ * measurement has landed yet — absent means *not warned*, never *verified
305
+ * clean*.
306
+ *
307
+ * The results below were computed over a corpus missing this many files, so
308
+ * an empty or thin answer may mean "not indexed" rather than "not present".
309
+ * Distinct from {@link SearchResponse.index_empty}, which is the
310
+ * all-or-nothing case; this is the partial one.
311
+ */
312
+ readonly unindexed_files?: number;
271
313
  readonly _stats: ToolStats;
272
314
  }
273
315
  export interface SignatureInput {
@@ -322,6 +364,18 @@ export interface SignatureResponse {
322
364
  readonly file_busy_returning_stale_cache?: true;
323
365
  /** @see {@link SearchResponse.index_empty} — same empty-index signal, keyed on `results`. Independent of the `file_busy_returning_stale_cache` envelope flag above; either, both, or neither may be present. */
324
366
  readonly index_empty?: true;
367
+ /**
368
+ * Files on disk that the index has never seen, when the count is known and
369
+ * non-zero (D054). Omitted when the index is complete, and equally when no
370
+ * measurement has landed yet — absent means *not warned*, never *verified
371
+ * clean*.
372
+ *
373
+ * The results below were computed over a corpus missing this many files, so
374
+ * an empty or thin answer may mean "not indexed" rather than "not present".
375
+ * Distinct from {@link SearchResponse.index_empty}, which is the
376
+ * all-or-nothing case; this is the partial one.
377
+ */
378
+ readonly unindexed_files?: number;
325
379
  readonly _stats: ToolStats;
326
380
  }
327
381
  export interface CallersInput {
@@ -387,6 +441,18 @@ export interface CallersResponse {
387
441
  readonly file_busy_returning_stale_cache?: true;
388
442
  /** @see {@link SearchResponse.index_empty} — same empty-index signal; set only when BOTH `verified_callers` and `potential_matches` are empty. */
389
443
  readonly index_empty?: true;
444
+ /**
445
+ * Files on disk that the index has never seen, when the count is known and
446
+ * non-zero (D054). Omitted when the index is complete, and equally when no
447
+ * measurement has landed yet — absent means *not warned*, never *verified
448
+ * clean*.
449
+ *
450
+ * The results below were computed over a corpus missing this many files, so
451
+ * an empty or thin answer may mean "not indexed" rather than "not present".
452
+ * Distinct from {@link SearchResponse.index_empty}, which is the
453
+ * all-or-nothing case; this is the partial one.
454
+ */
455
+ readonly unindexed_files?: number;
390
456
  readonly summary: {
391
457
  readonly verified_count: number;
392
458
  readonly potential_count: number;
@@ -457,6 +523,18 @@ export interface RenameImpactResponse {
457
523
  readonly file_busy_returning_stale_cache?: true;
458
524
  /** @see {@link SearchResponse.index_empty} — same empty-index signal; set only when ALL FOUR of `declaration_sites`, `verified_callers`, `potential_matches`, and `barrel_exports` are empty. */
459
525
  readonly index_empty?: true;
526
+ /**
527
+ * Files on disk that the index has never seen, when the count is known and
528
+ * non-zero (D054). Omitted when the index is complete, and equally when no
529
+ * measurement has landed yet — absent means *not warned*, never *verified
530
+ * clean*.
531
+ *
532
+ * The results below were computed over a corpus missing this many files, so
533
+ * an empty or thin answer may mean "not indexed" rather than "not present".
534
+ * Distinct from {@link SearchResponse.index_empty}, which is the
535
+ * all-or-nothing case; this is the partial one.
536
+ */
537
+ readonly unindexed_files?: number;
460
538
  readonly summary: {
461
539
  readonly declaration_count: number;
462
540
  readonly verified_count: number;
@@ -489,6 +567,18 @@ export interface DependenciesResponse {
489
567
  readonly file_busy_returning_stale_cache?: true;
490
568
  /** @see {@link SearchResponse.index_empty} — same empty-index signal, keyed on `imports`. */
491
569
  readonly index_empty?: true;
570
+ /**
571
+ * Files on disk that the index has never seen, when the count is known and
572
+ * non-zero (D054). Omitted when the index is complete, and equally when no
573
+ * measurement has landed yet — absent means *not warned*, never *verified
574
+ * clean*.
575
+ *
576
+ * The results below were computed over a corpus missing this many files, so
577
+ * an empty or thin answer may mean "not indexed" rather than "not present".
578
+ * Distinct from {@link SearchResponse.index_empty}, which is the
579
+ * all-or-nothing case; this is the partial one.
580
+ */
581
+ readonly unindexed_files?: number;
492
582
  readonly _stats: ToolStats;
493
583
  }
494
584
  export interface ImplementorsInput {
@@ -534,6 +624,18 @@ export interface ImplementorsResponse {
534
624
  readonly results_truncated?: number;
535
625
  /** @see {@link SearchResponse.index_empty} — same empty-index signal, keyed on `results`. */
536
626
  readonly index_empty?: true;
627
+ /**
628
+ * Files on disk that the index has never seen, when the count is known and
629
+ * non-zero (D054). Omitted when the index is complete, and equally when no
630
+ * measurement has landed yet — absent means *not warned*, never *verified
631
+ * clean*.
632
+ *
633
+ * The results below were computed over a corpus missing this many files, so
634
+ * an empty or thin answer may mean "not indexed" rather than "not present".
635
+ * Distinct from {@link SearchResponse.index_empty}, which is the
636
+ * all-or-nothing case; this is the partial one.
637
+ */
638
+ readonly unindexed_files?: number;
537
639
  readonly _stats: ToolStats;
538
640
  }
539
641
  export interface ReindexInput {
@@ -569,8 +671,40 @@ export interface ReindexResult {
569
671
  * backlog distinct from Phase 1 (chunk line coordinates lagging disk,
570
672
  * corrected by JIT on read) no longer exists, so a two-cause union asserted a
571
673
  * distinction the code can no longer draw.
674
+ *
675
+ * Widened again 2026-09-01 (D049) under that same rule, in the other
676
+ * direction: `measureFreshness` *does* draw three distinctions, and collapsing
677
+ * them onto `'phase1_stale'` asserted a cause nothing had determined — it
678
+ * reported "chunk coordinates lag disk" for a count that was 99.97% deleted and
679
+ * never-indexed files. Each member below is decided by a counted category, not
680
+ * inferred.
681
+ *
682
+ * - `root_mismatch` — nothing on disk here is known to the index, and the
683
+ * index knows files that are not here: it was built for a different project
684
+ * root. Reindexing will not change it; the path or `--state-dir` is wrong.
685
+ * - `phase1_stale` — indexed files whose content has changed since. Corrected
686
+ * by JIT re-parse on read (§9.0) or by reindexing.
687
+ * - `unindexed_files`— files on disk this index has never seen.
688
+ * - `deleted_files` — files the index still lists that are gone from disk.
572
689
  */
573
- export type FreshnessCause = 'phase1_stale' | null;
690
+ export type FreshnessCause = 'root_mismatch' | 'phase1_stale' | 'unindexed_files' | 'deleted_files' | null;
691
+ /**
692
+ * The three categories `stale_files` sums, reported alongside it.
693
+ *
694
+ * `stale_files` has always counted three things (MAST_SPEC §9 `mast_status`),
695
+ * but both surfaces published only the total, so a caller could read the spec
696
+ * and still not act on the distinction it draws — a 3391 that was 1 changed
697
+ * file and 3390 paths belonging to another tree read exactly like 3391 stale
698
+ * files (D049).
699
+ */
700
+ export interface StaleBreakdown {
701
+ /** Indexed, on disk, content changed since indexing. */
702
+ readonly changed: number;
703
+ /** On disk, absent from the index. */
704
+ readonly unindexed: number;
705
+ /** In the index, absent from disk. */
706
+ readonly deleted: number;
707
+ }
574
708
  export interface StatusResult {
575
709
  readonly state_dir: string;
576
710
  /**
@@ -598,6 +732,8 @@ export interface StatusResult {
598
732
  * (`docs/defects/LEDGER.md` D035).
599
733
  */
600
734
  readonly stale_files: number;
735
+ /** `stale_files` split into the three categories it sums. */
736
+ readonly stale_breakdown: StaleBreakdown;
601
737
  readonly parse_errors: number;
602
738
  readonly write_errors: number;
603
739
  readonly index_fresh: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAMtD,MAAM,MAAM,SAAS,GACjB,UAAU,GACV,QAAQ,GACR,aAAa,GACb,WAAW,GACX,MAAM,GACN,QAAQ,GACR,OAAO;AACT,iEAAiE;GAC/D,KAAK,CAAC;AAEV,MAAM,MAAM,QAAQ,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC;AAEhE;;;;;;GAMG;AACH,MAAM,WAAW,KAAK;IACpB,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,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,qEAAqE;IACrE,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,8EAA8E;AAC9E,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,2EAA2E;IAC3E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAMD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,qDAAqD;IACrD,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,4EAA4E;IAC5E,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IACvC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;;OASG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC;AAMD,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,CAAC,wBAAwB,EAAE,OAAO,CAAC;IAC3C,4EAA4E;IAC5E,QAAQ,CAAC,qBAAqB,EAAE,MAAM,CAAC;IACvC,2EAA2E;IAC3E,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC;AAMD,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAMD,mEAAmE;AACnE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7C,2DAA2D;IAC3D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAQD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,8EAA8E;IAC9E,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;IAC1C;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,2FAA2F;IAC3F,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;;OAMG;IACH,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;IAChD,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,CAAC;IACvC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACnD,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;;;;OAQG;IACH,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;IAChD,gNAAgN;IAChN,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CACtC;AAED,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,YAAY,GACZ,gBAAgB,GAChB,gBAAgB,GAChB,WAAW;AACb;;;;;;GAMG;GACD,SAAS;AACX;;;;;;;GAOG;GACD,aAAa;AACf;;;;;;GAMG;GACD,cAAc,CAAC;AAEnB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;CACjD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,mCAAmC,CAAC;CACtD;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,SAAS,cAAc,EAAE,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IACtD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;IAChD,kJAAkJ;IAClJ,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;QAC7B;;;;WAIG;QACH,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;QAClD;;;;WAIG;QACH,QAAQ,CAAC,wCAAwC,EAAE,MAAM,CAAC;QAC1D;;;;;;;;;;;;;;;WAeG;QACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;KACvC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,2EAA2E;IAC3E,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAAC;CAChC;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,iBAAiB,EAAE,SAAS,eAAe,EAAE,CAAC;IACvD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,cAAc,EAAE,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,SAAS,cAAc,EAAE,CAAC;IACtD,QAAQ,CAAC,cAAc,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACrD,kKAAkK;IAClK,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;IAChD,iMAAiM;IACjM,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,OAAO,EAAE;QAChB,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;QAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;QACjC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,4EAA4E;QAC5E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,4EAA4E;QAC5E,QAAQ,CAAC,gCAAgC,EAAE,MAAM,CAAC;QAClD,oFAAoF;QACpF,QAAQ,CAAC,wCAAwC,EAAE,MAAM,CAAC;QAC1D,kGAAkG;QAClG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC;KACvC,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,eAAe,EAAE,CAAC;IAC7C,yGAAyG;IACzG,QAAQ,CAAC,+BAA+B,CAAC,EAAE,IAAI,CAAC;IAChD,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC,6FAA6F;IAC7F,QAAQ,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;CAC5B;AAID,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B;AAID;;;;;;;GAOG;AACH,MAAM,MAAM,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;CAC/B;AAID,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IACrC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,4BAA4B,EAAE,MAAM,CAAC;IAC9C,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import type { Command } from 'commander';
2
+ import { type ResolvedConfig } from '../store/config.js';
3
+ import { type IndexResult } from '../indexer/index.js';
2
4
  /**
3
5
  * D0 (IMPLEMENTATION_PLAN.md "Stage 4: Determinism, hygiene, and the
4
6
  * measurement harness", "### D0 — CLI query surface"): `mast query <tool>
@@ -29,6 +31,37 @@ export interface RunQueryOptions {
29
31
  readonly stateDir?: string;
30
32
  /** Project root path (the CLI's positional `[path]`); defaults to cwd via `resolveConfig`. */
31
33
  readonly path?: string;
34
+ /**
35
+ * Refresh the index incrementally before dispatching the query.
36
+ *
37
+ * The CLI has neither of the freshness mechanisms the MCP server has — no
38
+ * watcher, and no cached freshness probe, because a one-shot process has no
39
+ * lifetime to amortise a TTL over. This flag is its answer.
40
+ *
41
+ * Opt-in rather than default, because it adds a whole incremental index run
42
+ * to an invocation that would otherwise be a single query. Measured on this
43
+ * repository (212 indexable files) on 2026-09-03: a no-op incremental run
44
+ * reports 25-34 ms of index work inside ~0.5 s of process wall clock, and a
45
+ * run that found 11 changed files reported 424 ms. It scales with the tree,
46
+ * so on a large monorepo it is materially more — which is punishing in the
47
+ * scripts and loops where `mast search` gets used.
48
+ *
49
+ * Incremental, never full. Refreshes an existing index; it does not create
50
+ * one — see the never-indexed guard in {@link runQuery}.
51
+ */
52
+ readonly reindex?: boolean;
53
+ /**
54
+ * Test-only injection point (§4.4 DI): substitutes for the real incremental
55
+ * `runIndex`, so the lock-contention degradation path can be driven without
56
+ * standing up a competing writer. Production passes nothing.
57
+ */
58
+ readonly reindexer?: (config: ResolvedConfig) => Promise<IndexResult>;
59
+ /**
60
+ * Where `--reindex` reports itself. Defaults to stderr, deliberately: the
61
+ * refresh is a side effect of the query, not part of its answer, and
62
+ * `--json` consumers must keep a parseable stdout.
63
+ */
64
+ readonly warn?: (message: string) => void;
32
65
  }
33
66
  /**
34
67
  * Dispatch a single CLI query through the exact registered MCP tool handler
@@ -42,5 +75,11 @@ export interface RunQueryOptions {
42
75
  * would over the MCP transport.
43
76
  */
44
77
  export declare function runQuery(toolName: string, jsonArgs: string, options?: RunQueryOptions): Promise<string>;
45
- export declare function registerQueryCommand(program: Command): void;
78
+ /**
79
+ * @param run Injected so the flag wiring can be tested without a real index
80
+ * (§4.4). Production passes {@link runQuery}. A `--reindex` flag that is
81
+ * declared but never threaded through would be an asserted-and-unimplemented
82
+ * property (SHAPES S-04), which is why it is pinned rather than assumed.
83
+ */
84
+ export declare function registerQueryCommand(program: Command, run?: typeof runQuery): void;
46
85
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/cli/query.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQzC;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAoCxC;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAW3D;AAED,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6DjH;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAwB3D"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/cli/query.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMjE;;;;;;;;;;;GAWG;AACH,qBAAa,UAAW,SAAQ,KAAK;CAAG;AAoCxC;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,IAAI,SAAS,MAAM,EAAE,CAW3D;AAED,MAAM,WAAW,eAAe;IAC9B,2FAA2F;IAC3F,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACtE;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAuFjH;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,GAAE,OAAO,QAAmB,GAAG,IAAI,CA2B5F"}
package/dist/cli/query.js CHANGED
@@ -3,6 +3,7 @@ import { existsSync } from 'node:fs';
3
3
  import { join } from 'node:path';
4
4
  import { z, ZodError } from 'zod';
5
5
  import { resolveConfig } from '../store/config.js';
6
+ import { runIndex } from '../indexer/index.js';
6
7
  import { openDatabase } from '../graph/db.js';
7
8
  import { SqliteChunkStore } from '../store/sqliteChunkStore.js';
8
9
  import { registerAllTools } from '../mcp/register-tools.js';
@@ -86,6 +87,30 @@ export async function runQuery(toolName, jsonArgs, options = {}) {
86
87
  if (!existsSync(graphDbPath)) {
87
88
  throw new QueryError(`no index found at ${config.resolved_state_dir}; run \`mast init\` / \`mast index\` first`);
88
89
  }
90
+ // AFTER the never-indexed guard above, and deliberately so. Running the
91
+ // indexer first would create graph.db as a side effect and let the guard
92
+ // pass, silently promoting `--reindex` from "refresh" to "bootstrap" and
93
+ // masking the very state the guard reports — the same ordering hazard its
94
+ // own comment describes for `openDatabase`. `mast index` creates; this
95
+ // refreshes.
96
+ if (options.reindex === true) {
97
+ const warn = options.warn ?? ((message) => process.stderr.write(`${message}\n`));
98
+ const reindex = options.reindexer ?? ((c) => runIndex(c, { incremental: true }));
99
+ try {
100
+ const result = await reindex(config);
101
+ warn(`[mast] reindexed: ${String(result.filesIndexed)} file(s) indexed, ` +
102
+ `${String(result.filesSkipped)} unchanged, +${String(result.chunksAdded)}/` +
103
+ `-${String(result.chunksRemoved)} chunks (${String(result.durationMs)} ms)`);
104
+ }
105
+ catch (err) {
106
+ // Never fatal. `runIndex` takes `structure.lock`, and `mast serve` now
107
+ // watches by default, so losing the race to a concurrent writer is an
108
+ // ordinary outcome. Failing the query over a refresh that did not happen
109
+ // would be a worse answer than a slightly stale one — but staying silent
110
+ // about it would be worse than both, because the caller asked for fresh.
111
+ warn(`[mast] --reindex failed, querying the existing index instead: ${String(err)}`);
112
+ }
113
+ }
89
114
  let parsedArgs;
90
115
  try {
91
116
  parsedArgs = JSON.parse(jsonArgs);
@@ -128,15 +153,24 @@ export async function runQuery(toolName, jsonArgs, options = {}) {
128
153
  await db.destroy();
129
154
  }
130
155
  }
131
- export function registerQueryCommand(program) {
156
+ /**
157
+ * @param run Injected so the flag wiring can be tested without a real index
158
+ * (§4.4). Production passes {@link runQuery}. A `--reindex` flag that is
159
+ * declared but never threaded through would be an asserted-and-unimplemented
160
+ * property (SHAPES S-04), which is why it is pinned rather than assumed.
161
+ */
162
+ export function registerQueryCommand(program, run = runQuery) {
132
163
  program
133
164
  .command('query <tool> [json] [path]')
134
165
  .description('Invoke an MCP read tool directly from the CLI — identical output to the MCP transport (MAST_SPEC.md §8)')
135
166
  .option('--state-dir <dir>', 'State directory')
167
+ .option('--reindex', 'Incrementally reindex before querying — the CLI has no watcher (see `mast serve`)')
136
168
  .option('--json', 'Emit the exact single-line MCP response text (machine use); default pretty-prints for humans')
137
169
  .action(async (toolName, jsonArg, path, opts) => {
138
170
  try {
139
- const text = await runQuery(toolName, jsonArg ?? '{}', { stateDir: opts.stateDir, path });
171
+ const text = await run(toolName, jsonArg ?? '{}', {
172
+ stateDir: opts.stateDir, path, reindex: opts.reindex === true,
173
+ });
140
174
  if (opts.json) {
141
175
  process.stdout.write(text + '\n');
142
176
  }
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/cli/query.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/cli/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAoB,MAAM,KAAK,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,QAAQ,EAAoB,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,UAAW,SAAQ,KAAK;CAAG;AAYxC;;;;;;;;;;;;;GAaG;AACH,SAAS,mBAAmB;IAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC9C,MAAM,OAAO,GAAG;QACd,IAAI,CAAC,IAAY,EAAE,YAAoB,EAAE,WAAwB,EAAE,OAAoB;YACrF,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;IACF,OAAO,EAAE,MAAM,EAAE,OAA+B,EAAE,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;QAC9B,GAAG,CAAC,EAAE,EAAE,IAAI;YACV,MAAM,IAAI,KAAK,CACb,8BAA8B,MAAM,CAAC,IAAI,CAAC,wDAAwD,CACnG,CAAC;QACJ,CAAC;KACF,CAAe,CAAC;IACjB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAClC,CAAC;AAwCD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,QAAgB,EAAE,UAA2B,EAAE;IAC9F,MAAM,MAAM,GAAG,aAAa,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,gBAAgB,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;IAEhG,0EAA0E;IAC1E,yEAAyE;IACzE,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,iDAAiD;IACjD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IAChE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,UAAU,CAClB,qBAAqB,MAAM,CAAC,kBAAkB,4CAA4C,CAC3F,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,yEAAyE;IACzE,yEAAyE;IACzE,0EAA0E;IAC1E,uEAAuE;IACvE,aAAa;IACb,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC;QACzF,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,CAAiB,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjG,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,CACF,qBAAqB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,oBAAoB;gBACpE,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,gBAAgB,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG;gBAC3E,IAAI,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAC5E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,uEAAuE;YACvE,sEAAsE;YACtE,yEAAyE;YACzE,yEAAyE;YACzE,yEAAyE;YACzE,IAAI,CAAC,iEAAiE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACvF,CAAC;IACH,CAAC;IAED,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,UAAU,CAClB,4BAA4B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC/E,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC5C,qEAAqE;QACrE,wEAAwE;QACxE,0CAA0C;QAC1C,MAAM,GAAG,GAAe,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,CAAC;QAE5E,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,mBAAmB,EAAE,CAAC;QAChD,gBAAgB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAE9B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACjC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,MAAM,IAAI,UAAU,CAAC,iBAAiB,QAAQ,uBAAuB,SAAS,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,IAAI,aAAsC,CAAC;QAC3C,IAAI,CAAC;YACH,wEAAwE;YACxE,mEAAmE;YACnE,gEAAgE;YAChE,gDAAgD;YAChD,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,MAAM,IAAI,UAAU,CAAC,0BAA0B,QAAQ,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACtG,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgB,EAAE,MAAuB,QAAQ;IACpF,OAAO;SACJ,OAAO,CAAC,4BAA4B,CAAC;SACrC,WAAW,CAAC,yGAAyG,CAAC;SACtH,MAAM,CAAC,mBAAmB,EAAE,iBAAiB,CAAC;SAC9C,MAAM,CAAC,WAAW,EAAE,mFAAmF,CAAC;SACxG,MAAM,CAAC,QAAQ,EAAE,8FAA8F,CAAC;SAChH,MAAM,CAAC,KAAK,EACX,QAAgB,EAChB,OAA2B,EAC3B,IAAwB,EACxB,IAA8D,EAC9D,EAAE;QACF,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,QAAQ,EAAE,OAAO,IAAI,IAAI,EAAE;gBAChD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,IAAI;aAC9D,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { Command } from 'commander';
2
+ import { runQuery } from './query.js';
2
3
  /**
3
4
  * `mast search <query>` — the readable front door to `mast_search`.
4
5
  *
@@ -29,5 +30,9 @@ export declare function buildSearchArgs(query: string, flags: SearchFlags): stri
29
30
  * severity scale is built around.
30
31
  */
31
32
  export declare function formatSearchResults(responseText: string): string;
32
- export declare function registerSearchCommand(program: Command): void;
33
+ /**
34
+ * @param run Injected so the `--reindex` wiring can be tested without a real
35
+ * index (§4.4). Production passes {@link runQuery}.
36
+ */
37
+ export declare function registerSearchCommand(program: Command, run?: typeof runQuery): void;
33
38
  //# sourceMappingURL=search-cmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/search-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGzC;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAczE;AAqBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA8EhE;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoB5D"}
1
+ {"version":3,"file":"search-cmd.d.ts","sourceRoot":"","sources":["../../src/cli/search-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAc,MAAM,YAAY,CAAC;AAElD;;;;;;;;;;;GAWG;AAEH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,+FAA+F;AAC/F,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,MAAM,CAczE;AAqBD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CA8EhE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,GAAE,OAAO,QAAmB,GAAG,IAAI,CAuB7F"}
@@ -89,11 +89,16 @@ export function formatSearchResults(responseText) {
89
89
  }
90
90
  return lines.join('\n');
91
91
  }
92
- export function registerSearchCommand(program) {
92
+ /**
93
+ * @param run Injected so the `--reindex` wiring can be tested without a real
94
+ * index (§4.4). Production passes {@link runQuery}.
95
+ */
96
+ export function registerSearchCommand(program, run = runQuery) {
93
97
  program
94
98
  .command('search <query> [path]')
95
99
  .description('Search the index and print readable results (see `mast query mast_search` for raw MCP output)')
96
100
  .option('--state-dir <dir>', 'State directory')
101
+ .option('--reindex', 'Incrementally reindex before searching — the CLI has no watcher (see `mast serve`)')
97
102
  .option('-n, --limit <n>', 'Max results (1-50, default 10)')
98
103
  .option('-t, --type <kind>', 'Restrict to a chunk kind: function, method, class_shell, interface, type, export, block, doc')
99
104
  .option('-l, --language <lang>', 'Restrict to typescript, javascript, or markdown')
@@ -102,7 +107,9 @@ export function registerSearchCommand(program) {
102
107
  .option('--json', 'Emit the raw MCP response instead of text')
103
108
  .action(async (query, path, opts) => {
104
109
  try {
105
- const text = await runQuery('mast_search', buildSearchArgs(query, opts), { stateDir: opts.stateDir, path });
110
+ const text = await run('mast_search', buildSearchArgs(query, opts), {
111
+ stateDir: opts.stateDir, path, reindex: opts.reindex === true,
112
+ });
106
113
  process.stdout.write((opts.json === true ? text : formatSearchResults(text)) + '\n');
107
114
  }
108
115
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"search-cmd.js","sourceRoot":"","sources":["../../src/cli/search-cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search-cmd.js","sourceRoot":"","sources":["../../src/cli/search-cmd.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,8 @@
1
1
  import type { Command } from 'commander';
2
- export declare function registerServeCommand(program: Command): void;
2
+ import { type ServeOptions } from '../mcp/server.js';
3
+ /**
4
+ * @param runServe Injected so the flag semantics below can be tested without
5
+ * standing up a real stdio MCP server (§4.4). Production passes `serve`.
6
+ */
7
+ export declare function registerServeCommand(program: Command, runServe?: (options: ServeOptions) => Promise<void>): void;
3
8
  //# sourceMappingURL=serve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmB3D"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAE5D;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,QAAQ,GAAE,CAAC,OAAO,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAS,GACzD,IAAI,CAyBN"}
package/dist/cli/serve.js CHANGED
@@ -1,18 +1,28 @@
1
1
  import { resolveConfig } from '../store/config.js';
2
2
  import { serve } from '../mcp/server.js';
3
- export function registerServeCommand(program) {
3
+ /**
4
+ * @param runServe Injected so the flag semantics below can be tested without
5
+ * standing up a real stdio MCP server (§4.4). Production passes `serve`.
6
+ */
7
+ export function registerServeCommand(program, runServe = serve) {
4
8
  program
5
9
  .command('serve')
6
10
  .description('Start the MCP server over stdio')
7
11
  .option('--state-dir <dir>', 'State directory')
8
12
  .option('--no-startup-reindex', 'Skip the startup staleness check (not recommended)')
9
- .option('--watch', 'Watch source files and incrementally reindex on change (interactive use)')
13
+ // Declaration order is load-bearing: commander gives a boolean pair its
14
+ // default from whichever half is declared FIRST, so `--no-watch` must come
15
+ // before `--watch` for the default to be true. `--watch` is kept because
16
+ // existing MCP client configs pass it explicitly; it is now a no-op that
17
+ // selects the default. Pinned by cli/__tests__/serve-options.test.ts.
18
+ .option('--no-watch', 'Do not watch source files; rely on the startup reindex and explicit mast_reindex calls')
19
+ .option('--watch', 'Watch source files and incrementally reindex on change (the default)')
10
20
  .action(async (opts) => {
11
21
  const config = resolveConfig({ stateDirOverride: opts.stateDir });
12
- await serve({
22
+ await runServe({
13
23
  config,
14
24
  noStartupReindex: !opts.startupReindex,
15
- watch: opts.watch === true,
25
+ watch: opts.watch,
16
26
  });
17
27
  });
18
28
  }