@thinkai/tai-api-contract 2.34.0-pr.810.e54f7dcd → 2.34.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 +394 -28
- package/dist/generated/openapi.d.ts.map +1 -1
- package/dist/index.d.ts +0 -23
- package/dist/index.d.ts.map +1 -1
- package/openapi/openapi.yaml +635 -53
- package/package.json +1 -1
- package/src/generated/openapi.ts +394 -28
- package/src/index.ts +0 -23
|
@@ -1194,7 +1194,7 @@ export interface paths {
|
|
|
1194
1194
|
};
|
|
1195
1195
|
/**
|
|
1196
1196
|
* Workspace activity log (paginated)
|
|
1197
|
-
* @description Paginated, chronological feed of workspace-scoped lifecycle events: repository add/remove/re-add and GitHub integration add/remove. Inactive repos remain visible in this log. Filter by `eventType`, `actorUserId`, or date range (`since`/`until`).
|
|
1197
|
+
* @description Paginated, chronological feed of workspace-scoped lifecycle events: repository add/remove/re-add and GitHub integration add/remove. Inactive repos remain visible in this log. Filter by a single `eventType`, a coarse `eventCategory`/`productArea`, an `eventSubcategory` (a dotted event-type prefix that matches a whole lifecycle subgroup in one call, e.g. `integrations.cursor.execution_key`), `actorUserId`, or date range (`since`/`until`).
|
|
1198
1198
|
*/
|
|
1199
1199
|
get: operations["listWorkspaceActivity"];
|
|
1200
1200
|
put?: never;
|
|
@@ -1205,6 +1205,26 @@ export interface paths {
|
|
|
1205
1205
|
patch?: never;
|
|
1206
1206
|
trace?: never;
|
|
1207
1207
|
};
|
|
1208
|
+
"/workspaces/{workspaceId}/activity/export": {
|
|
1209
|
+
parameters: {
|
|
1210
|
+
query?: never;
|
|
1211
|
+
header?: never;
|
|
1212
|
+
path?: never;
|
|
1213
|
+
cookie?: never;
|
|
1214
|
+
};
|
|
1215
|
+
/**
|
|
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, 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
|
+
*/
|
|
1219
|
+
get: operations["exportWorkspaceActivity"];
|
|
1220
|
+
put?: never;
|
|
1221
|
+
post?: never;
|
|
1222
|
+
delete?: never;
|
|
1223
|
+
options?: never;
|
|
1224
|
+
head?: never;
|
|
1225
|
+
patch?: never;
|
|
1226
|
+
trace?: never;
|
|
1227
|
+
};
|
|
1208
1228
|
"/workspaces/{workspaceId}/readiness/score-history": {
|
|
1209
1229
|
parameters: {
|
|
1210
1230
|
query?: never;
|
|
@@ -1549,6 +1569,50 @@ export interface paths {
|
|
|
1549
1569
|
patch?: never;
|
|
1550
1570
|
trace?: never;
|
|
1551
1571
|
};
|
|
1572
|
+
"/workspaces/{workspaceId}/repo-eligibility": {
|
|
1573
|
+
parameters: {
|
|
1574
|
+
query?: never;
|
|
1575
|
+
header?: never;
|
|
1576
|
+
path?: never;
|
|
1577
|
+
cookie?: never;
|
|
1578
|
+
};
|
|
1579
|
+
/**
|
|
1580
|
+
* Get repo-sync eligibility gate (defaults + per-workspace overrides)
|
|
1581
|
+
* @description Returns the effective repo-sync eligibility gate (archived / fork / size / count) for the workspace: the global `defaults`, any per-workspace `overrides`, the merged `effective` values, and whether the caller can edit without platform-admin (`canEditUnrestricted`). Member-level read access.
|
|
1582
|
+
*/
|
|
1583
|
+
get: operations["getWorkspaceRepoEligibility"];
|
|
1584
|
+
/**
|
|
1585
|
+
* Set per-workspace repo-sync eligibility overrides
|
|
1586
|
+
* @description Set (or clear, with an empty `overrides`) the per-workspace repo-sync eligibility overrides. **Platform admins** may set any value (raise caps, `0` = unlimited, include archived/forks). **Workspace admins** may only make the gate *more restrictive* than the platform defaults (lower caps, exclude archived/forks) — exceeding a platform limit returns `403` (`repo_eligibility_bound_exceeded`). Requires workspace admin or platform admin.
|
|
1587
|
+
*/
|
|
1588
|
+
put: operations["putWorkspaceRepoEligibility"];
|
|
1589
|
+
post?: never;
|
|
1590
|
+
delete?: never;
|
|
1591
|
+
options?: never;
|
|
1592
|
+
head?: never;
|
|
1593
|
+
patch?: never;
|
|
1594
|
+
trace?: never;
|
|
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
|
+
};
|
|
1552
1616
|
"/workspaces/{workspaceId}/readiness/cursor-key-usage": {
|
|
1553
1617
|
parameters: {
|
|
1554
1618
|
query?: never;
|
|
@@ -2309,12 +2373,7 @@ export interface components {
|
|
|
2309
2373
|
/** @description Short label for the week column (MM/DD), aligned with Measure charts. */
|
|
2310
2374
|
weekLabel?: string;
|
|
2311
2375
|
mergedPrCount: number;
|
|
2312
|
-
/** @description DORA change failure rate (deployments/incidents), not CI build failures. */
|
|
2313
2376
|
failRatePercent: number;
|
|
2314
|
-
/** @description GitHub Actions / Checks CI build failure rate for the week bucket (failed runs / (failed + passed) * 100). Zero when GitHub Actions CI is disabled. */
|
|
2315
|
-
ciFailRatePercent?: number;
|
|
2316
|
-
/** @description Count of build.failed events in the week bucket when CI ingest is enabled. */
|
|
2317
|
-
ciBuildFailuresCount?: number;
|
|
2318
2377
|
/** @description Mean hours from PR creation to first review in this week bucket. */
|
|
2319
2378
|
avgReviewWaitHours?: number;
|
|
2320
2379
|
/** @description Mean hours from first review to first approval in this week bucket. */
|
|
@@ -2347,8 +2406,6 @@ export interface components {
|
|
|
2347
2406
|
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2348
2407
|
/** Format: date-time */
|
|
2349
2408
|
generatedAt: string;
|
|
2350
|
-
/** @description True when the workspace has opted in to GitHub Actions CI ingest. */
|
|
2351
|
-
githubActionsCiEnabled?: boolean;
|
|
2352
2409
|
teams: components["schemas"]["ProductivityInsightsAggregatedTeamRowDto"][];
|
|
2353
2410
|
};
|
|
2354
2411
|
ProductivityInsightsMergedPrTrendWeekDto: {
|
|
@@ -2393,16 +2450,11 @@ export interface components {
|
|
|
2393
2450
|
periodAvgMergedPrs: number;
|
|
2394
2451
|
/** @description Average change failure rate over the range when available. */
|
|
2395
2452
|
avgFailRatePercent?: number;
|
|
2396
|
-
/** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
|
|
2397
|
-
avgCiFailRatePercent?: number;
|
|
2398
2453
|
};
|
|
2399
2454
|
ProductivityInsightsTeamSummaryDto: {
|
|
2400
2455
|
totalMergedPrs: number;
|
|
2401
2456
|
avgMergedPrsPerWeek: number;
|
|
2402
|
-
/** @description Average DORA change failure rate over the range when available. */
|
|
2403
2457
|
avgFailRatePercent: number;
|
|
2404
|
-
/** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
|
|
2405
|
-
avgCiFailRatePercent?: number;
|
|
2406
2458
|
headcount: number;
|
|
2407
2459
|
};
|
|
2408
2460
|
ProductivityInsightsTeamDetailDto: {
|
|
@@ -2429,8 +2481,6 @@ export interface components {
|
|
|
2429
2481
|
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2430
2482
|
/** Format: date-time */
|
|
2431
2483
|
generatedAt: string;
|
|
2432
|
-
/** @description True when the workspace has opted in to GitHub Actions CI ingest. */
|
|
2433
|
-
githubActionsCiEnabled?: boolean;
|
|
2434
2484
|
/** @description Present when `teamId` query is omitted — top-ranked teams. */
|
|
2435
2485
|
items?: components["schemas"]["ProductivityInsightsTeamLeaderItemDto"][];
|
|
2436
2486
|
/** @description Present when `teamId` query is set — single-team drilldown. */
|
|
@@ -2478,16 +2528,11 @@ export interface components {
|
|
|
2478
2528
|
totalMergedPrs: number;
|
|
2479
2529
|
avgMergedPrsPerWeek: number;
|
|
2480
2530
|
totalAbsenceDays: number;
|
|
2481
|
-
/** @description Average DORA change failure rate over the range when available. */
|
|
2482
2531
|
avgFailRate: number;
|
|
2483
|
-
/** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
|
|
2484
|
-
avgCiFailRate?: number;
|
|
2485
2532
|
mergedPrDelta: number;
|
|
2486
2533
|
avgMergedPrsPerWeekDelta: number;
|
|
2487
2534
|
totalAbsenceDaysDelta: number;
|
|
2488
2535
|
avgFailRateDelta: number;
|
|
2489
|
-
/** @description Change in average CI build failure rate vs the prior comparison window. */
|
|
2490
|
-
avgCiFailRateDelta?: number;
|
|
2491
2536
|
};
|
|
2492
2537
|
ProductivityInsightsContributorDetailDto: {
|
|
2493
2538
|
/** Format: uuid */
|
|
@@ -2499,8 +2544,6 @@ export interface components {
|
|
|
2499
2544
|
scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
|
|
2500
2545
|
/** Format: date-time */
|
|
2501
2546
|
generatedAt: string;
|
|
2502
|
-
/** @description True when the workspace has opted in to GitHub Actions CI ingest. */
|
|
2503
|
-
githubActionsCiEnabled?: boolean;
|
|
2504
2547
|
contributor: components["schemas"]["ProductivityInsightsContributorProfileDto"];
|
|
2505
2548
|
weeks: components["schemas"]["ProductivityInsightsContributorActivityWeekDto"][];
|
|
2506
2549
|
summary: components["schemas"]["ProductivityInsightsContributorActivitySummaryDto"];
|
|
@@ -2519,8 +2562,6 @@ export interface components {
|
|
|
2519
2562
|
periodAvgMergedPrs: number;
|
|
2520
2563
|
/** @description Mean weekly change-failure rate when available. */
|
|
2521
2564
|
avgFailRatePercent?: number;
|
|
2522
|
-
/** @description Mean weekly GitHub Actions CI build failure rate when CI ingest is enabled. */
|
|
2523
|
-
avgCiFailRatePercent?: number;
|
|
2524
2565
|
};
|
|
2525
2566
|
ProductivityInsightsNeedsAttentionDto: {
|
|
2526
2567
|
/** Format: uuid */
|
|
@@ -2531,8 +2572,6 @@ export interface components {
|
|
|
2531
2572
|
entityType: "teams" | "contributors";
|
|
2532
2573
|
/** Format: date-time */
|
|
2533
2574
|
generatedAt: string;
|
|
2534
|
-
/** @description True when GitHub Actions CI ingest is enabled for this workspace. */
|
|
2535
|
-
githubActionsCiEnabled?: boolean;
|
|
2536
2575
|
items: components["schemas"]["ProductivityInsightsNeedsAttentionItemDto"][];
|
|
2537
2576
|
};
|
|
2538
2577
|
AiUsageSpendAggregatedTeamWeekDto: {
|
|
@@ -2801,6 +2840,83 @@ export interface components {
|
|
|
2801
2840
|
* @description Last push or metadata update from GitHub when available.
|
|
2802
2841
|
*/
|
|
2803
2842
|
updatedAt?: string | null;
|
|
2843
|
+
/** @description True when the repository is archived (read-only on GitHub). */
|
|
2844
|
+
archived?: boolean | null;
|
|
2845
|
+
/** @description True when the repository is a fork of another repository. */
|
|
2846
|
+
fork?: boolean | null;
|
|
2847
|
+
/** @description True when the repository is disabled on GitHub. */
|
|
2848
|
+
disabled?: boolean | null;
|
|
2849
|
+
/** @description Repository size in KB as reported by GitHub. */
|
|
2850
|
+
size?: number | null;
|
|
2851
|
+
/** @description Hard structural reasons this repo cannot be analyzed (archived, disabled, too-large, workspace repo cap). Each entry is a human-readable explanation (e.g. "This repo is archived"). Empty or absent means no hard block. Forks and unsupported-language repos are NOT listed here — they are advisory `warnings` (#729) and remain analyzable. */
|
|
2852
|
+
ineligibleReasons?: string[] | null;
|
|
2853
|
+
/** @description Non-blocking advisories shown alongside an otherwise-analyzable repo (#729). Includes forks ("results reflect the forked code") and repos with no v1-supported stack, where the message embeds the GitHub language mix in percent. Absent/empty when there are no warnings. Unlike `ineligibleReasons`, warnings do NOT disable analyze/score/fix actions. */
|
|
2854
|
+
warnings?: string[] | null;
|
|
2855
|
+
/**
|
|
2856
|
+
* @description Whether the repo can be analyzed (issue #44/#729). `ineligible` only for HARD structural gates (archived, disabled, too-large, workspace repo cap) — such repos render read-only in the AF list. A repo with no supported stack or that is a fork is `eligible` and carries a non-blocking `warnings` entry instead of being blocked.
|
|
2857
|
+
* @enum {string|null}
|
|
2858
|
+
*/
|
|
2859
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
2860
|
+
/** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. "This repo is archived"). For advisory language/fork notices see `warnings`, not this field. */
|
|
2861
|
+
eligibilityReason?: string | null;
|
|
2862
|
+
/** @description Dominant supported stack (by GitHub language bytes), one of backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when no supported stack was detected. */
|
|
2863
|
+
primaryStack?: string | null;
|
|
2864
|
+
/** @description Second supported stack for a multi-stack repo, or null. */
|
|
2865
|
+
secondaryStack?: string | null;
|
|
2866
|
+
/** @description All supported stacks detected for the repo (ordered, primary first). Empty/null when no supported stack is present. Drives multi-stack scanning and the orange mixed-monorepo box in the AF UI. */
|
|
2867
|
+
supportedStacks?: string[] | null;
|
|
2868
|
+
/** @description Per-language share of the repo from GitHub's `GET /repos/{owner}/{repo}/languages` byte counts, ordered by share descending (#729). Powers the "language mix" shown in the unsupported-stack warning. Absent/null until the repo has been synced with a language resolver. */
|
|
2869
|
+
languageBreakdown?: {
|
|
2870
|
+
/** @description GitHub language name (e.g. "TypeScript", "Go"). */
|
|
2871
|
+
language: string;
|
|
2872
|
+
/**
|
|
2873
|
+
* Format: float
|
|
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.
|
|
2875
|
+
*/
|
|
2876
|
+
percent: number;
|
|
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. */
|
|
2878
|
+
supported: boolean;
|
|
2879
|
+
/** @description The supported stack this language maps to (backend_jvm | ios_app | web_spa | backend_go | backend_python), or null when the language is unsupported. */
|
|
2880
|
+
stack?: string | null;
|
|
2881
|
+
}[] | null;
|
|
2882
|
+
};
|
|
2883
|
+
/** @description Resolved repo-sync eligibility gate (defaults or effective). All fields present. */
|
|
2884
|
+
RepoEligibilityConfigDto: {
|
|
2885
|
+
/** @description Skip archived repos during GitHub repo sync. */
|
|
2886
|
+
excludeArchived: boolean;
|
|
2887
|
+
/** @description Skip forked repos. Forks are included by default. */
|
|
2888
|
+
excludeForks: boolean;
|
|
2889
|
+
/** @description Max repo size in KB (GitHub-reported). 0 = no limit. */
|
|
2890
|
+
maxRepoSizeKb: number;
|
|
2891
|
+
/** @description Max repos materialized per workspace per sync. 0 = no limit. */
|
|
2892
|
+
maxReposPerWorkspace: number;
|
|
2893
|
+
};
|
|
2894
|
+
/** @description Per-workspace overrides for the repo-sync eligibility gate. Any field present wins over the global default; omit a field to inherit the default. An empty object clears all overrides. */
|
|
2895
|
+
RepoEligibilityOverridesDto: {
|
|
2896
|
+
excludeArchived?: boolean | null;
|
|
2897
|
+
excludeForks?: boolean | null;
|
|
2898
|
+
maxRepoSizeKb?: number | null;
|
|
2899
|
+
maxReposPerWorkspace?: number | null;
|
|
2900
|
+
};
|
|
2901
|
+
WorkspaceRepoEligibilityDto: {
|
|
2902
|
+
defaults: components["schemas"]["RepoEligibilityConfigDto"];
|
|
2903
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
2904
|
+
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
2905
|
+
/** @description True when the caller is a platform admin (may set any value, incl. raising caps). */
|
|
2906
|
+
canEditUnrestricted: boolean;
|
|
2907
|
+
};
|
|
2908
|
+
/** @description Effective repo-eligibility limits applied to the GitHub repo list, plus the current count of eligible repos. Lets the UI render per-repo "size / limit" (compare each repo's `size` in `GithubInstalledRepoDto` to `maxRepoSizeKb`) and workspace "N / cap" usage (`eligibleRepoCount` / `maxReposPerWorkspace`). */
|
|
2909
|
+
RepoEligibilityLimitsDto: {
|
|
2910
|
+
/** @description Per-repo size cap in KB (GitHub-reported). 0 = no limit. */
|
|
2911
|
+
maxRepoSizeKb: number;
|
|
2912
|
+
/** @description Max repos that can be eligible per workspace. 0 = no limit. */
|
|
2913
|
+
maxReposPerWorkspace: number;
|
|
2914
|
+
/** @description Whether archived repos are treated as a hard block. */
|
|
2915
|
+
excludeArchived: boolean;
|
|
2916
|
+
/** @description Whether forked repos are excluded by the sync gate (forks are a warning, not a block). */
|
|
2917
|
+
excludeForks: boolean;
|
|
2918
|
+
/** @description Repos currently counting as eligible (eligibilityStatus != "ineligible"), i.e. those that count toward `maxReposPerWorkspace`. */
|
|
2919
|
+
eligibleRepoCount: number;
|
|
2804
2920
|
};
|
|
2805
2921
|
GithubMissingPermissionDto: {
|
|
2806
2922
|
/** @description GitHub App permission key (e.g. contents, pull_requests). */
|
|
@@ -2889,6 +3005,8 @@ export interface components {
|
|
|
2889
3005
|
account?: components["schemas"]["GithubAccountDto"] | null;
|
|
2890
3006
|
/** @description Paginated merged installation repositories when `installed` is true. */
|
|
2891
3007
|
repos?: components["schemas"]["GithubInstalledRepoListDto"] | null;
|
|
3008
|
+
/** @description Effective size/count limits and current eligible-repo usage for the repo list. Present when `installed` is true. Pair with each repo's `size` and `eligibilityStatus` to show "size / limit" and "N / cap" in the UI. */
|
|
3009
|
+
eligibilityLimits?: components["schemas"]["RepoEligibilityLimitsDto"] | null;
|
|
2892
3010
|
/**
|
|
2893
3011
|
* Format: uri
|
|
2894
3012
|
* @description User accounts: github.com/settings/installations/<id>. Organizations: github.com/organizations/<login>/settings/installations/<id>.
|
|
@@ -3199,7 +3317,7 @@ export interface components {
|
|
|
3199
3317
|
scorePercent?: number;
|
|
3200
3318
|
/** @description Per-criterion status counts from the latest successful scan */
|
|
3201
3319
|
criteriaSummary?: components["schemas"]["ReadinessCriteriaSummaryDto"] | null;
|
|
3202
|
-
/** @description Individual rubric criterion outcomes from the latest successful scan. Always present on the single-repo detail endpoint
|
|
3320
|
+
/** @description Individual rubric criterion outcomes from the latest successful scan. Always present on the single-repo detail endpoint; empty array when no scan has completed yet for this dimension. */
|
|
3203
3321
|
criteriaDetails: components["schemas"]["CriterionDetailDto"][];
|
|
3204
3322
|
issues: components["schemas"]["ReadinessIssueDto"][];
|
|
3205
3323
|
};
|
|
@@ -3293,6 +3411,34 @@ export interface components {
|
|
|
3293
3411
|
* @enum {string|null}
|
|
3294
3412
|
*/
|
|
3295
3413
|
archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
|
|
3414
|
+
/**
|
|
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.
|
|
3416
|
+
* @enum {string|null}
|
|
3417
|
+
*/
|
|
3418
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
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`. */
|
|
3420
|
+
eligibilityReason?: string | null;
|
|
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. */
|
|
3422
|
+
warnings?: string[] | null;
|
|
3423
|
+
/** @description Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when no supported stack/uncomputed. */
|
|
3424
|
+
primaryStack?: string | null;
|
|
3425
|
+
/** @description Second supported stack for a multi-stack repo, or null. */
|
|
3426
|
+
secondaryStack?: string | null;
|
|
3427
|
+
/** @description All supported stacks detected (ordered, primary first). Empty/null when none. */
|
|
3428
|
+
supportedStacks?: string[] | null;
|
|
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. */
|
|
3430
|
+
languageBreakdown?: {
|
|
3431
|
+
language: string;
|
|
3432
|
+
/**
|
|
3433
|
+
* Format: float
|
|
3434
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153).
|
|
3435
|
+
*/
|
|
3436
|
+
percent: number;
|
|
3437
|
+
supported: boolean;
|
|
3438
|
+
stack?: string | null;
|
|
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;
|
|
3296
3442
|
};
|
|
3297
3443
|
/** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
|
|
3298
3444
|
RepoReadinessScoreDetailDto: {
|
|
@@ -3320,6 +3466,30 @@ export interface components {
|
|
|
3320
3466
|
archivedAt?: string | null;
|
|
3321
3467
|
/** @enum {string|null} */
|
|
3322
3468
|
archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
|
|
3469
|
+
/**
|
|
3470
|
+
* @description See RepoReadinessScoreDto.eligibilityStatus. Language support is advisory (#729) and surfaced via `warnings`.
|
|
3471
|
+
* @enum {string|null}
|
|
3472
|
+
*/
|
|
3473
|
+
eligibilityStatus?: "eligible" | "ineligible" | null;
|
|
3474
|
+
eligibilityReason?: string | null;
|
|
3475
|
+
/** @description Non-blocking advisories (no v1-supported stack, hard-limit run outcomes). See RepoReadinessScoreDto.warnings. */
|
|
3476
|
+
warnings?: string[] | null;
|
|
3477
|
+
primaryStack?: string | null;
|
|
3478
|
+
secondaryStack?: string | null;
|
|
3479
|
+
supportedStacks?: string[] | null;
|
|
3480
|
+
/** @description Per-language share with `supported`/`stack` tags. See RepoReadinessScoreDto.languageBreakdown. */
|
|
3481
|
+
languageBreakdown?: {
|
|
3482
|
+
language: string;
|
|
3483
|
+
/**
|
|
3484
|
+
* Format: float
|
|
3485
|
+
* @description Share of total language bytes, rounded to four decimal places (e.g. 64.2153).
|
|
3486
|
+
*/
|
|
3487
|
+
percent: number;
|
|
3488
|
+
supported: boolean;
|
|
3489
|
+
stack?: string | null;
|
|
3490
|
+
}[] | null;
|
|
3491
|
+
/** @description GitHub-reported repository size in KB, refreshed on each scan. See RepoReadinessScoreDto.sizeKb. */
|
|
3492
|
+
sizeKb?: number | null;
|
|
3323
3493
|
};
|
|
3324
3494
|
AgenticFoundationDashboardSummaryDto: {
|
|
3325
3495
|
repoCount: number;
|
|
@@ -3344,8 +3514,20 @@ export interface components {
|
|
|
3344
3514
|
limit: number;
|
|
3345
3515
|
offset: number;
|
|
3346
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
|
+
};
|
|
3347
3528
|
ReadinessRepoListDto: components["schemas"]["PageMetaDto"] & {
|
|
3348
3529
|
items: components["schemas"]["RepoReadinessScoreDto"][];
|
|
3530
|
+
eligibilityLimits?: components["schemas"]["ReadinessEligibilityLimitsDto"];
|
|
3349
3531
|
};
|
|
3350
3532
|
/** @description Paginated list of repo readiness scores where each dimension includes criteriaDetails. Used by dimension-slice endpoints (agentic-foundation pillars). */
|
|
3351
3533
|
ReadinessRepoDetailListDto: components["schemas"]["PageMetaDto"] & {
|
|
@@ -3782,7 +3964,7 @@ export interface components {
|
|
|
3782
3964
|
* @description Type of workspace lifecycle event.
|
|
3783
3965
|
* @enum {string}
|
|
3784
3966
|
*/
|
|
3785
|
-
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" | "
|
|
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";
|
|
3786
3968
|
ActivityLogActorDto: {
|
|
3787
3969
|
/** Format: uuid */
|
|
3788
3970
|
userId: string;
|
|
@@ -4153,6 +4335,10 @@ export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyD
|
|
|
4153
4335
|
export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
|
|
4154
4336
|
export type GithubAccountDto = components['schemas']['GithubAccountDto'];
|
|
4155
4337
|
export type GithubInstalledRepoDto = components['schemas']['GithubInstalledRepoDto'];
|
|
4338
|
+
export type RepoEligibilityConfigDto = components['schemas']['RepoEligibilityConfigDto'];
|
|
4339
|
+
export type RepoEligibilityOverridesDto = components['schemas']['RepoEligibilityOverridesDto'];
|
|
4340
|
+
export type WorkspaceRepoEligibilityDto = components['schemas']['WorkspaceRepoEligibilityDto'];
|
|
4341
|
+
export type RepoEligibilityLimitsDto = components['schemas']['RepoEligibilityLimitsDto'];
|
|
4156
4342
|
export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
|
|
4157
4343
|
export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
|
|
4158
4344
|
export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
|
|
@@ -4205,6 +4391,7 @@ export type RepoReadinessScoreDto = components['schemas']['RepoReadinessScoreDto
|
|
|
4205
4391
|
export type RepoReadinessScoreDetailDto = components['schemas']['RepoReadinessScoreDetailDto'];
|
|
4206
4392
|
export type AgenticFoundationDashboardSummaryDto = components['schemas']['AgenticFoundationDashboardSummaryDto'];
|
|
4207
4393
|
export type PageMetaDto = components['schemas']['PageMetaDto'];
|
|
4394
|
+
export type ReadinessEligibilityLimitsDto = components['schemas']['ReadinessEligibilityLimitsDto'];
|
|
4208
4395
|
export type ReadinessRepoListDto = components['schemas']['ReadinessRepoListDto'];
|
|
4209
4396
|
export type ReadinessRepoDetailListDto = components['schemas']['ReadinessRepoDetailListDto'];
|
|
4210
4397
|
export type ReadinessFixListDto = components['schemas']['ReadinessFixListDto'];
|
|
@@ -7342,6 +7529,10 @@ export interface operations {
|
|
|
7342
7529
|
offset?: components["parameters"]["PaginationOffset"];
|
|
7343
7530
|
/** @description Sort direction. */
|
|
7344
7531
|
order?: components["parameters"]["PaginationOrder"];
|
|
7532
|
+
/** @description Server-side sort column (the activity "5 W's"). Combined with `order` (asc/desc). Defaults to `when` (occurredAt). `occurredAt`/`id` is always the tiebreaker. */
|
|
7533
|
+
sort?: "when" | "who" | "what" | "why" | "where";
|
|
7534
|
+
/** @description Coarse product-area grouping filter (#156). `integration` = GitHub + AI-tool key events; `agentic_foundation` = repos, readiness scans, fixes; `workspace_team` = members + HRIS; `productivity` = productivity ingest lifecycle events. Omit (or pass `all`) for every area. */
|
|
7535
|
+
productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
|
|
7345
7536
|
/** @description Filter to a specific event type. */
|
|
7346
7537
|
eventType?: components["schemas"]["ActivityLogEventTypeDto"];
|
|
7347
7538
|
/** @description Filter to events performed by a specific user (UUID). */
|
|
@@ -7352,6 +7543,8 @@ export interface operations {
|
|
|
7352
7543
|
until?: string;
|
|
7353
7544
|
/** @description Filter by event namespace prefix (e.g. "fix", "repo", "integration", "readiness", "config", "member"). */
|
|
7354
7545
|
eventCategory?: string;
|
|
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). */
|
|
7547
|
+
eventSubcategory?: string;
|
|
7355
7548
|
/** @description Case-insensitive substring filter applied across repo name, integration type, actor email, and actor display name. */
|
|
7356
7549
|
search?: string;
|
|
7357
7550
|
};
|
|
@@ -7394,6 +7587,61 @@ export interface operations {
|
|
|
7394
7587
|
};
|
|
7395
7588
|
};
|
|
7396
7589
|
};
|
|
7590
|
+
exportWorkspaceActivity: {
|
|
7591
|
+
parameters: {
|
|
7592
|
+
query?: {
|
|
7593
|
+
sort?: "when" | "who" | "what" | "why" | "where";
|
|
7594
|
+
/** @description Sort direction. */
|
|
7595
|
+
order?: components["parameters"]["PaginationOrder"];
|
|
7596
|
+
productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
|
|
7597
|
+
eventType?: components["schemas"]["ActivityLogEventTypeDto"];
|
|
7598
|
+
eventCategory?: string;
|
|
7599
|
+
/** @description Dotted event-type subgroup prefix (see the activity list endpoint). */
|
|
7600
|
+
eventSubcategory?: string;
|
|
7601
|
+
actorUserId?: string;
|
|
7602
|
+
since?: string;
|
|
7603
|
+
until?: string;
|
|
7604
|
+
search?: string;
|
|
7605
|
+
};
|
|
7606
|
+
header?: never;
|
|
7607
|
+
path: {
|
|
7608
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
7609
|
+
};
|
|
7610
|
+
cookie?: never;
|
|
7611
|
+
};
|
|
7612
|
+
requestBody?: never;
|
|
7613
|
+
responses: {
|
|
7614
|
+
/** @description CSV file of activity log entries */
|
|
7615
|
+
200: {
|
|
7616
|
+
headers: {
|
|
7617
|
+
[name: string]: unknown;
|
|
7618
|
+
};
|
|
7619
|
+
content: {
|
|
7620
|
+
"text/csv": string;
|
|
7621
|
+
};
|
|
7622
|
+
};
|
|
7623
|
+
/** @description Invalid query parameters */
|
|
7624
|
+
400: {
|
|
7625
|
+
headers: {
|
|
7626
|
+
[name: string]: unknown;
|
|
7627
|
+
};
|
|
7628
|
+
content: {
|
|
7629
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
7630
|
+
};
|
|
7631
|
+
};
|
|
7632
|
+
401: components["responses"]["Unauthorized"];
|
|
7633
|
+
403: components["responses"]["Forbidden"];
|
|
7634
|
+
/** @description Workspace does not exist */
|
|
7635
|
+
404: {
|
|
7636
|
+
headers: {
|
|
7637
|
+
[name: string]: unknown;
|
|
7638
|
+
};
|
|
7639
|
+
content: {
|
|
7640
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
7641
|
+
};
|
|
7642
|
+
};
|
|
7643
|
+
};
|
|
7644
|
+
};
|
|
7397
7645
|
getReadinessScoreHistory: {
|
|
7398
7646
|
parameters: {
|
|
7399
7647
|
query?: {
|
|
@@ -8285,6 +8533,124 @@ export interface operations {
|
|
|
8285
8533
|
403: components["responses"]["Forbidden"];
|
|
8286
8534
|
};
|
|
8287
8535
|
};
|
|
8536
|
+
getWorkspaceRepoEligibility: {
|
|
8537
|
+
parameters: {
|
|
8538
|
+
query?: never;
|
|
8539
|
+
header?: never;
|
|
8540
|
+
path: {
|
|
8541
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8542
|
+
};
|
|
8543
|
+
cookie?: never;
|
|
8544
|
+
};
|
|
8545
|
+
requestBody?: never;
|
|
8546
|
+
responses: {
|
|
8547
|
+
/** @description Effective repo-eligibility configuration */
|
|
8548
|
+
200: {
|
|
8549
|
+
headers: {
|
|
8550
|
+
[name: string]: unknown;
|
|
8551
|
+
};
|
|
8552
|
+
content: {
|
|
8553
|
+
"application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
|
|
8554
|
+
};
|
|
8555
|
+
};
|
|
8556
|
+
401: components["responses"]["Unauthorized"];
|
|
8557
|
+
403: components["responses"]["Forbidden"];
|
|
8558
|
+
};
|
|
8559
|
+
};
|
|
8560
|
+
putWorkspaceRepoEligibility: {
|
|
8561
|
+
parameters: {
|
|
8562
|
+
query?: never;
|
|
8563
|
+
header?: never;
|
|
8564
|
+
path: {
|
|
8565
|
+
workspaceId: components["parameters"]["WorkspaceId"];
|
|
8566
|
+
};
|
|
8567
|
+
cookie?: never;
|
|
8568
|
+
};
|
|
8569
|
+
requestBody: {
|
|
8570
|
+
content: {
|
|
8571
|
+
"application/json": {
|
|
8572
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
8573
|
+
};
|
|
8574
|
+
};
|
|
8575
|
+
};
|
|
8576
|
+
responses: {
|
|
8577
|
+
/** @description Overrides saved */
|
|
8578
|
+
200: {
|
|
8579
|
+
headers: {
|
|
8580
|
+
[name: string]: unknown;
|
|
8581
|
+
};
|
|
8582
|
+
content: {
|
|
8583
|
+
"application/json": {
|
|
8584
|
+
overrides: components["schemas"]["RepoEligibilityOverridesDto"];
|
|
8585
|
+
effective: components["schemas"]["RepoEligibilityConfigDto"];
|
|
8586
|
+
};
|
|
8587
|
+
};
|
|
8588
|
+
};
|
|
8589
|
+
/** @description Invalid request body */
|
|
8590
|
+
400: {
|
|
8591
|
+
headers: {
|
|
8592
|
+
[name: string]: unknown;
|
|
8593
|
+
};
|
|
8594
|
+
content: {
|
|
8595
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8596
|
+
};
|
|
8597
|
+
};
|
|
8598
|
+
401: components["responses"]["Unauthorized"];
|
|
8599
|
+
/** @description Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`) */
|
|
8600
|
+
403: {
|
|
8601
|
+
headers: {
|
|
8602
|
+
[name: string]: unknown;
|
|
8603
|
+
};
|
|
8604
|
+
content: {
|
|
8605
|
+
"application/json": components["schemas"]["ErrorMessageDto"];
|
|
8606
|
+
};
|
|
8607
|
+
};
|
|
8608
|
+
};
|
|
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
|
+
};
|
|
8288
8654
|
getCursorKeyUsage: {
|
|
8289
8655
|
parameters: {
|
|
8290
8656
|
query?: never;
|