@thinkai/tai-api-contract 2.157.0 → 2.158.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.157.0
4
+ version: 2.158.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}/...`.
@@ -6959,6 +6959,15 @@ paths:
6959
6959
  fixed: 0
6960
6960
  verificationGapCount: 0
6961
6961
  verificationGaps: []
6962
+ blockedRepoCount: 0
6963
+ topBlockingRuleTitle: null
6964
+ topBlockingRuleRepoCount: 0
6965
+ fixProof:
6966
+ windowDays: 30
6967
+ mergeRatePercent: null
6968
+ medianDaysToMerge: null
6969
+ clearedCount: 0
6970
+ rows: []
6962
6971
  dimensionAggregates: []
6963
6972
  fixStatusSummary:
6964
6973
  queued: 0
@@ -11515,7 +11524,7 @@ components:
11515
11524
  description: Allowlisted repository sort field.
11516
11525
  schema:
11517
11526
  type: string
11518
- enum: [repoName, overallScore, lastAnalyzed, language]
11527
+ enum: [repoName, overallScore, lastAnalyzed, language, blockingRule]
11519
11528
  default: overallScore
11520
11529
  CodeInsightsRepoSort:
11521
11530
  name: sort
@@ -18471,6 +18480,15 @@ components:
18471
18480
  scores; live CI health stays in SDLC Insights.
18472
18481
  items:
18473
18482
  $ref: "#/components/schemas/ScanImprovementDto"
18483
+ blockingRule:
18484
+ type: object
18485
+ nullable: true
18486
+ allOf:
18487
+ - $ref: "#/components/schemas/ReadinessBlockingRuleDto"
18488
+ description: >
18489
+ The one open gap or partial criterion on the latest succeeded scan that is not
18490
+ already fixed. Null when the repo is not blocked. Severity ranks first, then
18491
+ dimension weight, then rubric id.
18474
18492
 
18475
18493
  LinkedRolePendingDto:
18476
18494
  type: object
@@ -18649,10 +18667,27 @@ components:
18649
18667
  description: See RepoReadinessScoreDto.scanImprovements.
18650
18668
  items:
18651
18669
  $ref: "#/components/schemas/ScanImprovementDto"
18670
+ blockingRule:
18671
+ type: object
18672
+ nullable: true
18673
+ allOf:
18674
+ - $ref: "#/components/schemas/ReadinessBlockingRuleDto"
18675
+ description: See RepoReadinessScoreDto.blockingRule.
18652
18676
 
18653
18677
  AgenticFoundationDashboardSummaryDto:
18654
18678
  type: object
18655
- required: [repoCount, averageOverallScore, issueCount, criticalIssueCount, issuesByFixStatus]
18679
+ required:
18680
+ [
18681
+ repoCount,
18682
+ averageOverallScore,
18683
+ issueCount,
18684
+ criticalIssueCount,
18685
+ issuesByFixStatus,
18686
+ blockedRepoCount,
18687
+ topBlockingRuleTitle,
18688
+ topBlockingRuleRepoCount,
18689
+ fixProof,
18690
+ ]
18656
18691
  properties:
18657
18692
  repoCount:
18658
18693
  type: integer
@@ -18704,6 +18739,91 @@ components:
18704
18739
  both gaps appears twice. Does not change averageOverallScore.
18705
18740
  items:
18706
18741
  $ref: "#/components/schemas/AgenticFoundationVerificationGapDto"
18742
+ blockedRepoCount:
18743
+ type: integer
18744
+ minimum: 0
18745
+ description: >
18746
+ Non-archived repos whose latest succeeded scan still has a gap or partial
18747
+ criterion that is not fixed. A repo with no open gap is not blocked.
18748
+ topBlockingRuleTitle:
18749
+ type: string
18750
+ nullable: true
18751
+ description: Rule title that blocks the most repos. Null when blockedRepoCount is 0.
18752
+ topBlockingRuleRepoCount:
18753
+ type: integer
18754
+ minimum: 0
18755
+ description: How many blocked repos share topBlockingRuleTitle.
18756
+ fixProof:
18757
+ $ref: "#/components/schemas/AgenticFoundationFixProofDto"
18758
+
18759
+ ReadinessBlockingRuleDto:
18760
+ type: object
18761
+ additionalProperties: false
18762
+ required: [rubricId, title, severity]
18763
+ properties:
18764
+ rubricId:
18765
+ type: string
18766
+ title:
18767
+ type: string
18768
+ severity:
18769
+ type: string
18770
+ enum: [critical, high, medium, low]
18771
+
18772
+ AgenticFoundationFixProofDto:
18773
+ type: object
18774
+ additionalProperties: false
18775
+ required: [windowDays, mergeRatePercent, medianDaysToMerge, clearedCount, rows]
18776
+ properties:
18777
+ windowDays:
18778
+ type: integer
18779
+ minimum: 1
18780
+ mergeRatePercent:
18781
+ type: integer
18782
+ minimum: 0
18783
+ maximum: 100
18784
+ nullable: true
18785
+ description: >
18786
+ Rounded percent of terminal fixes in the window that merged (merged / merged + failed).
18787
+ Null when there is no terminal fix.
18788
+ medianDaysToMerge:
18789
+ type: number
18790
+ nullable: true
18791
+ description: Median days from created_at to merge. Null when nothing merged in the window.
18792
+ clearedCount:
18793
+ type: integer
18794
+ minimum: 0
18795
+ description: Merged fixes in the window whose next scan marked the criterion met.
18796
+ rows:
18797
+ type: array
18798
+ maxItems: 10
18799
+ items:
18800
+ $ref: "#/components/schemas/AgenticFoundationFixProofRowDto"
18801
+
18802
+ AgenticFoundationFixProofRowDto:
18803
+ type: object
18804
+ additionalProperties: false
18805
+ required: [repoName, ruleTitle, scoreBefore, scoreAfter, cleared]
18806
+ properties:
18807
+ repoName:
18808
+ type: string
18809
+ ruleTitle:
18810
+ type: string
18811
+ scoreBefore:
18812
+ type: integer
18813
+ minimum: 0
18814
+ maximum: 100
18815
+ nullable: true
18816
+ scoreAfter:
18817
+ type: integer
18818
+ minimum: 0
18819
+ maximum: 100
18820
+ nullable: true
18821
+ cleared:
18822
+ type: boolean
18823
+ nullable: true
18824
+ description: >
18825
+ True when the first succeeded scan after the merge marked the criterion met.
18826
+ Null when that scan has not run yet.
18707
18827
 
18708
18828
  AgenticFoundationVerificationGapDto:
18709
18829
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.157.0",
3
+ "version": "2.158.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -7835,6 +7835,8 @@ export interface components {
7835
7835
  linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
7836
7836
  /** @description Repo-level "Improve this scan" recommendations for Agentic Foundation CI setup (at most three). Omitted when the scan emitted none. Does not change criterion scores; live CI health stays in SDLC Insights. */
7837
7837
  scanImprovements?: components["schemas"]["ScanImprovementDto"][];
7838
+ /** @description The one open gap or partial criterion on the latest succeeded scan that is not already fixed. Null when the repo is not blocked. Severity ranks first, then dimension weight, then rubric id. */
7839
+ blockingRule?: components["schemas"]["ReadinessBlockingRuleDto"] | null;
7838
7840
  };
7839
7841
  LinkedRolePendingDto: {
7840
7842
  /** @description Topology role key, e.g. terraform | gitops | ci_templates | api_contracts. */
@@ -7915,6 +7917,8 @@ export interface components {
7915
7917
  linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
7916
7918
  /** @description See RepoReadinessScoreDto.scanImprovements. */
7917
7919
  scanImprovements?: components["schemas"]["ScanImprovementDto"][];
7920
+ /** @description See RepoReadinessScoreDto.blockingRule. */
7921
+ blockingRule?: components["schemas"]["ReadinessBlockingRuleDto"] | null;
7918
7922
  };
7919
7923
  AgenticFoundationDashboardSummaryDto: {
7920
7924
  repoCount: number;
@@ -7936,6 +7940,37 @@ export interface components {
7936
7940
  verificationGapCount?: number;
7937
7941
  /** @description Up to 12 repo and reason pairs for verificationGapCount. A repo with both gaps appears twice. Does not change averageOverallScore. */
7938
7942
  verificationGaps?: components["schemas"]["AgenticFoundationVerificationGapDto"][];
7943
+ /** @description Non-archived repos whose latest succeeded scan still has a gap or partial criterion that is not fixed. A repo with no open gap is not blocked. */
7944
+ blockedRepoCount: number;
7945
+ /** @description Rule title that blocks the most repos. Null when blockedRepoCount is 0. */
7946
+ topBlockingRuleTitle: string | null;
7947
+ /** @description How many blocked repos share topBlockingRuleTitle. */
7948
+ topBlockingRuleRepoCount: number;
7949
+ fixProof: components["schemas"]["AgenticFoundationFixProofDto"];
7950
+ };
7951
+ ReadinessBlockingRuleDto: {
7952
+ rubricId: string;
7953
+ title: string;
7954
+ /** @enum {string} */
7955
+ severity: "critical" | "high" | "medium" | "low";
7956
+ };
7957
+ AgenticFoundationFixProofDto: {
7958
+ windowDays: number;
7959
+ /** @description Rounded percent of terminal fixes in the window that merged (merged / merged + failed). Null when there is no terminal fix. */
7960
+ mergeRatePercent: number | null;
7961
+ /** @description Median days from created_at to merge. Null when nothing merged in the window. */
7962
+ medianDaysToMerge: number | null;
7963
+ /** @description Merged fixes in the window whose next scan marked the criterion met. */
7964
+ clearedCount: number;
7965
+ rows: components["schemas"]["AgenticFoundationFixProofRowDto"][];
7966
+ };
7967
+ AgenticFoundationFixProofRowDto: {
7968
+ repoName: string;
7969
+ ruleTitle: string;
7970
+ scoreBefore: number | null;
7971
+ scoreAfter: number | null;
7972
+ /** @description True when the first succeeded scan after the merge marked the criterion met. Null when that scan has not run yet. */
7973
+ cleared: boolean | null;
7939
7974
  };
7940
7975
  AgenticFoundationVerificationGapDto: {
7941
7976
  repoName: string;
@@ -10801,7 +10836,7 @@ export interface components {
10801
10836
  /** @description Sort direction. */
10802
10837
  PaginationOrder: "asc" | "desc";
10803
10838
  /** @description Allowlisted repository sort field. */
10804
- ReadinessRepoSort: "repoName" | "overallScore" | "lastAnalyzed" | "language";
10839
+ ReadinessRepoSort: "repoName" | "overallScore" | "lastAnalyzed" | "language" | "blockingRule";
10805
10840
  /** @description Allowlisted Code Insights repo sort field. */
10806
10841
  CodeInsightsRepoSort: "repoName" | "locTotal" | "ccAvg" | "dupPct" | "lastMeasuredAt";
10807
10842
  /** @description Case-insensitive substring filter on repo name / provider slug. */
@@ -11112,6 +11147,9 @@ export type LinkedRolePendingDto = components['schemas']['LinkedRolePendingDto']
11112
11147
  export type LinkedRoleAssessmentDto = components['schemas']['LinkedRoleAssessmentDto'];
11113
11148
  export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
11114
11149
  export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
11150
+ export type ReadinessBlockingRuleDto = components['schemas']['ReadinessBlockingRuleDto'];
11151
+ export type AgenticFoundationFixProofDto = components['schemas']['AgenticFoundationFixProofDto'];
11152
+ export type AgenticFoundationFixProofRowDto = components['schemas']['AgenticFoundationFixProofRowDto'];
11115
11153
  export type AgenticFoundationVerificationGapDto = components['schemas']['AgenticFoundationVerificationGapDto'];
11116
11154
  export type PageMetaDto = components['schemas']['PageMetaDto'];
11117
11155
  export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];