@thinkai/tai-api-contract 2.34.0-pr.731.7f225ca0 → 2.34.0-pr.731.82a1426a
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 +95 -8
- package/dist/generated/openapi.d.ts.map +1 -1
- package/openapi/openapi.yaml +129 -11
- package/package.json +1 -1
- package/src/generated/openapi.ts +95 -8
|
@@ -1214,7 +1214,7 @@ export interface paths {
|
|
|
1214
1214
|
};
|
|
1215
1215
|
/**
|
|
1216
1216
|
* Export workspace activity log as CSV
|
|
1217
|
-
* @description Export the workspace activity log as an RFC 4180 CSV file (one row per event). Accepts the same filters as `GET /workspaces/{workspaceId}/activity` (`eventType`, `eventCategory`, `eventSubcategory`, `productArea`, `actorUserId`, `since`, `until`, `search`, `sort`, `order`); `limit`/`offset` are ignored — the export returns up to 50000 matching rows within the sort. Columns: occurredAt, eventType, eventCategory, actorType, actorName, actorEmail,
|
|
1217
|
+
* @description Export the workspace activity log as an RFC 4180 CSV file (one row per event). Accepts the same filters as `GET /workspaces/{workspaceId}/activity` (`eventType`, `eventCategory`, `eventSubcategory`, `productArea`, `actorUserId`, `since`, `until`, `search`, `sort`, `order`); `limit`/`offset` are ignored — the export returns up to 50000 matching rows within the sort. Columns: occurredAt, eventType, eventCategory, actorType, actorName, actorEmail, repoName, integrationType, metadata. Opaque internal identifiers (actorUserId, repoId, integrationId, fixRequestId, issueId, readinessRunId) are omitted — the human-readable equivalents are already present and the IDs carry no value in a user-facing export. The response sets `Content-Disposition: attachment` with a `.csv` filename.
|
|
1218
1218
|
*/
|
|
1219
1219
|
get: operations["exportWorkspaceActivity"];
|
|
1220
1220
|
put?: never;
|
|
@@ -1593,6 +1593,26 @@ export interface paths {
|
|
|
1593
1593
|
patch?: never;
|
|
1594
1594
|
trace?: never;
|
|
1595
1595
|
};
|
|
1596
|
+
"/workspaces/{workspaceId}/repo-eligibility/refresh-languages": {
|
|
1597
|
+
parameters: {
|
|
1598
|
+
query?: never;
|
|
1599
|
+
header?: never;
|
|
1600
|
+
path?: never;
|
|
1601
|
+
cookie?: never;
|
|
1602
|
+
};
|
|
1603
|
+
get?: never;
|
|
1604
|
+
put?: never;
|
|
1605
|
+
/**
|
|
1606
|
+
* Force a language/stack re-detection on the next sync
|
|
1607
|
+
* @description Admin maintenance action: invalidate the cached language/stack freshness marker so the next GitHub repo sync re-fetches `GET /repos/{owner}/{repo}/languages` and recomputes the per-language breakdown and supported stacks. Use after adding a newly-supported language to a repo, or when a repo's stack detection looks stale. Optionally scope to a single repo via `repoSlug` (`owner/name`); omit it to reset every repo in the workspace. Requires workspace admin or platform admin. The refresh itself happens on the next sync (e.g. when the GitHub repo list is loaded with `refresh=true`); the readiness scan also refreshes the breakdown on each successful run.
|
|
1608
|
+
*/
|
|
1609
|
+
post: operations["refreshWorkspaceRepoLanguages"];
|
|
1610
|
+
delete?: never;
|
|
1611
|
+
options?: never;
|
|
1612
|
+
head?: never;
|
|
1613
|
+
patch?: never;
|
|
1614
|
+
trace?: never;
|
|
1615
|
+
};
|
|
1596
1616
|
"/workspaces/{workspaceId}/readiness/cursor-key-usage": {
|
|
1597
1617
|
parameters: {
|
|
1598
1618
|
query?: never;
|
|
@@ -2851,7 +2871,7 @@ export interface components {
|
|
|
2851
2871
|
language: string;
|
|
2852
2872
|
/**
|
|
2853
2873
|
* Format: float
|
|
2854
|
-
* @description Share of total language bytes,
|
|
2874
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153). The extra precision keeps small/near-tied languages distinguishable for a hover tag; render it rounded for compact labels. May not sum to exactly 100 due to rounding.
|
|
2855
2875
|
*/
|
|
2856
2876
|
percent: number;
|
|
2857
2877
|
/** @description True when this language maps to a v1-supported stack; false when the language is not supported. Lets the UI flag exactly which languages are not (fully) supported in a mixed/monorepo. */
|
|
@@ -3392,11 +3412,11 @@ export interface components {
|
|
|
3392
3412
|
*/
|
|
3393
3413
|
archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
|
|
3394
3414
|
/**
|
|
3395
|
-
* @description Whether the repo can be analyzed (#44/#729). Language support no longer makes a repo `ineligible` — a missing v1-supported stack is surfaced via `warnings` and the repo stays analyzable. Null until the first sync/scan computes it.
|
|
3415
|
+
* @description Whether the repo can be analyzed (#44/#729). Language support no longer makes a repo `ineligible` — a missing v1-supported stack is surfaced via `warnings` and the repo stays analyzable. It becomes `ineligible` when the most recent scan hit a hard size/file-count limit (e.g. code-size or file-count exceeded): the repo is then restricted here too so this surface matches the GitHub connect list's size gate after the scan. Null until the first sync/scan computes it.
|
|
3396
3416
|
* @enum {string|null}
|
|
3397
3417
|
*/
|
|
3398
3418
|
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
3399
|
-
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible
|
|
3419
|
+
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. the size / file-count limit message from the last scan). For advisory language notices see `warnings`. */
|
|
3400
3420
|
eligibilityReason?: string | null;
|
|
3401
3421
|
/** @description Non-blocking advisories for an analyzable repo (#729): no v1-supported stack (with the language mix), and hard-limit run outcomes (code size / file count exceeded) carried from the last run. Absent/empty when there are no warnings. */
|
|
3402
3422
|
warnings?: string[] | null;
|
|
@@ -3409,11 +3429,16 @@ export interface components {
|
|
|
3409
3429
|
/** @description Per-language share from GitHub languages (#729), ordered by share descending. Each entry has `supported`/`stack` so the UI can tag which languages are (not) supported. Absent until the repo has been synced with a language resolver. */
|
|
3410
3430
|
languageBreakdown?: {
|
|
3411
3431
|
language: string;
|
|
3412
|
-
/**
|
|
3432
|
+
/**
|
|
3433
|
+
* Format: float
|
|
3434
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153).
|
|
3435
|
+
*/
|
|
3413
3436
|
percent: number;
|
|
3414
3437
|
supported: boolean;
|
|
3415
3438
|
stack?: string | null;
|
|
3416
3439
|
}[] | null;
|
|
3440
|
+
/** @description GitHub-reported repository size in KB (includes git history), refreshed on each readiness scan (#729). Compare against `eligibilityLimits.maxRepoSizeKb` on the list response to show per-repo "size / limit". When the size exceeds the limit the latest scan is recorded as `partial_failed` with `lastRunErrorCode = exceeded_repo_size_limit` and the repo is marked `ineligible`. Null until a scan has populated it. */
|
|
3441
|
+
sizeKb?: number | null;
|
|
3417
3442
|
};
|
|
3418
3443
|
/** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
|
|
3419
3444
|
RepoReadinessScoreDetailDto: {
|
|
@@ -3455,11 +3480,16 @@ export interface components {
|
|
|
3455
3480
|
/** @description Per-language share with `supported`/`stack` tags. See RepoReadinessScoreDto.languageBreakdown. */
|
|
3456
3481
|
languageBreakdown?: {
|
|
3457
3482
|
language: string;
|
|
3458
|
-
/**
|
|
3483
|
+
/**
|
|
3484
|
+
* Format: float
|
|
3485
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153).
|
|
3486
|
+
*/
|
|
3459
3487
|
percent: number;
|
|
3460
3488
|
supported: boolean;
|
|
3461
3489
|
stack?: string | null;
|
|
3462
3490
|
}[] | null;
|
|
3491
|
+
/** @description GitHub-reported repository size in KB, refreshed on each scan. See RepoReadinessScoreDto.sizeKb. */
|
|
3492
|
+
sizeKb?: number | null;
|
|
3463
3493
|
};
|
|
3464
3494
|
AgenticFoundationDashboardSummaryDto: {
|
|
3465
3495
|
repoCount: number;
|
|
@@ -3484,8 +3514,20 @@ export interface components {
|
|
|
3484
3514
|
limit: number;
|
|
3485
3515
|
offset: number;
|
|
3486
3516
|
};
|
|
3517
|
+
/** @description Effective size/code limits enforced by readiness scans (#729). Lets the UI render per-repo "size / limit" (compare each repo's `sizeKb` to `maxRepoSizeKb`) and explain why a repo is `ineligible` due to a hard size/file-count limit. A repo over `maxRepoSizeKb` is skipped on the next scan (recorded `partial_failed` with `exceeded_repo_size_limit`); code-line/file counts are evaluated post-clone via `cloc`. */
|
|
3518
|
+
ReadinessEligibilityLimitsDto: {
|
|
3519
|
+
/** @description Per-repo GitHub size cap in KB (includes git history). 0 = no limit. */
|
|
3520
|
+
maxRepoSizeKb: number;
|
|
3521
|
+
/** @description Max total lines of code (cloc) before a scan is skipped. 0 = no limit. */
|
|
3522
|
+
maxLinesOfCode: number;
|
|
3523
|
+
/** @description Max source file count (cloc) before a scan is skipped. 0 = no limit. */
|
|
3524
|
+
maxFileCount: number;
|
|
3525
|
+
/** @description Max repos that can be eligible per workspace. 0 = no limit. */
|
|
3526
|
+
maxReposPerWorkspace: number;
|
|
3527
|
+
};
|
|
3487
3528
|
ReadinessRepoListDto: components["schemas"]["PageMetaDto"] & {
|
|
3488
3529
|
items: components["schemas"]["RepoReadinessScoreDto"][];
|
|
3530
|
+
eligibilityLimits?: components["schemas"]["ReadinessEligibilityLimitsDto"];
|
|
3489
3531
|
};
|
|
3490
3532
|
/** @description Paginated list of repo readiness scores where each dimension includes criteriaDetails. Used by dimension-slice endpoints (agentic-foundation pillars). */
|
|
3491
3533
|
ReadinessRepoDetailListDto: components["schemas"]["PageMetaDto"] & {
|
|
@@ -3922,7 +3964,7 @@ export interface components {
|
|
|
3922
3964
|
* @description Type of workspace lifecycle event.
|
|
3923
3965
|
* @enum {string}
|
|
3924
3966
|
*/
|
|
3925
|
-
ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped";
|
|
3967
|
+
ActivityLogEventTypeDto: "repo.added" | "repo.removed" | "repo.readded" | "integration.github.added" | "integration.github.updated" | "integration.github.removed" | "integration.github.permissions_changed" | "integration.github.repo_added" | "integration.github.repo_removed" | "fix.requested" | "fix.generating" | "fix.pr_created" | "fix.merged" | "fix.failed" | "readiness.scan_started" | "readiness.scan_completed" | "readiness.scan_failed" | "readiness.scan_partial" | "integrations.agent_execution.provider_changed" | "integrations.repo_eligibility.overrides_changed" | "integrations.repo_eligibility.languages_refresh_requested" | "integrations.cursor.platform_key_enabled" | "integrations.cursor.platform_key_disabled" | "member.invited" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.sync_started" | "hris.sync_completed" | "hris.sync_failed" | "repo.sync_skipped" | "integrations.cursor.execution_key.added" | "integrations.cursor.execution_key.updated" | "integrations.cursor.execution_key.removed" | "integrations.cursor.execution_key.check_failed" | "integrations.cursor.admin_key.added" | "integrations.cursor.admin_key.updated" | "integrations.cursor.admin_key.removed" | "integrations.claude.execution_key.added" | "integrations.claude.execution_key.updated" | "integrations.claude.execution_key.removed" | "integrations.claude.execution_key.check_failed" | "integrations.claude.admin_key.added" | "integrations.claude.admin_key.updated" | "integrations.claude.admin_key.removed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped";
|
|
3926
3968
|
ActivityLogActorDto: {
|
|
3927
3969
|
/** Format: uuid */
|
|
3928
3970
|
userId: string;
|
|
@@ -4349,6 +4391,7 @@ export type RepoReadinessScoreDto = components['schemas']['RepoReadinessScoreDto
|
|
|
4349
4391
|
export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
|
|
4350
4392
|
export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
|
|
4351
4393
|
export type PageMetaDto = components['schemas']['PageMetaDto'];
|
|
4394
|
+
export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];
|
|
4352
4395
|
export type ReadinessRepoListDto = components['schemas']['ReadinessRepoListDto'];
|
|
4353
4396
|
export type ReadinessRepoDetailListDto = components['schemas']['ReadinessRepoDetailListDto'];
|
|
4354
4397
|
export type ReadinessFixListDto = components['schemas']['ReadinessFixListDto'];
|
|
@@ -7500,7 +7543,7 @@ export interface operations {
|
|
|
7500
7543
|
until?: string;
|
|
7501
7544
|
/** @description Filter by event namespace prefix (e.g. "fix", "repo", "integration", "readiness", "config", "member"). */
|
|
7502
7545
|
eventCategory?: string;
|
|
7503
|
-
/** @description Filter by a dotted event-type *subgroup* (#156): a strict prefix of an event type with
|
|
7546
|
+
/** @description Filter by a dotted event-type *subgroup* (#156): a strict prefix of an event type with one or more segments (shorter than the full event type), matching every lifecycle event under it in a single call. Single-segment values (e.g. `fix`, `readiness`, `repo`, `productivity`) overlap with `eventCategory` so the same control can filter at any depth. Example: `integrations.cursor.execution_key` returns `integrations.cursor.execution_key.added`, `.updated`, `.removed`, and `.check_failed`; `integrations.cursor` returns all Cursor key events; `fix` returns all fix lifecycle events. Must be one of the known subcategories or the request is rejected (400). */
|
|
7504
7547
|
eventSubcategory?: string;
|
|
7505
7548
|
/** @description Case-insensitive substring filter applied across repo name, integration type, actor email, and actor display name. */
|
|
7506
7549
|
search?: string;
|
|
@@ -8564,6 +8607,50 @@ export interface operations {
|
|
|
8564
8607
|
};
|
|
8565
8608
|
};
|
|
8566
8609
|
};
|
|
8610
|
+
refreshWorkspaceRepoLanguages: {
|
|
8611
|
+
parameters: {
|
|
8612
|
+
query?: never;
|
|
8613
|
+
header?: never;
|
|
8614
|
+
path: {
|
|
8615
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8616
|
+
};
|
|
8617
|
+
cookie?: never;
|
|
8618
|
+
};
|
|
8619
|
+
requestBody?: {
|
|
8620
|
+
content: {
|
|
8621
|
+
"application/json": {
|
|
8622
|
+
/** @description Optional `owner/name` to scope the refresh to a single repo. Omit to reset all repos. */
|
|
8623
|
+
repoSlug?: string;
|
|
8624
|
+
};
|
|
8625
|
+
};
|
|
8626
|
+
};
|
|
8627
|
+
responses: {
|
|
8628
|
+
/** @description Freshness invalidated; languages will be re-detected on the next sync. */
|
|
8629
|
+
200: {
|
|
8630
|
+
headers: {
|
|
8631
|
+
[name: string]: unknown;
|
|
8632
|
+
};
|
|
8633
|
+
content: {
|
|
8634
|
+
"application/json": {
|
|
8635
|
+
ok: boolean;
|
|
8636
|
+
/** @description Number of repo rows whose language/stack cache was invalidated. */
|
|
8637
|
+
reposReset: number;
|
|
8638
|
+
};
|
|
8639
|
+
};
|
|
8640
|
+
};
|
|
8641
|
+
/** @description Invalid request body */
|
|
8642
|
+
400: {
|
|
8643
|
+
headers: {
|
|
8644
|
+
[name: string]: unknown;
|
|
8645
|
+
};
|
|
8646
|
+
content: {
|
|
8647
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8648
|
+
};
|
|
8649
|
+
};
|
|
8650
|
+
401: components["responses"]["Unauthorized"];
|
|
8651
|
+
403: components["responses"]["Forbidden"];
|
|
8652
|
+
};
|
|
8653
|
+
};
|
|
8567
8654
|
getCursorKeyUsage: {
|
|
8568
8655
|
parameters: {
|
|
8569
8656
|
query?: never;
|