@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.
@@ -1,7 +1,7 @@
1
1
  openapi: 3.0.3
2
2
  info:
3
3
  title: ThinkAI API
4
- version: 2.127.0
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. Layer **presence
3848
- is count-based** (`fileCount > 0`); CI/dependency-only AF `present` flags are
3849
- ignored. Shape uses fixed advisory targets (base ~70% unit, middle ~20%
3850
- integration+contract+acceptance/BDD, top ~10% E2E) and returns
3851
- `insufficient_data` when total classified test files < 10. Does not change
3852
- Agentic Foundation `/readiness/test-pyramid*` responses.
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, and shape assessment. Use `gapsByLayer` on the summary
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.127.0",
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.4.1",
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"
@@ -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 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
+ * @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'];