@thinkai/tai-api-contract 2.167.0 → 2.169.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.
@@ -4659,6 +4659,30 @@ export interface paths {
4659
4659
  patch?: never;
4660
4660
  trace?: never;
4661
4661
  };
4662
+ "/workspaces/{workspaceId}/ingest/productivity/dual-vcs-cutover": {
4663
+ parameters: {
4664
+ query?: never;
4665
+ header?: never;
4666
+ path?: never;
4667
+ cookie?: never;
4668
+ };
4669
+ /**
4670
+ * Get prefer-GitHub dual-VCS cutover
4671
+ * @description Returns `productivity_vcs_github_since` on the primary GitHub App VCS row. When set, Bitbucket productivity drain is eligible alongside GitHub; Bitbucket events with `occurred_at` at or after this instant are dropped (prefer GitHub during a migration transition). Null means Bitbucket stays skipped while a GitHub App installation is connected. Requires workspace membership.
4672
+ */
4673
+ get: operations["getWorkspaceProductivityDualVcsCutover"];
4674
+ put?: never;
4675
+ post?: never;
4676
+ delete?: never;
4677
+ options?: never;
4678
+ head?: never;
4679
+ /**
4680
+ * Set or clear prefer-GitHub dual-VCS cutover
4681
+ * @description Workspace admin (or platform admin) sets `githubSince` (ISO-8601 UTC) or clears it with `null`. Members receive 403.
4682
+ */
4683
+ patch: operations["patchWorkspaceProductivityDualVcsCutover"];
4684
+ trace?: never;
4685
+ };
4662
4686
  "/workspaces/{workspaceId}/ingest-runs": {
4663
4687
  parameters: {
4664
4688
  query?: never;
@@ -4750,6 +4774,8 @@ export interface components {
4750
4774
  email: string;
4751
4775
  /** @enum {string} */
4752
4776
  role: "admin" | "editor" | "viewer";
4777
+ /** @description True when this member is `tai_workspaces.owner_user_id` for the workspace. Workspace owners cannot be removed (`409` `workspace_owner`). Distinct from the Admin role — a workspace may have multiple admins but only one owner. */
4778
+ isOwner: boolean;
4753
4779
  };
4754
4780
  TeamMemberListDto: {
4755
4781
  members: components["schemas"]["TeamMemberDto"][];
@@ -9035,6 +9061,20 @@ export interface components {
9035
9061
  /** @description True when productivity_incremental_requested_at is already set; no second queue stamp. */
9036
9062
  alreadyQueued?: boolean;
9037
9063
  };
9064
+ ProductivityDualVcsCutoverDto: {
9065
+ /**
9066
+ * Format: date-time
9067
+ * @description Prefer-GitHub from this UTC instant. Null clears dual-VCS (Bitbucket skipped when a GitHub App installation is connected).
9068
+ */
9069
+ githubSince: string | null;
9070
+ };
9071
+ ProductivityDualVcsCutoverPatchDto: {
9072
+ /**
9073
+ * Format: date-time
9074
+ * @description ISO-8601 UTC instant when GitHub became the preferred merge target, or null to clear.
9075
+ */
9076
+ githubSince: string | null;
9077
+ };
9038
9078
  /** @description Latest depth scan read from stored activity. `capturePercent` is the minimum existing capture ratio over that scan's repo checks with a GitHub merge count, or null when none qualify. */
9039
9079
  IngestCoverageProductivityDepthScanDto: {
9040
9080
  /** Format: date-time */
@@ -11441,6 +11481,8 @@ export type IngestCoverageLastRunDto = components['schemas']['IngestCoverageLast
11441
11481
  export type IngestCoverageProductivityRepoDto = components['schemas']['IngestCoverageProductivityRepoDto'];
11442
11482
  export type ProductivityRepoRetryResponseDto = components['schemas']['ProductivityRepoRetryResponseDto'];
11443
11483
  export type ProductivityCatchUpResponseDto = components['schemas']['ProductivityCatchUpResponseDto'];
11484
+ export type ProductivityDualVcsCutoverDto = components['schemas']['ProductivityDualVcsCutoverDto'];
11485
+ export type ProductivityDualVcsCutoverPatchDto = components['schemas']['ProductivityDualVcsCutoverPatchDto'];
11444
11486
  export type IngestCoverageProductivityDepthScanDto = components['schemas']['IngestCoverageProductivityDepthScanDto'];
11445
11487
  export type IngestCoverageProductivityWeekReconcileDto = components['schemas']['IngestCoverageProductivityWeekReconcileDto'];
11446
11488
  export type IngestCoverageProductivitySelfHealDto = components['schemas']['IngestCoverageProductivitySelfHealDto'];
@@ -12731,7 +12773,8 @@ export interface operations {
12731
12773
  * "id": "11111111-1111-4111-8111-111111111111",
12732
12774
  * "name": "Alex Admin",
12733
12775
  * "email": "alex@example.com",
12734
- * "role": "admin"
12776
+ * "role": "admin",
12777
+ * "isOwner": true
12735
12778
  * }
12736
12779
  * ]
12737
12780
  * }
@@ -23675,6 +23718,85 @@ export interface operations {
23675
23718
  };
23676
23719
  };
23677
23720
  };
23721
+ getWorkspaceProductivityDualVcsCutover: {
23722
+ parameters: {
23723
+ query?: never;
23724
+ header?: never;
23725
+ path: {
23726
+ workspaceId: components["parameters"]["WorkspaceId"];
23727
+ };
23728
+ cookie?: never;
23729
+ };
23730
+ requestBody?: never;
23731
+ responses: {
23732
+ /** @description Current cutover */
23733
+ 200: {
23734
+ headers: {
23735
+ [name: string]: unknown;
23736
+ };
23737
+ content: {
23738
+ "application/json": components["schemas"]["ProductivityDualVcsCutoverDto"];
23739
+ };
23740
+ };
23741
+ 401: components["responses"]["Unauthorized"];
23742
+ 403: components["responses"]["Forbidden"];
23743
+ /** @description Productivity not connected */
23744
+ 404: {
23745
+ headers: {
23746
+ [name: string]: unknown;
23747
+ };
23748
+ content: {
23749
+ "application/json": components["schemas"]["ErrorMessageDto"];
23750
+ };
23751
+ };
23752
+ };
23753
+ };
23754
+ patchWorkspaceProductivityDualVcsCutover: {
23755
+ parameters: {
23756
+ query?: never;
23757
+ header?: never;
23758
+ path: {
23759
+ workspaceId: components["parameters"]["WorkspaceId"];
23760
+ };
23761
+ cookie?: never;
23762
+ };
23763
+ requestBody: {
23764
+ content: {
23765
+ "application/json": components["schemas"]["ProductivityDualVcsCutoverPatchDto"];
23766
+ };
23767
+ };
23768
+ responses: {
23769
+ /** @description Updated cutover */
23770
+ 200: {
23771
+ headers: {
23772
+ [name: string]: unknown;
23773
+ };
23774
+ content: {
23775
+ "application/json": components["schemas"]["ProductivityDualVcsCutoverDto"];
23776
+ };
23777
+ };
23778
+ /** @description Invalid body or timestamp */
23779
+ 400: {
23780
+ headers: {
23781
+ [name: string]: unknown;
23782
+ };
23783
+ content: {
23784
+ "application/json": components["schemas"]["ErrorMessageDto"];
23785
+ };
23786
+ };
23787
+ 401: components["responses"]["Unauthorized"];
23788
+ 403: components["responses"]["Forbidden"];
23789
+ /** @description Productivity not connected */
23790
+ 404: {
23791
+ headers: {
23792
+ [name: string]: unknown;
23793
+ };
23794
+ content: {
23795
+ "application/json": components["schemas"]["ErrorMessageDto"];
23796
+ };
23797
+ };
23798
+ };
23799
+ };
23678
23800
  getWorkspaceIngestRuns: {
23679
23801
  parameters: {
23680
23802
  query?: {