@thinkai/tai-api-contract 2.154.0-pr.1317.ba1b741d → 2.156.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.154.0
4
+ version: 2.156.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}/...`.
@@ -6957,6 +6957,8 @@ paths:
6957
6957
  open: 0
6958
6958
  prPending: 0
6959
6959
  fixed: 0
6960
+ verificationGapCount: 0
6961
+ verificationGaps: []
6960
6962
  dimensionAggregates: []
6961
6963
  fixStatusSummary:
6962
6964
  queued: 0
@@ -7492,7 +7494,9 @@ paths:
7492
7494
  schema:
7493
7495
  $ref: "#/components/schemas/FixRequestDto"
7494
7496
  "400":
7495
- description: Invalid body or malformed `repoId` (not a UUID)
7497
+ description: >
7498
+ Invalid body, malformed `repoId`, or a missing/unknown `patternChoice` when the issue
7499
+ has `unresolvedChoices` (`pattern_choice_required`, `pattern_choice_invalid`).
7496
7500
  content:
7497
7501
  application/json:
7498
7502
  schema:
@@ -17638,6 +17642,15 @@ components:
17638
17642
  True when the platform does not yet have an auto-fix skill for this
17639
17643
  issue's dimension. The UI should render these items as disabled with
17640
17644
  a "Coming Soon" tooltip.
17645
+ unresolvedChoices:
17646
+ type: array
17647
+ maxItems: 2
17648
+ description: >
17649
+ Short labels when the instruction file names two alternatives and does not pick one.
17650
+ Fix it stays disabled until the request includes one of these as patternChoice.
17651
+ items:
17652
+ type: string
17653
+ maxLength: 64
17641
17654
  fixTier:
17642
17655
  type: string
17643
17656
  enum: [auto, decisions-first, guidance]
@@ -18668,6 +18681,33 @@ components:
18668
18681
  type: integer
18669
18682
  minimum: 0
18670
18683
  description: Issues whose fix has been applied (fix_status = fixed).
18684
+ verificationGapCount:
18685
+ type: integer
18686
+ minimum: 0
18687
+ description: >-
18688
+ Distinct non-archived repos whose latest succeeded scan has an A1 gap
18689
+ (no instruction file) or a B5 gap (CI never runs tests). A gap whose
18690
+ matching issue is already fixed is excluded. Omitted when the server
18691
+ cannot see per-criterion status.
18692
+ verificationGaps:
18693
+ type: array
18694
+ maxItems: 12
18695
+ description: >-
18696
+ Up to 12 repo and reason pairs for verificationGapCount. A repo with
18697
+ both gaps appears twice. Does not change averageOverallScore.
18698
+ items:
18699
+ $ref: "#/components/schemas/AgenticFoundationVerificationGapDto"
18700
+
18701
+ AgenticFoundationVerificationGapDto:
18702
+ type: object
18703
+ additionalProperties: false
18704
+ required: [repoName, reason]
18705
+ properties:
18706
+ repoName:
18707
+ type: string
18708
+ reason:
18709
+ type: string
18710
+ enum: ["no instruction file", "CI never runs tests"]
18671
18711
 
18672
18712
  PageMetaDto:
18673
18713
  type: object
@@ -19075,6 +19115,12 @@ components:
19075
19115
  type: string
19076
19116
  format: uuid
19077
19117
  description: Workspace repository id that owns the issue
19118
+ patternChoice:
19119
+ type: string
19120
+ maxLength: 64
19121
+ description: >
19122
+ Required when the issue has unresolvedChoices. Must be one of those labels.
19123
+ Stored on the fix row and stated in the worker prompt.
19078
19124
 
19079
19125
  PhaseRoleDto:
19080
19126
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.154.0-pr.1317.ba1b741d",
3
+ "version": "2.156.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -7490,6 +7490,8 @@ export interface components {
7490
7490
  fixStatus: "open" | "pr-pending" | "fixed";
7491
7491
  /** @description True when the platform does not yet have an auto-fix skill for this issue's dimension. The UI should render these items as disabled with a "Coming Soon" tooltip. */
7492
7492
  comingSoon?: boolean;
7493
+ /** @description Short labels when the instruction file names two alternatives and does not pick one. Fix it stays disabled until the request includes one of these as patternChoice. */
7494
+ unresolvedChoices?: string[];
7493
7495
  /**
7494
7496
  * @description How automated fixing is supported for this criterion. `auto` — agent edits files directly; no human input needed. `decisions-first` — agent requires docs/ai-readiness-decisions.md to be filled first. `guidance` — admin-level action; agent creates an instructions doc PR.
7495
7497
  * @enum {string}
@@ -7930,6 +7932,15 @@ export interface components {
7930
7932
  /** @description Issues whose fix has been applied (fix_status = fixed). */
7931
7933
  fixed: number;
7932
7934
  };
7935
+ /** @description Distinct non-archived repos whose latest succeeded scan has an A1 gap (no instruction file) or a B5 gap (CI never runs tests). A gap whose matching issue is already fixed is excluded. Omitted when the server cannot see per-criterion status. */
7936
+ verificationGapCount?: number;
7937
+ /** @description Up to 12 repo and reason pairs for verificationGapCount. A repo with both gaps appears twice. Does not change averageOverallScore. */
7938
+ verificationGaps?: components["schemas"]["AgenticFoundationVerificationGapDto"][];
7939
+ };
7940
+ AgenticFoundationVerificationGapDto: {
7941
+ repoName: string;
7942
+ /** @enum {string} */
7943
+ reason: "no instruction file" | "CI never runs tests";
7933
7944
  };
7934
7945
  PageMetaDto: {
7935
7946
  /** @description Total rows matching filters (full workspace, not just this page). */
@@ -8098,6 +8109,8 @@ export interface components {
8098
8109
  * @description Workspace repository id that owns the issue
8099
8110
  */
8100
8111
  repoId: string;
8112
+ /** @description Required when the issue has unresolvedChoices. Must be one of those labels. Stored on the fix row and stated in the worker prompt. */
8113
+ patternChoice?: string;
8101
8114
  };
8102
8115
  PhaseRoleDto: {
8103
8116
  phase: string;
@@ -11098,6 +11111,7 @@ export type LinkedRolePendingDto = components['schemas']['LinkedRolePendingDto']
11098
11111
  export type LinkedRoleAssessmentDto = components['schemas']['LinkedRoleAssessmentDto'];
11099
11112
  export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
11100
11113
  export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
11114
+ export type AgenticFoundationVerificationGapDto = components['schemas']['AgenticFoundationVerificationGapDto'];
11101
11115
  export type PageMetaDto = components['schemas']['PageMetaDto'];
11102
11116
  export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];
11103
11117
  export type ReadinessRepoListDto = components['schemas']['ReadinessRepoListDto'];
@@ -18982,7 +18996,7 @@ export interface operations {
18982
18996
  "application/json": components["schemas"]["FixRequestDto"];
18983
18997
  };
18984
18998
  };
18985
- /** @description Invalid body or malformed `repoId` (not a UUID) */
18999
+ /** @description Invalid body, malformed `repoId`, or a missing/unknown `patternChoice` when the issue has `unresolvedChoices` (`pattern_choice_required`, `pattern_choice_invalid`). */
18986
19000
  400: {
18987
19001
  headers: {
18988
19002
  [name: string]: unknown;