@thinkai/tai-api-contract 2.4.1 → 2.4.4

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.
@@ -825,7 +825,10 @@ export interface paths {
825
825
  path?: never;
826
826
  cookie?: never;
827
827
  };
828
- /** Readiness dimensions catalog */
828
+ /**
829
+ * Readiness dimensions catalog
830
+ * @description Returns static rubric metadata (id, name, description, maxScore) aligned with the readiness scanner dimensions. Does not run scoring on the request path.
831
+ */
829
832
  get: operations["listReadinessDimensions"];
830
833
  put?: never;
831
834
  post?: never;
@@ -842,10 +845,16 @@ export interface paths {
842
845
  path?: never;
843
846
  cookie?: never;
844
847
  };
845
- /** List fix requests */
848
+ /**
849
+ * List fix requests
850
+ * @description Returns persisted fix-queue rows for the workspace (newest first). Empty array when none exist.
851
+ */
846
852
  get: operations["listReadinessFixes"];
847
853
  put?: never;
848
- /** Enqueue fix for an issue */
854
+ /**
855
+ * Enqueue fix for an issue
856
+ * @description Creates a fix request with `status: queued` when `issueId` belongs to `repoId` in this workspace. Requires workspace editor or admin. Re-posting the same `issueId` and `repoId` returns the existing row (idempotent).
857
+ */
849
858
  post: operations["postReadinessFix"];
850
859
  delete?: never;
851
860
  options?: never;
@@ -1022,7 +1031,10 @@ export interface paths {
1022
1031
  };
1023
1032
  get?: never;
1024
1033
  put?: never;
1025
- /** Import org chart from Supabase storage path */
1034
+ /**
1035
+ * Import org chart from Supabase storage path
1036
+ * @description Parse-only. Downloads the CSV at `storagePath` from the `org-charts` bucket and returns `persons` and `errors`. Does not persist to `spa_org_chart` or `org_chart`. The SPA derives teams client-side and saves the org structure via `POST /workspaces/{workspaceId}/org-chart`.
1037
+ */
1026
1038
  post: operations["postOrgChartImport"];
1027
1039
  delete?: never;
1028
1040
  options?: never;
@@ -1056,6 +1068,16 @@ export interface components {
1056
1068
  /** @enum {string} */
1057
1069
  role: "admin" | "editor" | "viewer";
1058
1070
  };
1071
+ OrgChartNodeDto: {
1072
+ id: string;
1073
+ name: string;
1074
+ /** @enum {string} */
1075
+ type: "org" | "department" | "team" | "person";
1076
+ external_ids?: {
1077
+ [key: string]: string;
1078
+ };
1079
+ children?: components["schemas"]["OrgChartNodeDto"][];
1080
+ };
1059
1081
  OrgChartTreeNodeDto: {
1060
1082
  id: string;
1061
1083
  name?: string;
@@ -1069,9 +1091,31 @@ export interface components {
1069
1091
  };
1070
1092
  children?: components["schemas"]["OrgChartTreeNodeDto"][];
1071
1093
  };
1072
- OrgChartDto: {
1094
+ ScoringOrgChartDto: {
1073
1095
  root: components["schemas"]["OrgChartTreeNodeDto"];
1074
1096
  };
1097
+ OrgChartDto: {
1098
+ root: components["schemas"]["OrgChartNodeDto"];
1099
+ };
1100
+ OrgChartPersonDto: {
1101
+ employeeId: string;
1102
+ name: string;
1103
+ email: string;
1104
+ title: string;
1105
+ department: string;
1106
+ team: string;
1107
+ managerId: string;
1108
+ location: string;
1109
+ };
1110
+ OrgChartImportResultDto: {
1111
+ persons: components["schemas"]["OrgChartPersonDto"][];
1112
+ errors: string[];
1113
+ };
1114
+ OrgChartSaveResultDto: {
1115
+ ok: boolean;
1116
+ /** Format: uuid */
1117
+ tenantId: string;
1118
+ };
1075
1119
  TenantSourceEntryDto: {
1076
1120
  type: string;
1077
1121
  } & {
@@ -1092,7 +1136,7 @@ export interface components {
1092
1136
  };
1093
1137
  WorkspaceConfigDto: {
1094
1138
  sources: components["schemas"]["TenantSourceEntryDto"][];
1095
- orgChart?: components["schemas"]["OrgChartDto"] | null;
1139
+ orgChart?: components["schemas"]["ScoringOrgChartDto"] | null;
1096
1140
  /** @enum {string|null} */
1097
1141
  region?: "us" | "eu" | "me" | null;
1098
1142
  };
@@ -1391,6 +1435,11 @@ export interface components {
1391
1435
  };
1392
1436
  /** @enum {string} */
1393
1437
  ReadinessRunStatusDto: "queued" | "running" | "succeeded" | "failed" | "partial_failed";
1438
+ /**
1439
+ * @description Whether an AI readiness analysis run is queued or in progress for this repository slug. `idle` means no `queued`/`running` row exists in `tai_workspace_readiness_runs`.
1440
+ * @enum {string}
1441
+ */
1442
+ ReadinessRepoAnalysisStatusDto: "idle" | "queued" | "running";
1394
1443
  ReadinessRunSummaryDto: {
1395
1444
  /** Format: uuid */
1396
1445
  runId: string;
@@ -1436,6 +1485,12 @@ export interface components {
1436
1485
  /** Format: uuid */
1437
1486
  teamId?: string | null;
1438
1487
  provider: components["schemas"]["RepoProviderDto"];
1488
+ analysisStatus: components["schemas"]["ReadinessRepoAnalysisStatusDto"];
1489
+ /**
1490
+ * Format: uuid
1491
+ * @description Present when `analysisStatus` is `queued` or `running`; use with `GET .../readiness/runs/{runId}`.
1492
+ */
1493
+ activeRunId?: string | null;
1439
1494
  };
1440
1495
  AgenticFoundationDashboardSummaryDto: {
1441
1496
  repoCount: number;
@@ -1484,7 +1539,15 @@ export interface components {
1484
1539
  createdAt: string;
1485
1540
  };
1486
1541
  CreateFixRequestBodyDto: {
1542
+ /**
1543
+ * Format: uuid
1544
+ * @description Readiness issue id from stored scorecard data
1545
+ */
1487
1546
  issueId: string;
1547
+ /**
1548
+ * Format: uuid
1549
+ * @description Workspace repository id that owns the issue
1550
+ */
1488
1551
  repoId: string;
1489
1552
  };
1490
1553
  PhaseRoleDto: {
@@ -1673,8 +1736,13 @@ export type TeamMemberDto = components['schemas']['TeamMemberDto'];
1673
1736
  export type TeamMemberListDto = components['schemas']['TeamMemberListDto'];
1674
1737
  export type InviteTeamMemberBodyDto = components['schemas']['InviteTeamMemberBodyDto'];
1675
1738
  export type UpdateTeamMemberRoleBodyDto = components['schemas']['UpdateTeamMemberRoleBodyDto'];
1739
+ export type OrgChartNodeDto = components['schemas']['OrgChartNodeDto'];
1676
1740
  export type OrgChartTreeNodeDto = components['schemas']['OrgChartTreeNodeDto'];
1741
+ export type ScoringOrgChartDto = components['schemas']['ScoringOrgChartDto'];
1677
1742
  export type OrgChartDto = components['schemas']['OrgChartDto'];
1743
+ export type OrgChartPersonDto = components['schemas']['OrgChartPersonDto'];
1744
+ export type OrgChartImportResultDto = components['schemas']['OrgChartImportResultDto'];
1745
+ export type OrgChartSaveResultDto = components['schemas']['OrgChartSaveResultDto'];
1678
1746
  export type TenantSourceEntryDto = components['schemas']['TenantSourceEntryDto'];
1679
1747
  export type CursorSourceDto = components['schemas']['CursorSourceDto'];
1680
1748
  export type WorkspaceConfigDto = components['schemas']['WorkspaceConfigDto'];
@@ -1716,6 +1784,7 @@ export type RepoProviderDto = components['schemas']['RepoProviderDto'];
1716
1784
  export type ReadinessAnalyzeBodyDto = components['schemas']['ReadinessAnalyzeBodyDto'];
1717
1785
  export type ReadinessAnalyzeResponseDto = components['schemas']['ReadinessAnalyzeResponseDto'];
1718
1786
  export type ReadinessRunStatusDto = components['schemas']['ReadinessRunStatusDto'];
1787
+ export type ReadinessRepoAnalysisStatusDto = components['schemas']['ReadinessRepoAnalysisStatusDto'];
1719
1788
  export type ReadinessRunSummaryDto = components['schemas']['ReadinessRunSummaryDto'];
1720
1789
  export type ReadinessIssueDto = components['schemas']['ReadinessIssueDto'];
1721
1790
  export type DimensionScoreDto = components['schemas']['DimensionScoreDto'];
@@ -1985,9 +2054,7 @@ export interface operations {
1985
2054
  };
1986
2055
  getTenantOrgChart: {
1987
2056
  parameters: {
1988
- query?: {
1989
- withScores?: boolean;
1990
- };
2057
+ query?: never;
1991
2058
  header?: never;
1992
2059
  path: {
1993
2060
  workspaceId: components["parameters"]["WorkspaceId"];
@@ -1996,7 +2063,7 @@ export interface operations {
1996
2063
  };
1997
2064
  requestBody?: never;
1998
2065
  responses: {
1999
- /** @description Org chart (optionally with per-node scores) */
2066
+ /** @description SPA org structure chart (`spa_org_chart`; per-node scores not included — use GET /config for scoring tree) */
2000
2067
  200: {
2001
2068
  headers: {
2002
2069
  [name: string]: unknown;
@@ -2006,6 +2073,7 @@ export interface operations {
2006
2073
  };
2007
2074
  };
2008
2075
  401: components["responses"]["Unauthorized"];
2076
+ 403: components["responses"]["Forbidden"];
2009
2077
  /** @description Workspace not found */
2010
2078
  404: {
2011
2079
  headers: {
@@ -2036,13 +2104,20 @@ export interface operations {
2036
2104
  [name: string]: unknown;
2037
2105
  };
2038
2106
  content: {
2039
- "application/json": {
2040
- ok: boolean;
2041
- workspaceId: string;
2042
- };
2107
+ "application/json": components["schemas"]["OrgChartSaveResultDto"];
2108
+ };
2109
+ };
2110
+ /** @description Invalid request body or chart limits exceeded */
2111
+ 400: {
2112
+ headers: {
2113
+ [name: string]: unknown;
2114
+ };
2115
+ content: {
2116
+ "application/json": components["schemas"]["ErrorMessageDto"];
2043
2117
  };
2044
2118
  };
2045
2119
  401: components["responses"]["Unauthorized"];
2120
+ 403: components["responses"]["Forbidden"];
2046
2121
  };
2047
2122
  };
2048
2123
  getWorkspaceConfig: {
@@ -3534,6 +3609,16 @@ export interface operations {
3534
3609
  };
3535
3610
  };
3536
3611
  401: components["responses"]["Unauthorized"];
3612
+ 403: components["responses"]["Forbidden"];
3613
+ /** @description Workspace does not exist */
3614
+ 404: {
3615
+ headers: {
3616
+ [name: string]: unknown;
3617
+ };
3618
+ content: {
3619
+ "application/json": components["schemas"]["ErrorMessageDto"];
3620
+ };
3621
+ };
3537
3622
  };
3538
3623
  };
3539
3624
  listReadinessFixes: {
@@ -3557,6 +3642,16 @@ export interface operations {
3557
3642
  };
3558
3643
  };
3559
3644
  401: components["responses"]["Unauthorized"];
3645
+ 403: components["responses"]["Forbidden"];
3646
+ /** @description Workspace does not exist */
3647
+ 404: {
3648
+ headers: {
3649
+ [name: string]: unknown;
3650
+ };
3651
+ content: {
3652
+ "application/json": components["schemas"]["ErrorMessageDto"];
3653
+ };
3654
+ };
3560
3655
  };
3561
3656
  };
3562
3657
  postReadinessFix: {
@@ -3574,7 +3669,7 @@ export interface operations {
3574
3669
  };
3575
3670
  };
3576
3671
  responses: {
3577
- /** @description Fix request created */
3672
+ /** @description Fix request created or existing row returned */
3578
3673
  200: {
3579
3674
  headers: {
3580
3675
  [name: string]: unknown;
@@ -3583,7 +3678,26 @@ export interface operations {
3583
3678
  "application/json": components["schemas"]["FixRequestDto"];
3584
3679
  };
3585
3680
  };
3681
+ /** @description Invalid body or malformed `repoId` (not a UUID) */
3682
+ 400: {
3683
+ headers: {
3684
+ [name: string]: unknown;
3685
+ };
3686
+ content: {
3687
+ "application/json": components["schemas"]["ErrorMessageDto"];
3688
+ };
3689
+ };
3586
3690
  401: components["responses"]["Unauthorized"];
3691
+ 403: components["responses"]["Forbidden"];
3692
+ /** @description Workspace not found, or issue/repo pair not in workspace */
3693
+ 404: {
3694
+ headers: {
3695
+ [name: string]: unknown;
3696
+ };
3697
+ content: {
3698
+ "application/json": components["schemas"]["ErrorMessageDto"];
3699
+ };
3700
+ };
3587
3701
  };
3588
3702
  };
3589
3703
  getSquad: {
@@ -3966,18 +4080,53 @@ export interface operations {
3966
4080
  };
3967
4081
  };
3968
4082
  responses: {
3969
- /** @description Parsed persons (shape TBD; align with backend) */
4083
+ /** @description Parsed persons from uploaded CSV (not persisted server-side) */
3970
4084
  200: {
3971
4085
  headers: {
3972
4086
  [name: string]: unknown;
3973
4087
  };
3974
4088
  content: {
3975
- "application/json": {
3976
- [key: string]: unknown;
3977
- };
4089
+ "application/json": components["schemas"]["OrgChartImportResultDto"];
4090
+ };
4091
+ };
4092
+ /** @description Invalid body or storage path */
4093
+ 400: {
4094
+ headers: {
4095
+ [name: string]: unknown;
4096
+ };
4097
+ content: {
4098
+ "application/json": components["schemas"]["ErrorMessageDto"];
3978
4099
  };
3979
4100
  };
3980
4101
  401: components["responses"]["Unauthorized"];
4102
+ 403: components["responses"]["Forbidden"];
4103
+ /** @description Storage object not found */
4104
+ 404: {
4105
+ headers: {
4106
+ [name: string]: unknown;
4107
+ };
4108
+ content: {
4109
+ "application/json": components["schemas"]["ErrorMessageDto"];
4110
+ };
4111
+ };
4112
+ /** @description Failed to download file from storage */
4113
+ 502: {
4114
+ headers: {
4115
+ [name: string]: unknown;
4116
+ };
4117
+ content: {
4118
+ "application/json": components["schemas"]["ErrorMessageDto"];
4119
+ };
4120
+ };
4121
+ /** @description Storage import not configured or service unavailable */
4122
+ 503: {
4123
+ headers: {
4124
+ [name: string]: unknown;
4125
+ };
4126
+ content: {
4127
+ "application/json": components["schemas"]["ErrorMessageDto"];
4128
+ };
4129
+ };
3981
4130
  };
3982
4131
  };
3983
4132
  }