@thinkai/tai-api-contract 2.122.0 → 2.124.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.
@@ -1120,7 +1120,7 @@ export interface paths {
1120
1120
  put?: never;
1121
1121
  /**
1122
1122
  * Rebuild SDLC DORA/CI daily rollups for a day range
1123
- * @description Rebuilds DORA/CI daily rollups for this workspace from stored dashboard productivity history for the inclusive `from`/`to` UTC day range (max 90 days). Does not re-pull GitHub. Returns 409 when another rebuild holds the advisory lock.
1123
+ * @description Queues a rebuild of DORA/CI daily rollups for this workspace from stored dashboard productivity history for the inclusive `from`/`to` UTC day range (max 90 days). Does not re-pull GitHub. Returns immediately with `{ ok: true }` while the rebuild runs under an advisory lock; ingest-coverage reports `sdlc_github` as `in_progress` until the lock is released. Returns 409 when another rebuild holds the advisory lock.
1124
1124
  */
1125
1125
  post: operations["rebuildSdlcRollups"];
1126
1126
  delete?: never;
@@ -1649,7 +1649,7 @@ export interface paths {
1649
1649
  put?: never;
1650
1650
  /**
1651
1651
  * Refresh AI tool integration snapshots
1652
- * @description Provider-agnostic refresh. Returns 409 when an advisory-lock refresh is already in progress. On upstream auth/rate/network failures, returns `200` with `{ ok:false, error }` so the SPA can render inline error. Pass `full=true` to force a full re-sync that re-pulls the full history instead of the incremental window, used to backfill historical months. Provider-specific behavior: Claude Enterprise re-pulls six calendar months of daily usage; Claude Team widens its daily-usage window to the configured history depth (`spendHistoryDays`, default 180 days); Cursor resets its spend/model/daily backfill cursors so the full `spendHistoryDays` window re-ingests from the retention floor even when the backfill was already complete. Omitted/false performs a normal incremental refresh. Pass `from` and `to` (UTC `YYYY-MM-DD`) together to re-ingest only that inclusive day range without resetting incremental watermarks; mutually exclusive with `full`. Day-range behavior is provider-specific: all providers re-pull generic daily usage for the window (Cursor does this via the spend-daily path instead of a duplicate top-level poll); Cursor additionally re-ingests spend/model daily for the window without resetting backfill cursors. Claude Enterprise model/product/engagement ingest paths are not day-range scoped and continue to use their normal refresh windows.
1652
+ * @description Provider-agnostic refresh. Queues work for `ai-tool-refresher` and returns immediately with `{ ok: true }` when accepted. Progress is visible via ingest-coverage (`ai.refreshInProgress`) and the provider status endpoint while the on-demand flag (or advisory lock) is held. Returns 409 when an advisory-lock refresh is already in progress. Returns 404 when the provider source is missing. Pass `full=true` to force a full re-sync that re-pulls the full history instead of the incremental window, used to backfill historical months. Provider-specific behavior: Claude Enterprise re-pulls six calendar months of daily usage; Claude Team widens its daily-usage window to the configured history depth (`spendHistoryDays`, default 180 days); Cursor resets its spend/model/daily backfill cursors so the full `spendHistoryDays` window re-ingests from the retention floor even when the backfill was already complete. Omitted/false performs a normal incremental refresh. Pass `from` and `to` (UTC `YYYY-MM-DD`) together to re-ingest only that inclusive day range without resetting incremental watermarks; mutually exclusive with `full`. Day-range behavior is provider-specific: all providers re-pull generic daily usage for the window (Cursor does this via the spend-daily path instead of a duplicate top-level poll); Cursor additionally re-ingests spend/model daily for the window without resetting backfill cursors. Claude Enterprise model/product/engagement ingest paths are not day-range scoped and continue to use their normal refresh windows.
1653
1653
  */
1654
1654
  post: operations["refreshWorkspaceAiTool"];
1655
1655
  delete?: never;
@@ -7619,7 +7619,7 @@ export interface components {
7619
7619
  * @description Type of workspace lifecycle event.
7620
7620
  * @enum {string}
7621
7621
  */
7622
- 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" | "code_insights.design_run_started" | "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.invite_accepted" | "member.invite_rejected" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.zelt.sync_started" | "hris.zelt.sync_completed" | "hris.zelt.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" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "integrations.code_intelligence.settings_changed" | "integrations.code_intelligence.execution_key.added" | "integrations.code_intelligence.execution_key.updated" | "integrations.code_intelligence.execution_key.removed" | "integrations.code_intelligence.execution_key.check_failed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped" | "productivity.ingest.repo_skipped" | "productivity.ingest.coverage_gap_detected" | "integrations.newrelic.added" | "integrations.newrelic.removed" | "integrations.newrelic.sync_completed" | "integrations.newrelic.sync_failed" | "integrations.prometheus.added" | "integrations.prometheus.removed" | "integrations.prometheus.sync_completed" | "integrations.prometheus.sync_failed" | "integrations.grafana.added" | "integrations.grafana.removed" | "integrations.grafana.sync_completed" | "integrations.grafana.sync_failed" | "integrations.zelt.added" | "integrations.zelt.removed";
7622
+ 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" | "code_insights.design_run_started" | "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.invite_accepted" | "member.invite_rejected" | "member.role_changed" | "member.removed" | "hris.personio.sync_started" | "hris.personio.sync_completed" | "hris.personio.sync_failed" | "hris.zenhr.sync_started" | "hris.zenhr.sync_completed" | "hris.zenhr.sync_failed" | "hris.zelt.sync_started" | "hris.zelt.sync_completed" | "hris.zelt.sync_failed" | "hris.hibob.sync_started" | "hris.hibob.sync_completed" | "hris.hibob.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" | "integrations.claude.analytics_key.added" | "integrations.claude.analytics_key.updated" | "integrations.claude.analytics_key.removed" | "integrations.code_intelligence.settings_changed" | "integrations.code_intelligence.execution_key.added" | "integrations.code_intelligence.execution_key.updated" | "integrations.code_intelligence.execution_key.removed" | "integrations.code_intelligence.execution_key.check_failed" | "readiness.scan_precheck_failed" | "productivity.ingest.completed" | "productivity.ingest.failed" | "productivity.ingest.skipped" | "productivity.ingest.repo_skipped" | "productivity.ingest.coverage_gap_detected" | "integrations.newrelic.added" | "integrations.newrelic.removed" | "integrations.newrelic.sync_completed" | "integrations.newrelic.sync_failed" | "integrations.prometheus.added" | "integrations.prometheus.removed" | "integrations.prometheus.sync_completed" | "integrations.prometheus.sync_failed" | "integrations.grafana.added" | "integrations.grafana.removed" | "integrations.grafana.sync_completed" | "integrations.grafana.sync_failed" | "integrations.zelt.added" | "integrations.zelt.removed";
7623
7623
  ActivityLogActorDto: {
7624
7624
  /** Format: uuid */
7625
7625
  userId: string;
@@ -13037,7 +13037,7 @@ export interface operations {
13037
13037
  };
13038
13038
  requestBody?: never;
13039
13039
  responses: {
13040
- /** @description Rebuild completed */
13040
+ /** @description Rebuild accepted and running asynchronously */
13041
13041
  200: {
13042
13042
  headers: {
13043
13043
  [name: string]: unknown;
@@ -13045,14 +13045,14 @@ export interface operations {
13045
13045
  content: {
13046
13046
  /**
13047
13047
  * @example {
13048
- * "ok": true,
13049
- * "rollupRows": 42
13048
+ * "ok": true
13050
13049
  * }
13051
13050
  */
13052
13051
  "application/json": {
13053
13052
  /** @enum {boolean} */
13054
13053
  ok: true;
13055
- rollupRows: number;
13054
+ /** @description Optional. Omitted when the rebuild is queued asynchronously (current behavior). */
13055
+ rollupRows?: number;
13056
13056
  };
13057
13057
  };
13058
13058
  };
@@ -14540,7 +14540,7 @@ export interface operations {
14540
14540
  };
14541
14541
  requestBody?: never;
14542
14542
  responses: {
14543
- /** @description Refresh result */
14543
+ /** @description Refresh accepted and queued for `ai-tool-refresher`. Upstream auth/rate/network failures are reported later via refresh status / ingest-coverage, not on this response. */
14544
14544
  200: {
14545
14545
  headers: {
14546
14546
  [name: string]: unknown;
@@ -14549,7 +14549,7 @@ export interface operations {
14549
14549
  "application/json": components["schemas"]["AiToolRefreshResponseDto"];
14550
14550
  };
14551
14551
  };
14552
- /** @description Invalid request — day-range validation failed. Stable `error` codes: `invalid_day_range` (missing pair, bad calendar date, or from > to) and `full_and_day_range_conflict` (`full` combined with `from`/`to`). */
14552
+ /** @description Invalid request. Stable `error` codes: `invalid_day_range` (missing pair, bad calendar date, or from > to), `full_and_day_range_conflict` (`full` combined with `from`/`to`), and `invalid_provider` (path provider is not a supported AI-tool integration id). */
14553
14553
  400: {
14554
14554
  headers: {
14555
14555
  [name: string]: unknown;
@@ -14575,7 +14575,7 @@ export interface operations {
14575
14575
  "application/json": components["schemas"]["AiToolRefreshResponseDto"];
14576
14576
  };
14577
14577
  };
14578
- /** @description Refresh already in progress */
14578
+ /** @description Refresh already in progress — advisory lock held, or an on-demand refresh is already queued for this workspace/provider. */
14579
14579
  409: {
14580
14580
  headers: {
14581
14581
  [name: string]: unknown;