@githits/mcp 0.4.15 → 0.5.1

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/README.md CHANGED
@@ -11,9 +11,10 @@ This package exposes transport-neutral helpers for servers that want the GitHits
11
11
  - `getMcpToolDescriptors()` returns static tool metadata without requiring concrete services.
12
12
  - `buildMcpInstructions(options?)` builds the GitHits MCP instruction block.
13
13
  - `@githits/mcp/client` exports concrete GitHits service implementations, static token providers, URL/config helpers, request-header helpers, telemetry helpers, and registry helpers for remote MCP servers.
14
+ - `@githits/mcp/smoke-test` exports reusable smoke assertions and `runMcpSmoke()` for remote MCP server validation.
14
15
 
15
- The package expects callers to provide service implementations through `McpToolServices` or a request-scoped `McpToolServicesProvider`.
16
+ The package expects callers to provide service implementations through `McpToolServices` or a request-scoped `McpToolServicesProvider`. Servers can pass `traceTool` to `createMcpServer()` or `registerMcpTools()` to wrap public tool execution for instrumentation without receiving arguments or auth data.
16
17
 
17
- Only imports from `@githits/mcp`, `@githits/mcp/client`, and `@githits/mcp/package.json` are public. The workspace alias `@githits/mcp/internal` is not exported, is not supported for external consumers, and must not be used by remote MCP server implementations.
18
+ Only imports from `@githits/mcp`, `@githits/mcp/client`, `@githits/mcp/smoke-test`, and `@githits/mcp/package.json` are public. The workspace alias `@githits/mcp/internal` is not exported, is not supported for external consumers, and must not be used by remote MCP server implementations.
18
19
 
19
20
  Remote MCP servers should provide request-scoped services through `createMcpServer()` and keep transport, auth/session handling, deployment config, and observability outside this package.
package/dist/client.d.ts CHANGED
@@ -103,6 +103,7 @@ interface TargetResolutionIdentity {
103
103
  commitSha?: string;
104
104
  }
105
105
  type AvailableRef = AvailableVersion;
106
+ type SuggestedRef = AvailableVersion;
106
107
  interface TargetResolution {
107
108
  requested?: TargetResolutionIdentity;
108
109
  resolvedRequested?: TargetResolutionIdentity;
@@ -112,6 +113,7 @@ interface TargetResolution {
112
113
  indexingRef?: string;
113
114
  availableVersions: AvailableVersion[];
114
115
  availableRefs: AvailableRef[];
116
+ suggestedRefs?: SuggestedRef[];
115
117
  }
116
118
  type UnifiedSearchSource = "AUTO" | "DOCS" | "CODE" | "SYMBOL";
117
119
  type UnifiedSearchResultType = "DOCUMENTATION_PAGE" | "REPOSITORY_SYMBOL" | "REPOSITORY_CODE" | "REPOSITORY_DOC";
@@ -207,6 +209,7 @@ interface UnifiedSearchProgressTarget {
207
209
  targetResolution?: TargetResolution;
208
210
  availableVersions?: AvailableVersion[];
209
211
  availableRefs?: AvailableRef[];
212
+ suggestedRefs?: SuggestedRef[];
210
213
  }
211
214
  interface UnifiedSearchRequestedTarget {
212
215
  registry?: CodeNavigationRegistry;
@@ -543,6 +546,8 @@ declare class GitHitsServiceImpl implements GitHitsService {
543
546
  interface PackageSummaryParams {
544
547
  registry: PkgseerRegistry;
545
548
  packageName: string;
549
+ /** Include verbose/json-only fields such as recent advisories and changes. */
550
+ includeVerboseFields?: boolean;
546
551
  }
547
552
  interface PackageIdentity {
548
553
  name: string;
@@ -645,6 +650,10 @@ interface PackageDependenciesParams {
645
650
  version?: string;
646
651
  /** Optional. Backend returns a full transitive graph when true. */
647
652
  includeTransitive?: boolean;
653
+ /** Include transitive aggregate/detail fields beyond the dependency graph. */
654
+ includeTransitiveDetails?: boolean;
655
+ /** Include dependency group metadata. */
656
+ includeGroups?: boolean;
648
657
  /**
649
658
  * Optional transitive-traversal depth (1–10). Omit for the backend
650
659
  * default (full graph) — note the CLI applies a 3-deep guardrail but
@@ -669,19 +678,158 @@ interface PackageUpgradeDependencyProbeParams {
669
678
  includeDependencyChanges?: boolean;
670
679
  includeGroups?: boolean;
671
680
  }
681
+ interface PackageUpgradeReviewPackageParams {
682
+ registry: PkgseerRegistry;
683
+ name: string;
684
+ currentVersion: string;
685
+ targetVersion: string;
686
+ }
687
+ interface PackageUpgradeReviewParams {
688
+ packages: PackageUpgradeReviewPackageParams[];
689
+ includeTransitiveSecurity: boolean;
690
+ includeDependencyIssues: boolean;
691
+ changelogLimit: number;
692
+ minSeverity?: number;
693
+ }
694
+ interface PackageUpgradeAdvisorySummary {
695
+ id?: string;
696
+ aliases: string[];
697
+ summary?: string;
698
+ severity?: number;
699
+ severityLabel?: string;
700
+ fixedIn: string[];
701
+ isMalicious?: boolean;
702
+ }
703
+ interface PackageUpgradeVersionVulnerabilitySummary {
704
+ version: string;
705
+ publishedAt?: string;
706
+ deprecated?: boolean;
707
+ deprecationReason?: string;
708
+ affectedCount: number;
709
+ nonAffectingCount: number;
710
+ allCount: number;
711
+ lastModifiedAt?: string;
712
+ advisories: PackageUpgradeAdvisorySummary[];
713
+ }
714
+ interface PackageUpgradeTransitiveVulnerablePackage {
715
+ id: string;
716
+ registry: string;
717
+ name: string;
718
+ versions: string[];
719
+ affectedCount: number;
720
+ maxSeverityScore?: number;
721
+ maxSeverityLabel?: string;
722
+ advisoryIds: string[];
723
+ }
724
+ interface PackageUpgradeTransitivePackagePage {
725
+ entries: PackageUpgradeTransitiveVulnerablePackage[];
726
+ totalCount: number;
727
+ truncated: boolean;
728
+ }
729
+ interface PackageUpgradeTransitiveSecurity {
730
+ currentAffected: number;
731
+ targetAffected: number;
732
+ introducedPackages: string[];
733
+ fixedPackages: string[];
734
+ introducedPackageDetails: PackageUpgradeTransitivePackagePage;
735
+ fixedPackageDetails: PackageUpgradeTransitivePackagePage;
736
+ stillAffectedPackageDetails: PackageUpgradeTransitivePackagePage;
737
+ }
738
+ interface PackageUpgradeSecurity {
739
+ current?: PackageUpgradeVersionVulnerabilitySummary;
740
+ target?: PackageUpgradeVersionVulnerabilitySummary;
741
+ added: PackageUpgradeAdvisorySummary[];
742
+ removed: PackageUpgradeAdvisorySummary[];
743
+ notAddressed: PackageUpgradeAdvisorySummary[];
744
+ fixed: PackageUpgradeAdvisorySummary[];
745
+ introduced: PackageUpgradeAdvisorySummary[];
746
+ unchanged: PackageUpgradeAdvisorySummary[];
747
+ transitive?: PackageUpgradeTransitiveSecurity;
748
+ }
749
+ interface PackageUpgradeChangelogEntry {
750
+ version?: string;
751
+ publishedAt?: string;
752
+ htmlUrl?: string;
753
+ body?: string;
754
+ bodyPreview?: string;
755
+ headline?: string;
756
+ signals: string[];
757
+ }
758
+ interface PackageUpgradeChangelog {
759
+ source?: string;
760
+ fallback?: string;
761
+ entries: PackageUpgradeChangelogEntry[];
762
+ sampledEntries: PackageUpgradeChangelogEntry[];
763
+ keywordEntries: PackageUpgradeChangelogEntry[];
764
+ totalKeywordEntries: number;
765
+ totalEntries: number;
766
+ totalEntriesWithBodies: number;
767
+ truncated: boolean;
768
+ hasReleaseNoteBodies: boolean;
769
+ breakingSignals: string[];
770
+ migrationSignals: string[];
771
+ }
772
+ interface PackageUpgradeCompatibility {
773
+ peerDependencyChanges: string[];
774
+ notes: string[];
775
+ }
776
+ interface PackageUpgradeDependencyChangeItem {
777
+ name: string;
778
+ registry?: string;
779
+ version?: string;
780
+ fromVersions: string[];
781
+ toVersions: string[];
782
+ constraint?: string;
783
+ type?: string;
784
+ }
785
+ interface PackageUpgradeDependencyChangeGroup {
786
+ added: PackageUpgradeDependencyChangeItem[];
787
+ removed: PackageUpgradeDependencyChangeItem[];
788
+ changed: PackageUpgradeDependencyChangeItem[];
789
+ }
790
+ interface PackageUpgradeDependencyChanges {
791
+ direct: PackageUpgradeDependencyChangeGroup;
792
+ transitive: PackageUpgradeDependencyChangeGroup;
793
+ }
794
+ interface PackageUpgradeDependencyIssues {
795
+ currentTotal: number;
796
+ targetTotal: number;
797
+ introducedDeprecated: string[];
798
+ introducedDuplicates: string[];
799
+ introducedConflicts: string[];
800
+ introducedOutdated: string[];
801
+ }
802
+ interface PackageUpgradeReview {
803
+ registry: string;
804
+ name: string;
805
+ currentVersion: string;
806
+ targetVersion: string;
807
+ latestVersion?: string;
808
+ versionDelta: string;
809
+ security: PackageUpgradeSecurity;
810
+ changelog: PackageUpgradeChangelog;
811
+ compatibility?: PackageUpgradeCompatibility;
812
+ dependencyChanges?: PackageUpgradeDependencyChanges;
813
+ dependencyIssues?: PackageUpgradeDependencyIssues;
814
+ unknowns: string[];
815
+ }
816
+ interface PackageUpgradeReviewResponse {
817
+ summary: {
818
+ total: number;
819
+ withUnknowns: number;
820
+ withAddedAdvisories: number;
821
+ withBreakingSignals: number;
822
+ withDirectDependencyChanges: number;
823
+ withTransitiveVulnerabilityAdditions: number;
824
+ };
825
+ reviews: PackageUpgradeReview[];
826
+ }
672
827
  interface DirectDependency {
673
828
  name: string;
674
829
  versionConstraint?: string;
675
830
  type?: string;
676
831
  }
677
832
  /**
678
- * Opaque GenericJSON passthrough. The `package_dependencies` tool
679
- * migrated to typed fields (`dependencyGraph`, `dependencyConflicts`,
680
- * `circularDependencyCycles`, `environmentMarkers`); this type is
681
- * retained for the one remaining passthrough — `ChangelogEntryDetail.metadata`.
682
- */
683
- type UntypedGenericJSON = unknown;
684
- /**
685
833
  * Node in a typed dependency graph. Mirrors `DependencyGraphNode`.
686
834
  * `registry` is a lowercase string: `"npm"`, `"pypi"`, …, or
687
835
  * `"synthetic"` for manifest / project root nodes. `version` is null
@@ -912,6 +1060,8 @@ interface PackageChangelogParams {
912
1060
  toVersion?: string;
913
1061
  /** Latest-mode cap (1–50). Rejected client-side when `fromVersion` is set. */
914
1062
  limit?: number;
1063
+ /** Include raw markdown bodies in entries. Defaults to true. */
1064
+ includeBodies?: boolean;
915
1065
  }
916
1066
  /**
917
1067
  * Package-info echo from the changelog response. Mirrors
@@ -926,20 +1076,13 @@ interface ChangelogPackageInfo {
926
1076
  toVersion?: string;
927
1077
  limit?: number;
928
1078
  }
929
- /**
930
- * Full changelog entry as observed on the wire. The envelope builder
931
- * projects this into the lean response shape; `metadata` is dropped
932
- * from the envelope because its source-specific opaque structure
933
- * isn't worth the token cost today. Revisit via agent feedback.
934
- */
1079
+ /** Full changelog entry as observed on the wire. */
935
1080
  interface ChangelogEntryDetail {
936
1081
  version?: string;
937
1082
  normalizedVersion?: string;
938
1083
  body?: string;
939
1084
  htmlUrl?: string;
940
1085
  publishedAt?: string;
941
- /** TODO(backend): surface when shape is documented. */
942
- metadata?: UntypedGenericJSON;
943
1086
  }
944
1087
  interface ChangelogReport {
945
1088
  /** Echo of addressing + filter as the backend saw it. */
@@ -1019,6 +1162,7 @@ interface PackageIntelligenceService {
1019
1162
  packageVulnerabilities(params: PackageVulnerabilitiesParams): Promise<VulnerabilityReport>;
1020
1163
  packageDependencies(params: PackageDependenciesParams): Promise<DependencyReport>;
1021
1164
  packageUpgradeDependencyProbe(params: PackageUpgradeDependencyProbeParams): Promise<DependencyReport>;
1165
+ packageUpgradeReview(params: PackageUpgradeReviewParams): Promise<PackageUpgradeReviewResponse>;
1022
1166
  packageChangelog(params: PackageChangelogParams): Promise<ChangelogReport>;
1023
1167
  listPackageDocs(params: ListPackageDocsParams): Promise<PackageDocsList>;
1024
1168
  readPackageDoc(params: ReadPackageDocParams): Promise<PackageDocResult>;
@@ -1045,6 +1189,8 @@ declare class PackageIntelligenceServiceImpl implements PackageIntelligenceServi
1045
1189
  private normaliseVulnerabilityReport;
1046
1190
  packageDependencies(params: PackageDependenciesParams): Promise<DependencyReport>;
1047
1191
  packageUpgradeDependencyProbe(params: PackageUpgradeDependencyProbeParams): Promise<DependencyReport>;
1192
+ packageUpgradeReview(params: PackageUpgradeReviewParams): Promise<PackageUpgradeReviewResponse>;
1193
+ private executePackageUpgradeReview;
1048
1194
  private executePackageUpgradeDependencyProbe;
1049
1195
  private executePackageDependencies;
1050
1196
  private normaliseDependencyReport;
package/dist/client.js CHANGED
@@ -1 +1 @@
1
- import{CodeNavigationServiceImpl,DEFAULT_API_URL,DEFAULT_CODE_NAV_URL,DEFAULT_MCP_URL,GitHitsServiceImpl,PKGSEER_REGISTRY_LIST,PackageIntelligenceServiceImpl,RefreshingGitHitsService,createClientHeaderBuilder,createStaticTokenProvider,endTelemetrySpan,flushTelemetry,getApiUrl,getCodeNavigationUrl,getEnvApiToken,getMcpUrl,startTelemetrySpan,toPkgseerRegistry,toPkgseerRegistryLowercase,withTelemetrySpan}from"./shared/chunk-95wchh8v.js";export{withTelemetrySpan,toPkgseerRegistryLowercase,toPkgseerRegistry,startTelemetrySpan,getMcpUrl,getEnvApiToken,getCodeNavigationUrl,getApiUrl,flushTelemetry,endTelemetrySpan,createStaticTokenProvider,createClientHeaderBuilder,RefreshingGitHitsService,PackageIntelligenceServiceImpl,PKGSEER_REGISTRY_LIST,GitHitsServiceImpl,DEFAULT_MCP_URL,DEFAULT_CODE_NAV_URL,DEFAULT_API_URL,CodeNavigationServiceImpl};
1
+ import{CodeNavigationServiceImpl,DEFAULT_API_URL,DEFAULT_CODE_NAV_URL,DEFAULT_MCP_URL,GitHitsServiceImpl,PKGSEER_REGISTRY_LIST,PackageIntelligenceServiceImpl,RefreshingGitHitsService,createClientHeaderBuilder,createStaticTokenProvider,endTelemetrySpan,flushTelemetry,getApiUrl,getCodeNavigationUrl,getEnvApiToken,getMcpUrl,startTelemetrySpan,toPkgseerRegistry,toPkgseerRegistryLowercase,withTelemetrySpan}from"./shared/chunk-s6vw5w26.js";export{withTelemetrySpan,toPkgseerRegistryLowercase,toPkgseerRegistry,startTelemetrySpan,getMcpUrl,getEnvApiToken,getCodeNavigationUrl,getApiUrl,flushTelemetry,endTelemetrySpan,createStaticTokenProvider,createClientHeaderBuilder,RefreshingGitHitsService,PackageIntelligenceServiceImpl,PKGSEER_REGISTRY_LIST,GitHitsServiceImpl,DEFAULT_MCP_URL,DEFAULT_CODE_NAV_URL,DEFAULT_API_URL,CodeNavigationServiceImpl};
package/dist/index.d.ts CHANGED
@@ -78,6 +78,7 @@ interface TargetResolutionIdentity {
78
78
  commitSha?: string;
79
79
  }
80
80
  type AvailableRef = AvailableVersion;
81
+ type SuggestedRef = AvailableVersion;
81
82
  interface TargetResolution {
82
83
  requested?: TargetResolutionIdentity;
83
84
  resolvedRequested?: TargetResolutionIdentity;
@@ -87,6 +88,7 @@ interface TargetResolution {
87
88
  indexingRef?: string;
88
89
  availableVersions: AvailableVersion[];
89
90
  availableRefs: AvailableRef[];
91
+ suggestedRefs?: SuggestedRef[];
90
92
  }
91
93
  type UnifiedSearchSource = "AUTO" | "DOCS" | "CODE" | "SYMBOL";
92
94
  type UnifiedSearchResultType = "DOCUMENTATION_PAGE" | "REPOSITORY_SYMBOL" | "REPOSITORY_CODE" | "REPOSITORY_DOC";
@@ -182,6 +184,7 @@ interface UnifiedSearchProgressTarget {
182
184
  targetResolution?: TargetResolution;
183
185
  availableVersions?: AvailableVersion[];
184
186
  availableRefs?: AvailableRef[];
187
+ suggestedRefs?: SuggestedRef[];
185
188
  }
186
189
  interface UnifiedSearchRequestedTarget {
187
190
  registry?: CodeNavigationRegistry;
@@ -428,6 +431,8 @@ interface GitHitsService {
428
431
  interface PackageSummaryParams {
429
432
  registry: PkgseerRegistry;
430
433
  packageName: string;
434
+ /** Include verbose/json-only fields such as recent advisories and changes. */
435
+ includeVerboseFields?: boolean;
431
436
  }
432
437
  interface PackageIdentity {
433
438
  name: string;
@@ -530,6 +535,10 @@ interface PackageDependenciesParams {
530
535
  version?: string;
531
536
  /** Optional. Backend returns a full transitive graph when true. */
532
537
  includeTransitive?: boolean;
538
+ /** Include transitive aggregate/detail fields beyond the dependency graph. */
539
+ includeTransitiveDetails?: boolean;
540
+ /** Include dependency group metadata. */
541
+ includeGroups?: boolean;
533
542
  /**
534
543
  * Optional transitive-traversal depth (1–10). Omit for the backend
535
544
  * default (full graph) — note the CLI applies a 3-deep guardrail but
@@ -554,19 +563,158 @@ interface PackageUpgradeDependencyProbeParams {
554
563
  includeDependencyChanges?: boolean;
555
564
  includeGroups?: boolean;
556
565
  }
566
+ interface PackageUpgradeReviewPackageParams {
567
+ registry: PkgseerRegistry;
568
+ name: string;
569
+ currentVersion: string;
570
+ targetVersion: string;
571
+ }
572
+ interface PackageUpgradeReviewParams {
573
+ packages: PackageUpgradeReviewPackageParams[];
574
+ includeTransitiveSecurity: boolean;
575
+ includeDependencyIssues: boolean;
576
+ changelogLimit: number;
577
+ minSeverity?: number;
578
+ }
579
+ interface PackageUpgradeAdvisorySummary {
580
+ id?: string;
581
+ aliases: string[];
582
+ summary?: string;
583
+ severity?: number;
584
+ severityLabel?: string;
585
+ fixedIn: string[];
586
+ isMalicious?: boolean;
587
+ }
588
+ interface PackageUpgradeVersionVulnerabilitySummary {
589
+ version: string;
590
+ publishedAt?: string;
591
+ deprecated?: boolean;
592
+ deprecationReason?: string;
593
+ affectedCount: number;
594
+ nonAffectingCount: number;
595
+ allCount: number;
596
+ lastModifiedAt?: string;
597
+ advisories: PackageUpgradeAdvisorySummary[];
598
+ }
599
+ interface PackageUpgradeTransitiveVulnerablePackage {
600
+ id: string;
601
+ registry: string;
602
+ name: string;
603
+ versions: string[];
604
+ affectedCount: number;
605
+ maxSeverityScore?: number;
606
+ maxSeverityLabel?: string;
607
+ advisoryIds: string[];
608
+ }
609
+ interface PackageUpgradeTransitivePackagePage {
610
+ entries: PackageUpgradeTransitiveVulnerablePackage[];
611
+ totalCount: number;
612
+ truncated: boolean;
613
+ }
614
+ interface PackageUpgradeTransitiveSecurity {
615
+ currentAffected: number;
616
+ targetAffected: number;
617
+ introducedPackages: string[];
618
+ fixedPackages: string[];
619
+ introducedPackageDetails: PackageUpgradeTransitivePackagePage;
620
+ fixedPackageDetails: PackageUpgradeTransitivePackagePage;
621
+ stillAffectedPackageDetails: PackageUpgradeTransitivePackagePage;
622
+ }
623
+ interface PackageUpgradeSecurity {
624
+ current?: PackageUpgradeVersionVulnerabilitySummary;
625
+ target?: PackageUpgradeVersionVulnerabilitySummary;
626
+ added: PackageUpgradeAdvisorySummary[];
627
+ removed: PackageUpgradeAdvisorySummary[];
628
+ notAddressed: PackageUpgradeAdvisorySummary[];
629
+ fixed: PackageUpgradeAdvisorySummary[];
630
+ introduced: PackageUpgradeAdvisorySummary[];
631
+ unchanged: PackageUpgradeAdvisorySummary[];
632
+ transitive?: PackageUpgradeTransitiveSecurity;
633
+ }
634
+ interface PackageUpgradeChangelogEntry {
635
+ version?: string;
636
+ publishedAt?: string;
637
+ htmlUrl?: string;
638
+ body?: string;
639
+ bodyPreview?: string;
640
+ headline?: string;
641
+ signals: string[];
642
+ }
643
+ interface PackageUpgradeChangelog {
644
+ source?: string;
645
+ fallback?: string;
646
+ entries: PackageUpgradeChangelogEntry[];
647
+ sampledEntries: PackageUpgradeChangelogEntry[];
648
+ keywordEntries: PackageUpgradeChangelogEntry[];
649
+ totalKeywordEntries: number;
650
+ totalEntries: number;
651
+ totalEntriesWithBodies: number;
652
+ truncated: boolean;
653
+ hasReleaseNoteBodies: boolean;
654
+ breakingSignals: string[];
655
+ migrationSignals: string[];
656
+ }
657
+ interface PackageUpgradeCompatibility {
658
+ peerDependencyChanges: string[];
659
+ notes: string[];
660
+ }
661
+ interface PackageUpgradeDependencyChangeItem {
662
+ name: string;
663
+ registry?: string;
664
+ version?: string;
665
+ fromVersions: string[];
666
+ toVersions: string[];
667
+ constraint?: string;
668
+ type?: string;
669
+ }
670
+ interface PackageUpgradeDependencyChangeGroup {
671
+ added: PackageUpgradeDependencyChangeItem[];
672
+ removed: PackageUpgradeDependencyChangeItem[];
673
+ changed: PackageUpgradeDependencyChangeItem[];
674
+ }
675
+ interface PackageUpgradeDependencyChanges {
676
+ direct: PackageUpgradeDependencyChangeGroup;
677
+ transitive: PackageUpgradeDependencyChangeGroup;
678
+ }
679
+ interface PackageUpgradeDependencyIssues {
680
+ currentTotal: number;
681
+ targetTotal: number;
682
+ introducedDeprecated: string[];
683
+ introducedDuplicates: string[];
684
+ introducedConflicts: string[];
685
+ introducedOutdated: string[];
686
+ }
687
+ interface PackageUpgradeReview {
688
+ registry: string;
689
+ name: string;
690
+ currentVersion: string;
691
+ targetVersion: string;
692
+ latestVersion?: string;
693
+ versionDelta: string;
694
+ security: PackageUpgradeSecurity;
695
+ changelog: PackageUpgradeChangelog;
696
+ compatibility?: PackageUpgradeCompatibility;
697
+ dependencyChanges?: PackageUpgradeDependencyChanges;
698
+ dependencyIssues?: PackageUpgradeDependencyIssues;
699
+ unknowns: string[];
700
+ }
701
+ interface PackageUpgradeReviewResponse {
702
+ summary: {
703
+ total: number;
704
+ withUnknowns: number;
705
+ withAddedAdvisories: number;
706
+ withBreakingSignals: number;
707
+ withDirectDependencyChanges: number;
708
+ withTransitiveVulnerabilityAdditions: number;
709
+ };
710
+ reviews: PackageUpgradeReview[];
711
+ }
557
712
  interface DirectDependency {
558
713
  name: string;
559
714
  versionConstraint?: string;
560
715
  type?: string;
561
716
  }
562
717
  /**
563
- * Opaque GenericJSON passthrough. The `package_dependencies` tool
564
- * migrated to typed fields (`dependencyGraph`, `dependencyConflicts`,
565
- * `circularDependencyCycles`, `environmentMarkers`); this type is
566
- * retained for the one remaining passthrough — `ChangelogEntryDetail.metadata`.
567
- */
568
- type UntypedGenericJSON = unknown;
569
- /**
570
718
  * Node in a typed dependency graph. Mirrors `DependencyGraphNode`.
571
719
  * `registry` is a lowercase string: `"npm"`, `"pypi"`, …, or
572
720
  * `"synthetic"` for manifest / project root nodes. `version` is null
@@ -797,6 +945,8 @@ interface PackageChangelogParams {
797
945
  toVersion?: string;
798
946
  /** Latest-mode cap (1–50). Rejected client-side when `fromVersion` is set. */
799
947
  limit?: number;
948
+ /** Include raw markdown bodies in entries. Defaults to true. */
949
+ includeBodies?: boolean;
800
950
  }
801
951
  /**
802
952
  * Package-info echo from the changelog response. Mirrors
@@ -811,20 +961,13 @@ interface ChangelogPackageInfo {
811
961
  toVersion?: string;
812
962
  limit?: number;
813
963
  }
814
- /**
815
- * Full changelog entry as observed on the wire. The envelope builder
816
- * projects this into the lean response shape; `metadata` is dropped
817
- * from the envelope because its source-specific opaque structure
818
- * isn't worth the token cost today. Revisit via agent feedback.
819
- */
964
+ /** Full changelog entry as observed on the wire. */
820
965
  interface ChangelogEntryDetail {
821
966
  version?: string;
822
967
  normalizedVersion?: string;
823
968
  body?: string;
824
969
  htmlUrl?: string;
825
970
  publishedAt?: string;
826
- /** TODO(backend): surface when shape is documented. */
827
- metadata?: UntypedGenericJSON;
828
971
  }
829
972
  interface ChangelogReport {
830
973
  /** Echo of addressing + filter as the backend saw it. */
@@ -904,12 +1047,23 @@ interface PackageIntelligenceService {
904
1047
  packageVulnerabilities(params: PackageVulnerabilitiesParams): Promise<VulnerabilityReport>;
905
1048
  packageDependencies(params: PackageDependenciesParams): Promise<DependencyReport>;
906
1049
  packageUpgradeDependencyProbe(params: PackageUpgradeDependencyProbeParams): Promise<DependencyReport>;
1050
+ packageUpgradeReview(params: PackageUpgradeReviewParams): Promise<PackageUpgradeReviewResponse>;
907
1051
  packageChangelog(params: PackageChangelogParams): Promise<ChangelogReport>;
908
1052
  listPackageDocs(params: ListPackageDocsParams): Promise<PackageDocsList>;
909
1053
  readPackageDoc(params: ReadPackageDocParams): Promise<PackageDocResult>;
910
1054
  }
911
1055
  import { z } from "zod";
912
1056
  /**
1057
+ * Standard result type for all MCP tools
1058
+ */
1059
+ type ToolResult = {
1060
+ content: Array<{
1061
+ type: "text";
1062
+ text: string;
1063
+ }>;
1064
+ isError?: boolean;
1065
+ };
1066
+ /**
913
1067
  * Zod raw shape type (what MCP SDK expects)
914
1068
  */
915
1069
  type ZodRawShape = {
@@ -939,12 +1093,15 @@ interface McpRequestContext<TExtra = unknown> {
939
1093
  extra: TExtra | undefined;
940
1094
  }
941
1095
  type McpToolServicesProvider<TExtra = unknown> = McpToolServices | ((context: McpRequestContext<TExtra>) => McpToolServices | Promise<McpToolServices>);
1096
+ /** Wraps one public MCP tool call without receiving arguments or auth data. */
1097
+ type McpToolExecutionHook = (toolName: string, runHandler: () => Promise<ToolResult>) => ToolResult | Promise<ToolResult>;
942
1098
  interface CreateMcpServerOptions<TExtra = unknown> {
943
1099
  metadata: McpServerMetadata;
944
1100
  services: McpToolServicesProvider<TExtra>;
945
1101
  authAction?: McpAuthAction;
946
1102
  instructions?: string;
947
1103
  instructionOptions?: Parameters<typeof buildMcpInstructions>[0];
1104
+ traceTool?: McpToolExecutionHook;
948
1105
  }
949
1106
  interface McpToolDescriptor<TSchema extends ZodRawShape = ZodRawShape> {
950
1107
  name: string;
@@ -956,9 +1113,10 @@ declare function getMcpToolDescriptors(): McpToolDescriptor[];
956
1113
  declare function registerMcpTools<TExtra = unknown>(server: McpServer, options: {
957
1114
  authAction?: McpAuthAction;
958
1115
  services: McpToolServicesProvider<TExtra>;
1116
+ traceTool?: McpToolExecutionHook;
959
1117
  }): void;
960
1118
  /**
961
1119
  * Creates the transport-neutral MCP server with injected services.
962
1120
  */
963
1121
  declare function createMcpServer<TExtra = unknown>(options: CreateMcpServerOptions<TExtra>): McpServer;
964
- export { registerMcpTools, getMcpToolDescriptors, createMcpServer, buildMcpInstructions, McpToolServicesProvider, McpToolServices, McpToolDescriptor, McpServerMetadata, McpRequestContext, McpAuthActionContext, McpAuthAction, CreateMcpServerOptions, BuildMcpInstructionsOptions };
1122
+ export { registerMcpTools, getMcpToolDescriptors, createMcpServer, buildMcpInstructions, McpToolServicesProvider, McpToolServices, McpToolExecutionHook, McpToolDescriptor, McpServerMetadata, McpRequestContext, McpAuthActionContext, McpAuthAction, CreateMcpServerOptions, BuildMcpInstructionsOptions };