@thinkai/tai-api-contract 2.133.0 → 2.135.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.
@@ -1514,6 +1514,30 @@ export interface paths {
1514
1514
  patch?: never;
1515
1515
  trace?: never;
1516
1516
  };
1517
+ "/workspaces/{workspaceId}/company-profile/logo": {
1518
+ parameters: {
1519
+ query?: never;
1520
+ header?: never;
1521
+ path?: never;
1522
+ cookie?: never;
1523
+ };
1524
+ get?: never;
1525
+ /**
1526
+ * Upload company logo
1527
+ * @description Scales the uploaded PNG, JPEG, or WebP to a 128×128 WebP (the mark is fitted inside the square with transparent padding) and stores that image. Requires a saved company profile. Editor or admin only. Source images larger than 2 MB decoded are rejected.
1528
+ */
1529
+ put: operations["putCompanyProfileLogo"];
1530
+ post?: never;
1531
+ /**
1532
+ * Remove company logo
1533
+ * @description Clears the stored logo. Editor or admin only. Succeeds when no logo is stored.
1534
+ */
1535
+ delete: operations["deleteCompanyProfileLogo"];
1536
+ options?: never;
1537
+ head?: never;
1538
+ patch?: never;
1539
+ trace?: never;
1540
+ };
1517
1541
  "/workspaces/{workspaceId}/integrations/connectors-snapshot": {
1518
1542
  parameters: {
1519
1543
  query?: never;
@@ -6210,6 +6234,20 @@ export interface components {
6210
6234
  * @enum {string}
6211
6235
  */
6212
6236
  role: "admin" | "editor" | "viewer";
6237
+ /** @description Square 128px WebP for the workspace switcher. Omitted or null when no logo is stored. */
6238
+ logo?: components["schemas"]["WorkspaceLogoDto"] | null;
6239
+ };
6240
+ WorkspaceLogoDto: {
6241
+ /** @enum {string} */
6242
+ contentType: "image/webp";
6243
+ /** @description Base64-encoded 128×128 WebP. No data-URL prefix. */
6244
+ data: string;
6245
+ };
6246
+ CompanyProfileLogoPutDto: {
6247
+ /** @enum {string} */
6248
+ contentType: "image/png" | "image/jpeg" | "image/webp";
6249
+ /** @description Base64-encoded source image, at most 2 MB after decoding. */
6250
+ data: string;
6213
6251
  };
6214
6252
  WorkspacesForUserDto: {
6215
6253
  workspaces: components["schemas"]["WorkspaceSummaryDto"][];
@@ -6226,6 +6264,8 @@ export interface components {
6226
6264
  companySize: string;
6227
6265
  engineeringHC: string;
6228
6266
  headquarters: string;
6267
+ /** @description Present on GET when a logo is stored. Ignored by PUT /company-profile. Upload and delete use the /company-profile/logo routes. */
6268
+ logo?: components["schemas"]["WorkspaceLogoDto"] | null;
6229
6269
  };
6230
6270
  GithubAccountDto: {
6231
6271
  login: string;
@@ -6874,6 +6914,36 @@ export interface components {
6874
6914
  */
6875
6915
  cursorKeySource?: "workspace_execution_token" | "platform_env_key" | null;
6876
6916
  };
6917
+ /**
6918
+ * @description Where a CI setup criterion's evidence came from. `in_repo` — this repository's CI config contributed. `linked_platform` — a linked CI templates platform repo (role `ci_templates` or the `jenkins_shared` alias) contributed.
6919
+ * @enum {string}
6920
+ */
6921
+ CriterionEvidenceKind: "in_repo" | "linked_platform";
6922
+ /** @description One evidence chip for a CI setup criterion (CI on change, CI runs build, CI runs tests, CI static analysis). `role` and `providerSlug` are present when `kind` is `linked_platform` and omitted for `in_repo`. */
6923
+ CriterionEvidenceSourceDto: {
6924
+ kind: components["schemas"]["CriterionEvidenceKind"];
6925
+ /** @description Chip text shown in the UI (for example "In this repo" or "CI templates · org/platform-ci"). */
6926
+ label: string;
6927
+ /** @description Topology role when `kind` is `linked_platform` (for example `ci_templates` or `jenkins_shared`). Omit for `in_repo`. */
6928
+ role?: string;
6929
+ /** @description Platform repository `owner/name` when `kind` is `linked_platform`. Omit for `in_repo`. */
6930
+ providerSlug?: string;
6931
+ };
6932
+ /**
6933
+ * @description Stable "Improve this scan" code for Agentic Foundation CI setup honesty. `configure_linked_ci_templates` — map a linked CI templates repo. `scan_linked_ci_templates` — the mapped platform repo still needs a fresh scan. `view_ci_health_in_insights` — CI config is present; live pass/fail health is in SDLC Insights.
6934
+ * @enum {string}
6935
+ */
6936
+ ScanImprovementCode: "configure_linked_ci_templates" | "scan_linked_ci_templates" | "view_ci_health_in_insights";
6937
+ /** @description One repo-level recommendation on a readiness scorecard. Display copy is `title` and `description`; clients may also route from `code`. */
6938
+ ScanImprovementDto: {
6939
+ code: components["schemas"]["ScanImprovementCode"];
6940
+ title: string;
6941
+ description: string;
6942
+ /** @description Optional SPA path for the recommendation (linked-platform settings or SDLC Insights). Not a scored URL. */
6943
+ href?: string;
6944
+ /** @description Platform repository `owner/name` when the recommendation names a specific linked repo (typically `scan_linked_ci_templates`). */
6945
+ providerSlug?: string;
6946
+ };
6877
6947
  CriterionDetailDto: {
6878
6948
  /** @description Rubric criterion id (e.g. A1, B3) */
6879
6949
  rubricId: string;
@@ -6900,6 +6970,8 @@ export interface components {
6900
6970
  * @description UUID of the linked open issue in tai_workspace_repo_issues. Present only for gap/partial criteria that have a corresponding issue row. Use this to navigate to the Fix flow.
6901
6971
  */
6902
6972
  issueId?: string | null;
6973
+ /** @description Sources that contributed to CI setup criteria (CI on change, CI runs build, CI runs tests, CI static analysis). Met or Partial on those rows includes at least one entry (`in_repo` and/or `linked_platform`). Omitted on other criteria and when the scan did not record evidence. */
6974
+ evidenceUsed?: components["schemas"]["CriterionEvidenceSourceDto"][];
6903
6975
  };
6904
6976
  ReadinessCriteriaSummaryDto: {
6905
6977
  total: number;
@@ -7267,6 +7339,8 @@ export interface components {
7267
7339
  platformArchetype?: "terraform_platform" | "gitops_platform" | "ci_templates" | "api_contracts_platform" | null;
7268
7340
  /** @description Federated readiness completeness for service repos: which linked platform roles (terraform/gitops/ci_templates/api_contracts, from the workspace delivery topology) are still missing scan evidence. Absent/null when no topology is configured or every declared role has fresh metadata (`complete: true`). */
7269
7341
  linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
7342
+ /** @description Repo-level "Improve this scan" recommendations for Agentic Foundation CI setup (at most three). Omitted when the scan emitted none. Does not change criterion scores; live CI health stays in SDLC Insights. */
7343
+ scanImprovements?: components["schemas"]["ScanImprovementDto"][];
7270
7344
  };
7271
7345
  LinkedRolePendingDto: {
7272
7346
  /** @description Topology role key, e.g. terraform | gitops | ci_templates | api_contracts. */
@@ -7345,6 +7419,8 @@ export interface components {
7345
7419
  platformArchetype?: "terraform_platform" | "gitops_platform" | "ci_templates" | "api_contracts_platform" | null;
7346
7420
  /** @description See RepoReadinessScoreDto.linkedRoleAssessment. */
7347
7421
  linkedRoleAssessment?: components["schemas"]["LinkedRoleAssessmentDto"] | null;
7422
+ /** @description See RepoReadinessScoreDto.scanImprovements. */
7423
+ scanImprovements?: components["schemas"]["ScanImprovementDto"][];
7348
7424
  };
7349
7425
  AgenticFoundationDashboardSummaryDto: {
7350
7426
  repoCount: number;
@@ -10205,6 +10281,8 @@ export type FulfillPersonErasureBodyDto = components['schemas']['FulfillPersonEr
10205
10281
  export type PrivacyRequestPersonErasureResultDto = components['schemas']['PrivacyRequestPersonErasureResultDto'];
10206
10282
  export type PrivacyRequestExportDto = components['schemas']['PrivacyRequestExportDto'];
10207
10283
  export type WorkspaceSummaryDto = components['schemas']['WorkspaceSummaryDto'];
10284
+ export type WorkspaceLogoDto = components['schemas']['WorkspaceLogoDto'];
10285
+ export type CompanyProfileLogoPutDto = components['schemas']['CompanyProfileLogoPutDto'];
10208
10286
  export type WorkspacesForUserDto = components['schemas']['WorkspacesForUserDto'];
10209
10287
  export type CreateWorkspaceBodyDto = components['schemas']['CreateWorkspaceBodyDto'];
10210
10288
  export type CompanyProfileDto = components['schemas']['CompanyProfileDto'];
@@ -10263,6 +10341,10 @@ export type ReadinessAnalyzeResponseDto = components['schemas']['ReadinessAnalyz
10263
10341
  export type ReadinessRunStatusDto = components['schemas']['ReadinessRunStatusDto'];
10264
10342
  export type ReadinessRepoAnalysisStatusDto = components['schemas']['ReadinessRepoAnalysisStatusDto'];
10265
10343
  export type ReadinessRunSummaryDto = components['schemas']['ReadinessRunSummaryDto'];
10344
+ export type CriterionEvidenceKind = components['schemas']['CriterionEvidenceKind'];
10345
+ export type CriterionEvidenceSourceDto = components['schemas']['CriterionEvidenceSourceDto'];
10346
+ export type ScanImprovementCode = components['schemas']['ScanImprovementCode'];
10347
+ export type ScanImprovementDto = components['schemas']['ScanImprovementDto'];
10266
10348
  export type CriterionDetailDto = components['schemas']['CriterionDetailDto'];
10267
10349
  export type ReadinessCriteriaSummaryDto = components['schemas']['ReadinessCriteriaSummaryDto'];
10268
10350
  export type ReadinessIssueDto = components['schemas']['ReadinessIssueDto'];
@@ -14860,6 +14942,101 @@ export interface operations {
14860
14942
  };
14861
14943
  };
14862
14944
  };
14945
+ putCompanyProfileLogo: {
14946
+ parameters: {
14947
+ query?: never;
14948
+ header?: never;
14949
+ path: {
14950
+ workspaceId: components["parameters"]["WorkspaceId"];
14951
+ };
14952
+ cookie?: never;
14953
+ };
14954
+ requestBody: {
14955
+ content: {
14956
+ "application/json": components["schemas"]["CompanyProfileLogoPutDto"];
14957
+ };
14958
+ };
14959
+ responses: {
14960
+ /** @description Stored 128×128 WebP */
14961
+ 200: {
14962
+ headers: {
14963
+ [name: string]: unknown;
14964
+ };
14965
+ content: {
14966
+ "application/json": components["schemas"]["WorkspaceLogoDto"];
14967
+ };
14968
+ };
14969
+ /** @description Invalid image, unsupported type, or result still too large */
14970
+ 400: {
14971
+ headers: {
14972
+ [name: string]: unknown;
14973
+ };
14974
+ content: {
14975
+ "application/json": components["schemas"]["ErrorMessageDto"];
14976
+ };
14977
+ };
14978
+ 401: components["responses"]["Unauthorized"];
14979
+ 403: components["responses"]["Forbidden"];
14980
+ /** @description Workspace does not exist */
14981
+ 404: {
14982
+ headers: {
14983
+ [name: string]: unknown;
14984
+ };
14985
+ content: {
14986
+ "application/json": components["schemas"]["ErrorMessageDto"];
14987
+ };
14988
+ };
14989
+ /** @description No company profile saved yet (`company_profile_required`) */
14990
+ 409: {
14991
+ headers: {
14992
+ [name: string]: unknown;
14993
+ };
14994
+ content: {
14995
+ "application/json": components["schemas"]["ErrorMessageDto"];
14996
+ };
14997
+ };
14998
+ };
14999
+ };
15000
+ deleteCompanyProfileLogo: {
15001
+ parameters: {
15002
+ query?: never;
15003
+ header?: never;
15004
+ path: {
15005
+ workspaceId: components["parameters"]["WorkspaceId"];
15006
+ };
15007
+ cookie?: never;
15008
+ };
15009
+ requestBody?: never;
15010
+ responses: {
15011
+ /** @description Logo cleared */
15012
+ 204: {
15013
+ headers: {
15014
+ [name: string]: unknown;
15015
+ };
15016
+ content?: never;
15017
+ };
15018
+ 401: components["responses"]["Unauthorized"];
15019
+ 403: components["responses"]["Forbidden"];
15020
+ /** @description Workspace does not exist */
15021
+ 404: {
15022
+ headers: {
15023
+ [name: string]: unknown;
15024
+ };
15025
+ content: {
15026
+ "application/json": components["schemas"]["ErrorMessageDto"];
15027
+ };
15028
+ };
15029
+ /** @description No company profile saved yet (`company_profile_required`) */
15030
+ 409: {
15031
+ headers: {
15032
+ [name: string]: unknown;
15033
+ };
15034
+ content: {
15035
+ "application/json": components["schemas"]["ErrorMessageDto"];
15036
+ };
15037
+ };
15038
+ };
15039
+ };
14863
15040
  getWorkspaceConnectorsSnapshot: {
14864
15041
  parameters: {
14865
15042
  query?: never;