@thinkai/tai-api-contract 2.118.0 → 2.120.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.
@@ -3923,6 +3923,26 @@ export interface paths {
3923
3923
  patch: operations["patchWorkspaceZenHrBranch"];
3924
3924
  trace?: never;
3925
3925
  };
3926
+ "/workspaces/{workspaceId}/ingest-coverage": {
3927
+ parameters: {
3928
+ query?: never;
3929
+ header?: never;
3930
+ path?: never;
3931
+ cookie?: never;
3932
+ };
3933
+ /**
3934
+ * Ingest / backfill data coverage
3935
+ * @description Read-only snapshot of historical ingest coverage for connected pipelines (productivity GitHub, AI usage/spend per provider, SDLC components, monitoring, HRIS). Aggregates existing watermarks and stored day/week evidence — does not trigger ingest or refresh. Requires workspace membership. Disconnected sources are omitted.
3936
+ */
3937
+ get: operations["getWorkspaceIngestCoverage"];
3938
+ put?: never;
3939
+ post?: never;
3940
+ delete?: never;
3941
+ options?: never;
3942
+ head?: never;
3943
+ patch?: never;
3944
+ trace?: never;
3945
+ };
3926
3946
  "/workspaces/{workspaceId}/hris/status": {
3927
3947
  parameters: {
3928
3948
  query?: never;
@@ -7650,6 +7670,119 @@ export interface components {
7650
7670
  */
7651
7671
  syncedAt: string | null;
7652
7672
  };
7673
+ IngestCoverageGapDto: {
7674
+ /** @description Inclusive gap start (ISO date or UTC Monday week start). */
7675
+ from: string;
7676
+ /** @description Inclusive gap end (ISO date or UTC Monday week start). */
7677
+ to: string;
7678
+ };
7679
+ IngestCoverageLastRunDto: {
7680
+ /** Format: date-time */
7681
+ startedAt?: string | null;
7682
+ /** Format: date-time */
7683
+ completedAt?: string | null;
7684
+ /** Format: int64 */
7685
+ durationMs?: number | null;
7686
+ /** @description Pipeline-specific run mode (e.g. recent, historical, refresh). */
7687
+ mode?: string | null;
7688
+ /** @enum {string|null} */
7689
+ outcome?: "ok" | "failed" | "in_progress" | null;
7690
+ };
7691
+ IngestCoverageProductivityRepoDto: {
7692
+ slug: string;
7693
+ /** @enum {string} */
7694
+ queueStatus: "pending" | "complete" | "failed" | "skipped";
7695
+ weeksWithData?: number | null;
7696
+ earliestWeek?: string | null;
7697
+ latestWeek?: string | null;
7698
+ missingWeeks?: number | null;
7699
+ gaps?: components["schemas"]["IngestCoverageGapDto"][];
7700
+ lastErrorKind?: string | null;
7701
+ };
7702
+ IngestCoverageProductivityDetailDto: {
7703
+ /** @enum {string|null} */
7704
+ phase?: "recent" | "historical" | "complete" | null;
7705
+ historicalWeekStart?: string | null;
7706
+ pendingRepoCount?: number;
7707
+ skippedRepoCount?: number;
7708
+ failedRepoCount?: number;
7709
+ coveragePercent?: number | null;
7710
+ repos?: components["schemas"]["IngestCoverageProductivityRepoDto"][];
7711
+ };
7712
+ IngestCoverageFactFamilyDto: {
7713
+ /** @enum {string} */
7714
+ id: "daily_usage" | "spend_daily" | "model_daily" | "product_daily";
7715
+ expectedDays?: number;
7716
+ daysPresent?: number;
7717
+ ingestedFrom?: string | null;
7718
+ ingestedTo?: string | null;
7719
+ missingDayCount?: number;
7720
+ gaps?: components["schemas"]["IngestCoverageGapDto"][];
7721
+ };
7722
+ IngestCoverageAiDetailDto: {
7723
+ factFamilies?: components["schemas"]["IngestCoverageFactFamilyDto"][];
7724
+ refreshInProgress?: boolean;
7725
+ };
7726
+ IngestCoverageSdlcComponentDto: {
7727
+ /** @enum {string} */
7728
+ id: "rollup" | "security_ingest" | "governance_github" | "governance_auditor" | "financial_ingest" | "cost_refresher";
7729
+ latestBucketDate?: string | null;
7730
+ lookbackDays?: number;
7731
+ mode?: string | null;
7732
+ gaps?: components["schemas"]["IngestCoverageGapDto"][];
7733
+ missingCount?: number | null;
7734
+ /** Format: date-time */
7735
+ lastSuccessAt?: string | null;
7736
+ /** Format: int64 */
7737
+ staleForMs?: number | null;
7738
+ isStale?: boolean;
7739
+ /** @enum {string|null} */
7740
+ staleReason?: "sync_age" | "data_lag" | "both" | null;
7741
+ };
7742
+ IngestCoverageSdlcDetailDto: {
7743
+ components?: components["schemas"]["IngestCoverageSdlcComponentDto"][];
7744
+ };
7745
+ IngestCoverageSyncDetailDto: {
7746
+ provider?: string;
7747
+ /** @enum {string} */
7748
+ syncStatus?: "ok" | "error" | "never";
7749
+ };
7750
+ IngestCoveragePipelineDto: {
7751
+ id: string;
7752
+ /** @enum {string} */
7753
+ kind: "productivity_github" | "ai_usage" | "sdlc_github" | "monitoring" | "hris";
7754
+ provider?: string | null;
7755
+ /** @enum {string} */
7756
+ status: "not_started" | "backfilling" | "incremental" | "complete" | "failed" | "in_progress";
7757
+ targetWindowDays: number;
7758
+ ingestedFrom?: string | null;
7759
+ ingestedTo?: string | null;
7760
+ progressPercent?: number | null;
7761
+ /** Format: date-time */
7762
+ lastSuccessAt?: string | null;
7763
+ /** Format: date-time */
7764
+ lastAttemptAt?: string | null;
7765
+ lastErrorKind?: string | null;
7766
+ lastErrorMessage?: string | null;
7767
+ /** Format: int64 */
7768
+ staleForMs?: number | null;
7769
+ isStale: boolean;
7770
+ dataLagDays?: number | null;
7771
+ /** @enum {string|null} */
7772
+ staleReason?: "sync_age" | "data_lag" | "both" | null;
7773
+ gaps?: components["schemas"]["IngestCoverageGapDto"][];
7774
+ missingCount?: number | null;
7775
+ lastRun?: components["schemas"]["IngestCoverageLastRunDto"];
7776
+ productivity?: components["schemas"]["IngestCoverageProductivityDetailDto"];
7777
+ ai?: components["schemas"]["IngestCoverageAiDetailDto"];
7778
+ sdlc?: components["schemas"]["IngestCoverageSdlcDetailDto"];
7779
+ sync?: components["schemas"]["IngestCoverageSyncDetailDto"];
7780
+ };
7781
+ IngestCoverageDto: {
7782
+ pipelines: components["schemas"]["IngestCoveragePipelineDto"][];
7783
+ /** Format: date-time */
7784
+ generatedAt?: string;
7785
+ };
7653
7786
  HrisSyncStatusDto: {
7654
7787
  /** @description Provider identifier (e.g. 'personio', 'zenhr'). */
7655
7788
  provider: string;
@@ -7932,7 +8065,7 @@ export interface components {
7932
8065
  InsightsResponseMeta: {
7933
8066
  /**
7934
8067
  * Format: date-time
7935
- * @description ISO timestamp when numbers were computed server-side
8068
+ * @description ISO timestamp when numbers were computed server-side. An empty string means the workspace has no successful AI-tool refresh or productivity ingest timestamp yet.
7936
8069
  */
7937
8070
  syncedAt: string;
7938
8071
  /**
@@ -9596,6 +9729,17 @@ export type ActivityLogActorDto = components['schemas']['ActivityLogActorDto'];
9596
9729
  export type ActivityLogEntryDto = components['schemas']['ActivityLogEntryDto'];
9597
9730
  export type WorkspaceAbsenceDto = components['schemas']['WorkspaceAbsenceDto'];
9598
9731
  export type WorkspaceAbsenceListDto = components['schemas']['WorkspaceAbsenceListDto'];
9732
+ export type IngestCoverageGapDto = components['schemas']['IngestCoverageGapDto'];
9733
+ export type IngestCoverageLastRunDto = components['schemas']['IngestCoverageLastRunDto'];
9734
+ export type IngestCoverageProductivityRepoDto = components['schemas']['IngestCoverageProductivityRepoDto'];
9735
+ export type IngestCoverageProductivityDetailDto = components['schemas']['IngestCoverageProductivityDetailDto'];
9736
+ export type IngestCoverageFactFamilyDto = components['schemas']['IngestCoverageFactFamilyDto'];
9737
+ export type IngestCoverageAiDetailDto = components['schemas']['IngestCoverageAiDetailDto'];
9738
+ export type IngestCoverageSdlcComponentDto = components['schemas']['IngestCoverageSdlcComponentDto'];
9739
+ export type IngestCoverageSdlcDetailDto = components['schemas']['IngestCoverageSdlcDetailDto'];
9740
+ export type IngestCoverageSyncDetailDto = components['schemas']['IngestCoverageSyncDetailDto'];
9741
+ export type IngestCoveragePipelineDto = components['schemas']['IngestCoveragePipelineDto'];
9742
+ export type IngestCoverageDto = components['schemas']['IngestCoverageDto'];
9599
9743
  export type HrisSyncStatusDto = components['schemas']['HrisSyncStatusDto'];
9600
9744
  export type HrisSyncStatusListDto = components['schemas']['HrisSyncStatusListDto'];
9601
9745
  export type ZenHrReconnectResultDto = components['schemas']['ZenHrReconnectResultDto'];
@@ -19709,6 +19853,30 @@ export interface operations {
19709
19853
  503: components["responses"]["ZenHrSyncInProgress"];
19710
19854
  };
19711
19855
  };
19856
+ getWorkspaceIngestCoverage: {
19857
+ parameters: {
19858
+ query?: never;
19859
+ header?: never;
19860
+ path: {
19861
+ workspaceId: components["parameters"]["WorkspaceId"];
19862
+ };
19863
+ cookie?: never;
19864
+ };
19865
+ requestBody?: never;
19866
+ responses: {
19867
+ /** @description Ingest coverage for connected pipelines */
19868
+ 200: {
19869
+ headers: {
19870
+ [name: string]: unknown;
19871
+ };
19872
+ content: {
19873
+ "application/json": components["schemas"]["IngestCoverageDto"];
19874
+ };
19875
+ };
19876
+ 401: components["responses"]["Unauthorized"];
19877
+ 403: components["responses"]["Forbidden"];
19878
+ };
19879
+ };
19712
19880
  getHrisSyncStatus: {
19713
19881
  parameters: {
19714
19882
  query?: never;