@thinkai/tai-api-contract 2.81.0 → 2.83.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.81.0
4
+ version: 2.83.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}/...`.
@@ -5475,6 +5475,78 @@ paths:
5475
5475
  schema:
5476
5476
  $ref: "#/components/schemas/ErrorMessageDto"
5477
5477
 
5478
+ /workspaces/{workspaceId}/readiness/repos/{repoId}/issues/export:
5479
+ get:
5480
+ tags: [RepositoryReadiness]
5481
+ summary: Export repository readiness issues as Markdown
5482
+ description: >
5483
+ Download outstanding readiness issues for one repository as a Markdown (`.md`) attachment
5484
+ for local IDE workflows. Reuses the same scorecard as `GET .../readiness/repos/{repoId}`
5485
+ (issues plus optional remediation from `criteriaDetails`).
5486
+
5487
+ The Markdown is grouped **by readiness dimension** (catalog order). Each dimension section
5488
+ lists matching issues sorted by severity. Default filter is outstanding issues
5489
+ (`open` + `pr-pending`). Optional query params narrow the set. When `includeCriteria` is
5490
+ true (default), each issue includes a Remediation section from the matching criterion when
5491
+ available.
5492
+
5493
+ The response sets `Content-Disposition: attachment` with filename
5494
+ `readiness-issues-{providerSlug}-{date}.md`.
5495
+ operationId: exportReadinessRepoIssuesMarkdown
5496
+ parameters:
5497
+ - $ref: "#/components/parameters/WorkspaceId"
5498
+ - $ref: "#/components/parameters/RepoId"
5499
+ - name: fixStatus
5500
+ in: query
5501
+ required: false
5502
+ description: >
5503
+ When omitted, export outstanding issues (`open` and `pr-pending`). When set, export only
5504
+ issues with this fix status.
5505
+ schema:
5506
+ type: string
5507
+ enum: [open, pr-pending, fixed]
5508
+ - name: dimensionId
5509
+ in: query
5510
+ required: false
5511
+ schema:
5512
+ $ref: "#/components/schemas/ReadinessDimensionId"
5513
+ - name: severity
5514
+ in: query
5515
+ required: false
5516
+ schema:
5517
+ type: string
5518
+ enum: [critical, high, medium, low]
5519
+ - name: includeCriteria
5520
+ in: query
5521
+ required: false
5522
+ description: Include remediation from criteriaDetails (default true).
5523
+ schema:
5524
+ type: boolean
5525
+ default: true
5526
+ responses:
5527
+ "200":
5528
+ description: Markdown file of readiness issues
5529
+ content:
5530
+ text/markdown:
5531
+ schema:
5532
+ type: string
5533
+ "400":
5534
+ description: Malformed `repoId` or invalid query parameters
5535
+ content:
5536
+ application/json:
5537
+ schema:
5538
+ $ref: "#/components/schemas/ErrorMessageDto"
5539
+ "401":
5540
+ $ref: "#/components/responses/Unauthorized"
5541
+ "403":
5542
+ $ref: "#/components/responses/Forbidden"
5543
+ "404":
5544
+ description: Workspace or repository not found
5545
+ content:
5546
+ application/json:
5547
+ schema:
5548
+ $ref: "#/components/schemas/ErrorMessageDto"
5549
+
5478
5550
  /workspaces/{workspaceId}/readiness/repos/{repoId}/runs:
5479
5551
  get:
5480
5552
  tags: [RepositoryReadiness]
@@ -7010,6 +7082,15 @@ paths:
7010
7082
  application/json:
7011
7083
  schema:
7012
7084
  $ref: "#/components/schemas/ErrorMessageDto"
7085
+ "422":
7086
+ description: Repository blocked by workspace eligibility or size limits
7087
+ content:
7088
+ application/json:
7089
+ schema:
7090
+ $ref: "#/components/schemas/ErrorMessageDto"
7091
+ example:
7092
+ error: Repository exceeds the workspace eligibility limits and cannot be indexed
7093
+ code: repo_ineligible
7013
7094
 
7014
7095
  /workspaces/{workspaceId}/code-chat/indexes/sync:
7015
7096
  post:
@@ -16868,6 +16949,21 @@ components:
16868
16949
  items:
16869
16950
  type: array
16870
16951
  items: { $ref: "#/components/schemas/CodeChatIndexDto" }
16952
+ skipped:
16953
+ type: array
16954
+ description: Repositories requested (or considered) for sync but not enqueued
16955
+ items: { $ref: "#/components/schemas/CodeChatSkippedRepoDto" }
16956
+
16957
+ CodeChatSkippedRepoDto:
16958
+ type: object
16959
+ required: [repoId, repoName, code]
16960
+ properties:
16961
+ repoId: { type: string, format: uuid }
16962
+ repoName: { type: string }
16963
+ code:
16964
+ type: string
16965
+ enum: [repo_ineligible]
16966
+ description: Stable machine-readable skip reason
16871
16967
 
16872
16968
  CodeChatThreadDto:
16873
16969
  type: object
@@ -16956,7 +17052,65 @@ components:
16956
17052
  - type: object
16957
17053
  required: [mode]
16958
17054
  properties:
16959
- mode: { type: string, enum: [llm, retrieval] }
17055
+ mode:
17056
+ type: string
17057
+ enum: [llm, retrieval, inventory]
17058
+ description: >
17059
+ How the assistant answer was produced. `inventory` returns a deterministic
17060
+ catalog (APIs or modules) rather than LLM synthesis.
17061
+ structured:
17062
+ description: Optional typed inventory payload for rich UI tables
17063
+ allOf:
17064
+ - $ref: "#/components/schemas/CodeChatStructuredBlockDto"
17065
+ groundedInWiki:
17066
+ type: boolean
17067
+ description: True when wiki pages from one or more repos contributed to LLM context
17068
+ wikiRepos:
17069
+ type: array
17070
+ items: { type: string }
17071
+ description: Repository names whose wiki pages grounded the answer
17072
+
17073
+ CodeChatApiRouteRowDto:
17074
+ type: object
17075
+ required: [method, path, file]
17076
+ properties:
17077
+ method: { type: string }
17078
+ path: { type: string }
17079
+ file: { type: string }
17080
+ line: { type: integer }
17081
+ summary: { type: string }
17082
+ repoId: { type: string, format: uuid }
17083
+ repoName: { type: string }
17084
+ providerSlug: { type: string }
17085
+ commitSha: { type: string, nullable: true }
17086
+
17087
+ CodeChatModuleInventoryRowDto:
17088
+ type: object
17089
+ required: [name, kind, path]
17090
+ properties:
17091
+ name: { type: string }
17092
+ kind: { type: string, enum: [package, root, area] }
17093
+ path: { type: string }
17094
+ summary: { type: string }
17095
+ repoId: { type: string, format: uuid }
17096
+ repoName: { type: string }
17097
+
17098
+ CodeChatStructuredBlockDto:
17099
+ oneOf:
17100
+ - type: object
17101
+ required: [kind, rows]
17102
+ properties:
17103
+ kind: { type: string, enum: [api_inventory] }
17104
+ rows:
17105
+ type: array
17106
+ items: { $ref: "#/components/schemas/CodeChatApiRouteRowDto" }
17107
+ - type: object
17108
+ required: [kind, rows]
17109
+ properties:
17110
+ kind: { type: string, enum: [module_inventory] }
17111
+ rows:
17112
+ type: array
17113
+ items: { $ref: "#/components/schemas/CodeChatModuleInventoryRowDto" }
16960
17114
 
16961
17115
  CodeChatWikiPageDto:
16962
17116
  type: object
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkai/tai-api-contract",
3
- "version": "2.81.0",
3
+ "version": "2.83.0",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -2123,6 +2123,28 @@ export interface paths {
2123
2123
  patch: operations["patchReadinessRepo"];
2124
2124
  trace?: never;
2125
2125
  };
2126
+ "/workspaces/{workspaceId}/readiness/repos/{repoId}/issues/export": {
2127
+ parameters: {
2128
+ query?: never;
2129
+ header?: never;
2130
+ path?: never;
2131
+ cookie?: never;
2132
+ };
2133
+ /**
2134
+ * Export repository readiness issues as Markdown
2135
+ * @description Download outstanding readiness issues for one repository as a Markdown (`.md`) attachment for local IDE workflows. Reuses the same scorecard as `GET .../readiness/repos/{repoId}` (issues plus optional remediation from `criteriaDetails`).
2136
+ * The Markdown is grouped **by readiness dimension** (catalog order). Each dimension section lists matching issues sorted by severity. Default filter is outstanding issues (`open` + `pr-pending`). Optional query params narrow the set. When `includeCriteria` is true (default), each issue includes a Remediation section from the matching criterion when available.
2137
+ * The response sets `Content-Disposition: attachment` with filename `readiness-issues-{providerSlug}-{date}.md`.
2138
+ */
2139
+ get: operations["exportReadinessRepoIssuesMarkdown"];
2140
+ put?: never;
2141
+ post?: never;
2142
+ delete?: never;
2143
+ options?: never;
2144
+ head?: never;
2145
+ patch?: never;
2146
+ trace?: never;
2147
+ };
2126
2148
  "/workspaces/{workspaceId}/readiness/repos/{repoId}/runs": {
2127
2149
  parameters: {
2128
2150
  query?: never;
@@ -7325,6 +7347,18 @@ export interface components {
7325
7347
  CodeChatSyncIndexesResultDto: {
7326
7348
  enqueued: number;
7327
7349
  items?: components["schemas"]["CodeChatIndexDto"][];
7350
+ /** @description Repositories requested (or considered) for sync but not enqueued */
7351
+ skipped?: components["schemas"]["CodeChatSkippedRepoDto"][];
7352
+ };
7353
+ CodeChatSkippedRepoDto: {
7354
+ /** Format: uuid */
7355
+ repoId: string;
7356
+ repoName: string;
7357
+ /**
7358
+ * @description Stable machine-readable skip reason
7359
+ * @enum {string}
7360
+ */
7361
+ code: "repo_ineligible";
7328
7362
  };
7329
7363
  CodeChatThreadDto: {
7330
7364
  /** Format: uuid */
@@ -7387,8 +7421,48 @@ export interface components {
7387
7421
  content: string;
7388
7422
  };
7389
7423
  CodeChatMessageReplyDto: components["schemas"]["CodeChatMessageDto"] & {
7424
+ /**
7425
+ * @description How the assistant answer was produced. `inventory` returns a deterministic catalog (APIs or modules) rather than LLM synthesis.
7426
+ * @enum {string}
7427
+ */
7428
+ mode: "llm" | "retrieval" | "inventory";
7429
+ /** @description Optional typed inventory payload for rich UI tables */
7430
+ structured?: components["schemas"]["CodeChatStructuredBlockDto"];
7431
+ /** @description True when wiki pages from one or more repos contributed to LLM context */
7432
+ groundedInWiki?: boolean;
7433
+ /** @description Repository names whose wiki pages grounded the answer */
7434
+ wikiRepos?: string[];
7435
+ };
7436
+ CodeChatApiRouteRowDto: {
7437
+ method: string;
7438
+ path: string;
7439
+ file: string;
7440
+ line?: number;
7441
+ summary?: string;
7442
+ /** Format: uuid */
7443
+ repoId?: string;
7444
+ repoName?: string;
7445
+ providerSlug?: string;
7446
+ commitSha?: string | null;
7447
+ };
7448
+ CodeChatModuleInventoryRowDto: {
7449
+ name: string;
7450
+ /** @enum {string} */
7451
+ kind: "package" | "root" | "area";
7452
+ path: string;
7453
+ summary?: string;
7454
+ /** Format: uuid */
7455
+ repoId?: string;
7456
+ repoName?: string;
7457
+ };
7458
+ CodeChatStructuredBlockDto: {
7390
7459
  /** @enum {string} */
7391
- mode: "llm" | "retrieval";
7460
+ kind: "api_inventory";
7461
+ rows: components["schemas"]["CodeChatApiRouteRowDto"][];
7462
+ } | {
7463
+ /** @enum {string} */
7464
+ kind: "module_inventory";
7465
+ rows: components["schemas"]["CodeChatModuleInventoryRowDto"][];
7392
7466
  };
7393
7467
  CodeChatWikiPageDto: {
7394
7468
  /** Format: uuid */
@@ -8215,6 +8289,7 @@ export type CodeChatIndexListDto = components['schemas']['CodeChatIndexListDto']
8215
8289
  export type CodeChatCreateIndexBodyDto = components['schemas']['CodeChatCreateIndexBodyDto'];
8216
8290
  export type CodeChatSyncIndexesBodyDto = components['schemas']['CodeChatSyncIndexesBodyDto'];
8217
8291
  export type CodeChatSyncIndexesResultDto = components['schemas']['CodeChatSyncIndexesResultDto'];
8292
+ export type CodeChatSkippedRepoDto = components['schemas']['CodeChatSkippedRepoDto'];
8218
8293
  export type CodeChatThreadDto = components['schemas']['CodeChatThreadDto'];
8219
8294
  export type CodeChatThreadListDto = components['schemas']['CodeChatThreadListDto'];
8220
8295
  export type CodeChatCreateThreadBodyDto = components['schemas']['CodeChatCreateThreadBodyDto'];
@@ -8223,6 +8298,9 @@ export type CodeChatMessageDto = components['schemas']['CodeChatMessageDto'];
8223
8298
  export type CodeChatThreadDetailDto = components['schemas']['CodeChatThreadDetailDto'];
8224
8299
  export type CodeChatPostMessageBodyDto = components['schemas']['CodeChatPostMessageBodyDto'];
8225
8300
  export type CodeChatMessageReplyDto = components['schemas']['CodeChatMessageReplyDto'];
8301
+ export type CodeChatApiRouteRowDto = components['schemas']['CodeChatApiRouteRowDto'];
8302
+ export type CodeChatModuleInventoryRowDto = components['schemas']['CodeChatModuleInventoryRowDto'];
8303
+ export type CodeChatStructuredBlockDto = components['schemas']['CodeChatStructuredBlockDto'];
8226
8304
  export type CodeChatWikiPageDto = components['schemas']['CodeChatWikiPageDto'];
8227
8305
  export type CodeChatWikiPageListDto = components['schemas']['CodeChatWikiPageListDto'];
8228
8306
  export type CodeChatSymbolQueryBodyDto = components['schemas']['CodeChatSymbolQueryBodyDto'];
@@ -13827,6 +13905,56 @@ export interface operations {
13827
13905
  };
13828
13906
  };
13829
13907
  };
13908
+ exportReadinessRepoIssuesMarkdown: {
13909
+ parameters: {
13910
+ query?: {
13911
+ /** @description When omitted, export outstanding issues (`open` and `pr-pending`). When set, export only issues with this fix status. */
13912
+ fixStatus?: "open" | "pr-pending" | "fixed";
13913
+ dimensionId?: components["schemas"]["ReadinessDimensionId"];
13914
+ severity?: "critical" | "high" | "medium" | "low";
13915
+ /** @description Include remediation from criteriaDetails (default true). */
13916
+ includeCriteria?: boolean;
13917
+ };
13918
+ header?: never;
13919
+ path: {
13920
+ workspaceId: components["parameters"]["WorkspaceId"];
13921
+ repoId: components["parameters"]["RepoId"];
13922
+ };
13923
+ cookie?: never;
13924
+ };
13925
+ requestBody?: never;
13926
+ responses: {
13927
+ /** @description Markdown file of readiness issues */
13928
+ 200: {
13929
+ headers: {
13930
+ [name: string]: unknown;
13931
+ };
13932
+ content: {
13933
+ "text/markdown": string;
13934
+ };
13935
+ };
13936
+ /** @description Malformed `repoId` or invalid query parameters */
13937
+ 400: {
13938
+ headers: {
13939
+ [name: string]: unknown;
13940
+ };
13941
+ content: {
13942
+ "application/json": components["schemas"]["ErrorMessageDto"];
13943
+ };
13944
+ };
13945
+ 401: components["responses"]["Unauthorized"];
13946
+ 403: components["responses"]["Forbidden"];
13947
+ /** @description Workspace or repository not found */
13948
+ 404: {
13949
+ headers: {
13950
+ [name: string]: unknown;
13951
+ };
13952
+ content: {
13953
+ "application/json": components["schemas"]["ErrorMessageDto"];
13954
+ };
13955
+ };
13956
+ };
13957
+ };
13830
13958
  listReadinessRepoRuns: {
13831
13959
  parameters: {
13832
13960
  query?: {
@@ -15417,6 +15545,21 @@ export interface operations {
15417
15545
  "application/json": components["schemas"]["ErrorMessageDto"];
15418
15546
  };
15419
15547
  };
15548
+ /** @description Repository blocked by workspace eligibility or size limits */
15549
+ 422: {
15550
+ headers: {
15551
+ [name: string]: unknown;
15552
+ };
15553
+ content: {
15554
+ /**
15555
+ * @example {
15556
+ * "error": "Repository exceeds the workspace eligibility limits and cannot be indexed",
15557
+ * "code": "repo_ineligible"
15558
+ * }
15559
+ */
15560
+ "application/json": components["schemas"]["ErrorMessageDto"];
15561
+ };
15562
+ };
15420
15563
  };
15421
15564
  };
15422
15565
  syncCodeChatIndexes: {