@thinkai/tai-api-contract 2.156.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.
- package/dist/generated/openapi.d.ts +52 -34
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +168 -37
- package/package.json +1 -1
- package/src/generated/openapi.ts +52 -34
|
@@ -3773,7 +3773,7 @@ export interface paths {
|
|
|
3773
3773
|
};
|
|
3774
3774
|
/**
|
|
3775
3775
|
* Slack install URL for Message Center
|
|
3776
|
-
* @description Workspace admin only. Returns the Slack OAuth authorize URL. State is stored server-side and names this workspace and the signed-in admin. Editor or viewer is `403` with `code` `workspace_admin_required`. Missing Slack app settings are `503` with `code` `slack_not_configured`.
|
|
3776
|
+
* @description Workspace admin only. Returns the Slack OAuth authorize URL with `incoming-webhook` scope. State is stored server-side and names this workspace and the signed-in admin. Editor or viewer is `403` with `code` `workspace_admin_required`. Missing Slack app settings are `503` with `code` `slack_not_configured`.
|
|
3777
3777
|
*/
|
|
3778
3778
|
get: operations["getSlackInstallUrl"];
|
|
3779
3779
|
put?: never;
|
|
@@ -3793,7 +3793,7 @@ export interface paths {
|
|
|
3793
3793
|
};
|
|
3794
3794
|
/**
|
|
3795
3795
|
* Slack OAuth callback
|
|
3796
|
-
* @description Browser return from Slack. The provider redirect does not include the API bearer token. `state` was issued by `getSlackInstallUrl` to a signed-in admin and is single-use. The
|
|
3796
|
+
* @description Browser return from Slack. The provider redirect does not include the API bearer token. `state` was issued by `getSlackInstallUrl` to a signed-in admin and is single-use. Install requests `incoming-webhook` only. The encrypted incoming-webhook URL and the channel Slack returns are stored only when that user is still a workspace admin. Success redirects to `{spa}/workspace/preferences?chat=slack`. Failures redirect to the same page with `slack=error`. The webhook URL is never in the redirect.
|
|
3797
3797
|
*/
|
|
3798
3798
|
get: operations["getSlackOauthCallback"];
|
|
3799
3799
|
put?: never;
|
|
@@ -3813,14 +3813,14 @@ export interface paths {
|
|
|
3813
3813
|
};
|
|
3814
3814
|
/**
|
|
3815
3815
|
* Slack connection status
|
|
3816
|
-
* @description Any workspace member. `{ connected, channelName }`. `
|
|
3816
|
+
* @description Any workspace member. `{ connected, channelName }`. `connected` is true only when a decryptable install webhook is stored. `channelName` is the channel chosen on Slack's install screen (null when not connected). Secrets are never returned.
|
|
3817
3817
|
*/
|
|
3818
3818
|
get: operations["getSlackIntegration"];
|
|
3819
3819
|
put?: never;
|
|
3820
3820
|
post?: never;
|
|
3821
3821
|
/**
|
|
3822
3822
|
* Disconnect Slack
|
|
3823
|
-
* @description Workspace admin only. Removes the bot token and saved channel. Later Message Center delivery does not post to Slack.
|
|
3823
|
+
* @description Workspace admin only. Removes the install webhook, optional bot token, and saved channel. Later Message Center delivery does not post to Slack.
|
|
3824
3824
|
*/
|
|
3825
3825
|
delete: operations["deleteSlackIntegration"];
|
|
3826
3826
|
options?: never;
|
|
@@ -3837,8 +3837,8 @@ export interface paths {
|
|
|
3837
3837
|
};
|
|
3838
3838
|
get?: never;
|
|
3839
3839
|
/**
|
|
3840
|
-
*
|
|
3841
|
-
* @description Workspace admin only. Body `{ channelId }`. Slack
|
|
3840
|
+
* Change Slack channel (requires reinstall)
|
|
3841
|
+
* @description Workspace admin only. Body `{ channelId }`. The notification channel is chosen on Slack's install screen with the incoming webhook; this route does not rewrite channel metadata. When Slack is connected, the API returns `409` with `code` `slack_channel_reinstall_required` — reconnect via `getSlackInstallUrl` to pick a different channel. Malformed `channelId` is `400` `invalid_slack_channel`. Not connected is `409` `slack_not_connected`.
|
|
3842
3842
|
*/
|
|
3843
3843
|
put: operations["putSlackChannel"];
|
|
3844
3844
|
post?: never;
|
|
@@ -7834,6 +7834,8 @@ export interface components {
|
|
|
7834
7834
|
linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
|
|
7835
7835
|
/** @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. */
|
|
7836
7836
|
scanImprovements?: components["schemas"]["ScanImprovementDto"][];
|
|
7837
|
+
/** @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. */
|
|
7838
|
+
blockingRule?: components["schemas"]["ReadinessBlockingRuleDto"] | null;
|
|
7837
7839
|
};
|
|
7838
7840
|
LinkedRolePendingDto: {
|
|
7839
7841
|
/** @description Topology role key, e.g. terraform | gitops | ci_templates | api_contracts. */
|
|
@@ -7914,6 +7916,8 @@ export interface components {
|
|
|
7914
7916
|
linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
|
|
7915
7917
|
/** @description See RepoReadinessScoreDto.scanImprovements. */
|
|
7916
7918
|
scanImprovements?: components["schemas"]["ScanImprovementDto"][];
|
|
7919
|
+
/** @description See RepoReadinessScoreDto.blockingRule. */
|
|
7920
|
+
blockingRule?: components["schemas"]["ReadinessBlockingRuleDto"] | null;
|
|
7917
7921
|
};
|
|
7918
7922
|
AgenticFoundationDashboardSummaryDto: {
|
|
7919
7923
|
repoCount: number;
|
|
@@ -7935,6 +7939,37 @@ export interface components {
|
|
|
7935
7939
|
verificationGapCount?: number;
|
|
7936
7940
|
/** @description Up to 12 repo and reason pairs for verificationGapCount. A repo with both gaps appears twice. Does not change averageOverallScore. */
|
|
7937
7941
|
verificationGaps?: components["schemas"]["AgenticFoundationVerificationGapDto"][];
|
|
7942
|
+
/** @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. */
|
|
7943
|
+
blockedRepoCount: number;
|
|
7944
|
+
/** @description Rule title that blocks the most repos. Null when blockedRepoCount is 0. */
|
|
7945
|
+
topBlockingRuleTitle: string | null;
|
|
7946
|
+
/** @description How many blocked repos share topBlockingRuleTitle. */
|
|
7947
|
+
topBlockingRuleRepoCount: number;
|
|
7948
|
+
fixProof: components["schemas"]["AgenticFoundationFixProofDto"];
|
|
7949
|
+
};
|
|
7950
|
+
ReadinessBlockingRuleDto: {
|
|
7951
|
+
rubricId: string;
|
|
7952
|
+
title: string;
|
|
7953
|
+
/** @enum {string} */
|
|
7954
|
+
severity: "critical" | "high" | "medium" | "low";
|
|
7955
|
+
};
|
|
7956
|
+
AgenticFoundationFixProofDto: {
|
|
7957
|
+
windowDays: number;
|
|
7958
|
+
/** @description Rounded percent of terminal fixes in the window that merged (merged / merged + failed). Null when there is no terminal fix. */
|
|
7959
|
+
mergeRatePercent: number | null;
|
|
7960
|
+
/** @description Median days from created_at to merge. Null when nothing merged in the window. */
|
|
7961
|
+
medianDaysToMerge: number | null;
|
|
7962
|
+
/** @description Merged fixes in the window whose next scan marked the criterion met. */
|
|
7963
|
+
clearedCount: number;
|
|
7964
|
+
rows: components["schemas"]["AgenticFoundationFixProofRowDto"][];
|
|
7965
|
+
};
|
|
7966
|
+
AgenticFoundationFixProofRowDto: {
|
|
7967
|
+
repoName: string;
|
|
7968
|
+
ruleTitle: string;
|
|
7969
|
+
scoreBefore: number | null;
|
|
7970
|
+
scoreAfter: number | null;
|
|
7971
|
+
/** @description True when the first succeeded scan after the merge marked the criterion met. Null when that scan has not run yet. */
|
|
7972
|
+
cleared: boolean | null;
|
|
7938
7973
|
};
|
|
7939
7974
|
AgenticFoundationVerificationGapDto: {
|
|
7940
7975
|
repoName: string;
|
|
@@ -8353,12 +8388,13 @@ export interface components {
|
|
|
8353
8388
|
teams: components["schemas"]["NotificationChatChannelsDto"];
|
|
8354
8389
|
};
|
|
8355
8390
|
SlackInstallUrlDto: {
|
|
8356
|
-
/** @description Slack OAuth authorize URL
|
|
8391
|
+
/** @description Slack OAuth authorize URL (`incoming-webhook` scope). Secrets are not included. */
|
|
8357
8392
|
url: string;
|
|
8358
8393
|
};
|
|
8359
8394
|
SlackIntegrationStatusDto: {
|
|
8395
|
+
/** @description True only when a decryptable install webhook URL is stored for this workspace. */
|
|
8360
8396
|
connected: boolean;
|
|
8361
|
-
/** @description
|
|
8397
|
+
/** @description Channel name returned by Slack at install time. Null when not connected. */
|
|
8362
8398
|
channelName: string | null;
|
|
8363
8399
|
};
|
|
8364
8400
|
SlackChannelBodyDto: {
|
|
@@ -10799,7 +10835,7 @@ export interface components {
|
|
|
10799
10835
|
/** @description Sort direction. */
|
|
10800
10836
|
PaginationOrder: "asc" | "desc";
|
|
10801
10837
|
/** @description Allowlisted repository sort field. */
|
|
10802
|
-
ReadinessRepoSort: "repoName" | "overallScore" | "lastAnalyzed" | "language";
|
|
10838
|
+
ReadinessRepoSort: "repoName" | "overallScore" | "lastAnalyzed" | "language" | "blockingRule";
|
|
10803
10839
|
/** @description Allowlisted Code Insights repo sort field. */
|
|
10804
10840
|
CodeInsightsRepoSort: "repoName" | "locTotal" | "ccAvg" | "dupPct" | "lastMeasuredAt";
|
|
10805
10841
|
/** @description Case-insensitive substring filter on repo name / provider slug. */
|
|
@@ -11110,6 +11146,9 @@ export type LinkedRolePendingDto = components['schemas']['LinkedRolePendingDto']
|
|
|
11110
11146
|
export type LinkedRoleAssessmentDto = components['schemas']['LinkedRoleAssessmentDto'];
|
|
11111
11147
|
export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
|
|
11112
11148
|
export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
|
|
11149
|
+
export type ReadinessBlockingRuleDto = components['schemas']['ReadinessBlockingRuleDto'];
|
|
11150
|
+
export type AgenticFoundationFixProofDto = components['schemas']['AgenticFoundationFixProofDto'];
|
|
11151
|
+
export type AgenticFoundationFixProofRowDto = components['schemas']['AgenticFoundationFixProofRowDto'];
|
|
11113
11152
|
export type AgenticFoundationVerificationGapDto = components['schemas']['AgenticFoundationVerificationGapDto'];
|
|
11114
11153
|
export type PageMetaDto = components['schemas']['PageMetaDto'];
|
|
11115
11154
|
export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];
|
|
@@ -21396,7 +21435,7 @@ export interface operations {
|
|
|
21396
21435
|
};
|
|
21397
21436
|
};
|
|
21398
21437
|
responses: {
|
|
21399
|
-
/** @description
|
|
21438
|
+
/** @description Not returned. The channel is chosen on Slack's install screen; when connected the API responds with `409` `slack_channel_reinstall_required`. */
|
|
21400
21439
|
200: {
|
|
21401
21440
|
headers: {
|
|
21402
21441
|
[name: string]: unknown;
|
|
@@ -21405,7 +21444,7 @@ export interface operations {
|
|
|
21405
21444
|
"application/json": components["schemas"]["SlackIntegrationStatusDto"];
|
|
21406
21445
|
};
|
|
21407
21446
|
};
|
|
21408
|
-
/** @description channelId is missing
|
|
21447
|
+
/** @description channelId is missing or malformed */
|
|
21409
21448
|
400: {
|
|
21410
21449
|
headers: {
|
|
21411
21450
|
[name: string]: unknown;
|
|
@@ -21413,7 +21452,7 @@ export interface operations {
|
|
|
21413
21452
|
content: {
|
|
21414
21453
|
/**
|
|
21415
21454
|
* @example {
|
|
21416
|
-
* "error": "
|
|
21455
|
+
* "error": "channelId is required",
|
|
21417
21456
|
* "code": "invalid_slack_channel"
|
|
21418
21457
|
* }
|
|
21419
21458
|
*/
|
|
@@ -21445,33 +21484,12 @@ export interface operations {
|
|
|
21445
21484
|
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21446
21485
|
};
|
|
21447
21486
|
};
|
|
21448
|
-
/** @description Slack is not connected */
|
|
21487
|
+
/** @description Slack is not connected (`slack_not_connected`), or the channel cannot be changed without a new install (`slack_channel_reinstall_required`). */
|
|
21449
21488
|
409: {
|
|
21450
21489
|
headers: {
|
|
21451
21490
|
[name: string]: unknown;
|
|
21452
21491
|
};
|
|
21453
21492
|
content: {
|
|
21454
|
-
/**
|
|
21455
|
-
* @example {
|
|
21456
|
-
* "error": "Slack is not connected",
|
|
21457
|
-
* "code": "slack_not_connected"
|
|
21458
|
-
* }
|
|
21459
|
-
*/
|
|
21460
|
-
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21461
|
-
};
|
|
21462
|
-
};
|
|
21463
|
-
/** @description Slack rejected the lookup */
|
|
21464
|
-
502: {
|
|
21465
|
-
headers: {
|
|
21466
|
-
[name: string]: unknown;
|
|
21467
|
-
};
|
|
21468
|
-
content: {
|
|
21469
|
-
/**
|
|
21470
|
-
* @example {
|
|
21471
|
-
* "error": "Slack did not accept the channel",
|
|
21472
|
-
* "code": "slack_request_failed"
|
|
21473
|
-
* }
|
|
21474
|
-
*/
|
|
21475
21493
|
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
21476
21494
|
};
|
|
21477
21495
|
};
|