@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.
- package/dist/generated/openapi.d.ts +144 -1
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +156 -2
- package/package.json +1 -1
- package/src/generated/openapi.ts +144 -1
package/openapi/openapi.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
openapi: 3.0.3
|
|
2
2
|
info:
|
|
3
3
|
title: ThinkAI API
|
|
4
|
-
version: 2.
|
|
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:
|
|
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
package/src/generated/openapi.ts
CHANGED
|
@@ -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
|
-
|
|
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: {
|