trace-mcp 0.1.0 → 1.0.10

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.
package/dist/index.d.ts CHANGED
@@ -139,11 +139,25 @@ interface FileParseResult {
139
139
  warnings?: string[];
140
140
  metadata?: Record<string, unknown>;
141
141
  }
142
+ type PluginCategory = 'framework' | 'orm' | 'validation' | 'state' | 'api' | 'realtime' | 'testing' | 'tooling' | 'view';
142
143
  interface PluginManifest {
143
144
  name: string;
144
145
  version: string;
145
146
  priority: number;
146
147
  dependencies?: string[];
148
+ category?: PluginCategory;
149
+ }
150
+ /** Detected runtime/language version from manifest files. */
151
+ interface DetectedVersion {
152
+ runtime: string;
153
+ version?: string;
154
+ source: string;
155
+ }
156
+ /** Parsed dependency entry from any manifest. */
157
+ interface ParsedDependency {
158
+ name: string;
159
+ version?: string;
160
+ dev?: boolean;
147
161
  }
148
162
  interface ProjectContext {
149
163
  rootPath: string;
@@ -151,11 +165,35 @@ interface ProjectContext {
151
165
  packageJson?: Record<string, unknown>;
152
166
  pyprojectToml?: Record<string, unknown>;
153
167
  requirementsTxt?: string[];
168
+ goMod?: {
169
+ module: string;
170
+ goVersion?: string;
171
+ deps: ParsedDependency[];
172
+ };
173
+ cargoToml?: {
174
+ package?: Record<string, unknown>;
175
+ deps: ParsedDependency[];
176
+ };
177
+ gemfile?: {
178
+ deps: ParsedDependency[];
179
+ };
180
+ pomXml?: {
181
+ groupId?: string;
182
+ artifactId?: string;
183
+ version?: string;
184
+ deps: ParsedDependency[];
185
+ };
186
+ buildGradle?: {
187
+ deps: ParsedDependency[];
188
+ };
189
+ detectedVersions: DetectedVersion[];
190
+ allDependencies: ParsedDependency[];
154
191
  configFiles: string[];
155
192
  }
156
193
  interface LanguagePlugin {
157
194
  manifest: PluginManifest;
158
195
  supportedExtensions: string[];
196
+ supportedVersions?: string[];
159
197
  extractSymbols(filePath: string, content: Buffer): TraceMcpResult<FileParseResult>;
160
198
  }
161
199
  interface FrameworkPlugin {
@@ -199,6 +237,7 @@ interface ResolveContext {
199
237
  declare class Store {
200
238
  readonly db: Database.Database;
201
239
  constructor(db: Database.Database);
240
+ private readonly _stmts;
202
241
  insertFile(path: string, language: string | null, contentHash: string | null, byteLength: number | null, workspace?: string | null): number;
203
242
  getFile(path: string): FileRow | undefined;
204
243
  getFileById(id: number): FileRow | undefined;
@@ -207,10 +246,11 @@ declare class Store {
207
246
  getFilesByWorkspace(workspace: string): FileRow[];
208
247
  updateFileHash(fileId: number, hash: string, byteLength: number): void;
209
248
  updateFileStatus(fileId: number, status: string, frameworkRole?: string): void;
249
+ updateFileGitignored(fileId: number, gitignored: boolean): void;
210
250
  deleteFile(fileId: number): void;
211
251
  /** Delete routes, components, migrations, ORM models, and RN screens for a file (and their nodes). */
212
252
  deleteEntitiesByFile(fileId: number): void;
213
- insertSymbol(fileId: number, sym: RawSymbol): number;
253
+ insertSymbol(fileId: number, sym: RawSymbol, parentIdOverride?: number | null): number;
214
254
  insertSymbols(fileId: number, symbols: RawSymbol[]): number[];
215
255
  deleteSymbolsByFile(fileId: number): void;
216
256
  getSymbolsByFile(fileId: number): SymbolRow[];
@@ -220,6 +260,9 @@ declare class Store {
220
260
  getNodeId(nodeType: string, refId: number): number | undefined;
221
261
  insertEdge(sourceNodeId: number, targetNodeId: number, edgeTypeName: string, resolved?: boolean, metadata?: Record<string, unknown>, isCrossWs?: boolean): TraceMcpResult<number>;
222
262
  deleteEdgesForFileNodes(fileId: number): void;
263
+ /** Delete only outgoing edges from a file's nodes — used by incremental indexing
264
+ * to preserve incoming edges (e.g. imports from other files into this file). */
265
+ deleteOutgoingEdgesForFileNodes(fileId: number): void;
223
266
  traverseEdges(startNodeId: number, direction: 'outgoing' | 'incoming', depth: number): EdgeRow[];
224
267
  insertRoute(route: RawRoute, fileId: number): number;
225
268
  insertComponent(comp: RawComponent, fileId: number): number;
@@ -326,7 +369,22 @@ declare class Store {
326
369
  byte_start: number;
327
370
  byte_end: number;
328
371
  }[];
372
+ /** Get all distinct workspaces with file/symbol counts. */
373
+ getWorkspaceStats(): WorkspaceStats[];
374
+ /** Get all cross-workspace edges with resolved source/target workspace info. */
375
+ getCrossWorkspaceEdges(): CrossWorkspaceEdge[];
376
+ /** Get workspace dependency summary: which workspaces depend on which. */
377
+ getWorkspaceDependencyGraph(): WorkspaceDependency[];
378
+ /** Get symbols in a workspace that are used by other workspaces (public API surface). */
379
+ getWorkspaceExports(workspace: string): SymbolWithFilePath[];
329
380
  getStats(): IndexStats;
381
+ insertGraphSnapshot(snapshotType: string, data: Record<string, unknown>, commitHash?: string, filePath?: string): number;
382
+ getGraphSnapshots(snapshotType: string, options?: {
383
+ filePath?: string;
384
+ since?: string;
385
+ limit?: number;
386
+ }): GraphSnapshotRow[];
387
+ pruneGraphSnapshots(maxAge?: number): number;
330
388
  }
331
389
  interface FileRow {
332
390
  id: number;
@@ -339,6 +397,7 @@ interface FileRow {
339
397
  indexed_at: string;
340
398
  metadata: string | null;
341
399
  workspace: string | null;
400
+ gitignored: number;
342
401
  }
343
402
  interface SymbolRow {
344
403
  id: number;
@@ -445,6 +504,30 @@ interface EdgeTypeRow {
445
504
  category: string;
446
505
  description: string;
447
506
  }
507
+ interface WorkspaceStats {
508
+ workspace: string;
509
+ file_count: number;
510
+ symbol_count: number;
511
+ languages: string | null;
512
+ }
513
+ interface CrossWorkspaceEdge {
514
+ id: number;
515
+ edge_type: string;
516
+ source_workspace: string | null;
517
+ source_path: string | null;
518
+ source_symbol: string | null;
519
+ source_kind: string | null;
520
+ target_workspace: string | null;
521
+ target_path: string | null;
522
+ target_symbol: string | null;
523
+ target_kind: string | null;
524
+ }
525
+ interface WorkspaceDependency {
526
+ from_workspace: string;
527
+ to_workspace: string;
528
+ edge_count: number;
529
+ edge_types: string;
530
+ }
448
531
  interface IndexStats {
449
532
  totalFiles: number;
450
533
  totalSymbols: number;
@@ -456,24 +539,35 @@ interface IndexStats {
456
539
  partialFiles: number;
457
540
  errorFiles: number;
458
541
  }
542
+ interface GraphSnapshotRow {
543
+ id: number;
544
+ commit_hash: string | null;
545
+ created_at: string;
546
+ snapshot_type: string;
547
+ file_path: string | null;
548
+ data: string;
549
+ }
459
550
 
460
551
  declare class PluginRegistry {
461
552
  private languagePlugins;
462
553
  private frameworkPlugins;
554
+ private _extMap;
555
+ private _activeFrameworkCache;
463
556
  registerLanguagePlugin(plugin: LanguagePlugin): void;
464
557
  registerFrameworkPlugin(plugin: FrameworkPlugin): void;
465
558
  getLanguagePlugins(): LanguagePlugin[];
466
559
  getActiveFrameworkPlugins(ctx: ProjectContext): TraceMcpResult<FrameworkPlugin[]>;
560
+ /** Clear per-pipeline-run caches. Call at start of each indexing run. */
561
+ clearCaches(): void;
467
562
  getAllFrameworkPlugins(): FrameworkPlugin[];
468
563
  getLanguagePluginForFile(filePath: string): LanguagePlugin | undefined;
564
+ private getExtensionMap;
469
565
  private sortByPriority;
470
566
  private topologicalSort;
471
567
  }
472
568
 
473
569
  declare const TraceMcpConfigSchema: z.ZodObject<{
474
570
  root: z.ZodDefault<z.ZodString>;
475
- include: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
476
- exclude: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
477
571
  db: z.ZodDefault<z.ZodObject<{
478
572
  path: z.ZodDefault<z.ZodString>;
479
573
  }, "strip", z.ZodTypeAny, {
@@ -481,6 +575,8 @@ declare const TraceMcpConfigSchema: z.ZodObject<{
481
575
  }, {
482
576
  path?: string | undefined;
483
577
  }>>;
578
+ include: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
579
+ exclude: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
484
580
  frameworks: z.ZodOptional<z.ZodObject<{
485
581
  laravel: z.ZodOptional<z.ZodObject<{
486
582
  artisan: z.ZodOptional<z.ZodObject<{
@@ -568,20 +664,338 @@ declare const TraceMcpConfigSchema: z.ZodObject<{
568
664
  security: z.ZodOptional<z.ZodObject<{
569
665
  secret_patterns: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
570
666
  max_file_size_bytes: z.ZodOptional<z.ZodNumber>;
667
+ max_files: z.ZodOptional<z.ZodNumber>;
571
668
  }, "strip", z.ZodTypeAny, {
572
669
  secret_patterns?: string[] | undefined;
573
670
  max_file_size_bytes?: number | undefined;
671
+ max_files?: number | undefined;
574
672
  }, {
575
673
  secret_patterns?: string[] | undefined;
576
674
  max_file_size_bytes?: number | undefined;
675
+ max_files?: number | undefined;
676
+ }>>;
677
+ predictive: z.ZodOptional<z.ZodObject<{
678
+ enabled: z.ZodDefault<z.ZodBoolean>;
679
+ weights: z.ZodDefault<z.ZodObject<{
680
+ bug: z.ZodDefault<z.ZodObject<{
681
+ churn: z.ZodDefault<z.ZodNumber>;
682
+ fix_ratio: z.ZodDefault<z.ZodNumber>;
683
+ complexity: z.ZodDefault<z.ZodNumber>;
684
+ coupling: z.ZodDefault<z.ZodNumber>;
685
+ pagerank: z.ZodDefault<z.ZodNumber>;
686
+ authors: z.ZodDefault<z.ZodNumber>;
687
+ }, "strip", z.ZodTypeAny, {
688
+ churn: number;
689
+ fix_ratio: number;
690
+ complexity: number;
691
+ coupling: number;
692
+ pagerank: number;
693
+ authors: number;
694
+ }, {
695
+ churn?: number | undefined;
696
+ fix_ratio?: number | undefined;
697
+ complexity?: number | undefined;
698
+ coupling?: number | undefined;
699
+ pagerank?: number | undefined;
700
+ authors?: number | undefined;
701
+ }>>;
702
+ tech_debt: z.ZodDefault<z.ZodObject<{
703
+ complexity: z.ZodDefault<z.ZodNumber>;
704
+ coupling: z.ZodDefault<z.ZodNumber>;
705
+ test_gap: z.ZodDefault<z.ZodNumber>;
706
+ churn: z.ZodDefault<z.ZodNumber>;
707
+ }, "strip", z.ZodTypeAny, {
708
+ churn: number;
709
+ complexity: number;
710
+ coupling: number;
711
+ test_gap: number;
712
+ }, {
713
+ churn?: number | undefined;
714
+ complexity?: number | undefined;
715
+ coupling?: number | undefined;
716
+ test_gap?: number | undefined;
717
+ }>>;
718
+ change_risk: z.ZodDefault<z.ZodObject<{
719
+ blast_radius: z.ZodDefault<z.ZodNumber>;
720
+ complexity: z.ZodDefault<z.ZodNumber>;
721
+ churn: z.ZodDefault<z.ZodNumber>;
722
+ test_gap: z.ZodDefault<z.ZodNumber>;
723
+ coupling: z.ZodDefault<z.ZodNumber>;
724
+ }, "strip", z.ZodTypeAny, {
725
+ churn: number;
726
+ complexity: number;
727
+ coupling: number;
728
+ test_gap: number;
729
+ blast_radius: number;
730
+ }, {
731
+ churn?: number | undefined;
732
+ complexity?: number | undefined;
733
+ coupling?: number | undefined;
734
+ test_gap?: number | undefined;
735
+ blast_radius?: number | undefined;
736
+ }>>;
737
+ }, "strip", z.ZodTypeAny, {
738
+ bug: {
739
+ churn: number;
740
+ fix_ratio: number;
741
+ complexity: number;
742
+ coupling: number;
743
+ pagerank: number;
744
+ authors: number;
745
+ };
746
+ tech_debt: {
747
+ churn: number;
748
+ complexity: number;
749
+ coupling: number;
750
+ test_gap: number;
751
+ };
752
+ change_risk: {
753
+ churn: number;
754
+ complexity: number;
755
+ coupling: number;
756
+ test_gap: number;
757
+ blast_radius: number;
758
+ };
759
+ }, {
760
+ bug?: {
761
+ churn?: number | undefined;
762
+ fix_ratio?: number | undefined;
763
+ complexity?: number | undefined;
764
+ coupling?: number | undefined;
765
+ pagerank?: number | undefined;
766
+ authors?: number | undefined;
767
+ } | undefined;
768
+ tech_debt?: {
769
+ churn?: number | undefined;
770
+ complexity?: number | undefined;
771
+ coupling?: number | undefined;
772
+ test_gap?: number | undefined;
773
+ } | undefined;
774
+ change_risk?: {
775
+ churn?: number | undefined;
776
+ complexity?: number | undefined;
777
+ coupling?: number | undefined;
778
+ test_gap?: number | undefined;
779
+ blast_radius?: number | undefined;
780
+ } | undefined;
781
+ }>>;
782
+ cache_ttl_minutes: z.ZodDefault<z.ZodNumber>;
783
+ git_since_days: z.ZodDefault<z.ZodNumber>;
784
+ module_depth: z.ZodDefault<z.ZodNumber>;
785
+ }, "strip", z.ZodTypeAny, {
786
+ enabled: boolean;
787
+ weights: {
788
+ bug: {
789
+ churn: number;
790
+ fix_ratio: number;
791
+ complexity: number;
792
+ coupling: number;
793
+ pagerank: number;
794
+ authors: number;
795
+ };
796
+ tech_debt: {
797
+ churn: number;
798
+ complexity: number;
799
+ coupling: number;
800
+ test_gap: number;
801
+ };
802
+ change_risk: {
803
+ churn: number;
804
+ complexity: number;
805
+ coupling: number;
806
+ test_gap: number;
807
+ blast_radius: number;
808
+ };
809
+ };
810
+ cache_ttl_minutes: number;
811
+ git_since_days: number;
812
+ module_depth: number;
813
+ }, {
814
+ enabled?: boolean | undefined;
815
+ weights?: {
816
+ bug?: {
817
+ churn?: number | undefined;
818
+ fix_ratio?: number | undefined;
819
+ complexity?: number | undefined;
820
+ coupling?: number | undefined;
821
+ pagerank?: number | undefined;
822
+ authors?: number | undefined;
823
+ } | undefined;
824
+ tech_debt?: {
825
+ churn?: number | undefined;
826
+ complexity?: number | undefined;
827
+ coupling?: number | undefined;
828
+ test_gap?: number | undefined;
829
+ } | undefined;
830
+ change_risk?: {
831
+ churn?: number | undefined;
832
+ complexity?: number | undefined;
833
+ coupling?: number | undefined;
834
+ test_gap?: number | undefined;
835
+ blast_radius?: number | undefined;
836
+ } | undefined;
837
+ } | undefined;
838
+ cache_ttl_minutes?: number | undefined;
839
+ git_since_days?: number | undefined;
840
+ module_depth?: number | undefined;
841
+ }>>;
842
+ intent: z.ZodOptional<z.ZodObject<{
843
+ enabled: z.ZodDefault<z.ZodBoolean>;
844
+ domain_hints: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodString, "many">>>;
845
+ custom_domains: z.ZodOptional<z.ZodArray<z.ZodObject<{
846
+ name: z.ZodString;
847
+ parent: z.ZodOptional<z.ZodString>;
848
+ description: z.ZodOptional<z.ZodString>;
849
+ path_patterns: z.ZodArray<z.ZodString, "many">;
850
+ }, "strip", z.ZodTypeAny, {
851
+ name: string;
852
+ path_patterns: string[];
853
+ parent?: string | undefined;
854
+ description?: string | undefined;
855
+ }, {
856
+ name: string;
857
+ path_patterns: string[];
858
+ parent?: string | undefined;
859
+ description?: string | undefined;
860
+ }>, "many">>;
861
+ auto_classify_on_index: z.ZodDefault<z.ZodBoolean>;
862
+ classify_batch_size: z.ZodDefault<z.ZodNumber>;
863
+ }, "strip", z.ZodTypeAny, {
864
+ enabled: boolean;
865
+ auto_classify_on_index: boolean;
866
+ classify_batch_size: number;
867
+ domain_hints?: Record<string, string[]> | undefined;
868
+ custom_domains?: {
869
+ name: string;
870
+ path_patterns: string[];
871
+ parent?: string | undefined;
872
+ description?: string | undefined;
873
+ }[] | undefined;
874
+ }, {
875
+ enabled?: boolean | undefined;
876
+ domain_hints?: Record<string, string[]> | undefined;
877
+ custom_domains?: {
878
+ name: string;
879
+ path_patterns: string[];
880
+ parent?: string | undefined;
881
+ description?: string | undefined;
882
+ }[] | undefined;
883
+ auto_classify_on_index?: boolean | undefined;
884
+ classify_batch_size?: number | undefined;
885
+ }>>;
886
+ runtime: z.ZodOptional<z.ZodObject<{
887
+ enabled: z.ZodDefault<z.ZodBoolean>;
888
+ otlp: z.ZodDefault<z.ZodObject<{
889
+ port: z.ZodDefault<z.ZodNumber>;
890
+ host: z.ZodDefault<z.ZodString>;
891
+ max_body_bytes: z.ZodDefault<z.ZodNumber>;
892
+ }, "strip", z.ZodTypeAny, {
893
+ port: number;
894
+ host: string;
895
+ max_body_bytes: number;
896
+ }, {
897
+ port?: number | undefined;
898
+ host?: string | undefined;
899
+ max_body_bytes?: number | undefined;
900
+ }>>;
901
+ retention: z.ZodDefault<z.ZodObject<{
902
+ max_span_age_days: z.ZodDefault<z.ZodNumber>;
903
+ max_aggregate_age_days: z.ZodDefault<z.ZodNumber>;
904
+ prune_interval: z.ZodDefault<z.ZodNumber>;
905
+ }, "strip", z.ZodTypeAny, {
906
+ max_span_age_days: number;
907
+ max_aggregate_age_days: number;
908
+ prune_interval: number;
909
+ }, {
910
+ max_span_age_days?: number | undefined;
911
+ max_aggregate_age_days?: number | undefined;
912
+ prune_interval?: number | undefined;
913
+ }>>;
914
+ mapping: z.ZodDefault<z.ZodObject<{
915
+ fqn_attributes: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
916
+ route_patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
917
+ }, "strip", z.ZodTypeAny, {
918
+ fqn_attributes: string[];
919
+ route_patterns: string[];
920
+ }, {
921
+ fqn_attributes?: string[] | undefined;
922
+ route_patterns?: string[] | undefined;
923
+ }>>;
924
+ }, "strip", z.ZodTypeAny, {
925
+ enabled: boolean;
926
+ otlp: {
927
+ port: number;
928
+ host: string;
929
+ max_body_bytes: number;
930
+ };
931
+ retention: {
932
+ max_span_age_days: number;
933
+ max_aggregate_age_days: number;
934
+ prune_interval: number;
935
+ };
936
+ mapping: {
937
+ fqn_attributes: string[];
938
+ route_patterns: string[];
939
+ };
940
+ }, {
941
+ enabled?: boolean | undefined;
942
+ otlp?: {
943
+ port?: number | undefined;
944
+ host?: string | undefined;
945
+ max_body_bytes?: number | undefined;
946
+ } | undefined;
947
+ retention?: {
948
+ max_span_age_days?: number | undefined;
949
+ max_aggregate_age_days?: number | undefined;
950
+ prune_interval?: number | undefined;
951
+ } | undefined;
952
+ mapping?: {
953
+ fqn_attributes?: string[] | undefined;
954
+ route_patterns?: string[] | undefined;
955
+ } | undefined;
956
+ }>>;
957
+ topology: z.ZodOptional<z.ZodObject<{
958
+ enabled: z.ZodDefault<z.ZodBoolean>;
959
+ repos: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
960
+ auto_detect: z.ZodDefault<z.ZodBoolean>;
961
+ auto_federation: z.ZodDefault<z.ZodBoolean>;
962
+ contract_globs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
963
+ }, "strip", z.ZodTypeAny, {
964
+ enabled: boolean;
965
+ repos: string[];
966
+ auto_detect: boolean;
967
+ auto_federation: boolean;
968
+ contract_globs?: string[] | undefined;
969
+ }, {
970
+ enabled?: boolean | undefined;
971
+ repos?: string[] | undefined;
972
+ auto_detect?: boolean | undefined;
973
+ auto_federation?: boolean | undefined;
974
+ contract_globs?: string[] | undefined;
975
+ }>>;
976
+ tools: z.ZodOptional<z.ZodObject<{
977
+ preset: z.ZodDefault<z.ZodString>;
978
+ include: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
979
+ exclude: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
980
+ descriptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
981
+ }, "strip", z.ZodTypeAny, {
982
+ preset: string;
983
+ include?: string[] | undefined;
984
+ exclude?: string[] | undefined;
985
+ descriptions?: Record<string, string> | undefined;
986
+ }, {
987
+ include?: string[] | undefined;
988
+ exclude?: string[] | undefined;
989
+ preset?: string | undefined;
990
+ descriptions?: Record<string, string> | undefined;
577
991
  }>>;
578
992
  }, "strip", z.ZodTypeAny, {
579
993
  root: string;
580
- include: string[];
581
- exclude: string[];
582
994
  db: {
583
995
  path: string;
584
996
  };
997
+ include: string[];
998
+ exclude: string[];
585
999
  plugins: string[];
586
1000
  frameworks?: {
587
1001
  laravel?: {
@@ -609,14 +1023,86 @@ declare const TraceMcpConfigSchema: z.ZodObject<{
609
1023
  security?: {
610
1024
  secret_patterns?: string[] | undefined;
611
1025
  max_file_size_bytes?: number | undefined;
1026
+ max_files?: number | undefined;
1027
+ } | undefined;
1028
+ predictive?: {
1029
+ enabled: boolean;
1030
+ weights: {
1031
+ bug: {
1032
+ churn: number;
1033
+ fix_ratio: number;
1034
+ complexity: number;
1035
+ coupling: number;
1036
+ pagerank: number;
1037
+ authors: number;
1038
+ };
1039
+ tech_debt: {
1040
+ churn: number;
1041
+ complexity: number;
1042
+ coupling: number;
1043
+ test_gap: number;
1044
+ };
1045
+ change_risk: {
1046
+ churn: number;
1047
+ complexity: number;
1048
+ coupling: number;
1049
+ test_gap: number;
1050
+ blast_radius: number;
1051
+ };
1052
+ };
1053
+ cache_ttl_minutes: number;
1054
+ git_since_days: number;
1055
+ module_depth: number;
1056
+ } | undefined;
1057
+ intent?: {
1058
+ enabled: boolean;
1059
+ auto_classify_on_index: boolean;
1060
+ classify_batch_size: number;
1061
+ domain_hints?: Record<string, string[]> | undefined;
1062
+ custom_domains?: {
1063
+ name: string;
1064
+ path_patterns: string[];
1065
+ parent?: string | undefined;
1066
+ description?: string | undefined;
1067
+ }[] | undefined;
1068
+ } | undefined;
1069
+ runtime?: {
1070
+ enabled: boolean;
1071
+ otlp: {
1072
+ port: number;
1073
+ host: string;
1074
+ max_body_bytes: number;
1075
+ };
1076
+ retention: {
1077
+ max_span_age_days: number;
1078
+ max_aggregate_age_days: number;
1079
+ prune_interval: number;
1080
+ };
1081
+ mapping: {
1082
+ fqn_attributes: string[];
1083
+ route_patterns: string[];
1084
+ };
1085
+ } | undefined;
1086
+ topology?: {
1087
+ enabled: boolean;
1088
+ repos: string[];
1089
+ auto_detect: boolean;
1090
+ auto_federation: boolean;
1091
+ contract_globs?: string[] | undefined;
1092
+ } | undefined;
1093
+ tools?: {
1094
+ preset: string;
1095
+ include?: string[] | undefined;
1096
+ exclude?: string[] | undefined;
1097
+ descriptions?: Record<string, string> | undefined;
612
1098
  } | undefined;
613
1099
  }, {
614
1100
  root?: string | undefined;
615
- include?: string[] | undefined;
616
- exclude?: string[] | undefined;
617
1101
  db?: {
618
1102
  path?: string | undefined;
619
1103
  } | undefined;
1104
+ include?: string[] | undefined;
1105
+ exclude?: string[] | undefined;
620
1106
  frameworks?: {
621
1107
  laravel?: {
622
1108
  artisan?: {
@@ -644,9 +1130,86 @@ declare const TraceMcpConfigSchema: z.ZodObject<{
644
1130
  security?: {
645
1131
  secret_patterns?: string[] | undefined;
646
1132
  max_file_size_bytes?: number | undefined;
1133
+ max_files?: number | undefined;
1134
+ } | undefined;
1135
+ predictive?: {
1136
+ enabled?: boolean | undefined;
1137
+ weights?: {
1138
+ bug?: {
1139
+ churn?: number | undefined;
1140
+ fix_ratio?: number | undefined;
1141
+ complexity?: number | undefined;
1142
+ coupling?: number | undefined;
1143
+ pagerank?: number | undefined;
1144
+ authors?: number | undefined;
1145
+ } | undefined;
1146
+ tech_debt?: {
1147
+ churn?: number | undefined;
1148
+ complexity?: number | undefined;
1149
+ coupling?: number | undefined;
1150
+ test_gap?: number | undefined;
1151
+ } | undefined;
1152
+ change_risk?: {
1153
+ churn?: number | undefined;
1154
+ complexity?: number | undefined;
1155
+ coupling?: number | undefined;
1156
+ test_gap?: number | undefined;
1157
+ blast_radius?: number | undefined;
1158
+ } | undefined;
1159
+ } | undefined;
1160
+ cache_ttl_minutes?: number | undefined;
1161
+ git_since_days?: number | undefined;
1162
+ module_depth?: number | undefined;
1163
+ } | undefined;
1164
+ intent?: {
1165
+ enabled?: boolean | undefined;
1166
+ domain_hints?: Record<string, string[]> | undefined;
1167
+ custom_domains?: {
1168
+ name: string;
1169
+ path_patterns: string[];
1170
+ parent?: string | undefined;
1171
+ description?: string | undefined;
1172
+ }[] | undefined;
1173
+ auto_classify_on_index?: boolean | undefined;
1174
+ classify_batch_size?: number | undefined;
1175
+ } | undefined;
1176
+ runtime?: {
1177
+ enabled?: boolean | undefined;
1178
+ otlp?: {
1179
+ port?: number | undefined;
1180
+ host?: string | undefined;
1181
+ max_body_bytes?: number | undefined;
1182
+ } | undefined;
1183
+ retention?: {
1184
+ max_span_age_days?: number | undefined;
1185
+ max_aggregate_age_days?: number | undefined;
1186
+ prune_interval?: number | undefined;
1187
+ } | undefined;
1188
+ mapping?: {
1189
+ fqn_attributes?: string[] | undefined;
1190
+ route_patterns?: string[] | undefined;
1191
+ } | undefined;
1192
+ } | undefined;
1193
+ topology?: {
1194
+ enabled?: boolean | undefined;
1195
+ repos?: string[] | undefined;
1196
+ auto_detect?: boolean | undefined;
1197
+ auto_federation?: boolean | undefined;
1198
+ contract_globs?: string[] | undefined;
1199
+ } | undefined;
1200
+ tools?: {
1201
+ include?: string[] | undefined;
1202
+ exclude?: string[] | undefined;
1203
+ preset?: string | undefined;
1204
+ descriptions?: Record<string, string> | undefined;
647
1205
  } | undefined;
648
1206
  }>;
649
1207
  type TraceMcpConfig = z.infer<typeof TraceMcpConfigSchema>;
1208
+ /**
1209
+ * Load config for a project.
1210
+ * Merge order: global defaults → per-project overrides → Zod schema defaults.
1211
+ * The `projectRoot` key in the global config (keyed by absolute path) is also checked.
1212
+ */
650
1213
  declare function loadConfig(searchFrom?: string): Promise<TraceMcpResult<TraceMcpConfig>>;
651
1214
 
652
1215
  declare function createServer(store: Store, registry: PluginRegistry, config: TraceMcpConfig, rootPath?: string): McpServer;