@thinkai/tai-api-contract 2.99.0 → 2.101.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.
@@ -581,6 +581,30 @@ export interface paths {
581
581
  patch?: never;
582
582
  trace?: never;
583
583
  };
584
+ "/workspaces/{workspaceId}/productivity-targets": {
585
+ parameters: {
586
+ query?: never;
587
+ header?: never;
588
+ path?: never;
589
+ cookie?: never;
590
+ };
591
+ /**
592
+ * Get Productivity Insights weekly per-engineer targets
593
+ * @description Returns workspace-wide weekly per-engineer targets for Productivity Insights (Merged PRs, Ship Weight, CI Failures). Empty object `{}` means no targets are set. Member-level read access.
594
+ */
595
+ get: operations["getWorkspaceProductivityTargets"];
596
+ /**
597
+ * Set Productivity Insights weekly per-engineer targets
598
+ * @description Full-replace workspace-wide weekly per-engineer targets for Productivity Insights. Omit a key or send `null` to unset that metric. `PUT {}` clears all three. `0` is a valid CI Failures target (ceiling). Requires workspace **admin** (editors receive `403` with `code: workspace_admin_required`).
599
+ */
600
+ put: operations["putWorkspaceProductivityTargets"];
601
+ post?: never;
602
+ delete?: never;
603
+ options?: never;
604
+ head?: never;
605
+ patch?: never;
606
+ trace?: never;
607
+ };
584
608
  "/workspaces/{workspaceId}/sources": {
585
609
  parameters: {
586
610
  query?: never;
@@ -4253,6 +4277,15 @@ export interface components {
4253
4277
  [key: string]: components["schemas"]["RepoDeliveryOverrideDto"];
4254
4278
  };
4255
4279
  };
4280
+ /** @description Optional weekly per-engineer targets for Productivity Insights. Omitted or null fields mean no target for that metric. Additional properties are rejected. */
4281
+ ProductivityTargetsDto: {
4282
+ /** @description Floor — meet or exceed this many merged PRs per engineer per week. */
4283
+ mergedPrsPerEngineerPerWeek?: number | null;
4284
+ /** @description Floor — meet or exceed this ship weight per engineer per week. */
4285
+ shipWeightPerEngineerPerWeek?: number | null;
4286
+ /** @description Ceiling — stay at or below this many CI failures per engineer per week. `0` is valid. */
4287
+ ciFailuresPerEngineerPerWeek?: number | null;
4288
+ };
4256
4289
  TestConnectionResponseDto: {
4257
4290
  success: boolean;
4258
4291
  /** @description Machine-readable failure code when success=false (e.g. invalid_token, zenhr_sync_in_progress when ZenHR OAuth refresh is contended). */
@@ -8085,10 +8118,10 @@ export interface components {
8085
8118
  /** @enum {string} */
8086
8119
  CodeInsightsFindingSeverity: "critical" | "high" | "medium" | "low";
8087
8120
  /**
8088
- * @description Deterministic categories (`duplication`, `complexity`, `proliferation`, `coverage`) plus LLM semantic detectors (`anemic_domain`, `context_leak`, `tx_boundary`, `error_handling`, `config_cohesion`, `resilience_patterns`).
8121
+ * @description Deterministic categories (`duplication`, `complexity`, `proliferation`, `coverage`, `circular_deps`, `fan_in_hotspot`) plus LLM semantic detectors (`anemic_domain`, `context_leak`, `tx_boundary`, `error_handling`, `config_cohesion`, `resilience_patterns`). Coupling categories are written only by Design risks runs (`source=deterministic` on the design run id).
8089
8122
  * @enum {string}
8090
8123
  */
8091
- CodeInsightsFindingCategory: "duplication" | "complexity" | "proliferation" | "coverage" | "anemic_domain" | "context_leak" | "tx_boundary" | "error_handling" | "config_cohesion" | "resilience_patterns";
8124
+ CodeInsightsFindingCategory: "duplication" | "complexity" | "proliferation" | "coverage" | "anemic_domain" | "context_leak" | "tx_boundary" | "error_handling" | "config_cohesion" | "resilience_patterns" | "circular_deps" | "fan_in_hotspot";
8092
8125
  /**
8093
8126
  * @description `deterministic` = measured Code Insights rules; `llm` = AI-detected semantic findings (separate agent pass; never blended in scoring).
8094
8127
  * @enum {string}
@@ -8425,6 +8458,7 @@ export type WorkspaceConfigDto = components['schemas']['WorkspaceConfigDto'];
8425
8458
  export type DeliveryRoleConfigDto = components['schemas']['DeliveryRoleConfigDto'];
8426
8459
  export type RepoDeliveryOverrideDto = components['schemas']['RepoDeliveryOverrideDto'];
8427
8460
  export type DeliveryTopologyDto = components['schemas']['DeliveryTopologyDto'];
8461
+ export type ProductivityTargetsDto = components['schemas']['ProductivityTargetsDto'];
8428
8462
  export type TestConnectionResponseDto = components['schemas']['TestConnectionResponseDto'];
8429
8463
  export type CursorKeyUsageDto = components['schemas']['CursorKeyUsageDto'];
8430
8464
  export type AiToolSeatDto = components['schemas']['AiToolSeatDto'];
@@ -10424,6 +10458,91 @@ export interface operations {
10424
10458
  };
10425
10459
  };
10426
10460
  };
10461
+ getWorkspaceProductivityTargets: {
10462
+ parameters: {
10463
+ query?: never;
10464
+ header?: never;
10465
+ path: {
10466
+ workspaceId: components["parameters"]["WorkspaceId"];
10467
+ };
10468
+ cookie?: never;
10469
+ };
10470
+ requestBody?: never;
10471
+ responses: {
10472
+ /** @description Current targets (may be empty) */
10473
+ 200: {
10474
+ headers: {
10475
+ [name: string]: unknown;
10476
+ };
10477
+ content: {
10478
+ "application/json": components["schemas"]["ProductivityTargetsDto"];
10479
+ };
10480
+ };
10481
+ 401: components["responses"]["Unauthorized"];
10482
+ 403: components["responses"]["Forbidden"];
10483
+ /** @description Workspace does not exist or malformed workspaceId */
10484
+ 404: {
10485
+ headers: {
10486
+ [name: string]: unknown;
10487
+ };
10488
+ content: {
10489
+ "application/json": components["schemas"]["ErrorMessageDto"];
10490
+ };
10491
+ };
10492
+ };
10493
+ };
10494
+ putWorkspaceProductivityTargets: {
10495
+ parameters: {
10496
+ query?: never;
10497
+ header?: never;
10498
+ path: {
10499
+ workspaceId: components["parameters"]["WorkspaceId"];
10500
+ };
10501
+ cookie?: never;
10502
+ };
10503
+ requestBody: {
10504
+ content: {
10505
+ "application/json": components["schemas"]["ProductivityTargetsDto"];
10506
+ };
10507
+ };
10508
+ responses: {
10509
+ /** @description Targets persisted (or cleared). */
10510
+ 204: {
10511
+ headers: {
10512
+ [name: string]: unknown;
10513
+ };
10514
+ content?: never;
10515
+ };
10516
+ /** @description Invalid payload (unknown keys or out-of-range values) */
10517
+ 400: {
10518
+ headers: {
10519
+ [name: string]: unknown;
10520
+ };
10521
+ content: {
10522
+ "application/json": components["schemas"]["ErrorMessageDto"];
10523
+ };
10524
+ };
10525
+ 401: components["responses"]["Unauthorized"];
10526
+ /** @description Forbidden — workspace admin required */
10527
+ 403: {
10528
+ headers: {
10529
+ [name: string]: unknown;
10530
+ };
10531
+ content: {
10532
+ "application/json": components["schemas"]["ErrorMessageDto"];
10533
+ };
10534
+ };
10535
+ /** @description Workspace does not exist or malformed workspaceId */
10536
+ 404: {
10537
+ headers: {
10538
+ [name: string]: unknown;
10539
+ };
10540
+ content: {
10541
+ "application/json": components["schemas"]["ErrorMessageDto"];
10542
+ };
10543
+ };
10544
+ };
10545
+ };
10427
10546
  putTenantSources: {
10428
10547
  parameters: {
10429
10548
  query?: never;