@thinkai/tai-api-contract 2.127.0 → 2.129.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.
@@ -1402,7 +1402,7 @@ export interface paths {
1402
1402
  };
1403
1403
  /**
1404
1404
  * Test pyramid assessment — workspace summary
1405
- * @description Org-level Test pyramid assessment for `/insights/test-pyramid`. Aggregates each active repo's **latest** readiness-scan test-pyramid snapshot. Layer **presence is count-based** (`fileCount > 0`); CI/dependency-only AF `present` flags are ignored. Shape uses fixed advisory targets (base ~70% unit, middle ~20% integration+contract+acceptance/BDD, top ~10% E2E) and returns `insufficient_data` when total classified test files < 10. Does not change Agentic Foundation `/readiness/test-pyramid*` responses.
1405
+ * @description Org-level Test pyramid assessment for `/insights/test-pyramid`. Aggregates each active repo's **latest** readiness-scan test-pyramid snapshot and the immediately previous succeeded/partial_failed/failed point when present (`limitPerRepo: 2`). Layer **presence is count-based** (`fileCount > 0`); CI/dependency-only AF `present` flags are ignored. Shape uses fixed advisory targets (base ~70% unit, middle ~20% integration+contract+acceptance/BDD, top ~10% E2E) and returns `insufficient_data` when total classified test files < 10. Also returns maturity trend, coverage overlay, confidence, applicability, E2E-cross/hotspot risk, and workspace-only `ciQuality` from the latest org dashboard snapshot. Does not change Agentic Foundation `/readiness/test-pyramid*` responses.
1406
1406
  */
1407
1407
  get: operations["getInsightsTestPyramidSummary"];
1408
1408
  put?: never;
@@ -1422,7 +1422,7 @@ export interface paths {
1422
1422
  };
1423
1423
  /**
1424
1424
  * Test pyramid assessment — per-repo list (paginated)
1425
- * @description Page of repos with latest classified test-file counts, count-based presence, presence maturity, and shape assessment. Use `gapsByLayer` on the summary endpoint (or filter this list via layerPresent) to answer “who lacks layer X?”. No v1 repo-detail Insights route — link repo names to AF readiness inventory.
1425
+ * @description Page of repos with latest classified test-file counts, count-based presence, presence maturity, shape, trend vs the previous pyramid point, coverage overlay, confidence/evidence, layer applicability, and risk signals (`e2eCrossRepoCandidate`, `hotspotCount`). Use `gapsByLayer` on the summary endpoint (or filter this list via layerPresent) to answer “who lacks layer X?”. No v1 repo-detail Insights route — link repo names to AF readiness inventory.
1426
1426
  */
1427
1427
  get: operations["listInsightsTestPyramidRepos"];
1428
1428
  put?: never;
@@ -6277,6 +6277,11 @@ export interface components {
6277
6277
  repos: components["schemas"]["GithubInstalledRepoListDto"];
6278
6278
  /** Format: uri */
6279
6279
  manageUrl?: string | null;
6280
+ /**
6281
+ * @description GitHub App installation repository access mode from `repository_selection`: `all` grants org-wide repository access; `selected` limits to an explicit allowlist. Omitted or null when unknown (legacy rows or GitHub fetch failure). Frontend should show a compliance warning when value is `all`.
6282
+ * @enum {string|null}
6283
+ */
6284
+ repositorySelection?: "all" | "selected" | null;
6280
6285
  /** Format: date-time */
6281
6286
  lastSyncedAt?: string | null;
6282
6287
  /** @description True when this installation lacks core read permissions required for connect and analysis. Alias for `!corePermissionsOk`. */
@@ -9658,6 +9663,34 @@ export interface components {
9658
9663
  contract: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
9659
9664
  e2e: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
9660
9665
  };
9666
+ /**
9667
+ * @description Insights maturity rank change vs the immediately previous pyramid point (missing 0, emerging 1, established 2, mature 3). `none` when the repo has no previous succeeded/partial_failed/failed point.
9668
+ * @enum {string}
9669
+ */
9670
+ InsightsTestPyramidMaturityDeltaDto: "up" | "down" | "unchanged" | "none";
9671
+ /** @enum {string} */
9672
+ InsightsTestPyramidConfidenceDto: "high" | "medium" | "low";
9673
+ InsightsTestPyramidLayerConfidenceDto: {
9674
+ unit: components["schemas"]["InsightsTestPyramidConfidenceDto"];
9675
+ integration: components["schemas"]["InsightsTestPyramidConfidenceDto"];
9676
+ acceptance_bdd: components["schemas"]["InsightsTestPyramidConfidenceDto"];
9677
+ contract: components["schemas"]["InsightsTestPyramidConfidenceDto"];
9678
+ e2e: components["schemas"]["InsightsTestPyramidConfidenceDto"];
9679
+ };
9680
+ InsightsTestPyramidCoverageRollupDto: {
9681
+ /** @description Repos whose overlaid `lineCoverage` is non-null. */
9682
+ reposWithCoverage: number;
9683
+ /** @description Median of repo `linePercent` among repos that have coverage. Null when `reposWithCoverage` is 0. */
9684
+ medianLinePercent: number | null;
9685
+ };
9686
+ InsightsTestPyramidCiQualityDto: {
9687
+ /** @description Latest org dashboard `quality.ciFailureRatePercent`, falling back to `quality.ciBuildFailRatePercent`. */
9688
+ ciFailureRatePercent: number;
9689
+ /** @description Included only when `quality.ciFlakinessPercent` is a finite number. */
9690
+ ciFlakinessPercent?: number;
9691
+ /** @description Dashboard metrics bucket end for the org snapshot. */
9692
+ bucketEnd: string;
9693
+ } | null;
9661
9694
  InsightsTestPyramidSummaryDto: {
9662
9695
  /** Format: uuid */
9663
9696
  workspaceId: string;
@@ -9672,6 +9705,22 @@ export interface components {
9672
9705
  layerPresence: components["schemas"]["InsightsTestPyramidLayerPresenceMapDto"];
9673
9706
  maturityCounts: components["schemas"]["InsightsTestPyramidMaturityCountsDto"];
9674
9707
  gapsByLayer: components["schemas"]["InsightsTestPyramidGapsByLayerDto"];
9708
+ /**
9709
+ * Format: date-time
9710
+ * @description Latest per-repo `scannedAt`. Null when `reposWithPyramid` is 0.
9711
+ */
9712
+ newestScannedAt: string | null;
9713
+ /** @description Repos whose Insights maturity rank increased vs the previous point. */
9714
+ maturedRepoCount: number;
9715
+ /** @description Repos whose Insights maturity rank decreased vs the previous point. */
9716
+ slippedRepoCount: number;
9717
+ /** @description Insights workspace shape from previous-point file totals for repos that have a previous point. Null when no repo has a previous point. */
9718
+ previousShape: components["schemas"]["InsightsTestPyramidShapeDto"] | null;
9719
+ coverage: components["schemas"]["InsightsTestPyramidCoverageRollupDto"];
9720
+ e2eCrossRepoCandidateCount: number;
9721
+ /** @description Repos whose latest Code Insights snapshot has `hotspotCount` > 0. */
9722
+ reposWithHotspots: number;
9723
+ ciQuality: components["schemas"]["InsightsTestPyramidCiQualityDto"];
9675
9724
  };
9676
9725
  InsightsTestPyramidRepoItemDto: {
9677
9726
  /** Format: uuid */
@@ -9681,10 +9730,27 @@ export interface components {
9681
9730
  scannedAt: string;
9682
9731
  currentRunStatus: components["schemas"]["TestPyramidRunStatusDto"];
9683
9732
  maturity: components["schemas"]["InsightsTestPyramidMaturityDto"];
9733
+ previousMaturity: components["schemas"]["InsightsTestPyramidMaturityDto"] | null;
9734
+ maturityDelta: components["schemas"]["InsightsTestPyramidMaturityDeltaDto"];
9735
+ previousShapeLabel: components["schemas"]["InsightsTestPyramidShapeLabelDto"] | null;
9684
9736
  layerFileCounts: components["schemas"]["InsightsTestPyramidLayerCountsDto"];
9685
9737
  layerPresent: components["schemas"]["InsightsTestPyramidLayerPresentDto"];
9738
+ /** @description Snapshot `layers.*.applicable` for each layer. */
9739
+ layerApplicable: components["schemas"]["InsightsTestPyramidLayerPresentDto"];
9686
9740
  totalClassifiedFiles: number;
9687
9741
  shape: components["schemas"]["InsightsTestPyramidShapeDto"];
9742
+ /** @description Same overlay as AF progress — latest Sonar row first, else snapshot `testPyramid.lineCoverage`. Null when both are missing. Not Code Insights `coveragePct`. */
9743
+ lineCoverage: components["schemas"]["TestPyramidLineCoverageDto"];
9744
+ /** @description Minimum confidence among layers with Insights presence (`fileCount > 0`); if none present, minimum of applicable layers. Order low < medium < high. */
9745
+ lowestConfidence: components["schemas"]["InsightsTestPyramidConfidenceDto"];
9746
+ layerConfidence: components["schemas"]["InsightsTestPyramidLayerConfidenceDto"];
9747
+ /** @description Sum of layer `evidence[]` lengths on the latest snapshot. */
9748
+ evidenceCount: number;
9749
+ /** @description Unique framework names across layers, capped at 8. */
9750
+ frameworks: string[];
9751
+ e2eCrossRepoCandidate: boolean;
9752
+ /** @description Row count in `tai_workspace_repo_code_hotspots` for the repo's latest Code Insights metrics snapshot. Null when the repo has no metrics snapshot. */
9753
+ hotspotCount: number | null;
9688
9754
  };
9689
9755
  InsightsTestPyramidRepoListDto: {
9690
9756
  items: components["schemas"]["InsightsTestPyramidRepoItemDto"][];
@@ -10316,6 +10382,11 @@ export type InsightsTestPyramidGapRepoDto = components['schemas']['InsightsTestP
10316
10382
  export type InsightsTestPyramidGapsByLayerDto = components['schemas']['InsightsTestPyramidGapsByLayerDto'];
10317
10383
  export type InsightsTestPyramidMaturityCountsDto = components['schemas']['InsightsTestPyramidMaturityCountsDto'];
10318
10384
  export type InsightsTestPyramidLayerPresenceMapDto = components['schemas']['InsightsTestPyramidLayerPresenceMapDto'];
10385
+ export type InsightsTestPyramidMaturityDeltaDto = components['schemas']['InsightsTestPyramidMaturityDeltaDto'];
10386
+ export type InsightsTestPyramidConfidenceDto = components['schemas']['InsightsTestPyramidConfidenceDto'];
10387
+ export type InsightsTestPyramidLayerConfidenceDto = components['schemas']['InsightsTestPyramidLayerConfidenceDto'];
10388
+ export type InsightsTestPyramidCoverageRollupDto = components['schemas']['InsightsTestPyramidCoverageRollupDto'];
10389
+ export type InsightsTestPyramidCiQualityDto = components['schemas']['InsightsTestPyramidCiQualityDto'];
10319
10390
  export type InsightsTestPyramidSummaryDto = components['schemas']['InsightsTestPyramidSummaryDto'];
10320
10391
  export type InsightsTestPyramidRepoItemDto = components['schemas']['InsightsTestPyramidRepoItemDto'];
10321
10392
  export type InsightsTestPyramidRepoListDto = components['schemas']['InsightsTestPyramidRepoListDto'];