@thinkai/tai-api-contract 2.5.2 → 2.5.17

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/src/index.ts CHANGED
@@ -424,6 +424,359 @@ export interface DashboardProductivityHistoryDto {
424
424
  }[];
425
425
  }
426
426
 
427
+ /** Applied Measure filters echoed in aggregated-teams responses. */
428
+ export interface ProductivityInsightsAggregatedTeamsScopeDto {
429
+ department: string;
430
+ team: string;
431
+ }
432
+
433
+ /** One weekly bucket in an aggregated team row. */
434
+ export interface ProductivityInsightsAggregatedTeamWeekDto {
435
+ bucketStart: string;
436
+ bucketEnd: string;
437
+ weekLabel?: string;
438
+ mergedPrCount: number;
439
+ failRatePercent: number;
440
+ }
441
+
442
+ /** Per-team rollup for Productivity insights (Aggregated Teams). */
443
+ export interface ProductivityInsightsAggregatedTeamRowDto {
444
+ teamId: string;
445
+ teamName: string;
446
+ headcount: number;
447
+ managerLabel?: string;
448
+ weeks: ProductivityInsightsAggregatedTeamWeekDto[];
449
+ }
450
+
451
+ /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/aggregated-teams */
452
+ export interface ProductivityInsightsAggregatedTeamsDto {
453
+ workspaceId: string;
454
+ range: "4w" | "8w" | "q";
455
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
456
+ generatedAt: string;
457
+ teams: ProductivityInsightsAggregatedTeamRowDto[];
458
+ }
459
+
460
+ /** One weekly bucket in a merged PR trends series. */
461
+ export interface ProductivityInsightsMergedPrTrendWeekDto {
462
+ bucketStart: string;
463
+ bucketEnd: string;
464
+ weekLabel?: string;
465
+ mergedPrCount: number;
466
+ }
467
+
468
+ /** Per-contributor merged PR weekly series. */
469
+ export interface ProductivityInsightsMergedPrContributorRowDto {
470
+ personId: string;
471
+ personName: string;
472
+ teamName?: string;
473
+ weeks: ProductivityInsightsMergedPrTrendWeekDto[];
474
+ }
475
+
476
+ /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/merged-pr-trends */
477
+ export interface ProductivityInsightsMergedPrTrendsDto {
478
+ workspaceId: string;
479
+ range: "4w" | "8w" | "q";
480
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
481
+ generatedAt: string;
482
+ weeks: ProductivityInsightsMergedPrTrendWeekDto[];
483
+ contributors: ProductivityInsightsMergedPrContributorRowDto[];
484
+ }
485
+
486
+ /** One row in the top-teams (leaders) widget. */
487
+ export interface ProductivityInsightsTeamLeaderItemDto {
488
+ rank: number;
489
+ teamId: string;
490
+ teamName: string;
491
+ subtitle?: string;
492
+ periodAvgMergedPrs: number;
493
+ deltaVsPeriodAvgPercent: number;
494
+ avgFailRatePercent?: number;
495
+ }
496
+
497
+ /** Period summary for a single-team drilldown. */
498
+ export interface ProductivityInsightsTeamSummaryDto {
499
+ totalMergedPrs: number;
500
+ avgMergedPrsPerWeek: number;
501
+ avgFailRatePercent: number;
502
+ headcount: number;
503
+ }
504
+
505
+ /** Single-team drilldown payload. */
506
+ export interface ProductivityInsightsTeamDetailDto {
507
+ teamId: string;
508
+ teamName: string;
509
+ headcount: number;
510
+ managerLabel?: string;
511
+ weeks: ProductivityInsightsAggregatedTeamWeekDto[];
512
+ summary: ProductivityInsightsTeamSummaryDto;
513
+ }
514
+
515
+ /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/teams */
516
+ export interface ProductivityInsightsTeamsResponseDto {
517
+ workspaceId: string;
518
+ range: "4w" | "8w" | "q";
519
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
520
+ generatedAt: string;
521
+ /** Top-ranked teams when `teamId` query is omitted. */
522
+ items?: ProductivityInsightsTeamLeaderItemDto[];
523
+ /** Single-team drilldown when `teamId` query is set. */
524
+ team?: ProductivityInsightsTeamDetailDto;
525
+ }
526
+
527
+ /** Org-chart person profile for contributor drilldown. */
528
+ export interface ProductivityInsightsContributorProfileDto {
529
+ id: string;
530
+ name: string;
531
+ title?: string;
532
+ team?: string;
533
+ department?: string;
534
+ }
535
+
536
+ /** One calendar day in contributor activity heatmap. */
537
+ export interface ProductivityInsightsContributorActivityDayDto {
538
+ date: string;
539
+ dayIndex: number;
540
+ mergedPrCount: number;
541
+ mergedPrs: string[];
542
+ absent: boolean;
543
+ absenceType?: string;
544
+ failureSignal: boolean;
545
+ failures: string[];
546
+ }
547
+
548
+ /** One weekly row in contributor activity heatmap. */
549
+ export interface ProductivityInsightsContributorActivityWeekDto {
550
+ label: string;
551
+ bucketStart: string;
552
+ bucketEnd: string;
553
+ days: ProductivityInsightsContributorActivityDayDto[];
554
+ }
555
+
556
+ /** Summary stats for contributor activity drilldown. */
557
+ export interface ProductivityInsightsContributorActivitySummaryDto {
558
+ totalMergedPrs: number;
559
+ avgMergedPrsPerWeek: number;
560
+ totalAbsenceDays: number;
561
+ avgFailRate: number;
562
+ mergedPrDelta: number;
563
+ avgMergedPrsPerWeekDelta: number;
564
+ totalAbsenceDaysDelta: number;
565
+ avgFailRateDelta: number;
566
+ }
567
+
568
+ /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/contributors/:contributorId */
569
+ export interface ProductivityInsightsContributorDetailDto {
570
+ workspaceId: string;
571
+ contributorId: string;
572
+ range: "4w" | "8w" | "q";
573
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
574
+ generatedAt: string;
575
+ contributor: ProductivityInsightsContributorProfileDto;
576
+ weeks: ProductivityInsightsContributorActivityWeekDto[];
577
+ summary: ProductivityInsightsContributorActivitySummaryDto;
578
+ }
579
+
580
+ /** One row in the needs-attention (laggards) widget. */
581
+ export interface ProductivityInsightsNeedsAttentionItemDto {
582
+ rank: number;
583
+ entityId: string;
584
+ entityType: "team" | "contributor";
585
+ name: string;
586
+ subtitle?: string;
587
+ periodAvgMergedPrs: number;
588
+ deltaVsPeriodAvgPercent: number;
589
+ avgFailRatePercent?: number;
590
+ }
591
+
592
+ /** Response for GET /workspaces/:workspaceId/insights/productivity-insights/needs-attention */
593
+ export interface ProductivityInsightsNeedsAttentionDto {
594
+ workspaceId: string;
595
+ range: "4w" | "8w" | "q";
596
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
597
+ entityType: "teams" | "contributors";
598
+ generatedAt: string;
599
+ items: ProductivityInsightsNeedsAttentionItemDto[];
600
+ }
601
+
602
+ /** One weekly bucket in an AI usage & spend aggregated team row. */
603
+ export interface AiUsageSpendAggregatedTeamWeekDto {
604
+ bucketStart: string;
605
+ bucketEnd: string;
606
+ weekLabel?: string;
607
+ tokenCount: number;
608
+ spendCents: number;
609
+ activeUsers: number;
610
+ }
611
+
612
+ /** Per-team AI usage & spend rollup for Measure Aggregated Teams view. */
613
+ export interface AiUsageSpendAggregatedTeamRowDto {
614
+ teamId: string;
615
+ teamName: string;
616
+ headcount: number;
617
+ managerLabel?: string;
618
+ weeks: AiUsageSpendAggregatedTeamWeekDto[];
619
+ }
620
+
621
+ /** Portfolio totals for AI usage & spend KPI strip. */
622
+ export interface AiUsageSpendAggregatedTeamsSummaryDto {
623
+ totalTokenCount: number;
624
+ totalSpendCents: number;
625
+ activeUsers: number;
626
+ activeTools: number;
627
+ totalEngineers: number;
628
+ }
629
+
630
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/aggregated-teams */
631
+ export interface AiUsageSpendAggregatedTeamsDto {
632
+ workspaceId: string;
633
+ range: "4w" | "8w" | "q";
634
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
635
+ generatedAt: string;
636
+ teams: AiUsageSpendAggregatedTeamRowDto[];
637
+ summary: AiUsageSpendAggregatedTeamsSummaryDto;
638
+ }
639
+
640
+ /** Per-contributor AI usage & spend rollup for Measure Individual Contributors view. */
641
+ export interface AiUsageSpendAggregatedContributorRowDto {
642
+ contributorId: string;
643
+ contributorName: string;
644
+ title?: string;
645
+ team?: string;
646
+ department?: string;
647
+ weeks: AiUsageSpendAggregatedTeamWeekDto[];
648
+ }
649
+
650
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/aggregated-contributors */
651
+ export interface AiUsageSpendAggregatedContributorsDto {
652
+ workspaceId: string;
653
+ range: "4w" | "8w" | "q";
654
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
655
+ generatedAt: string;
656
+ contributors: AiUsageSpendAggregatedContributorRowDto[];
657
+ summary: AiUsageSpendAggregatedTeamsSummaryDto;
658
+ }
659
+
660
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/contributor-tool-heatmap */
661
+ export interface AiUsageSpendContributorToolHeatmapDto {
662
+ workspaceId: string;
663
+ range: "4w" | "8w" | "q";
664
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
665
+ generatedAt: string;
666
+ contributors: AiUsageSpendAggregatedContributorRowDto[];
667
+ }
668
+
669
+ /** One card in the AI usage & spend key insights panel. */
670
+ export interface AiUsageSpendKeyInsightItemDto {
671
+ id: string;
672
+ tone: "positive" | "warning" | "neutral";
673
+ text: string;
674
+ }
675
+
676
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/key-insights */
677
+ export interface AiUsageSpendKeyInsightsDto {
678
+ workspaceId: string;
679
+ range: "4w" | "8w" | "q";
680
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
681
+ generatedAt: string;
682
+ items: AiUsageSpendKeyInsightItemDto[];
683
+ }
684
+
685
+ /** Whether AI-assisted code % is from ingest or token heuristics. */
686
+ export type AiAssistedCodeDataQuality = "estimated" | "measured";
687
+
688
+ /** One weekly bucket in the AI-assisted code percentage series. */
689
+ export interface AiUsageSpendAiAssistedCodeWeekDto {
690
+ bucketStart: string;
691
+ bucketEnd: string;
692
+ weekLabel?: string;
693
+ aiAssistedCodePercent: number;
694
+ totalLoc: number;
695
+ aiLoc: number;
696
+ humanLoc: number;
697
+ dataQuality: AiAssistedCodeDataQuality;
698
+ }
699
+
700
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/ai-assisted-code-percentage */
701
+ export interface AiUsageSpendAiAssistedCodePercentageDto {
702
+ workspaceId: string;
703
+ range: "4w" | "8w" | "q";
704
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
705
+ generatedAt: string;
706
+ aiAssistedCodePercent: number;
707
+ dataQuality: AiAssistedCodeDataQuality;
708
+ deltaVsPriorPeriodPercent: number;
709
+ totalLoc: number;
710
+ aiLoc: number;
711
+ humanLoc: number;
712
+ targetMinPercent?: number;
713
+ targetMaxPercent?: number;
714
+ weeks: AiUsageSpendAiAssistedCodeWeekDto[];
715
+ }
716
+
717
+ /** One provider row in AI tool usage/spend rollups. */
718
+ export interface AiUsageSpendAiToolUsageSpendProviderItemDto {
719
+ providerId: string;
720
+ providerName: string;
721
+ tokenCount: number;
722
+ spendCents: number;
723
+ activeUsers: number;
724
+ }
725
+
726
+ /** One model row in AI tool usage/spend rollups. */
727
+ export interface AiUsageSpendAiToolUsageSpendModelItemDto {
728
+ providerId: string;
729
+ providerName: string;
730
+ modelName: string;
731
+ tokenCount: number;
732
+ spendCents: number;
733
+ }
734
+
735
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/ai-tool-usage-spend */
736
+ export interface AiUsageSpendAiToolUsageSpendDto {
737
+ workspaceId: string;
738
+ range: "4w" | "8w" | "q";
739
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
740
+ generatedAt: string;
741
+ totalEngineers: number;
742
+ providers: AiUsageSpendAiToolUsageSpendProviderItemDto[];
743
+ models: AiUsageSpendAiToolUsageSpendModelItemDto[];
744
+ }
745
+
746
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/team-tool-heatmap */
747
+ export interface AiUsageSpendTeamToolHeatmapDto {
748
+ workspaceId: string;
749
+ range: "4w" | "8w" | "q";
750
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
751
+ generatedAt: string;
752
+ teams: AiUsageSpendAggregatedTeamRowDto[];
753
+ }
754
+
755
+ /** One weekly bucket in the ROI / productivity signal panel. */
756
+ export interface AiUsageSpendRoiProductivitySignalWeekDto {
757
+ bucketStart: string;
758
+ bucketEnd: string;
759
+ weekLabel?: string;
760
+ mergedPrCount: number;
761
+ tokenCount: number;
762
+ }
763
+
764
+ /** Response for GET /workspaces/:workspaceId/insights/ai-usage-spend/roi-productivity-signal */
765
+ export interface AiUsageSpendRoiProductivitySignalDto {
766
+ workspaceId: string;
767
+ range: "4w" | "8w" | "q";
768
+ scope: ProductivityInsightsAggregatedTeamsScopeDto;
769
+ generatedAt: string;
770
+ totalMergedPrs: number;
771
+ totalSpendCents: number;
772
+ activeUsers: number;
773
+ totalEngineers: number;
774
+ aiAssistedPrRatio: number;
775
+ prThroughputDeltaPercent: number;
776
+ usageDeltaPercent: number;
777
+ weeks: AiUsageSpendRoiProductivitySignalWeekDto[];
778
+ }
779
+
427
780
  /** Appeal: user contests a misattributed event. Lifecycle: pending → approved | rejected. */
428
781
  export interface AppealDto {
429
782
  id: string;