@thinkai/tai-api-contract 2.125.0 → 2.127.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/dist/generated/openapi.d.ts +644 -0
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +837 -1
- package/package.json +2 -3
- package/src/generated/openapi.ts +644 -0
|
@@ -1393,6 +1393,46 @@ export interface paths {
|
|
|
1393
1393
|
patch?: never;
|
|
1394
1394
|
trace?: never;
|
|
1395
1395
|
};
|
|
1396
|
+
"/workspaces/{workspaceId}/insights/test-pyramid/summary": {
|
|
1397
|
+
parameters: {
|
|
1398
|
+
query?: never;
|
|
1399
|
+
header?: never;
|
|
1400
|
+
path?: never;
|
|
1401
|
+
cookie?: never;
|
|
1402
|
+
};
|
|
1403
|
+
/**
|
|
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.
|
|
1406
|
+
*/
|
|
1407
|
+
get: operations["getInsightsTestPyramidSummary"];
|
|
1408
|
+
put?: never;
|
|
1409
|
+
post?: never;
|
|
1410
|
+
delete?: never;
|
|
1411
|
+
options?: never;
|
|
1412
|
+
head?: never;
|
|
1413
|
+
patch?: never;
|
|
1414
|
+
trace?: never;
|
|
1415
|
+
};
|
|
1416
|
+
"/workspaces/{workspaceId}/insights/test-pyramid/repos": {
|
|
1417
|
+
parameters: {
|
|
1418
|
+
query?: never;
|
|
1419
|
+
header?: never;
|
|
1420
|
+
path?: never;
|
|
1421
|
+
cookie?: never;
|
|
1422
|
+
};
|
|
1423
|
+
/**
|
|
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.
|
|
1426
|
+
*/
|
|
1427
|
+
get: operations["listInsightsTestPyramidRepos"];
|
|
1428
|
+
put?: never;
|
|
1429
|
+
post?: never;
|
|
1430
|
+
delete?: never;
|
|
1431
|
+
options?: never;
|
|
1432
|
+
head?: never;
|
|
1433
|
+
patch?: never;
|
|
1434
|
+
trace?: never;
|
|
1435
|
+
};
|
|
1396
1436
|
"/workspaces/{workspaceId}/integrations/ai-tool/{provider}/members": {
|
|
1397
1437
|
parameters: {
|
|
1398
1438
|
query?: never;
|
|
@@ -2375,6 +2415,66 @@ export interface paths {
|
|
|
2375
2415
|
patch?: never;
|
|
2376
2416
|
trace?: never;
|
|
2377
2417
|
};
|
|
2418
|
+
"/workspaces/{workspaceId}/readiness/test-pyramid": {
|
|
2419
|
+
parameters: {
|
|
2420
|
+
query?: never;
|
|
2421
|
+
header?: never;
|
|
2422
|
+
path?: never;
|
|
2423
|
+
cookie?: never;
|
|
2424
|
+
};
|
|
2425
|
+
/**
|
|
2426
|
+
* Latest test-pyramid report and progress per repository
|
|
2427
|
+
* @description Returns the latest test inventory for every repository with a pyramid snapshot, deltas from the previous and baseline scans, and workspace layer coverage. Repositories whose historical runs predate pyramid snapshots are omitted.
|
|
2428
|
+
*/
|
|
2429
|
+
get: operations["getReadinessTestPyramid"];
|
|
2430
|
+
put?: never;
|
|
2431
|
+
post?: never;
|
|
2432
|
+
delete?: never;
|
|
2433
|
+
options?: never;
|
|
2434
|
+
head?: never;
|
|
2435
|
+
patch?: never;
|
|
2436
|
+
trace?: never;
|
|
2437
|
+
};
|
|
2438
|
+
"/workspaces/{workspaceId}/readiness/test-pyramid/history": {
|
|
2439
|
+
parameters: {
|
|
2440
|
+
query?: never;
|
|
2441
|
+
header?: never;
|
|
2442
|
+
path?: never;
|
|
2443
|
+
cookie?: never;
|
|
2444
|
+
};
|
|
2445
|
+
/**
|
|
2446
|
+
* Historical test-pyramid snapshots per repository
|
|
2447
|
+
* @description Returns succeeded readiness runs containing test-pyramid snapshots, ordered oldest to newest per repository. Older runs without snapshots are omitted, not treated as gaps.
|
|
2448
|
+
*/
|
|
2449
|
+
get: operations["getReadinessTestPyramidHistory"];
|
|
2450
|
+
put?: never;
|
|
2451
|
+
post?: never;
|
|
2452
|
+
delete?: never;
|
|
2453
|
+
options?: never;
|
|
2454
|
+
head?: never;
|
|
2455
|
+
patch?: never;
|
|
2456
|
+
trace?: never;
|
|
2457
|
+
};
|
|
2458
|
+
"/workspaces/{workspaceId}/readiness/test-pyramid/progress": {
|
|
2459
|
+
parameters: {
|
|
2460
|
+
query?: never;
|
|
2461
|
+
header?: never;
|
|
2462
|
+
path?: never;
|
|
2463
|
+
cookie?: never;
|
|
2464
|
+
};
|
|
2465
|
+
/**
|
|
2466
|
+
* Test-pyramid code progress from successive scans
|
|
2467
|
+
* @description Compares each repository's latest pyramid snapshot with its previous and baseline snapshots. Reports layer adoption/removal, file-count and Tests & QA score deltas, criterion changes, and current workspace coverage.
|
|
2468
|
+
*/
|
|
2469
|
+
get: operations["getReadinessTestPyramidProgress"];
|
|
2470
|
+
put?: never;
|
|
2471
|
+
post?: never;
|
|
2472
|
+
delete?: never;
|
|
2473
|
+
options?: never;
|
|
2474
|
+
head?: never;
|
|
2475
|
+
patch?: never;
|
|
2476
|
+
trace?: never;
|
|
2477
|
+
};
|
|
2378
2478
|
"/workspaces/{workspaceId}/readiness/score-history": {
|
|
2379
2479
|
parameters: {
|
|
2380
2480
|
query?: never;
|
|
@@ -6794,12 +6894,176 @@ export interface components {
|
|
|
6794
6894
|
/** @description Dimension score as a percentage (0–100) for this scan run. */
|
|
6795
6895
|
scorePercent: number;
|
|
6796
6896
|
};
|
|
6897
|
+
TestPyramidLayerSnapshotDto: {
|
|
6898
|
+
present: boolean;
|
|
6899
|
+
/** @description False when the repository archetype makes this layer not applicable. */
|
|
6900
|
+
applicable: boolean;
|
|
6901
|
+
/** @enum {string} */
|
|
6902
|
+
confidence: "high" | "medium" | "low";
|
|
6903
|
+
fileCount: number;
|
|
6904
|
+
frameworks: string[];
|
|
6905
|
+
/** @description Capped relative file paths or script names supporting the classification. */
|
|
6906
|
+
evidence: string[];
|
|
6907
|
+
lineCoverage?: components["schemas"]["TestPyramidLineCoverageDto"];
|
|
6908
|
+
};
|
|
6909
|
+
TestPyramidLayersDto: {
|
|
6910
|
+
unit: components["schemas"]["TestPyramidLayerSnapshotDto"];
|
|
6911
|
+
integration: components["schemas"]["TestPyramidLayerSnapshotDto"];
|
|
6912
|
+
acceptance_bdd: components["schemas"]["TestPyramidLayerSnapshotDto"];
|
|
6913
|
+
contract: components["schemas"]["TestPyramidLayerSnapshotDto"];
|
|
6914
|
+
e2e: components["schemas"]["TestPyramidLayerSnapshotDto"];
|
|
6915
|
+
};
|
|
6916
|
+
TestPyramidSnapshotDto: {
|
|
6917
|
+
/** @enum {integer} */
|
|
6918
|
+
version: 1;
|
|
6919
|
+
layers: components["schemas"]["TestPyramidLayersDto"];
|
|
6920
|
+
/** @description Evidence suggests the repository's E2E suite exercises multiple services. */
|
|
6921
|
+
e2eCrossRepoCandidate: boolean;
|
|
6922
|
+
/** @description Hostnames or compose service names referenced by the E2E suite. */
|
|
6923
|
+
e2eReferencedTargets: string[];
|
|
6924
|
+
lineCoverage?: components["schemas"]["TestPyramidLineCoverageDto"];
|
|
6925
|
+
};
|
|
6926
|
+
TestPyramidLineCoverageDto: {
|
|
6927
|
+
/** @description Line coverage percent from Sonar or a committed coverage report. */
|
|
6928
|
+
linePercent: number;
|
|
6929
|
+
branchPercent: number | null;
|
|
6930
|
+
/** @enum {string} */
|
|
6931
|
+
source: "sonar" | "jacoco" | "lcov" | "cobertura" | "clover" | "go_cover";
|
|
6932
|
+
/** @description Path of the scanned report when the source is not Sonar. */
|
|
6933
|
+
reportPath?: string | null;
|
|
6934
|
+
} | null;
|
|
6935
|
+
TestPyramidCriteriaDto: {
|
|
6936
|
+
D1?: string;
|
|
6937
|
+
D2?: string;
|
|
6938
|
+
D3?: string;
|
|
6939
|
+
D4?: string;
|
|
6940
|
+
};
|
|
6941
|
+
/**
|
|
6942
|
+
* @description Run state the snapshot came from. The pyramid is derived from the filesystem scan, which finishes before rubric grading, so `partial_failed` and `failed` runs still carry a valid snapshot but no scores.
|
|
6943
|
+
* @enum {string}
|
|
6944
|
+
*/
|
|
6945
|
+
TestPyramidRunStatusDto: "succeeded" | "partial_failed" | "failed";
|
|
6946
|
+
TestPyramidHistoryPointDto: {
|
|
6947
|
+
/** Format: date-time */
|
|
6948
|
+
finishedAt: string;
|
|
6949
|
+
runStatus: components["schemas"]["TestPyramidRunStatusDto"];
|
|
6950
|
+
overallScore: number | null;
|
|
6951
|
+
testsQaPercent: number | null;
|
|
6952
|
+
testPyramid: components["schemas"]["TestPyramidSnapshotDto"];
|
|
6953
|
+
testPyramidCriteria: components["schemas"]["TestPyramidCriteriaDto"];
|
|
6954
|
+
};
|
|
6955
|
+
TestPyramidRepoHistoryDto: {
|
|
6956
|
+
/** Format: uuid */
|
|
6957
|
+
repoId: string;
|
|
6958
|
+
repoName: string;
|
|
6959
|
+
/** Format: date-time */
|
|
6960
|
+
connectedAt: string;
|
|
6961
|
+
points: components["schemas"]["TestPyramidHistoryPointDto"][];
|
|
6962
|
+
};
|
|
6963
|
+
WorkspaceTestPyramidHistoryDto: {
|
|
6964
|
+
/** Format: uuid */
|
|
6965
|
+
workspaceId: string;
|
|
6966
|
+
/** Format: date-time */
|
|
6967
|
+
generatedAt: string;
|
|
6968
|
+
repos: components["schemas"]["TestPyramidRepoHistoryDto"][];
|
|
6969
|
+
};
|
|
6970
|
+
TestPyramidLayerDeltaDto: {
|
|
6971
|
+
/** @enum {string} */
|
|
6972
|
+
presence: "unchanged" | "adopted" | "removed";
|
|
6973
|
+
fileCountDelta: number;
|
|
6974
|
+
addedFrameworks: string[];
|
|
6975
|
+
};
|
|
6976
|
+
TestPyramidLayerDeltasDto: {
|
|
6977
|
+
unit: components["schemas"]["TestPyramidLayerDeltaDto"];
|
|
6978
|
+
integration: components["schemas"]["TestPyramidLayerDeltaDto"];
|
|
6979
|
+
acceptance_bdd: components["schemas"]["TestPyramidLayerDeltaDto"];
|
|
6980
|
+
contract: components["schemas"]["TestPyramidLayerDeltaDto"];
|
|
6981
|
+
e2e: components["schemas"]["TestPyramidLayerDeltaDto"];
|
|
6982
|
+
};
|
|
6983
|
+
TestPyramidCriterionDeltaDto: {
|
|
6984
|
+
from: string | null;
|
|
6985
|
+
to: string;
|
|
6986
|
+
};
|
|
6987
|
+
TestPyramidCriterionDeltasDto: {
|
|
6988
|
+
D1?: components["schemas"]["TestPyramidCriterionDeltaDto"];
|
|
6989
|
+
D2?: components["schemas"]["TestPyramidCriterionDeltaDto"];
|
|
6990
|
+
D3?: components["schemas"]["TestPyramidCriterionDeltaDto"];
|
|
6991
|
+
D4?: components["schemas"]["TestPyramidCriterionDeltaDto"];
|
|
6992
|
+
};
|
|
6993
|
+
TestPyramidRepoProgressDto: {
|
|
6994
|
+
/** Format: uuid */
|
|
6995
|
+
repoId: string;
|
|
6996
|
+
repoName: string;
|
|
6997
|
+
/** Format: date-time */
|
|
6998
|
+
baselineAt: string;
|
|
6999
|
+
/** Format: date-time */
|
|
7000
|
+
previousAt: string | null;
|
|
7001
|
+
/** Format: date-time */
|
|
7002
|
+
currentAt: string;
|
|
7003
|
+
currentRunStatus: components["schemas"]["TestPyramidRunStatusDto"];
|
|
7004
|
+
/** @enum {string} */
|
|
7005
|
+
maturity: "missing" | "emerging" | "established" | "mature";
|
|
7006
|
+
testsQaPercent: number | null;
|
|
7007
|
+
testsQaPercentDelta: number | null;
|
|
7008
|
+
layerDeltas: components["schemas"]["TestPyramidLayerDeltasDto"];
|
|
7009
|
+
baselineLayerDeltas: components["schemas"]["TestPyramidLayerDeltasDto"];
|
|
7010
|
+
criterionDeltas: components["schemas"]["TestPyramidCriterionDeltasDto"];
|
|
7011
|
+
testPyramid: components["schemas"]["TestPyramidSnapshotDto"];
|
|
7012
|
+
testPyramidCriteria: components["schemas"]["TestPyramidCriteriaDto"];
|
|
7013
|
+
lineCoverage?: components["schemas"]["TestPyramidLineCoverageDto"];
|
|
7014
|
+
};
|
|
7015
|
+
TestPyramidLayerCoverageDto: {
|
|
7016
|
+
presentRepos: number;
|
|
7017
|
+
applicableRepos: number;
|
|
7018
|
+
percent: number | null;
|
|
7019
|
+
missingRepoIds: string[];
|
|
7020
|
+
};
|
|
7021
|
+
TestPyramidLayerCoverageMapDto: {
|
|
7022
|
+
unit: components["schemas"]["TestPyramidLayerCoverageDto"];
|
|
7023
|
+
integration: components["schemas"]["TestPyramidLayerCoverageDto"];
|
|
7024
|
+
acceptance_bdd: components["schemas"]["TestPyramidLayerCoverageDto"];
|
|
7025
|
+
contract: components["schemas"]["TestPyramidLayerCoverageDto"];
|
|
7026
|
+
e2e: components["schemas"]["TestPyramidLayerCoverageDto"];
|
|
7027
|
+
};
|
|
7028
|
+
TestPyramidMaturityCountsDto: {
|
|
7029
|
+
missing: number;
|
|
7030
|
+
emerging: number;
|
|
7031
|
+
established: number;
|
|
7032
|
+
mature: number;
|
|
7033
|
+
};
|
|
7034
|
+
TestPyramidCrossRepoMatchDto: {
|
|
7035
|
+
/** Format: uuid */
|
|
7036
|
+
sourceRepoId: string;
|
|
7037
|
+
targetRepoIds: string[];
|
|
7038
|
+
referencedTargets: string[];
|
|
7039
|
+
};
|
|
7040
|
+
WorkspaceTestPyramidSummaryDto: {
|
|
7041
|
+
reposWithPyramid: number;
|
|
7042
|
+
/** @description Repositories whose newest snapshot came from a run whose rubric grading did not complete. Their pyramid is valid but Tests & QA scores are unavailable. */
|
|
7043
|
+
reposFromDegradedRuns: string[];
|
|
7044
|
+
layerCoverage: components["schemas"]["TestPyramidLayerCoverageMapDto"];
|
|
7045
|
+
maturityCounts: components["schemas"]["TestPyramidMaturityCountsDto"];
|
|
7046
|
+
e2eCrossRepoCandidateRepoIds: string[];
|
|
7047
|
+
e2eCrossRepoMatches: components["schemas"]["TestPyramidCrossRepoMatchDto"][];
|
|
7048
|
+
/** @description True only when an E2E target is matched to another repository in the workspace. */
|
|
7049
|
+
crossRepoE2ePresent: boolean;
|
|
7050
|
+
};
|
|
7051
|
+
WorkspaceTestPyramidProgressDto: {
|
|
7052
|
+
/** Format: uuid */
|
|
7053
|
+
workspaceId: string;
|
|
7054
|
+
/** Format: date-time */
|
|
7055
|
+
generatedAt: string;
|
|
7056
|
+
repos: components["schemas"]["TestPyramidRepoProgressDto"][];
|
|
7057
|
+
workspace: components["schemas"]["WorkspaceTestPyramidSummaryDto"];
|
|
7058
|
+
};
|
|
6797
7059
|
ReadinessScoreHistoryPointDto: {
|
|
6798
7060
|
/** Format: date-time */
|
|
6799
7061
|
finishedAt: string;
|
|
6800
7062
|
overallScore: number;
|
|
6801
7063
|
/** @description Per-dimension percentages captured on this scan run. */
|
|
6802
7064
|
dimensionScores?: components["schemas"]["ReadinessScoreHistoryDimensionScoreDto"][];
|
|
7065
|
+
testPyramid?: components["schemas"]["TestPyramidSnapshotDto"];
|
|
7066
|
+
testPyramidCriteria?: components["schemas"]["TestPyramidCriteriaDto"];
|
|
6803
7067
|
};
|
|
6804
7068
|
ReadinessRepoScoreHistoryDto: {
|
|
6805
7069
|
/** Format: uuid */
|
|
@@ -9319,6 +9583,115 @@ export interface components {
|
|
|
9319
9583
|
topHotspots: components["schemas"]["CodeInsightsOrgHotspotDto"][];
|
|
9320
9584
|
sonar: components["schemas"]["CodeInsightsSonarDto"];
|
|
9321
9585
|
};
|
|
9586
|
+
/**
|
|
9587
|
+
* @description Presence maturity (model A) using count-based layer presence (`fileCount > 0`), not AF signal-inclusive `present`.
|
|
9588
|
+
* @enum {string}
|
|
9589
|
+
*/
|
|
9590
|
+
InsightsTestPyramidMaturityDto: "missing" | "emerging" | "established" | "mature";
|
|
9591
|
+
/**
|
|
9592
|
+
* @description Advisory shape label vs fixed 70/20/10. `insufficient_data` when total classified test files < 10 (band percents are null).
|
|
9593
|
+
* @enum {string}
|
|
9594
|
+
*/
|
|
9595
|
+
InsightsTestPyramidShapeLabelDto: "insufficient_data" | "base_heavy" | "balanced" | "top_heavy" | "middle_heavy";
|
|
9596
|
+
InsightsTestPyramidShapeDto: {
|
|
9597
|
+
label: components["schemas"]["InsightsTestPyramidShapeLabelDto"];
|
|
9598
|
+
/** @description Sum of classified test **files** across the five layers (not test cases). */
|
|
9599
|
+
totalClassifiedFiles: number;
|
|
9600
|
+
/** @description Share of classified files in unit (base). Null when insufficient_data. */
|
|
9601
|
+
basePercent: number | null;
|
|
9602
|
+
/** @description Share in integration + contract + acceptance_bdd (middle). Null when insufficient_data. */
|
|
9603
|
+
middlePercent: number | null;
|
|
9604
|
+
/** @description Share in e2e (top). Null when insufficient_data. */
|
|
9605
|
+
topPercent: number | null;
|
|
9606
|
+
targets: {
|
|
9607
|
+
/** @enum {number} */
|
|
9608
|
+
basePercent: 70;
|
|
9609
|
+
/** @enum {number} */
|
|
9610
|
+
middlePercent: 20;
|
|
9611
|
+
/** @enum {number} */
|
|
9612
|
+
topPercent: 10;
|
|
9613
|
+
};
|
|
9614
|
+
};
|
|
9615
|
+
InsightsTestPyramidLayerCountsDto: {
|
|
9616
|
+
unit: number;
|
|
9617
|
+
integration: number;
|
|
9618
|
+
acceptance_bdd: number;
|
|
9619
|
+
contract: number;
|
|
9620
|
+
e2e: number;
|
|
9621
|
+
};
|
|
9622
|
+
InsightsTestPyramidLayerPresentDto: {
|
|
9623
|
+
unit: boolean;
|
|
9624
|
+
integration: boolean;
|
|
9625
|
+
acceptance_bdd: boolean;
|
|
9626
|
+
contract: boolean;
|
|
9627
|
+
e2e: boolean;
|
|
9628
|
+
};
|
|
9629
|
+
InsightsTestPyramidLayerPresenceDto: {
|
|
9630
|
+
presentRepos: number;
|
|
9631
|
+
applicableRepos: number;
|
|
9632
|
+
percent: number | null;
|
|
9633
|
+
missingRepoIds: string[];
|
|
9634
|
+
missingRepoNames: string[];
|
|
9635
|
+
};
|
|
9636
|
+
InsightsTestPyramidGapRepoDto: {
|
|
9637
|
+
/** Format: uuid */
|
|
9638
|
+
repoId: string;
|
|
9639
|
+
repoName: string;
|
|
9640
|
+
};
|
|
9641
|
+
InsightsTestPyramidGapsByLayerDto: {
|
|
9642
|
+
unit: components["schemas"]["InsightsTestPyramidGapRepoDto"][];
|
|
9643
|
+
integration: components["schemas"]["InsightsTestPyramidGapRepoDto"][];
|
|
9644
|
+
acceptance_bdd: components["schemas"]["InsightsTestPyramidGapRepoDto"][];
|
|
9645
|
+
contract: components["schemas"]["InsightsTestPyramidGapRepoDto"][];
|
|
9646
|
+
e2e: components["schemas"]["InsightsTestPyramidGapRepoDto"][];
|
|
9647
|
+
};
|
|
9648
|
+
InsightsTestPyramidMaturityCountsDto: {
|
|
9649
|
+
missing: number;
|
|
9650
|
+
emerging: number;
|
|
9651
|
+
established: number;
|
|
9652
|
+
mature: number;
|
|
9653
|
+
};
|
|
9654
|
+
InsightsTestPyramidLayerPresenceMapDto: {
|
|
9655
|
+
unit: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9656
|
+
integration: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9657
|
+
acceptance_bdd: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9658
|
+
contract: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9659
|
+
e2e: components["schemas"]["InsightsTestPyramidLayerPresenceDto"];
|
|
9660
|
+
};
|
|
9661
|
+
InsightsTestPyramidSummaryDto: {
|
|
9662
|
+
/** Format: uuid */
|
|
9663
|
+
workspaceId: string;
|
|
9664
|
+
/** Format: date-time */
|
|
9665
|
+
generatedAt: string;
|
|
9666
|
+
reposWithPyramid: number;
|
|
9667
|
+
/** @description Repos whose newest pyramid came from a non-succeeded readiness run. */
|
|
9668
|
+
reposFromDegradedRuns: string[];
|
|
9669
|
+
/** @description Workspace sum of classified test files (not cases). */
|
|
9670
|
+
totalClassifiedFiles: number;
|
|
9671
|
+
shape: components["schemas"]["InsightsTestPyramidShapeDto"];
|
|
9672
|
+
layerPresence: components["schemas"]["InsightsTestPyramidLayerPresenceMapDto"];
|
|
9673
|
+
maturityCounts: components["schemas"]["InsightsTestPyramidMaturityCountsDto"];
|
|
9674
|
+
gapsByLayer: components["schemas"]["InsightsTestPyramidGapsByLayerDto"];
|
|
9675
|
+
};
|
|
9676
|
+
InsightsTestPyramidRepoItemDto: {
|
|
9677
|
+
/** Format: uuid */
|
|
9678
|
+
repoId: string;
|
|
9679
|
+
repoName: string;
|
|
9680
|
+
/** Format: date-time */
|
|
9681
|
+
scannedAt: string;
|
|
9682
|
+
currentRunStatus: components["schemas"]["TestPyramidRunStatusDto"];
|
|
9683
|
+
maturity: components["schemas"]["InsightsTestPyramidMaturityDto"];
|
|
9684
|
+
layerFileCounts: components["schemas"]["InsightsTestPyramidLayerCountsDto"];
|
|
9685
|
+
layerPresent: components["schemas"]["InsightsTestPyramidLayerPresentDto"];
|
|
9686
|
+
totalClassifiedFiles: number;
|
|
9687
|
+
shape: components["schemas"]["InsightsTestPyramidShapeDto"];
|
|
9688
|
+
};
|
|
9689
|
+
InsightsTestPyramidRepoListDto: {
|
|
9690
|
+
items: components["schemas"]["InsightsTestPyramidRepoItemDto"][];
|
|
9691
|
+
total: number;
|
|
9692
|
+
limit: number;
|
|
9693
|
+
offset: number;
|
|
9694
|
+
};
|
|
9322
9695
|
};
|
|
9323
9696
|
responses: {
|
|
9324
9697
|
/** @description Missing or invalid bearer token */
|
|
@@ -9406,6 +9779,10 @@ export interface components {
|
|
|
9406
9779
|
CodeInsightsRepoSort: "repoName" | "locTotal" | "ccAvg" | "dupPct" | "lastMeasuredAt";
|
|
9407
9780
|
/** @description Case-insensitive substring filter on repo name / provider slug. */
|
|
9408
9781
|
CodeInsightsRepoSearch: string;
|
|
9782
|
+
/** @description Allowlisted Test pyramid assessment repo sort field. */
|
|
9783
|
+
InsightsTestPyramidRepoSort: "repoName" | "totalClassifiedFiles" | "scannedAt" | "maturity";
|
|
9784
|
+
/** @description Case-insensitive substring filter on repository name. */
|
|
9785
|
+
InsightsTestPyramidRepoSearch: string;
|
|
9409
9786
|
/** @description Case-insensitive filter on repository name, language, or provider slug. */
|
|
9410
9787
|
ReadinessRepoSearch: string;
|
|
9411
9788
|
/** @description Exact language filter (e.g. `typescript`). */
|
|
@@ -9667,6 +10044,26 @@ export type DimensionScoreDetailDto = components['schemas']['DimensionScoreDetai
|
|
|
9667
10044
|
export type ReadinessRepoRunHistoryItemDto = components['schemas']['ReadinessRepoRunHistoryItemDto'];
|
|
9668
10045
|
export type ReadinessRepoRunListDto = components['schemas']['ReadinessRepoRunListDto'];
|
|
9669
10046
|
export type ReadinessScoreHistoryDimensionScoreDto = components['schemas']['ReadinessScoreHistoryDimensionScoreDto'];
|
|
10047
|
+
export type TestPyramidLayerSnapshotDto = components['schemas']['TestPyramidLayerSnapshotDto'];
|
|
10048
|
+
export type TestPyramidLayersDto = components['schemas']['TestPyramidLayersDto'];
|
|
10049
|
+
export type TestPyramidSnapshotDto = components['schemas']['TestPyramidSnapshotDto'];
|
|
10050
|
+
export type TestPyramidLineCoverageDto = components['schemas']['TestPyramidLineCoverageDto'];
|
|
10051
|
+
export type TestPyramidCriteriaDto = components['schemas']['TestPyramidCriteriaDto'];
|
|
10052
|
+
export type TestPyramidRunStatusDto = components['schemas']['TestPyramidRunStatusDto'];
|
|
10053
|
+
export type TestPyramidHistoryPointDto = components['schemas']['TestPyramidHistoryPointDto'];
|
|
10054
|
+
export type TestPyramidRepoHistoryDto = components['schemas']['TestPyramidRepoHistoryDto'];
|
|
10055
|
+
export type WorkspaceTestPyramidHistoryDto = components['schemas']['WorkspaceTestPyramidHistoryDto'];
|
|
10056
|
+
export type TestPyramidLayerDeltaDto = components['schemas']['TestPyramidLayerDeltaDto'];
|
|
10057
|
+
export type TestPyramidLayerDeltasDto = components['schemas']['TestPyramidLayerDeltasDto'];
|
|
10058
|
+
export type TestPyramidCriterionDeltaDto = components['schemas']['TestPyramidCriterionDeltaDto'];
|
|
10059
|
+
export type TestPyramidCriterionDeltasDto = components['schemas']['TestPyramidCriterionDeltasDto'];
|
|
10060
|
+
export type TestPyramidRepoProgressDto = components['schemas']['TestPyramidRepoProgressDto'];
|
|
10061
|
+
export type TestPyramidLayerCoverageDto = components['schemas']['TestPyramidLayerCoverageDto'];
|
|
10062
|
+
export type TestPyramidLayerCoverageMapDto = components['schemas']['TestPyramidLayerCoverageMapDto'];
|
|
10063
|
+
export type TestPyramidMaturityCountsDto = components['schemas']['TestPyramidMaturityCountsDto'];
|
|
10064
|
+
export type TestPyramidCrossRepoMatchDto = components['schemas']['TestPyramidCrossRepoMatchDto'];
|
|
10065
|
+
export type WorkspaceTestPyramidSummaryDto = components['schemas']['WorkspaceTestPyramidSummaryDto'];
|
|
10066
|
+
export type WorkspaceTestPyramidProgressDto = components['schemas']['WorkspaceTestPyramidProgressDto'];
|
|
9670
10067
|
export type ReadinessScoreHistoryPointDto = components['schemas']['ReadinessScoreHistoryPointDto'];
|
|
9671
10068
|
export type ReadinessRepoScoreHistoryDto = components['schemas']['ReadinessRepoScoreHistoryDto'];
|
|
9672
10069
|
export type WorkspaceReadinessScoreHistoryDto = components['schemas']['WorkspaceReadinessScoreHistoryDto'];
|
|
@@ -9909,6 +10306,19 @@ export type CodeInsightsDesignAnalyzeResponseDto = components['schemas']['CodeIn
|
|
|
9909
10306
|
export type CodeInsightsOrgHotspotDto = components['schemas']['CodeInsightsOrgHotspotDto'];
|
|
9910
10307
|
export type CodeInsightsSonarDto = components['schemas']['CodeInsightsSonarDto'];
|
|
9911
10308
|
export type CodeInsightsSummaryDto = components['schemas']['CodeInsightsSummaryDto'];
|
|
10309
|
+
export type InsightsTestPyramidMaturityDto = components['schemas']['InsightsTestPyramidMaturityDto'];
|
|
10310
|
+
export type InsightsTestPyramidShapeLabelDto = components['schemas']['InsightsTestPyramidShapeLabelDto'];
|
|
10311
|
+
export type InsightsTestPyramidShapeDto = components['schemas']['InsightsTestPyramidShapeDto'];
|
|
10312
|
+
export type InsightsTestPyramidLayerCountsDto = components['schemas']['InsightsTestPyramidLayerCountsDto'];
|
|
10313
|
+
export type InsightsTestPyramidLayerPresentDto = components['schemas']['InsightsTestPyramidLayerPresentDto'];
|
|
10314
|
+
export type InsightsTestPyramidLayerPresenceDto = components['schemas']['InsightsTestPyramidLayerPresenceDto'];
|
|
10315
|
+
export type InsightsTestPyramidGapRepoDto = components['schemas']['InsightsTestPyramidGapRepoDto'];
|
|
10316
|
+
export type InsightsTestPyramidGapsByLayerDto = components['schemas']['InsightsTestPyramidGapsByLayerDto'];
|
|
10317
|
+
export type InsightsTestPyramidMaturityCountsDto = components['schemas']['InsightsTestPyramidMaturityCountsDto'];
|
|
10318
|
+
export type InsightsTestPyramidLayerPresenceMapDto = components['schemas']['InsightsTestPyramidLayerPresenceMapDto'];
|
|
10319
|
+
export type InsightsTestPyramidSummaryDto = components['schemas']['InsightsTestPyramidSummaryDto'];
|
|
10320
|
+
export type InsightsTestPyramidRepoItemDto = components['schemas']['InsightsTestPyramidRepoItemDto'];
|
|
10321
|
+
export type InsightsTestPyramidRepoListDto = components['schemas']['InsightsTestPyramidRepoListDto'];
|
|
9912
10322
|
export type ResponseUnauthorized = components['responses']['Unauthorized'];
|
|
9913
10323
|
export type ResponseForbidden = components['responses']['Forbidden'];
|
|
9914
10324
|
export type ResponseZenHrSyncInProgress = components['responses']['ZenHrSyncInProgress'];
|
|
@@ -9940,6 +10350,8 @@ export type ParameterPaginationOrder = components['parameters']['PaginationOrder
|
|
|
9940
10350
|
export type ParameterReadinessRepoSort = components['parameters']['ReadinessRepoSort'];
|
|
9941
10351
|
export type ParameterCodeInsightsRepoSort = components['parameters']['CodeInsightsRepoSort'];
|
|
9942
10352
|
export type ParameterCodeInsightsRepoSearch = components['parameters']['CodeInsightsRepoSearch'];
|
|
10353
|
+
export type ParameterInsightsTestPyramidRepoSort = components['parameters']['InsightsTestPyramidRepoSort'];
|
|
10354
|
+
export type ParameterInsightsTestPyramidRepoSearch = components['parameters']['InsightsTestPyramidRepoSearch'];
|
|
9943
10355
|
export type ParameterReadinessRepoSearch = components['parameters']['ReadinessRepoSearch'];
|
|
9944
10356
|
export type ParameterReadinessRepoLanguage = components['parameters']['ReadinessRepoLanguage'];
|
|
9945
10357
|
export type ParameterReadinessFixSort = components['parameters']['ReadinessFixSort'];
|
|
@@ -13863,6 +14275,106 @@ export interface operations {
|
|
|
13863
14275
|
};
|
|
13864
14276
|
};
|
|
13865
14277
|
};
|
|
14278
|
+
getInsightsTestPyramidSummary: {
|
|
14279
|
+
parameters: {
|
|
14280
|
+
query?: never;
|
|
14281
|
+
header?: never;
|
|
14282
|
+
path: {
|
|
14283
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
14284
|
+
};
|
|
14285
|
+
cookie?: never;
|
|
14286
|
+
};
|
|
14287
|
+
requestBody?: never;
|
|
14288
|
+
responses: {
|
|
14289
|
+
/** @description Test pyramid assessment workspace summary */
|
|
14290
|
+
200: {
|
|
14291
|
+
headers: {
|
|
14292
|
+
[name: string]: unknown;
|
|
14293
|
+
};
|
|
14294
|
+
content: {
|
|
14295
|
+
"application/json": components["schemas"]["InsightsTestPyramidSummaryDto"];
|
|
14296
|
+
};
|
|
14297
|
+
};
|
|
14298
|
+
401: components["responses"]["Unauthorized"];
|
|
14299
|
+
403: components["responses"]["Forbidden"];
|
|
14300
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
14301
|
+
404: {
|
|
14302
|
+
headers: {
|
|
14303
|
+
[name: string]: unknown;
|
|
14304
|
+
};
|
|
14305
|
+
content?: never;
|
|
14306
|
+
};
|
|
14307
|
+
/** @description Test pyramid history not supported by store */
|
|
14308
|
+
501: {
|
|
14309
|
+
headers: {
|
|
14310
|
+
[name: string]: unknown;
|
|
14311
|
+
};
|
|
14312
|
+
content: {
|
|
14313
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
14314
|
+
};
|
|
14315
|
+
};
|
|
14316
|
+
};
|
|
14317
|
+
};
|
|
14318
|
+
listInsightsTestPyramidRepos: {
|
|
14319
|
+
parameters: {
|
|
14320
|
+
query?: {
|
|
14321
|
+
/** @description Page size (default 25, max 100). */
|
|
14322
|
+
limit?: components["parameters"]["PaginationLimit"];
|
|
14323
|
+
/** @description Zero-based row offset into the filtered, sorted result set. */
|
|
14324
|
+
offset?: components["parameters"]["PaginationOffset"];
|
|
14325
|
+
/** @description Allowlisted Test pyramid assessment repo sort field. */
|
|
14326
|
+
sort?: components["parameters"]["InsightsTestPyramidRepoSort"];
|
|
14327
|
+
/** @description Sort direction. */
|
|
14328
|
+
order?: components["parameters"]["PaginationOrder"];
|
|
14329
|
+
/** @description Case-insensitive substring filter on repository name. */
|
|
14330
|
+
search?: components["parameters"]["InsightsTestPyramidRepoSearch"];
|
|
14331
|
+
};
|
|
14332
|
+
header?: never;
|
|
14333
|
+
path: {
|
|
14334
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
14335
|
+
};
|
|
14336
|
+
cookie?: never;
|
|
14337
|
+
};
|
|
14338
|
+
requestBody?: never;
|
|
14339
|
+
responses: {
|
|
14340
|
+
/** @description Paginated test pyramid assessment repo rows */
|
|
14341
|
+
200: {
|
|
14342
|
+
headers: {
|
|
14343
|
+
[name: string]: unknown;
|
|
14344
|
+
};
|
|
14345
|
+
content: {
|
|
14346
|
+
"application/json": components["schemas"]["InsightsTestPyramidRepoListDto"];
|
|
14347
|
+
};
|
|
14348
|
+
};
|
|
14349
|
+
/** @description Invalid pagination or sort query */
|
|
14350
|
+
400: {
|
|
14351
|
+
headers: {
|
|
14352
|
+
[name: string]: unknown;
|
|
14353
|
+
};
|
|
14354
|
+
content: {
|
|
14355
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
14356
|
+
};
|
|
14357
|
+
};
|
|
14358
|
+
401: components["responses"]["Unauthorized"];
|
|
14359
|
+
403: components["responses"]["Forbidden"];
|
|
14360
|
+
/** @description Workspace does not exist or malformed workspaceId */
|
|
14361
|
+
404: {
|
|
14362
|
+
headers: {
|
|
14363
|
+
[name: string]: unknown;
|
|
14364
|
+
};
|
|
14365
|
+
content?: never;
|
|
14366
|
+
};
|
|
14367
|
+
/** @description Test pyramid history not supported by store */
|
|
14368
|
+
501: {
|
|
14369
|
+
headers: {
|
|
14370
|
+
[name: string]: unknown;
|
|
14371
|
+
};
|
|
14372
|
+
content: {
|
|
14373
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
14374
|
+
};
|
|
14375
|
+
};
|
|
14376
|
+
};
|
|
14377
|
+
};
|
|
13866
14378
|
getAiToolMembers: {
|
|
13867
14379
|
parameters: {
|
|
13868
14380
|
query?: {
|
|
@@ -16252,6 +16764,138 @@ export interface operations {
|
|
|
16252
16764
|
};
|
|
16253
16765
|
};
|
|
16254
16766
|
};
|
|
16767
|
+
getReadinessTestPyramid: {
|
|
16768
|
+
parameters: {
|
|
16769
|
+
query?: never;
|
|
16770
|
+
header?: never;
|
|
16771
|
+
path: {
|
|
16772
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
16773
|
+
};
|
|
16774
|
+
cookie?: never;
|
|
16775
|
+
};
|
|
16776
|
+
requestBody?: never;
|
|
16777
|
+
responses: {
|
|
16778
|
+
/** @description Latest test-pyramid report and progress */
|
|
16779
|
+
200: {
|
|
16780
|
+
headers: {
|
|
16781
|
+
[name: string]: unknown;
|
|
16782
|
+
};
|
|
16783
|
+
content: {
|
|
16784
|
+
"application/json": components["schemas"]["WorkspaceTestPyramidProgressDto"];
|
|
16785
|
+
};
|
|
16786
|
+
};
|
|
16787
|
+
401: components["responses"]["Unauthorized"];
|
|
16788
|
+
403: components["responses"]["Forbidden"];
|
|
16789
|
+
/** @description Workspace does not exist */
|
|
16790
|
+
404: {
|
|
16791
|
+
headers: {
|
|
16792
|
+
[name: string]: unknown;
|
|
16793
|
+
};
|
|
16794
|
+
content: {
|
|
16795
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16796
|
+
};
|
|
16797
|
+
};
|
|
16798
|
+
/** @description Readiness history is not supported by the configured store */
|
|
16799
|
+
501: {
|
|
16800
|
+
headers: {
|
|
16801
|
+
[name: string]: unknown;
|
|
16802
|
+
};
|
|
16803
|
+
content: {
|
|
16804
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16805
|
+
};
|
|
16806
|
+
};
|
|
16807
|
+
};
|
|
16808
|
+
};
|
|
16809
|
+
getReadinessTestPyramidHistory: {
|
|
16810
|
+
parameters: {
|
|
16811
|
+
query?: {
|
|
16812
|
+
since?: string;
|
|
16813
|
+
limitPerRepo?: number;
|
|
16814
|
+
};
|
|
16815
|
+
header?: never;
|
|
16816
|
+
path: {
|
|
16817
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
16818
|
+
};
|
|
16819
|
+
cookie?: never;
|
|
16820
|
+
};
|
|
16821
|
+
requestBody?: never;
|
|
16822
|
+
responses: {
|
|
16823
|
+
/** @description Test-pyramid history grouped by repository */
|
|
16824
|
+
200: {
|
|
16825
|
+
headers: {
|
|
16826
|
+
[name: string]: unknown;
|
|
16827
|
+
};
|
|
16828
|
+
content: {
|
|
16829
|
+
"application/json": components["schemas"]["WorkspaceTestPyramidHistoryDto"];
|
|
16830
|
+
};
|
|
16831
|
+
};
|
|
16832
|
+
/** @description Invalid query */
|
|
16833
|
+
400: {
|
|
16834
|
+
headers: {
|
|
16835
|
+
[name: string]: unknown;
|
|
16836
|
+
};
|
|
16837
|
+
content: {
|
|
16838
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16839
|
+
};
|
|
16840
|
+
};
|
|
16841
|
+
401: components["responses"]["Unauthorized"];
|
|
16842
|
+
403: components["responses"]["Forbidden"];
|
|
16843
|
+
/** @description Readiness history is not supported by the configured store */
|
|
16844
|
+
501: {
|
|
16845
|
+
headers: {
|
|
16846
|
+
[name: string]: unknown;
|
|
16847
|
+
};
|
|
16848
|
+
content: {
|
|
16849
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16850
|
+
};
|
|
16851
|
+
};
|
|
16852
|
+
};
|
|
16853
|
+
};
|
|
16854
|
+
getReadinessTestPyramidProgress: {
|
|
16855
|
+
parameters: {
|
|
16856
|
+
query?: {
|
|
16857
|
+
since?: string;
|
|
16858
|
+
limitPerRepo?: number;
|
|
16859
|
+
};
|
|
16860
|
+
header?: never;
|
|
16861
|
+
path: {
|
|
16862
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
16863
|
+
};
|
|
16864
|
+
cookie?: never;
|
|
16865
|
+
};
|
|
16866
|
+
requestBody?: never;
|
|
16867
|
+
responses: {
|
|
16868
|
+
/** @description Test-pyramid code progress */
|
|
16869
|
+
200: {
|
|
16870
|
+
headers: {
|
|
16871
|
+
[name: string]: unknown;
|
|
16872
|
+
};
|
|
16873
|
+
content: {
|
|
16874
|
+
"application/json": components["schemas"]["WorkspaceTestPyramidProgressDto"];
|
|
16875
|
+
};
|
|
16876
|
+
};
|
|
16877
|
+
/** @description Invalid query */
|
|
16878
|
+
400: {
|
|
16879
|
+
headers: {
|
|
16880
|
+
[name: string]: unknown;
|
|
16881
|
+
};
|
|
16882
|
+
content: {
|
|
16883
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16884
|
+
};
|
|
16885
|
+
};
|
|
16886
|
+
401: components["responses"]["Unauthorized"];
|
|
16887
|
+
403: components["responses"]["Forbidden"];
|
|
16888
|
+
/** @description Readiness history is not supported by the configured store */
|
|
16889
|
+
501: {
|
|
16890
|
+
headers: {
|
|
16891
|
+
[name: string]: unknown;
|
|
16892
|
+
};
|
|
16893
|
+
content: {
|
|
16894
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
16895
|
+
};
|
|
16896
|
+
};
|
|
16897
|
+
};
|
|
16898
|
+
};
|
|
16255
16899
|
getReadinessScoreHistory: {
|
|
16256
16900
|
parameters: {
|
|
16257
16901
|
query?: {
|