@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.
package/openapi/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.0.3
|
|
2
2
|
info:
|
|
3
3
|
title: ThinkAI API
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.129.0
|
|
5
5
|
description: >
|
|
6
6
|
Contract surface for the AI Driven SDLC backend used by ThinkAI.
|
|
7
7
|
Workspace-scoped routes use `/workspaces/{workspaceId}/...`.
|
|
@@ -3844,12 +3844,15 @@ paths:
|
|
|
3844
3844
|
operationId: getInsightsTestPyramidSummary
|
|
3845
3845
|
description: >
|
|
3846
3846
|
Org-level Test pyramid assessment for `/insights/test-pyramid`. Aggregates each
|
|
3847
|
-
active repo's **latest** readiness-scan test-pyramid snapshot
|
|
3848
|
-
|
|
3849
|
-
|
|
3850
|
-
|
|
3851
|
-
|
|
3852
|
-
|
|
3847
|
+
active repo's **latest** readiness-scan test-pyramid snapshot and the immediately
|
|
3848
|
+
previous succeeded/partial_failed/failed point when present (`limitPerRepo: 2`).
|
|
3849
|
+
Layer **presence is count-based** (`fileCount > 0`); CI/dependency-only AF
|
|
3850
|
+
`present` flags are ignored. Shape uses fixed advisory targets (base ~70% unit,
|
|
3851
|
+
middle ~20% integration+contract+acceptance/BDD, top ~10% E2E) and returns
|
|
3852
|
+
`insufficient_data` when total classified test files < 10. Also returns
|
|
3853
|
+
maturity trend, coverage overlay, confidence, applicability, E2E-cross/hotspot
|
|
3854
|
+
risk, and workspace-only `ciQuality` from the latest org dashboard snapshot.
|
|
3855
|
+
Does not change Agentic Foundation `/readiness/test-pyramid*` responses.
|
|
3853
3856
|
parameters:
|
|
3854
3857
|
- $ref: "#/components/parameters/WorkspaceId"
|
|
3855
3858
|
responses:
|
|
@@ -3879,7 +3882,9 @@ paths:
|
|
|
3879
3882
|
operationId: listInsightsTestPyramidRepos
|
|
3880
3883
|
description: >
|
|
3881
3884
|
Page of repos with latest classified test-file counts, count-based presence,
|
|
3882
|
-
presence maturity,
|
|
3885
|
+
presence maturity, shape, trend vs the previous pyramid point, coverage
|
|
3886
|
+
overlay, confidence/evidence, layer applicability, and risk signals
|
|
3887
|
+
(`e2eCrossRepoCandidate`, `hotspotCount`). Use `gapsByLayer` on the summary
|
|
3883
3888
|
endpoint (or filter this list via layerPresent) to answer “who lacks layer X?”.
|
|
3884
3889
|
No v1 repo-detail Insights route — link repo names to AF readiness inventory.
|
|
3885
3890
|
parameters:
|
|
@@ -14838,6 +14843,15 @@ components:
|
|
|
14838
14843
|
type: string
|
|
14839
14844
|
format: uri
|
|
14840
14845
|
nullable: true
|
|
14846
|
+
repositorySelection:
|
|
14847
|
+
type: string
|
|
14848
|
+
nullable: true
|
|
14849
|
+
enum: [all, selected]
|
|
14850
|
+
description: >
|
|
14851
|
+
GitHub App installation repository access mode from `repository_selection`:
|
|
14852
|
+
`all` grants org-wide repository access; `selected` limits to an explicit allowlist.
|
|
14853
|
+
Omitted or null when unknown (legacy rows or GitHub fetch failure). Frontend should
|
|
14854
|
+
show a compliance warning when value is `all`.
|
|
14841
14855
|
lastSyncedAt:
|
|
14842
14856
|
type: string
|
|
14843
14857
|
format: date-time
|
|
@@ -21740,6 +21754,66 @@ components:
|
|
|
21740
21754
|
contract: { $ref: "#/components/schemas/InsightsTestPyramidLayerPresenceDto" }
|
|
21741
21755
|
e2e: { $ref: "#/components/schemas/InsightsTestPyramidLayerPresenceDto" }
|
|
21742
21756
|
|
|
21757
|
+
InsightsTestPyramidMaturityDeltaDto:
|
|
21758
|
+
type: string
|
|
21759
|
+
enum: [up, down, unchanged, none]
|
|
21760
|
+
description: >
|
|
21761
|
+
Insights maturity rank change vs the immediately previous pyramid point
|
|
21762
|
+
(missing 0, emerging 1, established 2, mature 3). `none` when the repo
|
|
21763
|
+
has no previous succeeded/partial_failed/failed point.
|
|
21764
|
+
|
|
21765
|
+
InsightsTestPyramidConfidenceDto:
|
|
21766
|
+
type: string
|
|
21767
|
+
enum: [high, medium, low]
|
|
21768
|
+
|
|
21769
|
+
InsightsTestPyramidLayerConfidenceDto:
|
|
21770
|
+
type: object
|
|
21771
|
+
required: [unit, integration, acceptance_bdd, contract, e2e]
|
|
21772
|
+
properties:
|
|
21773
|
+
unit: { $ref: "#/components/schemas/InsightsTestPyramidConfidenceDto" }
|
|
21774
|
+
integration: { $ref: "#/components/schemas/InsightsTestPyramidConfidenceDto" }
|
|
21775
|
+
acceptance_bdd: { $ref: "#/components/schemas/InsightsTestPyramidConfidenceDto" }
|
|
21776
|
+
contract: { $ref: "#/components/schemas/InsightsTestPyramidConfidenceDto" }
|
|
21777
|
+
e2e: { $ref: "#/components/schemas/InsightsTestPyramidConfidenceDto" }
|
|
21778
|
+
|
|
21779
|
+
InsightsTestPyramidCoverageRollupDto:
|
|
21780
|
+
type: object
|
|
21781
|
+
required: [reposWithCoverage, medianLinePercent]
|
|
21782
|
+
properties:
|
|
21783
|
+
reposWithCoverage:
|
|
21784
|
+
type: integer
|
|
21785
|
+
minimum: 0
|
|
21786
|
+
description: Repos whose overlaid `lineCoverage` is non-null.
|
|
21787
|
+
medianLinePercent:
|
|
21788
|
+
type: number
|
|
21789
|
+
nullable: true
|
|
21790
|
+
minimum: 0
|
|
21791
|
+
maximum: 100
|
|
21792
|
+
description: >
|
|
21793
|
+
Median of repo `linePercent` among repos that have coverage. Null when
|
|
21794
|
+
`reposWithCoverage` is 0.
|
|
21795
|
+
|
|
21796
|
+
InsightsTestPyramidCiQualityDto:
|
|
21797
|
+
type: object
|
|
21798
|
+
nullable: true
|
|
21799
|
+
required: [ciFailureRatePercent, bucketEnd]
|
|
21800
|
+
properties:
|
|
21801
|
+
ciFailureRatePercent:
|
|
21802
|
+
type: number
|
|
21803
|
+
minimum: 0
|
|
21804
|
+
maximum: 100
|
|
21805
|
+
description: >
|
|
21806
|
+
Latest org dashboard `quality.ciFailureRatePercent`, falling back to
|
|
21807
|
+
`quality.ciBuildFailRatePercent`.
|
|
21808
|
+
ciFlakinessPercent:
|
|
21809
|
+
type: number
|
|
21810
|
+
minimum: 0
|
|
21811
|
+
maximum: 100
|
|
21812
|
+
description: Included only when `quality.ciFlakinessPercent` is a finite number.
|
|
21813
|
+
bucketEnd:
|
|
21814
|
+
type: string
|
|
21815
|
+
description: Dashboard metrics bucket end for the org snapshot.
|
|
21816
|
+
|
|
21743
21817
|
InsightsTestPyramidSummaryDto:
|
|
21744
21818
|
type: object
|
|
21745
21819
|
required:
|
|
@@ -21752,6 +21826,14 @@ components:
|
|
|
21752
21826
|
- layerPresence
|
|
21753
21827
|
- maturityCounts
|
|
21754
21828
|
- gapsByLayer
|
|
21829
|
+
- newestScannedAt
|
|
21830
|
+
- maturedRepoCount
|
|
21831
|
+
- slippedRepoCount
|
|
21832
|
+
- previousShape
|
|
21833
|
+
- coverage
|
|
21834
|
+
- e2eCrossRepoCandidateCount
|
|
21835
|
+
- reposWithHotspots
|
|
21836
|
+
- ciQuality
|
|
21755
21837
|
properties:
|
|
21756
21838
|
workspaceId: { type: string, format: uuid }
|
|
21757
21839
|
generatedAt: { type: string, format: date-time }
|
|
@@ -21772,6 +21854,37 @@ components:
|
|
|
21772
21854
|
$ref: "#/components/schemas/InsightsTestPyramidMaturityCountsDto"
|
|
21773
21855
|
gapsByLayer:
|
|
21774
21856
|
$ref: "#/components/schemas/InsightsTestPyramidGapsByLayerDto"
|
|
21857
|
+
newestScannedAt:
|
|
21858
|
+
type: string
|
|
21859
|
+
format: date-time
|
|
21860
|
+
nullable: true
|
|
21861
|
+
description: Latest per-repo `scannedAt`. Null when `reposWithPyramid` is 0.
|
|
21862
|
+
maturedRepoCount:
|
|
21863
|
+
type: integer
|
|
21864
|
+
minimum: 0
|
|
21865
|
+
description: Repos whose Insights maturity rank increased vs the previous point.
|
|
21866
|
+
slippedRepoCount:
|
|
21867
|
+
type: integer
|
|
21868
|
+
minimum: 0
|
|
21869
|
+
description: Repos whose Insights maturity rank decreased vs the previous point.
|
|
21870
|
+
previousShape:
|
|
21871
|
+
allOf:
|
|
21872
|
+
- $ref: "#/components/schemas/InsightsTestPyramidShapeDto"
|
|
21873
|
+
nullable: true
|
|
21874
|
+
description: >
|
|
21875
|
+
Insights workspace shape from previous-point file totals for repos that
|
|
21876
|
+
have a previous point. Null when no repo has a previous point.
|
|
21877
|
+
coverage:
|
|
21878
|
+
$ref: "#/components/schemas/InsightsTestPyramidCoverageRollupDto"
|
|
21879
|
+
e2eCrossRepoCandidateCount:
|
|
21880
|
+
type: integer
|
|
21881
|
+
minimum: 0
|
|
21882
|
+
reposWithHotspots:
|
|
21883
|
+
type: integer
|
|
21884
|
+
minimum: 0
|
|
21885
|
+
description: Repos whose latest Code Insights snapshot has `hotspotCount` > 0.
|
|
21886
|
+
ciQuality:
|
|
21887
|
+
$ref: "#/components/schemas/InsightsTestPyramidCiQualityDto"
|
|
21775
21888
|
|
|
21776
21889
|
InsightsTestPyramidRepoItemDto:
|
|
21777
21890
|
type: object
|
|
@@ -21785,6 +21898,17 @@ components:
|
|
|
21785
21898
|
- layerPresent
|
|
21786
21899
|
- totalClassifiedFiles
|
|
21787
21900
|
- shape
|
|
21901
|
+
- previousMaturity
|
|
21902
|
+
- maturityDelta
|
|
21903
|
+
- previousShapeLabel
|
|
21904
|
+
- lineCoverage
|
|
21905
|
+
- lowestConfidence
|
|
21906
|
+
- layerConfidence
|
|
21907
|
+
- evidenceCount
|
|
21908
|
+
- frameworks
|
|
21909
|
+
- layerApplicable
|
|
21910
|
+
- e2eCrossRepoCandidate
|
|
21911
|
+
- hotspotCount
|
|
21788
21912
|
properties:
|
|
21789
21913
|
repoId: { type: string, format: uuid }
|
|
21790
21914
|
repoName: { type: string }
|
|
@@ -21793,13 +21917,59 @@ components:
|
|
|
21793
21917
|
$ref: "#/components/schemas/TestPyramidRunStatusDto"
|
|
21794
21918
|
maturity:
|
|
21795
21919
|
$ref: "#/components/schemas/InsightsTestPyramidMaturityDto"
|
|
21920
|
+
previousMaturity:
|
|
21921
|
+
allOf:
|
|
21922
|
+
- $ref: "#/components/schemas/InsightsTestPyramidMaturityDto"
|
|
21923
|
+
nullable: true
|
|
21924
|
+
maturityDelta:
|
|
21925
|
+
$ref: "#/components/schemas/InsightsTestPyramidMaturityDeltaDto"
|
|
21926
|
+
previousShapeLabel:
|
|
21927
|
+
allOf:
|
|
21928
|
+
- $ref: "#/components/schemas/InsightsTestPyramidShapeLabelDto"
|
|
21929
|
+
nullable: true
|
|
21796
21930
|
layerFileCounts:
|
|
21797
21931
|
$ref: "#/components/schemas/InsightsTestPyramidLayerCountsDto"
|
|
21798
21932
|
layerPresent:
|
|
21799
21933
|
$ref: "#/components/schemas/InsightsTestPyramidLayerPresentDto"
|
|
21934
|
+
layerApplicable:
|
|
21935
|
+
allOf:
|
|
21936
|
+
- $ref: "#/components/schemas/InsightsTestPyramidLayerPresentDto"
|
|
21937
|
+
description: Snapshot `layers.*.applicable` for each layer.
|
|
21800
21938
|
totalClassifiedFiles: { type: integer, minimum: 0 }
|
|
21801
21939
|
shape:
|
|
21802
21940
|
$ref: "#/components/schemas/InsightsTestPyramidShapeDto"
|
|
21941
|
+
lineCoverage:
|
|
21942
|
+
allOf:
|
|
21943
|
+
- $ref: "#/components/schemas/TestPyramidLineCoverageDto"
|
|
21944
|
+
description: >
|
|
21945
|
+
Same overlay as AF progress — latest Sonar row first, else snapshot
|
|
21946
|
+
`testPyramid.lineCoverage`. Null when both are missing. Not Code Insights
|
|
21947
|
+
`coveragePct`.
|
|
21948
|
+
lowestConfidence:
|
|
21949
|
+
allOf:
|
|
21950
|
+
- $ref: "#/components/schemas/InsightsTestPyramidConfidenceDto"
|
|
21951
|
+
description: >
|
|
21952
|
+
Minimum confidence among layers with Insights presence (`fileCount > 0`);
|
|
21953
|
+
if none present, minimum of applicable layers. Order low < medium < high.
|
|
21954
|
+
layerConfidence:
|
|
21955
|
+
$ref: "#/components/schemas/InsightsTestPyramidLayerConfidenceDto"
|
|
21956
|
+
evidenceCount:
|
|
21957
|
+
type: integer
|
|
21958
|
+
minimum: 0
|
|
21959
|
+
description: Sum of layer `evidence[]` lengths on the latest snapshot.
|
|
21960
|
+
frameworks:
|
|
21961
|
+
type: array
|
|
21962
|
+
maxItems: 8
|
|
21963
|
+
items: { type: string }
|
|
21964
|
+
description: Unique framework names across layers, capped at 8.
|
|
21965
|
+
e2eCrossRepoCandidate: { type: boolean }
|
|
21966
|
+
hotspotCount:
|
|
21967
|
+
type: integer
|
|
21968
|
+
nullable: true
|
|
21969
|
+
minimum: 0
|
|
21970
|
+
description: >
|
|
21971
|
+
Row count in `tai_workspace_repo_code_hotspots` for the repo's latest
|
|
21972
|
+
Code Insights metrics snapshot. Null when the repo has no metrics snapshot.
|
|
21803
21973
|
|
|
21804
21974
|
InsightsTestPyramidRepoListDto:
|
|
21805
21975
|
type: object
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thinkai/tai-api-contract",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.129.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
"devDependencies": {
|
|
22
22
|
"@stoplight/spectral-cli": "^6.16.3",
|
|
23
|
-
"@types/node": "^26.
|
|
23
|
+
"@types/node": "^26.5.1",
|
|
24
24
|
"jsonpath-plus": "^10.3.0",
|
|
25
25
|
"openapi-typescript": "^7.13.0",
|
|
26
26
|
"typescript": "~6.0.3"
|
package/src/generated/openapi.ts
CHANGED
|
@@ -1403,7 +1403,7 @@ export interface paths {
|
|
|
1403
1403
|
};
|
|
1404
1404
|
/**
|
|
1405
1405
|
* Test pyramid assessment — workspace summary
|
|
1406
|
-
* @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.
|
|
1406
|
+
* @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.
|
|
1407
1407
|
*/
|
|
1408
1408
|
get: operations["getInsightsTestPyramidSummary"];
|
|
1409
1409
|
put?: never;
|
|
@@ -1423,7 +1423,7 @@ export interface paths {
|
|
|
1423
1423
|
};
|
|
1424
1424
|
/**
|
|
1425
1425
|
* Test pyramid assessment — per-repo list (paginated)
|
|
1426
|
-
* @description Page of repos with latest classified test-file counts, count-based presence, presence maturity, and
|
|
1426
|
+
* @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.
|
|
1427
1427
|
*/
|
|
1428
1428
|
get: operations["listInsightsTestPyramidRepos"];
|
|
1429
1429
|
put?: never;
|
|
@@ -6278,6 +6278,11 @@ export interface components {
|
|
|
6278
6278
|
repos: components["schemas"]["GithubInstalledRepoListDto"];
|
|
6279
6279
|
/** Format: uri */
|
|
6280
6280
|
manageUrl?: string | null;
|
|
6281
|
+
/**
|
|
6282
|
+
* @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`.
|
|
6283
|
+
* @enum {string|null}
|
|
6284
|
+
*/
|
|
6285
|
+
repositorySelection?: "all" | "selected" | null;
|
|
6281
6286
|
/** Format: date-time */
|
|
6282
6287
|
lastSyncedAt?: string | null;
|
|
6283
6288
|
/** @description True when this installation lacks core read permissions required for connect and analysis. Alias for `!corePermissionsOk`. */
|
|
@@ -9659,6 +9664,34 @@ export interface components {
|
|
|
9659
9664
|
contract: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9660
9665
|
e2e: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9661
9666
|
};
|
|
9667
|
+
/**
|
|
9668
|
+
* @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.
|
|
9669
|
+
* @enum {string}
|
|
9670
|
+
*/
|
|
9671
|
+
InsightsTestPyramidMaturityDeltaDto: "up" | "down" | "unchanged" | "none";
|
|
9672
|
+
/** @enum {string} */
|
|
9673
|
+
InsightsTestPyramidConfidenceDto: "high" | "medium" | "low";
|
|
9674
|
+
InsightsTestPyramidLayerConfidenceDto: {
|
|
9675
|
+
unit: components["schemas"]["InsightsTestPyramidConfidenceDto"];
|
|
9676
|
+
integration: components["schemas"]["InsightsTestPyramidConfidenceDto"];
|
|
9677
|
+
acceptance_bdd: components["schemas"]["InsightsTestPyramidConfidenceDto"];
|
|
9678
|
+
contract: components["schemas"]["InsightsTestPyramidConfidenceDto"];
|
|
9679
|
+
e2e: components["schemas"]["InsightsTestPyramidConfidenceDto"];
|
|
9680
|
+
};
|
|
9681
|
+
InsightsTestPyramidCoverageRollupDto: {
|
|
9682
|
+
/** @description Repos whose overlaid `lineCoverage` is non-null. */
|
|
9683
|
+
reposWithCoverage: number;
|
|
9684
|
+
/** @description Median of repo `linePercent` among repos that have coverage. Null when `reposWithCoverage` is 0. */
|
|
9685
|
+
medianLinePercent: number | null;
|
|
9686
|
+
};
|
|
9687
|
+
InsightsTestPyramidCiQualityDto: {
|
|
9688
|
+
/** @description Latest org dashboard `quality.ciFailureRatePercent`, falling back to `quality.ciBuildFailRatePercent`. */
|
|
9689
|
+
ciFailureRatePercent: number;
|
|
9690
|
+
/** @description Included only when `quality.ciFlakinessPercent` is a finite number. */
|
|
9691
|
+
ciFlakinessPercent?: number;
|
|
9692
|
+
/** @description Dashboard metrics bucket end for the org snapshot. */
|
|
9693
|
+
bucketEnd: string;
|
|
9694
|
+
} | null;
|
|
9662
9695
|
InsightsTestPyramidSummaryDto: {
|
|
9663
9696
|
/** Format: uuid */
|
|
9664
9697
|
workspaceId: string;
|
|
@@ -9673,6 +9706,22 @@ export interface components {
|
|
|
9673
9706
|
layerPresence: components["schemas"]["InsightsTestPyramidLayerPresenceMapDto"];
|
|
9674
9707
|
maturityCounts: components["schemas"]["InsightsTestPyramidMaturityCountsDto"];
|
|
9675
9708
|
gapsByLayer: components["schemas"]["InsightsTestPyramidGapsByLayerDto"];
|
|
9709
|
+
/**
|
|
9710
|
+
* Format: date-time
|
|
9711
|
+
* @description Latest per-repo `scannedAt`. Null when `reposWithPyramid` is 0.
|
|
9712
|
+
*/
|
|
9713
|
+
newestScannedAt: string | null;
|
|
9714
|
+
/** @description Repos whose Insights maturity rank increased vs the previous point. */
|
|
9715
|
+
maturedRepoCount: number;
|
|
9716
|
+
/** @description Repos whose Insights maturity rank decreased vs the previous point. */
|
|
9717
|
+
slippedRepoCount: number;
|
|
9718
|
+
/** @description Insights workspace shape from previous-point file totals for repos that have a previous point. Null when no repo has a previous point. */
|
|
9719
|
+
previousShape: components["schemas"]["InsightsTestPyramidShapeDto"] | null;
|
|
9720
|
+
coverage: components["schemas"]["InsightsTestPyramidCoverageRollupDto"];
|
|
9721
|
+
e2eCrossRepoCandidateCount: number;
|
|
9722
|
+
/** @description Repos whose latest Code Insights snapshot has `hotspotCount` > 0. */
|
|
9723
|
+
reposWithHotspots: number;
|
|
9724
|
+
ciQuality: components["schemas"]["InsightsTestPyramidCiQualityDto"];
|
|
9676
9725
|
};
|
|
9677
9726
|
InsightsTestPyramidRepoItemDto: {
|
|
9678
9727
|
/** Format: uuid */
|
|
@@ -9682,10 +9731,27 @@ export interface components {
|
|
|
9682
9731
|
scannedAt: string;
|
|
9683
9732
|
currentRunStatus: components["schemas"]["TestPyramidRunStatusDto"];
|
|
9684
9733
|
maturity: components["schemas"]["InsightsTestPyramidMaturityDto"];
|
|
9734
|
+
previousMaturity: components["schemas"]["InsightsTestPyramidMaturityDto"] | null;
|
|
9735
|
+
maturityDelta: components["schemas"]["InsightsTestPyramidMaturityDeltaDto"];
|
|
9736
|
+
previousShapeLabel: components["schemas"]["InsightsTestPyramidShapeLabelDto"] | null;
|
|
9685
9737
|
layerFileCounts: components["schemas"]["InsightsTestPyramidLayerCountsDto"];
|
|
9686
9738
|
layerPresent: components["schemas"]["InsightsTestPyramidLayerPresentDto"];
|
|
9739
|
+
/** @description Snapshot `layers.*.applicable` for each layer. */
|
|
9740
|
+
layerApplicable: components["schemas"]["InsightsTestPyramidLayerPresentDto"];
|
|
9687
9741
|
totalClassifiedFiles: number;
|
|
9688
9742
|
shape: components["schemas"]["InsightsTestPyramidShapeDto"];
|
|
9743
|
+
/** @description Same overlay as AF progress — latest Sonar row first, else snapshot `testPyramid.lineCoverage`. Null when both are missing. Not Code Insights `coveragePct`. */
|
|
9744
|
+
lineCoverage: components["schemas"]["TestPyramidLineCoverageDto"];
|
|
9745
|
+
/** @description Minimum confidence among layers with Insights presence (`fileCount > 0`); if none present, minimum of applicable layers. Order low < medium < high. */
|
|
9746
|
+
lowestConfidence: components["schemas"]["InsightsTestPyramidConfidenceDto"];
|
|
9747
|
+
layerConfidence: components["schemas"]["InsightsTestPyramidLayerConfidenceDto"];
|
|
9748
|
+
/** @description Sum of layer `evidence[]` lengths on the latest snapshot. */
|
|
9749
|
+
evidenceCount: number;
|
|
9750
|
+
/** @description Unique framework names across layers, capped at 8. */
|
|
9751
|
+
frameworks: string[];
|
|
9752
|
+
e2eCrossRepoCandidate: boolean;
|
|
9753
|
+
/** @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. */
|
|
9754
|
+
hotspotCount: number | null;
|
|
9689
9755
|
};
|
|
9690
9756
|
InsightsTestPyramidRepoListDto: {
|
|
9691
9757
|
items: components["schemas"]["InsightsTestPyramidRepoItemDto"][];
|
|
@@ -10317,6 +10383,11 @@ export type InsightsTestPyramidGapRepoDto = components['schemas']['InsightsTestP
|
|
|
10317
10383
|
export type InsightsTestPyramidGapsByLayerDto = components['schemas']['InsightsTestPyramidGapsByLayerDto'];
|
|
10318
10384
|
export type InsightsTestPyramidMaturityCountsDto = components['schemas']['InsightsTestPyramidMaturityCountsDto'];
|
|
10319
10385
|
export type InsightsTestPyramidLayerPresenceMapDto = components['schemas']['InsightsTestPyramidLayerPresenceMapDto'];
|
|
10386
|
+
export type InsightsTestPyramidMaturityDeltaDto = components['schemas']['InsightsTestPyramidMaturityDeltaDto'];
|
|
10387
|
+
export type InsightsTestPyramidConfidenceDto = components['schemas']['InsightsTestPyramidConfidenceDto'];
|
|
10388
|
+
export type InsightsTestPyramidLayerConfidenceDto = components['schemas']['InsightsTestPyramidLayerConfidenceDto'];
|
|
10389
|
+
export type InsightsTestPyramidCoverageRollupDto = components['schemas']['InsightsTestPyramidCoverageRollupDto'];
|
|
10390
|
+
export type InsightsTestPyramidCiQualityDto = components['schemas']['InsightsTestPyramidCiQualityDto'];
|
|
10320
10391
|
export type InsightsTestPyramidSummaryDto = components['schemas']['InsightsTestPyramidSummaryDto'];
|
|
10321
10392
|
export type InsightsTestPyramidRepoItemDto = components['schemas']['InsightsTestPyramidRepoItemDto'];
|
|
10322
10393
|
export type InsightsTestPyramidRepoListDto = components['schemas']['InsightsTestPyramidRepoListDto'];
|