@thinkai/tai-api-contract 2.65.0 → 2.67.0-pr.934.5215788b

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.
@@ -962,6 +962,26 @@ export interface paths {
962
962
  patch?: never;
963
963
  trace?: never;
964
964
  };
965
+ "/workspaces/{workspaceId}/insights/recommendations-page/bundle": {
966
+ parameters: {
967
+ query?: never;
968
+ header?: never;
969
+ path?: never;
970
+ cookie?: never;
971
+ };
972
+ /**
973
+ * Insights recommendations — full page bundle
974
+ * @description Single HTTP round-trip for `/insights-recommendations`. Returns the same section payloads as the seven per-resource GETs (`verdict-summary` through `recommendations`) nested under one response with a shared `_meta` envelope. Section objects omit per-resource `_meta`; use the top-level `_meta.syncedAt` for the page.
975
+ */
976
+ get: operations["getInsightsRecommendationsPageBundle"];
977
+ put?: never;
978
+ post?: never;
979
+ delete?: never;
980
+ options?: never;
981
+ head?: never;
982
+ patch?: never;
983
+ trace?: never;
984
+ };
965
985
  "/workspaces/{workspaceId}/insights/recommendations-page/verdict-summary": {
966
986
  parameters: {
967
987
  query?: never;
@@ -4744,6 +4764,15 @@ export interface components {
4744
4764
  */
4745
4765
  error: "github_permissions_check_failed";
4746
4766
  };
4767
+ /**
4768
+ * @description Whether a GitHub Code security product is enabled and readable for sampled repos. `partial` means mixed enablement across the sample; `unknown` when not probed or grants missing.
4769
+ * @enum {string}
4770
+ */
4771
+ GithubProductSettingStatus: "ok" | "not_enabled" | "partial" | "forbidden" | "unknown";
4772
+ GithubProductSettingsDto: {
4773
+ dependabotAlerts: components["schemas"]["GithubProductSettingStatus"];
4774
+ secretScanning: components["schemas"]["GithubProductSettingStatus"];
4775
+ };
4747
4776
  GithubInstallationSummaryDto: {
4748
4777
  installationId: string;
4749
4778
  account: components["schemas"]["GithubAccountDto"];
@@ -4757,6 +4786,20 @@ export interface components {
4757
4786
  permissionsUpgradeRequired: boolean;
4758
4787
  /** @description True when installation grants read permissions for repository analysis (contents, metadata, pull requests, and members for org installs). */
4759
4788
  corePermissionsOk: boolean;
4789
+ /** @description True when installation grants Vulnerability alerts and Secret scanning alerts read for SDLC security metrics. */
4790
+ securityPermissionsOk: boolean;
4791
+ /** @description True when installation grants financial/operational SDLC metric permissions (Actions, Deployments, and org Administration / Copilot seat reads for organization installs). */
4792
+ financialPermissionsOk: boolean;
4793
+ /** @description Security alert permissions still needed for SDLC security metrics. */
4794
+ missingSecurityPermissions?: components["schemas"]["GithubMissingPermissionDto"][];
4795
+ /** @description Financial/operational permissions still needed for SDLC financial metrics. */
4796
+ missingFinancialPermissions?: components["schemas"]["GithubMissingPermissionDto"][];
4797
+ /** @description Human-readable summary when security App permissions are missing. */
4798
+ securityUpgradeMessage?: string | null;
4799
+ /** @description Human-readable summary when financial App permissions are missing. */
4800
+ financialUpgradeMessage?: string | null;
4801
+ /** @description Dependabot alerts and secret scanning enablement on sampled repos (throttled probe). Omitted when security App grants are missing or the probe has not run. */
4802
+ githubProductSettings?: components["schemas"]["GithubProductSettingsDto"] | null;
4760
4803
  /** @description True when automated fixes are enabled and the linked Automations (write) installation grants write permissions required for fix PRs. */
4761
4804
  writePermissionsOk: boolean;
4762
4805
  /** @description Alias for `!writePermissionsOk`. */
@@ -4941,6 +4984,20 @@ export interface components {
4941
4984
  permissionsUpgradeRequired: boolean;
4942
4985
  /** @description True when every connected installation grants core read permissions. */
4943
4986
  corePermissionsOk: boolean;
4987
+ /** @description True when every connected installation grants security alert read permissions. */
4988
+ securityPermissionsOk: boolean;
4989
+ /** @description True when every connected installation grants financial/operational read permissions. */
4990
+ financialPermissionsOk: boolean;
4991
+ /** @description Aggregated security permissions missing on installations with security gaps. */
4992
+ missingSecurityPermissions?: components["schemas"]["GithubMissingPermissionDto"][];
4993
+ /** @description Aggregated financial permissions missing on installations with financial gaps. */
4994
+ missingFinancialPermissions?: components["schemas"]["GithubMissingPermissionDto"][];
4995
+ /** @description Human-readable summary when security App permissions are missing. */
4996
+ securityUpgradeMessage?: string | null;
4997
+ /** @description Human-readable summary when financial App permissions are missing. */
4998
+ financialUpgradeMessage?: string | null;
4999
+ /** @description Workspace-wide Code security product status reduced from installations. */
5000
+ githubProductSettings?: components["schemas"]["GithubProductSettingsDto"] | null;
4944
5001
  /** @description True when every connected installation grants write permissions for automated fixes. */
4945
5002
  writePermissionsOk: boolean;
4946
5003
  /** @description True when any connected installation lacks write permissions for automated fixes. */
@@ -6524,6 +6581,19 @@ export interface components {
6524
6581
  items: components["schemas"]["InsightsRecommendationDto"][];
6525
6582
  _meta: components["schemas"]["InsightsResponseMeta"];
6526
6583
  };
6584
+ InsightsRecommendationsPageBundleRecommendations: {
6585
+ items: components["schemas"]["InsightsRecommendationDto"][];
6586
+ };
6587
+ InsightsRecommendationsPageBundleResponse: {
6588
+ verdictSummary: components["schemas"]["InsightsRecommendationsVerdictSummary"];
6589
+ roiQuadrant: components["schemas"]["InsightsRecommendationsRoiQuadrant"];
6590
+ velocityQuality: components["schemas"]["InsightsRecommendationsVelocityQuality"];
6591
+ reviewPipeline: components["schemas"]["InsightsRecommendationsReviewPipeline"];
6592
+ costPerPr: components["schemas"]["InsightsRecommendationsCostPerPr"];
6593
+ adoptionGap: components["schemas"]["InsightsRecommendationsAdoptionGap"];
6594
+ recommendations: components["schemas"]["InsightsRecommendationsPageBundleRecommendations"];
6595
+ _meta: components["schemas"]["InsightsResponseMeta"];
6596
+ };
6527
6597
  };
6528
6598
  responses: {
6529
6599
  /** @description Missing or invalid bearer token */
@@ -6777,6 +6847,8 @@ export type RepoEligibilityLimitsDto = components['schemas']['RepoEligibilityLim
6777
6847
  export type GithubMissingPermissionDto = components['schemas']['GithubMissingPermissionDto'];
6778
6848
  export type GithubWritePermissionsRequiredErrorDto = components['schemas']['GithubWritePermissionsRequiredErrorDto'];
6779
6849
  export type GithubPermissionsCheckFailedErrorDto = components['schemas']['GithubPermissionsCheckFailedErrorDto'];
6850
+ export type GithubProductSettingStatus = components['schemas']['GithubProductSettingStatus'];
6851
+ export type GithubProductSettingsDto = components['schemas']['GithubProductSettingsDto'];
6780
6852
  export type GithubInstallationSummaryDto = components['schemas']['GithubInstallationSummaryDto'];
6781
6853
  export type GithubPendingApprovalDto = components['schemas']['GithubPendingApprovalDto'];
6782
6854
  export type GithubSetupInProgressDto = components['schemas']['GithubSetupInProgressDto'];
@@ -6960,6 +7032,8 @@ export type InsightsEvidenceChip = components['schemas']['InsightsEvidenceChip']
6960
7032
  export type InsightsRecommendationEvidenceGroup = components['schemas']['InsightsRecommendationEvidenceGroup'];
6961
7033
  export type InsightsRecommendationDto = components['schemas']['InsightsRecommendationDto'];
6962
7034
  export type InsightsRecommendationsListResponse = components['schemas']['InsightsRecommendationsListResponse'];
7035
+ export type InsightsRecommendationsPageBundleRecommendations = components['schemas']['InsightsRecommendationsPageBundleRecommendations'];
7036
+ export type InsightsRecommendationsPageBundleResponse = components['schemas']['InsightsRecommendationsPageBundleResponse'];
6963
7037
  export type ResponseUnauthorized = components['responses']['Unauthorized'];
6964
7038
  export type ResponseForbidden = components['responses']['Forbidden'];
6965
7039
  export type ResponseZenHrSyncInProgress = components['responses']['ZenHrSyncInProgress'];
@@ -9680,6 +9754,64 @@ export interface operations {
9680
9754
  };
9681
9755
  };
9682
9756
  };
9757
+ getInsightsRecommendationsPageBundle: {
9758
+ parameters: {
9759
+ query: {
9760
+ /** @description Org-chart department ids (repeat param or comma-separated). Empty/omitted = all departments. */
9761
+ departments?: components["parameters"]["InsightsRecommendationsDepartments"];
9762
+ /** @description Org-chart team ids (repeat param or comma-separated). Empty/omitted = all teams in department scope. */
9763
+ teams?: components["parameters"]["InsightsRecommendationsTeams"];
9764
+ /** @description Inclusive window start (`YYYY-MM-DD`). Required with `dateTo`. Maps to Measure day-mode custom range (`from`/`to`). Max span 180 days. */
9765
+ dateFrom: components["parameters"]["InsightsRecommendationsDateFrom"];
9766
+ /** @description Inclusive window end (`YYYY-MM-DD`). Required with `dateFrom`. */
9767
+ dateTo: components["parameters"]["InsightsRecommendationsDateTo"];
9768
+ /** @description AI provider ids (e.g. `cursor`, `copilot`). Empty/omitted = all configured providers. */
9769
+ provider?: components["parameters"]["InsightsRecommendationsProvider"];
9770
+ /** @description Include contributors / AI rows not mapped to a team. */
9771
+ includeUnmapped?: components["parameters"]["InsightsRecommendationsIncludeUnmapped"];
9772
+ /** @description Include bot accounts in PR/CI stats. */
9773
+ includeBots?: components["parameters"]["InsightsRecommendationsIncludeBots"];
9774
+ };
9775
+ header?: never;
9776
+ path: {
9777
+ workspaceId: components["parameters"]["WorkspaceId"];
9778
+ };
9779
+ cookie?: never;
9780
+ };
9781
+ requestBody?: never;
9782
+ responses: {
9783
+ /** @description All recommendations-page sections with shared `_meta.isMock=false` */
9784
+ 200: {
9785
+ headers: {
9786
+ [name: string]: unknown;
9787
+ };
9788
+ content: {
9789
+ "application/json": components["schemas"]["InsightsRecommendationsPageBundleResponse"];
9790
+ };
9791
+ };
9792
+ /** @description Invalid filter or date range */
9793
+ 400: {
9794
+ headers: {
9795
+ [name: string]: unknown;
9796
+ };
9797
+ content: {
9798
+ "application/json": {
9799
+ /** @example invalid_query */
9800
+ error: string;
9801
+ };
9802
+ };
9803
+ };
9804
+ 401: components["responses"]["Unauthorized"];
9805
+ 403: components["responses"]["Forbidden"];
9806
+ /** @description Workspace does not exist or malformed workspaceId */
9807
+ 404: {
9808
+ headers: {
9809
+ [name: string]: unknown;
9810
+ };
9811
+ content?: never;
9812
+ };
9813
+ };
9814
+ };
9683
9815
  getInsightsRecommendationsVerdictSummary: {
9684
9816
  parameters: {
9685
9817
  query: {
@@ -10337,8 +10469,10 @@ export interface operations {
10337
10469
  query?: {
10338
10470
  /** @description When true, bypass `tai_workspace_vcs_repos_cache` and re-fetch from GitHub. When productivity backfill phase is `complete`, also triggers inline `on_demand` ingest for the current UTC week (gap-fill only when metrics are missing). Response includes `productivityRefreshInProgress` while the workspace advisory lock is held. */
10339
10471
  refresh?: boolean;
10340
- /** @description When true, re-fetch GitHub App and installation permission metadata (used by the login permission gate after the user approves on GitHub). */
10472
+ /** @description When true, re-fetch GitHub App and installation permission metadata (used by the login permission gate after the user approves on GitHub). Clears App-permission and product-settings caches so the next `productSettingsRefresh` re-probes. Does not itself call alert-list APIs; use `productSettingsRefresh` for that. */
10341
10473
  permissionsRefresh?: boolean;
10474
+ /** @description When true, probe Dependabot alerts and secret scanning enablement on a small sample of connected repositories (only when security App grants are present). Without this flag, status returns previously cached `githubProductSettings` only (no live probe). Results are cached server-side for several minutes. */
10475
+ productSettingsRefresh?: boolean;
10342
10476
  /** @description Page size for the nested installation repo list (default 25, max 100). */
10343
10477
  repoLimit?: components["parameters"]["GithubRepoLimit"];
10344
10478
  /** @description Zero-based offset into the merged installation repo list. */