@thinkai/tai-api-contract 2.33.1-pr.731.7 → 2.34.0-pr.810.2

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.
@@ -1550,30 +1550,6 @@ export interface paths {
1550
1550
  patch?: never;
1551
1551
  trace?: never;
1552
1552
  };
1553
- "/workspaces/{workspaceId}/repo-eligibility": {
1554
- parameters: {
1555
- query?: never;
1556
- header?: never;
1557
- path?: never;
1558
- cookie?: never;
1559
- };
1560
- /**
1561
- * Get repo-sync eligibility gate (defaults + per-workspace overrides)
1562
- * @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.
1563
- */
1564
- get: operations["getWorkspaceRepoEligibility"];
1565
- /**
1566
- * Set per-workspace repo-sync eligibility overrides
1567
- * @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.
1568
- */
1569
- put: operations["putWorkspaceRepoEligibility"];
1570
- post?: never;
1571
- delete?: never;
1572
- options?: never;
1573
- head?: never;
1574
- patch?: never;
1575
- trace?: never;
1576
- };
1577
1553
  "/workspaces/{workspaceId}/readiness/cursor-key-usage": {
1578
1554
  parameters: {
1579
1555
  query?: never;
@@ -1754,6 +1730,24 @@ export interface paths {
1754
1730
  patch?: never;
1755
1731
  trace?: never;
1756
1732
  };
1733
+ "/me/consent": {
1734
+ parameters: {
1735
+ query?: never;
1736
+ header?: never;
1737
+ path?: never;
1738
+ cookie?: never;
1739
+ };
1740
+ /** Get cookie/storage consent for current user */
1741
+ get: operations["getMyConsent"];
1742
+ /** Upsert cookie/storage consent */
1743
+ put: operations["putMyConsent"];
1744
+ post?: never;
1745
+ delete?: never;
1746
+ options?: never;
1747
+ head?: never;
1748
+ patch?: never;
1749
+ trace?: never;
1750
+ };
1757
1751
  "/workspaces/{workspaceId}/org-chart/import": {
1758
1752
  parameters: {
1759
1753
  query?: never;
@@ -2316,7 +2310,12 @@ export interface components {
2316
2310
  /** @description Short label for the week column (MM/DD), aligned with Measure charts. */
2317
2311
  weekLabel?: string;
2318
2312
  mergedPrCount: number;
2313
+ /** @description DORA change failure rate (deployments/incidents), not CI build failures. */
2319
2314
  failRatePercent: number;
2315
+ /** @description GitHub Actions / Checks CI build failure rate for the week bucket (failed runs / (failed + passed) * 100). Zero when GitHub Actions CI is disabled. */
2316
+ ciFailRatePercent?: number;
2317
+ /** @description Count of build.failed events in the week bucket when CI ingest is enabled. */
2318
+ ciBuildFailuresCount?: number;
2320
2319
  /** @description Mean hours from PR creation to first review in this week bucket. */
2321
2320
  avgReviewWaitHours?: number;
2322
2321
  /** @description Mean hours from first review to first approval in this week bucket. */
@@ -2349,6 +2348,8 @@ export interface components {
2349
2348
  scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
2350
2349
  /** Format: date-time */
2351
2350
  generatedAt: string;
2351
+ /** @description True when the workspace has opted in to GitHub Actions CI ingest. */
2352
+ githubActionsCiEnabled?: boolean;
2352
2353
  teams: components["schemas"]["ProductivityInsightsAggregatedTeamRowDto"][];
2353
2354
  };
2354
2355
  ProductivityInsightsMergedPrTrendWeekDto: {
@@ -2393,11 +2394,16 @@ export interface components {
2393
2394
  periodAvgMergedPrs: number;
2394
2395
  /** @description Average change failure rate over the range when available. */
2395
2396
  avgFailRatePercent?: number;
2397
+ /** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
2398
+ avgCiFailRatePercent?: number;
2396
2399
  };
2397
2400
  ProductivityInsightsTeamSummaryDto: {
2398
2401
  totalMergedPrs: number;
2399
2402
  avgMergedPrsPerWeek: number;
2403
+ /** @description Average DORA change failure rate over the range when available. */
2400
2404
  avgFailRatePercent: number;
2405
+ /** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
2406
+ avgCiFailRatePercent?: number;
2401
2407
  headcount: number;
2402
2408
  };
2403
2409
  ProductivityInsightsTeamDetailDto: {
@@ -2424,6 +2430,8 @@ export interface components {
2424
2430
  scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
2425
2431
  /** Format: date-time */
2426
2432
  generatedAt: string;
2433
+ /** @description True when the workspace has opted in to GitHub Actions CI ingest. */
2434
+ githubActionsCiEnabled?: boolean;
2427
2435
  /** @description Present when `teamId` query is omitted — top-ranked teams. */
2428
2436
  items?: components["schemas"]["ProductivityInsightsTeamLeaderItemDto"][];
2429
2437
  /** @description Present when `teamId` query is set — single-team drilldown. */
@@ -2471,11 +2479,16 @@ export interface components {
2471
2479
  totalMergedPrs: number;
2472
2480
  avgMergedPrsPerWeek: number;
2473
2481
  totalAbsenceDays: number;
2482
+ /** @description Average DORA change failure rate over the range when available. */
2474
2483
  avgFailRate: number;
2484
+ /** @description Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
2485
+ avgCiFailRate?: number;
2475
2486
  mergedPrDelta: number;
2476
2487
  avgMergedPrsPerWeekDelta: number;
2477
2488
  totalAbsenceDaysDelta: number;
2478
2489
  avgFailRateDelta: number;
2490
+ /** @description Change in average CI build failure rate vs the prior comparison window. */
2491
+ avgCiFailRateDelta?: number;
2479
2492
  };
2480
2493
  ProductivityInsightsContributorDetailDto: {
2481
2494
  /** Format: uuid */
@@ -2487,6 +2500,8 @@ export interface components {
2487
2500
  scope: components["schemas"]["ProductivityInsightsAggregatedTeamsScopeDto"];
2488
2501
  /** Format: date-time */
2489
2502
  generatedAt: string;
2503
+ /** @description True when the workspace has opted in to GitHub Actions CI ingest. */
2504
+ githubActionsCiEnabled?: boolean;
2490
2505
  contributor: components["schemas"]["ProductivityInsightsContributorProfileDto"];
2491
2506
  weeks: components["schemas"]["ProductivityInsightsContributorActivityWeekDto"][];
2492
2507
  summary: components["schemas"]["ProductivityInsightsContributorActivitySummaryDto"];
@@ -2505,6 +2520,8 @@ export interface components {
2505
2520
  periodAvgMergedPrs: number;
2506
2521
  /** @description Mean weekly change-failure rate when available. */
2507
2522
  avgFailRatePercent?: number;
2523
+ /** @description Mean weekly GitHub Actions CI build failure rate when CI ingest is enabled. */
2524
+ avgCiFailRatePercent?: number;
2508
2525
  };
2509
2526
  ProductivityInsightsNeedsAttentionDto: {
2510
2527
  /** Format: uuid */
@@ -2515,6 +2532,8 @@ export interface components {
2515
2532
  entityType: "teams" | "contributors";
2516
2533
  /** Format: date-time */
2517
2534
  generatedAt: string;
2535
+ /** @description True when GitHub Actions CI ingest is enabled for this workspace. */
2536
+ githubActionsCiEnabled?: boolean;
2518
2537
  items: components["schemas"]["ProductivityInsightsNeedsAttentionItemDto"][];
2519
2538
  };
2520
2539
  AiUsageSpendAggregatedTeamWeekDto: {
@@ -2783,54 +2802,6 @@ export interface components {
2783
2802
  * @description Last push or metadata update from GitHub when available.
2784
2803
  */
2785
2804
  updatedAt?: string | null;
2786
- /** @description True when the repository is archived (read-only on GitHub). */
2787
- archived?: boolean | null;
2788
- /** @description True when the repository is a fork of another repository. */
2789
- fork?: boolean | null;
2790
- /** @description True when the repository is disabled on GitHub. */
2791
- disabled?: boolean | null;
2792
- /** @description Repository size in KB as reported by GitHub. */
2793
- size?: number | null;
2794
- /** @description All reasons this repo was skipped during sync or is ineligible for analysis. Each entry is a human-readable explanation (e.g. "This repo is archived"). Empty or absent means the repo passed all checks. */
2795
- ineligibleReasons?: string[] | null;
2796
- /**
2797
- * @description Language-based eligibility for Agentic-Foundation readiness analysis (issue #44). `ineligible` repos (no supported stack) render read-only/orange in the AF list with no analyze/score/fix actions. Mixed monorepos with a supported secondary stack are `eligible`. Distinct from `ineligibleReasons`, which reflects structural sync gates.
2798
- * @enum {string|null}
2799
- */
2800
- eligibilityStatus?: "eligible" | "ineligible" | null;
2801
- /** @description Human-readable explanation when `eligibilityStatus` is `ineligible` (e.g. "This repository's primary language (Python) is not supported in v1"). */
2802
- eligibilityReason?: string | null;
2803
- /** @description Dominant supported stack (by GitHub language bytes), one of backend_jvm | ios_app | web_spa | backend_go | backend_python. Null for ineligible repos. */
2804
- primaryStack?: string | null;
2805
- /** @description Second supported stack for a multi-stack repo, or null. */
2806
- secondaryStack?: string | null;
2807
- /** @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. */
2808
- supportedStacks?: string[] | null;
2809
- };
2810
- /** @description Resolved repo-sync eligibility gate (defaults or effective). All fields present. */
2811
- RepoEligibilityConfigDto: {
2812
- /** @description Skip archived repos during GitHub repo sync. */
2813
- excludeArchived: boolean;
2814
- /** @description Skip forked repos. Forks are included by default. */
2815
- excludeForks: boolean;
2816
- /** @description Max repo size in KB (GitHub-reported). 0 = no limit. */
2817
- maxRepoSizeKb: number;
2818
- /** @description Max repos materialized per workspace per sync. 0 = no limit. */
2819
- maxReposPerWorkspace: number;
2820
- };
2821
- /** @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. */
2822
- RepoEligibilityOverridesDto: {
2823
- excludeArchived?: boolean | null;
2824
- excludeForks?: boolean | null;
2825
- maxRepoSizeKb?: number | null;
2826
- maxReposPerWorkspace?: number | null;
2827
- };
2828
- WorkspaceRepoEligibilityDto: {
2829
- defaults: components["schemas"]["RepoEligibilityConfigDto"];
2830
- overrides: components["schemas"]["RepoEligibilityOverridesDto"];
2831
- effective: components["schemas"]["RepoEligibilityConfigDto"];
2832
- /** @description True when the caller is a platform admin (may set any value, incl. raising caps). */
2833
- canEditUnrestricted: boolean;
2834
2805
  };
2835
2806
  GithubMissingPermissionDto: {
2836
2807
  /** @description GitHub App permission key (e.g. contents, pull_requests). */
@@ -3229,7 +3200,7 @@ export interface components {
3229
3200
  scorePercent?: number;
3230
3201
  /** @description Per-criterion status counts from the latest successful scan */
3231
3202
  criteriaSummary?: components["schemas"]["ReadinessCriteriaSummaryDto"] | null;
3232
- /** @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
+ /** @description Individual rubric criterion outcomes from the latest successful scan. Always present on the single-repo detail endpoint. When the repo has a succeeded scan but a dimension was not evaluated (e.g. Section I on older runs), the API returns full rubric placeholders with status `blocked`. Empty array only when the repo has no succeeded scan yet. */
3233
3204
  criteriaDetails: components["schemas"]["CriterionDetailDto"][];
3234
3205
  issues: components["schemas"]["ReadinessIssueDto"][];
3235
3206
  };
@@ -3323,19 +3294,6 @@ export interface components {
3323
3294
  * @enum {string|null}
3324
3295
  */
3325
3296
  archivedReason?: "github_removed" | "installation_disconnected" | "installation_replaced" | "superseded" | null;
3326
- /**
3327
- * @description Language-based eligibility for Agentic-Foundation analysis (#44). `ineligible` repos (no v1-supported stack) render read-only/orange in the AF list with no analyze/score/fix actions; the server also rejects analyze requests for them. Null until the first sync/scan computes it.
3328
- * @enum {string|null}
3329
- */
3330
- eligibilityStatus?: "eligible" | "ineligible" | null;
3331
- /** @description Human-readable explanation when `eligibilityStatus` is `ineligible`. */
3332
- eligibilityReason?: string | null;
3333
- /** @description Dominant supported stack — backend_jvm | ios_app | web_spa | backend_go | backend_python. Null when ineligible/uncomputed. */
3334
- primaryStack?: string | null;
3335
- /** @description Second supported stack for a multi-stack repo, or null. */
3336
- secondaryStack?: string | null;
3337
- /** @description All supported stacks detected (ordered, primary first). Empty/null when none. */
3338
- supportedStacks?: string[] | null;
3339
3297
  };
3340
3298
  /** @description Single-repo detail response. Identical to RepoReadinessScoreDto except dimensions use DimensionScoreDetailDto (criteriaDetails required per dimension). */
3341
3299
  RepoReadinessScoreDetailDto: {
@@ -3662,6 +3620,34 @@ export interface components {
3662
3620
  /** @description Temporary backward-compatibility alias (e.g. "Invalid timezone"). */
3663
3621
  legacyError?: string | null;
3664
3622
  };
3623
+ ConsentCategoriesDto: {
3624
+ /** @description Functional storage (preferences, onboarding, UI state). */
3625
+ functional: boolean;
3626
+ /** @description Analytics and product telemetry in the browser. */
3627
+ analytics: boolean;
3628
+ /** @description Advertising and remarketing tags. */
3629
+ marketing: boolean;
3630
+ };
3631
+ PutConsentBodyDto: {
3632
+ /** @description Cookie policy version the user consented to. */
3633
+ policyVersion: string;
3634
+ categories: components["schemas"]["ConsentCategoriesDto"];
3635
+ };
3636
+ ConsentRecordDto: {
3637
+ policyVersion: string;
3638
+ categories: components["schemas"]["ConsentCategoriesDto"];
3639
+ /**
3640
+ * Format: date-time
3641
+ * @description When consent was last recorded (UTC).
3642
+ */
3643
+ recordedAt: string;
3644
+ };
3645
+ ConsentValidationErrorDto: {
3646
+ /** @enum {string} */
3647
+ error: "ValidationError";
3648
+ issues: components["schemas"]["ValidationIssueDto"][];
3649
+ legacyError?: string | null;
3650
+ };
3665
3651
  OrgChartImportBodyDto: {
3666
3652
  /** @description Path in `org-charts` bucket after Supabase upload */
3667
3653
  storagePath: string;
@@ -3797,7 +3783,7 @@ export interface components {
3797
3783
  * @description Type of workspace lifecycle event.
3798
3784
  * @enum {string}
3799
3785
  */
3800
- 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";
3786
+ 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" | "config.cursor.added" | "config.cursor.updated" | "config.cursor.removed" | "config.cursor.platform_key_enabled" | "config.cursor.platform_key_disabled" | "config.claude.added" | "config.claude.updated" | "config.claude.removed" | "config.agent_execution.provider_changed" | "member.invited" | "member.role_changed" | "member.removed";
3801
3787
  ActivityLogActorDto: {
3802
3788
  /** Format: uuid */
3803
3789
  userId: string;
@@ -4168,9 +4154,6 @@ export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyD
4168
4154
  export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
4169
4155
  export type GithubAccountDto = components['schemas']['GithubAccountDto'];
4170
4156
  export type GithubInstalledRepoDto = components['schemas']['GithubInstalledRepoDto'];
4171
- export type RepoEligibilityConfigDto = components['schemas']['RepoEligibilityConfigDto'];
4172
- export type RepoEligibilityOverridesDto = components['schemas']['RepoEligibilityOverridesDto'];
4173
- export type WorkspaceRepoEligibilityDto = components['schemas']['WorkspaceRepoEligibilityDto'];
4174
4157
  export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
4175
4158
  export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
4176
4159
  export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
@@ -4261,6 +4244,10 @@ export type NotificationPreferencesDto = components['schemas']['NotificationPref
4261
4244
  export type PreferencesDto = components['schemas']['PreferencesDto'];
4262
4245
  export type ValidationIssueDto = components['schemas']['ValidationIssueDto'];
4263
4246
  export type PreferencesValidationErrorDto = components['schemas']['PreferencesValidationErrorDto'];
4247
+ export type ConsentCategoriesDto = components['schemas']['ConsentCategoriesDto'];
4248
+ export type PutConsentBodyDto = components['schemas']['PutConsentBodyDto'];
4249
+ export type ConsentRecordDto = components['schemas']['ConsentRecordDto'];
4250
+ export type ConsentValidationErrorDto = components['schemas']['ConsentValidationErrorDto'];
4264
4251
  export type OrgChartImportBodyDto = components['schemas']['OrgChartImportBodyDto'];
4265
4252
  export type YourAiJourneyPrSignalsWeekDto = components['schemas']['YourAiJourneyPrSignalsWeekDto'];
4266
4253
  export type YourAiJourneyPrSignalsDto = components['schemas']['YourAiJourneyPrSignalsDto'];
@@ -7356,10 +7343,6 @@ export interface operations {
7356
7343
  offset?: components["parameters"]["PaginationOffset"];
7357
7344
  /** @description Sort direction. */
7358
7345
  order?: components["parameters"]["PaginationOrder"];
7359
- /** @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. */
7360
- sort?: "when" | "who" | "what" | "why" | "where";
7361
- /** @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. */
7362
- productArea?: "integration" | "agentic_foundation" | "workspace_team" | "productivity" | "all";
7363
7346
  /** @description Filter to a specific event type. */
7364
7347
  eventType?: components["schemas"]["ActivityLogEventTypeDto"];
7365
7348
  /** @description Filter to events performed by a specific user (UUID). */
@@ -8303,80 +8286,6 @@ export interface operations {
8303
8286
  403: components["responses"]["Forbidden"];
8304
8287
  };
8305
8288
  };
8306
- getWorkspaceRepoEligibility: {
8307
- parameters: {
8308
- query?: never;
8309
- header?: never;
8310
- path: {
8311
- workspaceId: components["parameters"]["WorkspaceId"];
8312
- };
8313
- cookie?: never;
8314
- };
8315
- requestBody?: never;
8316
- responses: {
8317
- /** @description Effective repo-eligibility configuration */
8318
- 200: {
8319
- headers: {
8320
- [name: string]: unknown;
8321
- };
8322
- content: {
8323
- "application/json": components["schemas"]["WorkspaceRepoEligibilityDto"];
8324
- };
8325
- };
8326
- 401: components["responses"]["Unauthorized"];
8327
- 403: components["responses"]["Forbidden"];
8328
- };
8329
- };
8330
- putWorkspaceRepoEligibility: {
8331
- parameters: {
8332
- query?: never;
8333
- header?: never;
8334
- path: {
8335
- workspaceId: components["parameters"]["WorkspaceId"];
8336
- };
8337
- cookie?: never;
8338
- };
8339
- requestBody: {
8340
- content: {
8341
- "application/json": {
8342
- overrides: components["schemas"]["RepoEligibilityOverridesDto"];
8343
- };
8344
- };
8345
- };
8346
- responses: {
8347
- /** @description Overrides saved */
8348
- 200: {
8349
- headers: {
8350
- [name: string]: unknown;
8351
- };
8352
- content: {
8353
- "application/json": {
8354
- overrides: components["schemas"]["RepoEligibilityOverridesDto"];
8355
- effective: components["schemas"]["RepoEligibilityConfigDto"];
8356
- };
8357
- };
8358
- };
8359
- /** @description Invalid request body */
8360
- 400: {
8361
- headers: {
8362
- [name: string]: unknown;
8363
- };
8364
- content: {
8365
- "application/json": components["schemas"]["ErrorMessageDto"];
8366
- };
8367
- };
8368
- 401: components["responses"]["Unauthorized"];
8369
- /** @description Forbidden, or a workspace-admin value exceeds a platform limit (`repo_eligibility_bound_exceeded`) */
8370
- 403: {
8371
- headers: {
8372
- [name: string]: unknown;
8373
- };
8374
- content: {
8375
- "application/json": components["schemas"]["ErrorMessageDto"];
8376
- };
8377
- };
8378
- };
8379
- };
8380
8289
  getCursorKeyUsage: {
8381
8290
  parameters: {
8382
8291
  query?: never;
@@ -8766,6 +8675,70 @@ export interface operations {
8766
8675
  401: components["responses"]["Unauthorized"];
8767
8676
  };
8768
8677
  };
8678
+ getMyConsent: {
8679
+ parameters: {
8680
+ query?: never;
8681
+ header?: never;
8682
+ path?: never;
8683
+ cookie?: never;
8684
+ };
8685
+ requestBody?: never;
8686
+ responses: {
8687
+ /** @description Consent record */
8688
+ 200: {
8689
+ headers: {
8690
+ [name: string]: unknown;
8691
+ };
8692
+ content: {
8693
+ "application/json": components["schemas"]["ConsentRecordDto"];
8694
+ };
8695
+ };
8696
+ 401: components["responses"]["Unauthorized"];
8697
+ /** @description No consent record stored yet */
8698
+ 404: {
8699
+ headers: {
8700
+ [name: string]: unknown;
8701
+ };
8702
+ content: {
8703
+ "application/json": components["schemas"]["ErrorMessageDto"];
8704
+ };
8705
+ };
8706
+ };
8707
+ };
8708
+ putMyConsent: {
8709
+ parameters: {
8710
+ query?: never;
8711
+ header?: never;
8712
+ path?: never;
8713
+ cookie?: never;
8714
+ };
8715
+ requestBody: {
8716
+ content: {
8717
+ "application/json": components["schemas"]["PutConsentBodyDto"];
8718
+ };
8719
+ };
8720
+ responses: {
8721
+ /** @description Saved consent record */
8722
+ 200: {
8723
+ headers: {
8724
+ [name: string]: unknown;
8725
+ };
8726
+ content: {
8727
+ "application/json": components["schemas"]["ConsentRecordDto"];
8728
+ };
8729
+ };
8730
+ /** @description Validation failed */
8731
+ 400: {
8732
+ headers: {
8733
+ [name: string]: unknown;
8734
+ };
8735
+ content: {
8736
+ "application/json": components["schemas"]["ConsentValidationErrorDto"];
8737
+ };
8738
+ };
8739
+ 401: components["responses"]["Unauthorized"];
8740
+ };
8741
+ };
8769
8742
  postOrgChartImport: {
8770
8743
  parameters: {
8771
8744
  query?: never;
package/src/index.ts CHANGED
@@ -302,6 +302,10 @@ export interface DashboardProductivityMetricsDto {
302
302
  quality?: {
303
303
  codeReviewHoursPerWeek?: number;
304
304
  buildFailuresPerWeek?: number;
305
+ /** Share of completed CI runs that failed (GitHub Actions / Checks). */
306
+ ciBuildFailRatePercent?: number;
307
+ /** Count of build.failed events in the bucket window. */
308
+ ciBuildFailuresCount?: number;
305
309
  avgTimeToFixBuildHours?: number;
306
310
  testCoveragePercent?: number;
307
311
  escapedBugsCount?: number;
@@ -460,6 +464,10 @@ export interface ProductivityInsightsAggregatedTeamWeekDto {
460
464
  weekLabel?: string;
461
465
  mergedPrCount: number;
462
466
  failRatePercent: number;
467
+ /** GitHub Actions CI build failure rate (failed / (failed + passed) * 100). */
468
+ ciFailRatePercent?: number;
469
+ /** Count of build.failed events in the bucket when CI ingest is enabled. */
470
+ ciBuildFailuresCount?: number;
463
471
  avgReviewWaitHours?: number;
464
472
  avgApprovalHours?: number;
465
473
  avgTimeToMergeHours?: number;
@@ -484,6 +492,8 @@ export interface ProductivityInsightsAggregatedTeamsDto {
484
492
  range: "4w" | "8w" | "q" | "12w" | "16w";
485
493
  scope: ProductivityInsightsAggregatedTeamsScopeDto;
486
494
  generatedAt: string;
495
+ /** True when the workspace has opted in to GitHub Actions CI ingest. */
496
+ githubActionsCiEnabled?: boolean;
487
497
  teams: ProductivityInsightsAggregatedTeamRowDto[];
488
498
  }
489
499
 
@@ -525,6 +535,7 @@ export interface ProductivityInsightsTeamLeaderItemDto {
525
535
  subtitle?: string;
526
536
  periodAvgMergedPrs: number;
527
537
  avgFailRatePercent?: number;
538
+ avgCiFailRatePercent?: number;
528
539
  }
529
540
 
530
541
  /** Period summary for a single-team drilldown. */
@@ -532,6 +543,8 @@ export interface ProductivityInsightsTeamSummaryDto {
532
543
  totalMergedPrs: number;
533
544
  avgMergedPrsPerWeek: number;
534
545
  avgFailRatePercent: number;
546
+ /** Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
547
+ avgCiFailRatePercent?: number;
535
548
  headcount: number;
536
549
  }
537
550
 
@@ -560,6 +573,8 @@ export interface ProductivityInsightsTeamsResponseDto {
560
573
  year?: number;
561
574
  scope: ProductivityInsightsAggregatedTeamsScopeDto;
562
575
  generatedAt: string;
576
+ /** True when the workspace has opted in to GitHub Actions CI ingest. */
577
+ githubActionsCiEnabled?: boolean;
563
578
  /** Top-ranked teams when `teamId` query is omitted. */
564
579
  items?: ProductivityInsightsTeamLeaderItemDto[];
565
580
  /** Single-team drilldown when `teamId` query is set. */
@@ -613,10 +628,14 @@ export interface ProductivityInsightsContributorActivitySummaryDto {
613
628
  avgMergedPrsPerWeek: number;
614
629
  totalAbsenceDays: number;
615
630
  avgFailRate: number;
631
+ /** Average GitHub Actions CI build failure rate over the range when CI ingest is enabled. */
632
+ avgCiFailRate?: number;
616
633
  mergedPrDelta: number;
617
634
  avgMergedPrsPerWeekDelta: number;
618
635
  totalAbsenceDaysDelta: number;
619
636
  avgFailRateDelta: number;
637
+ /** Change in average CI build failure rate vs the prior comparison window. */
638
+ avgCiFailRateDelta?: number;
620
639
  }
621
640
 
622
641
  /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/contributors/:contributorId */
@@ -628,6 +647,8 @@ export interface ProductivityInsightsContributorDetailDto {
628
647
  year?: number;
629
648
  scope: ProductivityInsightsAggregatedTeamsScopeDto;
630
649
  generatedAt: string;
650
+ /** True when the workspace has opted in to GitHub Actions CI ingest. */
651
+ githubActionsCiEnabled?: boolean;
631
652
  contributor: ProductivityInsightsContributorProfileDto;
632
653
  weeks: ProductivityInsightsContributorActivityWeekDto[];
633
654
  summary: ProductivityInsightsContributorActivitySummaryDto;
@@ -642,6 +663,7 @@ export interface ProductivityInsightsNeedsAttentionItemDto {
642
663
  subtitle?: string;
643
664
  periodAvgMergedPrs: number;
644
665
  avgFailRatePercent?: number;
666
+ avgCiFailRatePercent?: number;
645
667
  }
646
668
 
647
669
  /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/needs-attention */
@@ -651,6 +673,7 @@ export interface ProductivityInsightsNeedsAttentionDto {
651
673
  scope: ProductivityInsightsAggregatedTeamsScopeDto;
652
674
  entityType: "teams" | "contributors";
653
675
  generatedAt: string;
676
+ githubActionsCiEnabled?: boolean;
654
677
  items: ProductivityInsightsNeedsAttentionItemDto[];
655
678
  }
656
679