@vm0/cli 9.264.7 → 9.264.9

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.
Files changed (108) hide show
  1. package/{agent-7TQZ2JNP.js → agent-MHMP5BOB.js} +20 -15
  2. package/{agent-7TQZ2JNP.js.map → agent-MHMP5BOB.js.map} +1 -1
  3. package/{banking-XMPJDCX4.js → banking-WB4NGHEW.js} +4 -4
  4. package/{browser-EFDP23US.js → browser-OO3SXJ66.js} +4 -4
  5. package/{chat-3I3QSPCW.js → chat-IYYYJKVT.js} +5 -5
  6. package/{chunk-D53LZEPV.js → chunk-7DFIPXTO.js} +29 -11
  7. package/{chunk-D53LZEPV.js.map → chunk-7DFIPXTO.js.map} +1 -1
  8. package/{chunk-O2ZRRF6W.js → chunk-A3GE6ETZ.js} +2 -2
  9. package/{chunk-KD6CU6C6.js → chunk-AOHVC7EW.js} +2 -3
  10. package/chunk-AOHVC7EW.js.map +1 -0
  11. package/{chunk-DHADLTRS.js → chunk-CPLEJWQT.js} +2 -2
  12. package/{chunk-MIVNAXCC.js → chunk-DOYP2C2B.js} +2 -2
  13. package/{chunk-JQSR2FQW.js → chunk-FLWE2Q4D.js} +88 -56
  14. package/chunk-FLWE2Q4D.js.map +1 -0
  15. package/{chunk-CTAGNU3W.js → chunk-IOJHMLKT.js} +2 -2
  16. package/{chunk-R6EQANV5.js → chunk-JUMGFS6V.js} +6 -6
  17. package/chunk-JUMGFS6V.js.map +1 -0
  18. package/{chunk-SQ4ZYZMV.js → chunk-MTLPPLPH.js} +29 -24
  19. package/chunk-MTLPPLPH.js.map +1 -0
  20. package/{chunk-4YEMIZDG.js → chunk-NBF6ONZJ.js} +9 -9
  21. package/{chunk-4YEMIZDG.js.map → chunk-NBF6ONZJ.js.map} +1 -1
  22. package/{computer-use-PLMPMCUY.js → computer-use-JPDTT4KX.js} +4 -4
  23. package/{connector-45KWH4GF.js → connector-NI2PWPCC.js} +119 -108
  24. package/connector-NI2PWPCC.js.map +1 -0
  25. package/{credit-Q6RGVKM6.js → credit-RE47VTRH.js} +5 -5
  26. package/{developer-support-RLFWS3US.js → developer-support-DSPTERLL.js} +4 -4
  27. package/{doctor-NTJCG5E3.js → doctor-GGFT4M2V.js} +5 -5
  28. package/{feishu-KKWRQ2BO.js → feishu-COL55I4I.js} +4 -4
  29. package/{finance-OVJSFJE5.js → finance-4KCKJTAE.js} +4 -4
  30. package/{generate-GKI4KYTD.js → generate-NVBPAC3Z.js} +31 -25
  31. package/generate-NVBPAC3Z.js.map +1 -0
  32. package/{github-WLWS3NDF.js → github-KLRR5N7F.js} +4 -4
  33. package/{goal-V7MRASUE.js → goal-FINXKJ2J.js} +4 -4
  34. package/{host-QRNSGCEI.js → host-BMUSAUQG.js} +4 -4
  35. package/{logs-4TC3XVNS.js → logs-V3YP5YWY.js} +6 -6
  36. package/{mail-IEXIV6SF.js → mail-JUWPEJBZ.js} +15 -15
  37. package/mail-JUWPEJBZ.js.map +1 -0
  38. package/{maps-GR6M6KB4.js → maps-N7NXJPFL.js} +4 -4
  39. package/{model-UNL2R4ZB.js → model-Q3RGYM62.js} +5 -5
  40. package/{model-provider-T3PLIV44.js → model-provider-33TUNFMS.js} +5 -5
  41. package/{org-RYVXLOYP.js → org-SD4IEYST.js} +4 -4
  42. package/package.json +1 -1
  43. package/{people-search-VLZ7NPR7.js → people-search-3UMPCYVU.js} +4 -4
  44. package/{phone-PPVFHJC2.js → phone-7BQ3BR3C.js} +4 -4
  45. package/{preference-MNUW5R5G.js → preference-FXATAHDW.js} +4 -4
  46. package/{resource-4SKQNOTT.js → resource-Y67KRIPY.js} +4 -4
  47. package/{scrape-W4DWXZ7B.js → scrape-3JQ2OS3K.js} +4 -4
  48. package/{search-YHU5HQOW.js → search-YESW2FNC.js} +6 -6
  49. package/{secret-A7VJZCL5.js → secret-RXYXPWUF.js} +4 -4
  50. package/{slack-O6RAMJBK.js → slack-4DCGDMNB.js} +4 -4
  51. package/{teams-BYZY4YZT.js → teams-QFD2A6GL.js} +4 -4
  52. package/{telegram-LOP4EISR.js → telegram-RXVJHSUD.js} +4 -4
  53. package/{upgrade-5VBTF5UN.js → upgrade-BAMSKCN3.js} +3 -3
  54. package/{variable-MGQ6QHX2.js → variable-W2SCMTCE.js} +4 -4
  55. package/{video-5H3CCX2T.js → video-U54DBG7F.js} +3 -3
  56. package/{weather-MVJYZQWZ.js → weather-BQ7XSCCQ.js} +4 -4
  57. package/{web-CQ2W6UFJ.js → web-NSMEQ7KS.js} +4 -4
  58. package/{web-search-JFBZWJPA.js → web-search-U7HXOGYD.js} +4 -4
  59. package/{whoami-ZPH3YLXD.js → whoami-7GHF4FG6.js} +12 -12
  60. package/whoami-7GHF4FG6.js.map +1 -0
  61. package/{workflow-3Q4DQDHW.js → workflow-5IUYLCC5.js} +5 -5
  62. package/zero.js +43 -43
  63. package/chunk-JQSR2FQW.js.map +0 -1
  64. package/chunk-KD6CU6C6.js.map +0 -1
  65. package/chunk-R6EQANV5.js.map +0 -1
  66. package/chunk-SQ4ZYZMV.js.map +0 -1
  67. package/connector-45KWH4GF.js.map +0 -1
  68. package/generate-GKI4KYTD.js.map +0 -1
  69. package/mail-IEXIV6SF.js.map +0 -1
  70. package/whoami-ZPH3YLXD.js.map +0 -1
  71. /package/{banking-XMPJDCX4.js.map → banking-WB4NGHEW.js.map} +0 -0
  72. /package/{browser-EFDP23US.js.map → browser-OO3SXJ66.js.map} +0 -0
  73. /package/{chat-3I3QSPCW.js.map → chat-IYYYJKVT.js.map} +0 -0
  74. /package/{chunk-O2ZRRF6W.js.map → chunk-A3GE6ETZ.js.map} +0 -0
  75. /package/{chunk-DHADLTRS.js.map → chunk-CPLEJWQT.js.map} +0 -0
  76. /package/{chunk-MIVNAXCC.js.map → chunk-DOYP2C2B.js.map} +0 -0
  77. /package/{chunk-CTAGNU3W.js.map → chunk-IOJHMLKT.js.map} +0 -0
  78. /package/{computer-use-PLMPMCUY.js.map → computer-use-JPDTT4KX.js.map} +0 -0
  79. /package/{credit-Q6RGVKM6.js.map → credit-RE47VTRH.js.map} +0 -0
  80. /package/{developer-support-RLFWS3US.js.map → developer-support-DSPTERLL.js.map} +0 -0
  81. /package/{doctor-NTJCG5E3.js.map → doctor-GGFT4M2V.js.map} +0 -0
  82. /package/{feishu-KKWRQ2BO.js.map → feishu-COL55I4I.js.map} +0 -0
  83. /package/{finance-OVJSFJE5.js.map → finance-4KCKJTAE.js.map} +0 -0
  84. /package/{github-WLWS3NDF.js.map → github-KLRR5N7F.js.map} +0 -0
  85. /package/{goal-V7MRASUE.js.map → goal-FINXKJ2J.js.map} +0 -0
  86. /package/{host-QRNSGCEI.js.map → host-BMUSAUQG.js.map} +0 -0
  87. /package/{logs-4TC3XVNS.js.map → logs-V3YP5YWY.js.map} +0 -0
  88. /package/{maps-GR6M6KB4.js.map → maps-N7NXJPFL.js.map} +0 -0
  89. /package/{model-UNL2R4ZB.js.map → model-Q3RGYM62.js.map} +0 -0
  90. /package/{model-provider-T3PLIV44.js.map → model-provider-33TUNFMS.js.map} +0 -0
  91. /package/{org-RYVXLOYP.js.map → org-SD4IEYST.js.map} +0 -0
  92. /package/{people-search-VLZ7NPR7.js.map → people-search-3UMPCYVU.js.map} +0 -0
  93. /package/{phone-PPVFHJC2.js.map → phone-7BQ3BR3C.js.map} +0 -0
  94. /package/{preference-MNUW5R5G.js.map → preference-FXATAHDW.js.map} +0 -0
  95. /package/{resource-4SKQNOTT.js.map → resource-Y67KRIPY.js.map} +0 -0
  96. /package/{scrape-W4DWXZ7B.js.map → scrape-3JQ2OS3K.js.map} +0 -0
  97. /package/{search-YHU5HQOW.js.map → search-YESW2FNC.js.map} +0 -0
  98. /package/{secret-A7VJZCL5.js.map → secret-RXYXPWUF.js.map} +0 -0
  99. /package/{slack-O6RAMJBK.js.map → slack-4DCGDMNB.js.map} +0 -0
  100. /package/{teams-BYZY4YZT.js.map → teams-QFD2A6GL.js.map} +0 -0
  101. /package/{telegram-LOP4EISR.js.map → telegram-RXVJHSUD.js.map} +0 -0
  102. /package/{upgrade-5VBTF5UN.js.map → upgrade-BAMSKCN3.js.map} +0 -0
  103. /package/{variable-MGQ6QHX2.js.map → variable-W2SCMTCE.js.map} +0 -0
  104. /package/{video-5H3CCX2T.js.map → video-U54DBG7F.js.map} +0 -0
  105. /package/{weather-MVJYZQWZ.js.map → weather-BQ7XSCCQ.js.map} +0 -0
  106. /package/{web-CQ2W6UFJ.js.map → web-NSMEQ7KS.js.map} +0 -0
  107. /package/{web-search-JFBZWJPA.js.map → web-search-U7HXOGYD.js.map} +0 -0
  108. /package/{workflow-3Q4DQDHW.js.map → workflow-5IUYLCC5.js.map} +0 -0
@@ -6,7 +6,7 @@ import {
6
6
  getActiveToken,
7
7
  getBaseUrl,
8
8
  headersWithCliClientHeaders
9
- } from "./chunk-MIVNAXCC.js";
9
+ } from "./chunk-DOYP2C2B.js";
10
10
  import {
11
11
  init_esm_shims
12
12
  } from "./chunk-GPYQ24DR.js";
@@ -648,4 +648,4 @@ export {
648
648
  generateWebVideo,
649
649
  transcribeAudio
650
650
  };
651
- //# sourceMappingURL=chunk-O2ZRRF6W.js.map
651
+ //# sourceMappingURL=chunk-A3GE6ETZ.js.map
@@ -228,8 +228,7 @@ var FEATURE_SWITCHES = {
228
228
  ["zeroFinance" /* ZeroFinance */]: {
229
229
  maintainer: "ethan@vm0.ai",
230
230
  description: "Enable the managed APIDojo-backed Zero Finance API and finance:read ZERO_TOKEN capability.",
231
- enabled: false,
232
- enabledOrgIdHashes: STAFF_ORG_ID_HASHES
231
+ enabled: true
233
232
  },
234
233
  ["banking" /* Banking */]: {
235
234
  maintainer: "linghan@vm0.ai",
@@ -473,4 +472,4 @@ function isFeatureEnabled(key, ctx) {
473
472
  export {
474
473
  isFeatureEnabled
475
474
  };
476
- //# sourceMappingURL=chunk-KD6CU6C6.js.map
475
+ //# sourceMappingURL=chunk-AOHVC7EW.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../packages/core/src/feature-switch-key.ts","../../../packages/core/src/feature-switch.ts","../../../packages/core/src/identity-hash.ts"],"sourcesContent":["/**\n * Feature switch keys\n *\n * Defines all available feature switch identifiers.\n */\nexport enum FeatureSwitchKey {\n Dummy = \"dummy\",\n AhrefsConnector = \"ahrefsConnector\",\n BillConnector = \"billConnector\",\n BentomlConnector = \"bentomlConnector\",\n BoxConnector = \"boxConnector\",\n CanvaConnector = \"canvaConnector\",\n CalComConnector = \"calComConnector\",\n CopperConnector = \"copperConnector\",\n DatadogConnector = \"datadogConnector\",\n DeelConnector = \"deelConnector\",\n DocuSignConnector = \"docusignConnector\",\n DropboxConnector = \"dropboxConnector\",\n FigmaConnector = \"figmaConnector\",\n ExpensifyConnector = \"expensifyConnector\",\n GoogleContactsConnector = \"googleContactsConnector\",\n GoogleFormsConnector = \"googleFormsConnector\",\n JoggAiConnector = \"joggAiConnector\",\n MercuryConnector = \"mercuryConnector\",\n NeonConnector = \"neonConnector\",\n NetSuiteConnector = \"netSuiteConnector\",\n GarminConnectConnector = \"garminConnectConnector\",\n QuickBooksConnector = \"quickbooksConnector\",\n RedditConnector = \"redditConnector\",\n SupabaseConnector = \"supabaseConnector\",\n WebflowConnector = \"webflowConnector\",\n CloseConnector = \"closeConnector\",\n MetaAdsConnector = \"metaAdsConnector\",\n TikTokAdsConnector = \"tiktokAdsConnector\",\n AwsConnector = \"awsConnector\",\n PosthogConnector = \"posthogConnector\",\n PayPalConnector = \"payPalConnector\",\n RampConnector = \"rampConnector\",\n MailchimpConnector = \"mailchimpConnector\",\n ResendConnector = \"resendConnector\",\n PexelsConnector = \"pexelsConnector\",\n SpotifyConnector = \"spotifyConnector\",\n ZeroDebug = \"zeroDebug\",\n LanguagePreference = \"languagePreference\",\n BrazilianPortugueseLocale = \"brazilianPortugueseLocale\",\n ZeroFinance = \"zeroFinance\",\n ZeroBrowser = \"zeroBrowser\",\n ZeroMailReplyFollowUp = \"zeroMailReplyFollowUp\",\n Banking = \"banking\",\n Lab = \"lab\",\n NotionWorkflowAutomations = \"notionWorkflowAutomations\",\n GithubWebhookAutomations = \"githubWebhookAutomations\",\n MorningBrief = \"morningBrief\",\n ManualMorningBrief = \"manualMorningBrief\",\n TestOauthConnector = \"testOauthConnector\",\n FreshdeskConnector = \"freshdeskConnector\",\n StabilityAiConnector = \"stabilityAiConnector\",\n ZoomConnector = \"zoomConnector\",\n WorkdayConnector = \"workdayConnector\",\n CodexFastMode = \"codexFastMode\",\n CodexSessionPruning = \"codexSessionPruning\",\n ClaudeSessionPruning = \"claudeSessionPruning\",\n RealAgentInPreview = \"realAgentInPreview\",\n ComposerUploadPopover = \"composerUploadPopover\",\n StructuredPromptInlineTemplates = \"structuredPromptInlineTemplates\",\n\n ZapierConnector = \"zapierConnector\",\n ComputerUseDesktopPlugins = \"computerUseDesktopPlugins\",\n ChatThreadUnifiedSearch = \"chatThreadUnifiedSearch\",\n ComposerSkillSubstringSearch = \"composerSkillSubstringSearch\",\n SidebarSubscriptionUsage = \"sidebarSubscriptionUsage\",\n SlackDmSessionRouting = \"slackDmSessionRouting\",\n TeamsIntegration = \"teamsIntegration\",\n FeishuIntegration = \"feishuIntegration\",\n StrapiIntegration = \"strapiIntegration\",\n Artifacts = \"artifacts\",\n HostedArtifactVersions = \"hostedArtifactVersions\",\n VideoArtifactPosters = \"videoArtifactPosters\",\n ImageStyleR2 = \"imageStyleR2\",\n WorkflowConnectorReadiness = \"workflowConnectorReadiness\",\n ComposerConnectorPermissions = \"composerConnectorPermissions\",\n ThreeColumnNav = \"threeColumnNav\",\n ChatThreadSidebarAutoOpen = \"chatThreadSidebarAutoOpen\",\n}\n","/**\n * Feature switch system\n *\n * Provides centralized feature flag management with user-identity based overrides.\n * User IDs are stored as FNV-1a hashes to avoid exposing plain-text identifiers in source code.\n *\n * NOT AN AUTHORIZATION BOUNDARY. User-overridable switches can be self-enabled\n * through `POST /api/zero/feature-switches`, and `userOverridable: false` only\n * excludes a switch from that API. For money-granting, credential, or\n * privilege-escalation endpoints, gate with a hard identity check (e.g.\n * `isStaffOrg()` from `./staff-org`) instead of this system.\n */\n\nimport { FeatureSwitchKey } from \"./feature-switch-key\";\nimport { STAFF_ORG_ID_HASHES, fnv1a } from \"./identity-hash\";\n\nexport interface FeatureSwitch {\n readonly maintainer: string;\n readonly description?: string;\n readonly enabled: boolean;\n readonly enabledUserHashes?: readonly string[];\n readonly enabledEmailHashes?: readonly string[];\n readonly enabledOrgIdHashes?: readonly string[];\n readonly userOverridable?: boolean;\n}\n\nexport interface FeatureSwitchMetadata {\n readonly maintainer: string;\n readonly description?: string;\n readonly userOverridable: boolean;\n}\n\nexport interface FeatureSwitchContext {\n readonly userId?: string;\n readonly email?: string;\n readonly orgId?: string;\n readonly overrides?: Partial<Record<FeatureSwitchKey, boolean>>;\n}\n\n/**\n * Registry of all feature switches\n */\nconst FEATURE_SWITCHES: Record<FeatureSwitchKey, FeatureSwitch> = {\n [FeatureSwitchKey.Dummy]: {\n maintainer: \"ethan@vm0.ai\",\n description: \"Test-only feature switch for flag system validation\",\n enabled: true,\n },\n [FeatureSwitchKey.AhrefsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Ahrefs SEO connector\",\n enabled: false,\n },\n [FeatureSwitchKey.BillConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the BILL Spend & Expense connector\",\n enabled: false,\n },\n [FeatureSwitchKey.BentomlConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the BentoML model serving connector\",\n enabled: false,\n },\n [FeatureSwitchKey.BoxConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Box file storage connector\",\n enabled: false,\n },\n [FeatureSwitchKey.CanvaConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Canva design connector\",\n enabled: false,\n },\n [FeatureSwitchKey.CalComConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Cal.com scheduling connector\",\n enabled: false,\n },\n [FeatureSwitchKey.CopperConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Copper CRM connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DatadogConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Datadog observability connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DeelConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Deel HR connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DocuSignConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the DocuSign e-signature connector\",\n enabled: false,\n },\n [FeatureSwitchKey.DropboxConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Dropbox file storage connector\",\n enabled: false,\n },\n [FeatureSwitchKey.FigmaConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Figma design connector\",\n enabled: false,\n },\n [FeatureSwitchKey.ExpensifyConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Expensify accounting connector\",\n enabled: false,\n },\n [FeatureSwitchKey.GoogleContactsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Google Contacts connector\",\n enabled: false,\n },\n [FeatureSwitchKey.GoogleFormsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Google Forms connector\",\n enabled: false,\n },\n [FeatureSwitchKey.JoggAiConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the JoggAI video generation connector\",\n enabled: false,\n },\n [FeatureSwitchKey.MercuryConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Mercury banking connector\",\n enabled: false,\n },\n [FeatureSwitchKey.NeonConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Neon serverless Postgres connector\",\n enabled: false,\n },\n [FeatureSwitchKey.NetSuiteConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Oracle NetSuite ERP connector\",\n enabled: false,\n },\n [FeatureSwitchKey.GarminConnectConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Garmin Connect wellness connector\",\n enabled: false,\n },\n [FeatureSwitchKey.QuickBooksConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the QuickBooks accounting connector\",\n enabled: false,\n },\n [FeatureSwitchKey.RedditConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Reddit connector integration\",\n enabled: false,\n },\n [FeatureSwitchKey.SupabaseConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Supabase database connector integration\",\n enabled: false,\n },\n [FeatureSwitchKey.CloseConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Close CRM connector\",\n enabled: false,\n },\n [FeatureSwitchKey.WebflowConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Webflow site management connector\",\n enabled: false,\n },\n [FeatureSwitchKey.MetaAdsConnector]: {\n maintainer: \"ethan@vm0.ai\",\n description: \"Enable the Meta Ads Manager connector\",\n enabled: false,\n },\n [FeatureSwitchKey.TikTokAdsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the TikTok Ads Manager connector\",\n enabled: false,\n },\n [FeatureSwitchKey.AwsConnector]: {\n maintainer: \"liangyou@vm0.ai\",\n description: \"Enable the temporary AWS remote login connector\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.PosthogConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the PostHog analytics connector\",\n enabled: false,\n },\n [FeatureSwitchKey.PayPalConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the PayPal payments connector\",\n enabled: false,\n },\n [FeatureSwitchKey.RampConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Ramp spend management connector\",\n enabled: false,\n },\n [FeatureSwitchKey.MailchimpConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Mailchimp email marketing connector\",\n enabled: false,\n },\n [FeatureSwitchKey.ResendConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Resend email service connector\",\n enabled: false,\n },\n [FeatureSwitchKey.PexelsConnector]: {\n maintainer: \"bingjie@vm0.ai\",\n description: \"Enable the Pexels stock photo and video connector\",\n enabled: false,\n },\n [FeatureSwitchKey.SpotifyConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Spotify connector integration\",\n enabled: false,\n },\n [FeatureSwitchKey.ZeroDebug]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Reveal activity debug surfaces, activity log navigation, appended system prompts, and Debug preferences\",\n enabled: false,\n },\n [FeatureSwitchKey.LanguagePreference]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable workspace language bootstrap, persistence, and the Settings preference entry.\",\n enabled: false,\n },\n [FeatureSwitchKey.BrazilianPortugueseLocale]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Allow pt-BR preference writes after incompatible API readers and rollback candidates have drained.\",\n enabled: false,\n userOverridable: false,\n },\n [FeatureSwitchKey.ZeroFinance]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Enable the managed APIDojo-backed Zero Finance API and finance:read ZERO_TOKEN capability.\",\n enabled: true,\n },\n [FeatureSwitchKey.Banking]: {\n maintainer: \"linghan@vm0.ai\",\n description:\n \"Enable the managed Zero Banking gateway and banking:read ZERO_TOKEN capability for Finicity-backed accounts, balances, and transactions.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.Lab]: {\n maintainer: \"ethan@vm0.ai\",\n description: \"Show the Lab page for toggling experimental features\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.MorningBrief]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Enable the daily 7:00 local-time Morning Brief email built from GitHub, Gmail, and Google Calendar.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: true,\n },\n [FeatureSwitchKey.ManualMorningBrief]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show a Send now button in Settings that triggers a Morning Brief immediately for testing.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: true,\n },\n [FeatureSwitchKey.NotionWorkflowAutomations]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable Notion event workflow automations, starting with child pages created under a configured parent page.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.GithubWebhookAutomations]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show creation entry points for GitHub workflow job, pull request review, deployment status, and issue comment automations.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: false,\n },\n [FeatureSwitchKey.TestOauthConnector]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Enable the test-oauth connector, a synthetic OAuth 2.0 provider used only for automated tests. Off in prod.\",\n enabled: false,\n },\n [FeatureSwitchKey.FreshdeskConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Freshdesk helpdesk connector\",\n enabled: false,\n },\n [FeatureSwitchKey.StabilityAiConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Stability AI image generation connector\",\n enabled: false,\n },\n [FeatureSwitchKey.ZoomConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable the Zoom connector (OAuth 2.0) for meetings, past participants, and cloud recordings access\",\n enabled: false,\n },\n [FeatureSwitchKey.WorkdayConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Workday HCM and finance connector\",\n enabled: false,\n },\n\n [FeatureSwitchKey.CodexFastMode]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable Codex fast mode for ChatGPT subscription GPT 5.5 and GPT 5.6 web chat runs.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.CodexSessionPruning]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Prune oversized Codex checkpoint histories to the latest native compact generation.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ClaudeSessionPruning]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Prune oversized Claude Code checkpoint histories to the latest native compact generation.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.RealAgentInPreview]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Send preview chat runs through real agent CLIs instead of preview mock runners.\",\n enabled: false,\n },\n [FeatureSwitchKey.ComposerUploadPopover]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Use the Upload popover in the chat composer instead of the legacy paperclip attachment button.\",\n enabled: false,\n userOverridable: false,\n },\n [FeatureSwitchKey.StructuredPromptInlineTemplates]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Enable multiple inline artifact templates in structured chat prompts.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: true,\n },\n [FeatureSwitchKey.ZapierConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable the Zapier connector. When disabled, Zapier is hidden from the connectors list and cannot be connected.\",\n enabled: false,\n },\n [FeatureSwitchKey.ComputerUseDesktopPlugins]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Enable Zero Desktop Computer Use plugins for local resources, starting with the bundled filesystem plugin gateway.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ChatThreadUnifiedSearch]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show chat thread title results from the local event-driven thread cache in the command-shift-a conversation picker.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ChatThreadSidebarAutoOpen]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Automatically open the latest sidebar-capable card from a running or successfully completed chat run when the utility sidebar is closed and split view is available.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ComposerSkillSubstringSearch]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Match chat composer slash skill suggestions by any slug substring instead of only prefixes.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ThreeColumnNav]: {\n maintainer: \"ming@vm0.ai\",\n description:\n \"Slack-style three-column navigation: a labeled icon rail, a pinned-agents and chat-threads list column, and the conversation pane.\",\n enabled: false,\n // Ming only for the first pass; widen to staff once it settles.\n enabledEmailHashes: [\"54757055\"], // fnv1a(\"ming@vm0.ai\")\n },\n [FeatureSwitchKey.SidebarSubscriptionUsage]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Show Codex and Claude Code personal subscription usage in the Zero sidebar footer.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.SlackDmSessionRouting]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Reuse agent/model-scoped sessions for top-level Slack direct messages after compatible callback readers are deployed.\",\n enabled: false,\n },\n [FeatureSwitchKey.TeamsIntegration]: {\n maintainer: \"linghan@vm0.ai\",\n description:\n \"Show standalone Microsoft Teams integration settings, connect flows, and Works page entry points.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.FeishuIntegration]: {\n maintainer: \"linghan@vm0.ai\",\n description:\n \"Show the Feishu direct-message integration and Works page entry point.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.StrapiIntegration]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Enable Strapi integration settings and Strapi entry-published workflow automations.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: false,\n },\n [FeatureSwitchKey.Artifacts]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Show the Artifacts manage page for generated artifacts in the current organization.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.HostedArtifactVersions]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Create immutable hosted artifact versions behind stable site aliases.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.VideoArtifactPosters]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Generate poster images asynchronously when video artifacts are recorded.\",\n enabled: true,\n },\n [FeatureSwitchKey.ImageStyleR2]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Resolve archive-enabled image styles from private R2 packages. When off, image style authoring continues reading vm0-skills from GitHub.\",\n enabled: true,\n },\n [FeatureSwitchKey.WorkflowConnectorReadiness]: {\n maintainer: \"lancy@vm0.ai\",\n description:\n \"Show the manual connector readiness check on workflow settings pages.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n userOverridable: false,\n },\n [FeatureSwitchKey.ZeroMailReplyFollowUp]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable Zero Mail reply follow-up after all API deployments can read Gmail event configurations with threadId.\",\n enabled: false,\n userOverridable: false,\n },\n [FeatureSwitchKey.ZeroBrowser]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Enable thread-scoped Cloud browser access in chat and the Zero CLI.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ComposerConnectorPermissions]: {\n maintainer: \"ming@vm0.ai\",\n description:\n \"Show the configure-permissions entry in the chat composer connector popover, opening the agent×connector firewall dialog inline.\",\n enabled: false,\n userOverridable: true,\n },\n};\n\ninterface ResolvedHashes {\n readonly userHash?: string;\n readonly emailHash?: string;\n readonly orgIdHash?: string;\n}\n\nfunction evaluateSwitch(fs: FeatureSwitch, hashes: ResolvedHashes): boolean {\n if (fs.enabled) return true;\n if (hashes.userHash && fs.enabledUserHashes?.includes(hashes.userHash))\n return true;\n if (hashes.emailHash && fs.enabledEmailHashes?.includes(hashes.emailHash))\n return true;\n if (hashes.orgIdHash && fs.enabledOrgIdHashes?.includes(hashes.orgIdHash))\n return true;\n return false;\n}\n\n/**\n * Evaluate all feature switches at once for the given context.\n *\n * Computes identity hashes once and checks all switches synchronously.\n */\nexport function getAllFeatureStates(\n ctx?: FeatureSwitchContext,\n): Record<FeatureSwitchKey, boolean> {\n const switches = Object.values(FEATURE_SWITCHES);\n const hashes: ResolvedHashes = {\n userHash:\n ctx?.userId &&\n switches.some((s) => {\n return s.enabledUserHashes?.length;\n })\n ? fnv1a(ctx.userId)\n : undefined,\n emailHash:\n ctx?.email &&\n switches.some((s) => {\n return s.enabledEmailHashes?.length;\n })\n ? fnv1a(ctx.email.toLowerCase())\n : undefined,\n orgIdHash:\n ctx?.orgId &&\n switches.some((s) => {\n return s.enabledOrgIdHashes?.length;\n })\n ? fnv1a(ctx.orgId)\n : undefined,\n };\n\n const result = {} as Record<FeatureSwitchKey, boolean>;\n for (const key of Object.values(FeatureSwitchKey)) {\n result[key] = evaluateSwitch(FEATURE_SWITCHES[key], hashes);\n }\n\n if (ctx?.overrides) {\n for (const [key, value] of Object.entries(ctx.overrides)) {\n if (key in FEATURE_SWITCHES && value !== undefined) {\n result[key as FeatureSwitchKey] = value;\n }\n }\n }\n\n return result;\n}\n\n/**\n * Return the description for every feature switch.\n */\nexport function getFeatureSwitchDescriptions(): Record<\n FeatureSwitchKey,\n string | undefined\n> {\n const result = {} as Record<FeatureSwitchKey, string | undefined>;\n for (const key of Object.values(FeatureSwitchKey)) {\n result[key] = FEATURE_SWITCHES[key].description;\n }\n return result;\n}\n\n/**\n * Return display metadata for every feature switch.\n */\nexport function getFeatureSwitchMetadata(): Record<\n FeatureSwitchKey,\n FeatureSwitchMetadata\n> {\n const result = {} as Record<FeatureSwitchKey, FeatureSwitchMetadata>;\n for (const key of Object.values(FeatureSwitchKey)) {\n const featureSwitch = FEATURE_SWITCHES[key];\n result[key] = {\n maintainer: featureSwitch.maintainer,\n description: featureSwitch.description,\n userOverridable: featureSwitch.userOverridable !== false,\n };\n }\n return result;\n}\n\nexport function isUserOverridableFeatureSwitch(\n key: string,\n): key is FeatureSwitchKey {\n if (!(key in FEATURE_SWITCHES)) {\n return false;\n }\n return FEATURE_SWITCHES[key as FeatureSwitchKey].userOverridable !== false;\n}\n\nexport function getUserOverridableFeatureSwitchKeys(): readonly FeatureSwitchKey[] {\n return Object.values(FeatureSwitchKey).filter(isUserOverridableFeatureSwitch);\n}\n\nexport function filterUserOverridableFeatureSwitchOverrides(\n switches: Record<string, boolean>,\n): Record<string, boolean> {\n const filtered: Record<string, boolean> = {};\n for (const [key, value] of Object.entries(switches)) {\n if (isUserOverridableFeatureSwitch(key)) {\n filtered[key] = value;\n }\n }\n return filtered;\n}\n\n/**\n * Check if a feature is enabled for the given context.\n *\n * `ctx` is required so callers must pass identity (userId/orgId/email) or an\n * explicit `{}`. A switch gated by `enabledUserHashes` / `enabledOrgIdHashes`\n * silently returns `false` when ctx omits identity, which has caused bugs.\n * Client-side callers should usually read the platform `featureSwitch$` signal\n * instead — it also merges DB overrides on top of identity context.\n */\nexport function isFeatureEnabled(\n key: FeatureSwitchKey,\n ctx: FeatureSwitchContext,\n): boolean {\n const override = ctx.overrides?.[key];\n if (override !== undefined) {\n return override;\n }\n\n const featureSwitch = FEATURE_SWITCHES[key];\n if (featureSwitch.enabled) {\n return true;\n }\n if (ctx.userId && featureSwitch.enabledUserHashes?.length) {\n if (featureSwitch.enabledUserHashes.includes(fnv1a(ctx.userId)))\n return true;\n }\n if (ctx.email && featureSwitch.enabledEmailHashes?.length) {\n if (\n featureSwitch.enabledEmailHashes.includes(fnv1a(ctx.email.toLowerCase()))\n )\n return true;\n }\n if (ctx.orgId && featureSwitch.enabledOrgIdHashes?.length) {\n if (featureSwitch.enabledOrgIdHashes.includes(fnv1a(ctx.orgId)))\n return true;\n }\n return false;\n}\n","/**\n * Identity hashing — FNV-1a 32-bit hash used to reference users / orgs / emails\n * without embedding plain-text identifiers in source code.\n *\n * Shared between the feature-switch registry (UI rollout targeting) and\n * `staff-org.ts` (authorization primitive). The hash is deterministic and\n * synchronous; no crypto API needed.\n */\n\nexport function fnv1a(input: string): string {\n let h = 2166136261 >>> 0;\n for (let i = 0; i < input.length; i++) {\n h ^= input.charCodeAt(i);\n h = Math.imul(h, 16777619) >>> 0;\n }\n return h.toString(16).padStart(8, \"0\");\n}\n\n/**\n * Hashes of internal staff org IDs.\n *\n * This list is the source of truth for `isStaffOrg()` — adding an entry here\n * grants that org access to every endpoint that uses `isStaffOrg` as an\n * authorization check. Treat changes with the same care as role grants.\n */\nexport const STAFF_ORG_ID_HASHES: readonly string[] = [\n \"afce210e\", // org_3ANttyrbWYJk6JKRSTRLEsbsDLe\n];\n"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  MODEL_PROVIDER_TYPES
6
- } from "./chunk-MIVNAXCC.js";
6
+ } from "./chunk-DOYP2C2B.js";
7
7
  import {
8
8
  init_esm_shims
9
9
  } from "./chunk-GPYQ24DR.js";
@@ -40,4 +40,4 @@ export {
40
40
  formatModelProviderRoute,
41
41
  formatModelPolicyStatus
42
42
  };
43
- //# sourceMappingURL=chunk-DHADLTRS.js.map
43
+ //# sourceMappingURL=chunk-CPLEJWQT.js.map
@@ -15385,7 +15385,7 @@ function createCliClientHeaderInjector(options) {
15385
15385
  };
15386
15386
  }
15387
15387
  var addDefaultCliClientHeaders = createCliClientHeaderInjector({
15388
- clientVersion: "9.264.7"
15388
+ clientVersion: "9.264.9"
15389
15389
  });
15390
15390
  function addCliClientHeaders(headers) {
15391
15391
  addDefaultCliClientHeaders(headers);
@@ -16776,4 +16776,4 @@ export {
16776
16776
  apiErrorSchema,
16777
16777
  withErrorHandler
16778
16778
  };
16779
- //# sourceMappingURL=chunk-MIVNAXCC.js.map
16779
+ //# sourceMappingURL=chunk-DOYP2C2B.js.map
@@ -21,7 +21,7 @@ import {
21
21
  updateOrgModelPoliciesRequestSchema,
22
22
  upsertModelProviderRequestSchema,
23
23
  upsertModelProviderResponseSchema
24
- } from "./chunk-MIVNAXCC.js";
24
+ } from "./chunk-DOYP2C2B.js";
25
25
  import {
26
26
  __commonJS,
27
27
  __esm,
@@ -1997,6 +1997,7 @@ init_esm_shims();
1997
1997
  var CHAT_EVENT_TYPES = [
1998
1998
  "input.prompt",
1999
1999
  "input.automation",
2000
+ "input.goal",
2000
2001
  "input.rejected",
2001
2002
  "output.message",
2002
2003
  "output.error",
@@ -2015,6 +2016,11 @@ var CHAT_EVENT_TYPES = [
2015
2016
  "usage.recorded"
2016
2017
  ];
2017
2018
  var chatEventTypeSchema = external_exports.enum(CHAT_EVENT_TYPES);
2019
+ var MATERIALIZED_CHAT_EVENT_TYPES = CHAT_EVENT_TYPES.filter(
2020
+ (eventType) => {
2021
+ return eventType !== "input.goal";
2022
+ }
2023
+ );
2018
2024
 
2019
2025
  // ../../packages/api-contracts/src/contracts/runs.ts
2020
2026
  init_esm_shims();
@@ -3799,8 +3805,10 @@ var chatEventSchema = external_exports.discriminatedUnion("eventType", [
3799
3805
  usageRecordedEventSchema
3800
3806
  ]);
3801
3807
  var chatEventResponseSchema = chatEventSchema;
3802
- if (chatEventTypeSchema.options.length !== chatEventSchema.options.length) {
3803
- throw new Error("ChatEvent schema must cover the complete event catalog");
3808
+ if (MATERIALIZED_CHAT_EVENT_TYPES.length !== chatEventSchema.options.length || !chatEventTypeSchema.options.includes("input.goal")) {
3809
+ throw new Error(
3810
+ "ChatEvent schema must cover every materialized event catalog leaf"
3811
+ );
3804
3812
  }
3805
3813
  var chatThreadDetailSchema = external_exports.object({
3806
3814
  /**
@@ -4718,10 +4726,10 @@ init_esm_shims();
4718
4726
 
4719
4727
  // ../../packages/api-contracts/src/contracts/connector-identity.ts
4720
4728
  init_esm_shims();
4721
- var CONNECTOR_REF_MAX_LENGTH = 64;
4729
+ var CONNECTOR_SLUG_MAX_LENGTH = 64;
4722
4730
  var CONNECTOR_AUTH_METHOD_ID_MAX_LENGTH = 50;
4723
4731
  var connectorIdentityPattern = /^[a-z0-9][a-z0-9-]*$/u;
4724
- var connectorRefSchema = external_exports.string().min(1).max(CONNECTOR_REF_MAX_LENGTH).regex(connectorIdentityPattern);
4732
+ var connectorSlugSchema = external_exports.string().min(1).max(CONNECTOR_SLUG_MAX_LENGTH).regex(connectorIdentityPattern);
4725
4733
  var connectorAuthMethodIdSchema = external_exports.string().min(1).max(CONNECTOR_AUTH_METHOD_ID_MAX_LENGTH).regex(connectorIdentityPattern);
4726
4734
 
4727
4735
  // ../../packages/api-contracts/src/contracts/zero-user-permission-grants.ts
@@ -4741,7 +4749,8 @@ var agentPermissionGrantScopeSchema = external_exports.object({
4741
4749
  });
4742
4750
  var userPermissionGrantScopeSchema = agentPermissionGrantScopeSchema;
4743
4751
  var userPermissionGrantResponseBaseSchema = external_exports.object({
4744
- connectorRef: connectorRefSchema,
4752
+ // TODO(#23619): Rename permission-grant wire fields with the DB migration.
4753
+ connectorRef: connectorSlugSchema,
4745
4754
  permission: permissionSchema,
4746
4755
  action: userPermissionGrantActionSchema,
4747
4756
  expiresAt: external_exports.string().nullable(),
@@ -4767,7 +4776,8 @@ var applyUserPermissionGrantSchema = external_exports.discriminatedUnion("action
4767
4776
  ]);
4768
4777
  var applyUserPermissionGrantsRequestSchema = userPermissionGrantScopeSchema.and(
4769
4778
  external_exports.object({
4770
- connectorRef: connectorRefSchema,
4779
+ // TODO(#23619): Rename with the response and persisted grant field.
4780
+ connectorRef: connectorSlugSchema,
4771
4781
  mode: userPermissionGrantApplyModeSchema,
4772
4782
  grants: external_exports.array(applyUserPermissionGrantSchema)
4773
4783
  })
@@ -4807,10 +4817,11 @@ var zeroUserPermissionGrantsContract = c15.router({
4807
4817
  // ../../packages/api-contracts/src/contracts/user-connectors.ts
4808
4818
  init_esm_shims();
4809
4819
  var c16 = initContract();
4810
- var userConnectorEnabledTypesSchema = external_exports.object({
4811
- enabledTypes: external_exports.array(connectorRefSchema)
4820
+ var userConnectorEnabledSlugsSchema = external_exports.object({
4821
+ // TODO(#23619): Rename this user-connector wire field after clients migrate.
4822
+ enabledTypes: external_exports.array(connectorSlugSchema)
4812
4823
  });
4813
- var userConnectorUpdateSchema = userConnectorEnabledTypesSchema.extend(
4824
+ var userConnectorUpdateSchema = userConnectorEnabledSlugsSchema.extend(
4814
4825
  {
4815
4826
  operation: external_exports.enum(["replace", "add", "remove"]).optional()
4816
4827
  }
@@ -4822,7 +4833,7 @@ var zeroUserConnectorsContract = c16.router({
4822
4833
  headers: authHeadersSchema,
4823
4834
  pathParams: external_exports.object({ id: external_exports.string().uuid() }),
4824
4835
  responses: {
4825
- 200: userConnectorEnabledTypesSchema,
4836
+ 200: userConnectorEnabledSlugsSchema,
4826
4837
  401: apiErrorSchema,
4827
4838
  403: apiErrorSchema,
4828
4839
  404: apiErrorSchema
@@ -4836,7 +4847,7 @@ var zeroUserConnectorsContract = c16.router({
4836
4847
  pathParams: external_exports.object({ id: external_exports.string().uuid() }),
4837
4848
  body: userConnectorUpdateSchema,
4838
4849
  responses: {
4839
- 200: userConnectorEnabledTypesSchema,
4850
+ 200: userConnectorEnabledSlugsSchema,
4840
4851
  400: apiErrorSchema,
4841
4852
  401: apiErrorSchema,
4842
4853
  403: apiErrorSchema,
@@ -5048,7 +5059,8 @@ var connectorReconnectReasonSchema = external_exports.enum([
5048
5059
  ]);
5049
5060
  var connectorResponseSchema = external_exports.object({
5050
5061
  id: external_exports.uuid(),
5051
- type: connectorRefSchema,
5062
+ // TODO(#23619): Rename this legacy wire field after API clients migrate.
5063
+ type: connectorSlugSchema,
5052
5064
  authMethod: connectorAuthMethodIdSchema,
5053
5065
  externalId: external_exports.string().nullable(),
5054
5066
  externalUsername: external_exports.string().nullable(),
@@ -5078,7 +5090,8 @@ var connectorProvidedBindingSourceSchema = external_exports.discriminatedUnion(
5078
5090
  ]
5079
5091
  );
5080
5092
  var connectorProvidedBindingSchema = external_exports.object({
5081
- connectorType: connectorRefSchema,
5093
+ // TODO(#23619): Rename this legacy wire field after API clients migrate.
5094
+ connectorType: connectorSlugSchema,
5082
5095
  authMethod: connectorAuthMethodIdSchema,
5083
5096
  namespace: connectorProvidedBindingNamespaceSchema,
5084
5097
  name: external_exports.string(),
@@ -5087,7 +5100,8 @@ var connectorProvidedBindingSchema = external_exports.object({
5087
5100
  });
5088
5101
  var connectorListResponseSchema = external_exports.object({
5089
5102
  connectors: external_exports.array(connectorResponseSchema),
5090
- configuredTypes: external_exports.array(connectorRefSchema),
5103
+ // TODO(#23619): Rename this legacy wire field after API clients migrate.
5104
+ configuredTypes: external_exports.array(connectorSlugSchema),
5091
5105
  connectorProvidedBindings: external_exports.array(connectorProvidedBindingSchema).default([])
5092
5106
  });
5093
5107
  var scopeDiffResponseSchema = external_exports.object({
@@ -5102,7 +5116,8 @@ var connectorOauthStartResponseSchema = external_exports.object({
5102
5116
  var connectorOauthDeviceAuthSessionStartResponseSchema = external_exports.object({
5103
5117
  sessionId: external_exports.uuid(),
5104
5118
  sessionToken: external_exports.string(),
5105
- type: connectorRefSchema,
5119
+ // TODO(#23619): Rename this legacy wire field after API clients migrate.
5120
+ type: connectorSlugSchema,
5106
5121
  status: external_exports.literal("pending"),
5107
5122
  userCode: external_exports.string(),
5108
5123
  verificationUri: external_exports.string(),
@@ -5141,7 +5156,8 @@ var connectorOauthDeviceAuthSessionPollResponseSchema = external_exports.discrim
5141
5156
  var connectorExternalCodeSessionStartResponseSchema = external_exports.object({
5142
5157
  sessionId: external_exports.uuid(),
5143
5158
  sessionToken: external_exports.string(),
5144
- type: connectorRefSchema,
5159
+ // TODO(#23619): Rename this legacy wire field after API clients migrate.
5160
+ type: connectorSlugSchema,
5145
5161
  status: external_exports.literal("pending"),
5146
5162
  authorizationUrl: external_exports.string(),
5147
5163
  expiresIn: external_exports.number()
@@ -5171,12 +5187,12 @@ var zeroConnectorsMainContract = c18.router({
5171
5187
  summary: "List all connectors (zero proxy)"
5172
5188
  }
5173
5189
  });
5174
- var zeroConnectorsByTypeContract = c18.router({
5190
+ var zeroConnectorsBySlugContract = c18.router({
5175
5191
  get: {
5176
5192
  method: "GET",
5177
5193
  path: "/api/zero/connectors/:type",
5178
5194
  headers: authHeadersSchema,
5179
- pathParams: external_exports.object({ type: connectorRefSchema }),
5195
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5180
5196
  responses: {
5181
5197
  200: connectorResponseSchema,
5182
5198
  401: apiErrorSchema,
@@ -5189,7 +5205,7 @@ var zeroConnectorsByTypeContract = c18.router({
5189
5205
  method: "DELETE",
5190
5206
  path: "/api/zero/connectors/:type",
5191
5207
  headers: authHeadersSchema,
5192
- pathParams: external_exports.object({ type: connectorRefSchema }),
5208
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5193
5209
  responses: {
5194
5210
  204: c18.noBody(),
5195
5211
  401: apiErrorSchema,
@@ -5203,7 +5219,7 @@ var zeroConnectorScopeDiffContract = c18.router({
5203
5219
  method: "GET",
5204
5220
  path: "/api/zero/connectors/:type/scope-diff",
5205
5221
  headers: authHeadersSchema,
5206
- pathParams: external_exports.object({ type: connectorRefSchema }),
5222
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5207
5223
  responses: {
5208
5224
  200: scopeDiffResponseSchema,
5209
5225
  401: apiErrorSchema,
@@ -5218,7 +5234,7 @@ var zeroConnectorOauthStartContract = c18.router({
5218
5234
  method: "POST",
5219
5235
  path: "/api/zero/connectors/:type/oauth/start",
5220
5236
  headers: authHeadersSchema,
5221
- pathParams: external_exports.object({ type: connectorRefSchema }),
5237
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5222
5238
  body: external_exports.object({
5223
5239
  authMethod: connectorAuthMethodIdSchema,
5224
5240
  agentId: external_exports.uuid().optional(),
@@ -5239,7 +5255,7 @@ var zeroConnectorOauthContinueContract = c18.router({
5239
5255
  continue: {
5240
5256
  method: "GET",
5241
5257
  path: "/api/zero/connectors/:type/oauth/continue",
5242
- pathParams: external_exports.object({ type: connectorRefSchema }),
5258
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5243
5259
  query: external_exports.object({ state: external_exports.string().regex(/^[0-9a-f]{64}$/) }),
5244
5260
  responses: {
5245
5261
  307: c18.noBody(),
@@ -5254,7 +5270,7 @@ var zeroConnectorOpenIdStartContract = c18.router({
5254
5270
  method: "POST",
5255
5271
  path: "/api/zero/connectors/:type/openid/start",
5256
5272
  headers: authHeadersSchema,
5257
- pathParams: external_exports.object({ type: connectorRefSchema }),
5273
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5258
5274
  body: external_exports.object({
5259
5275
  authMethod: connectorAuthMethodIdSchema,
5260
5276
  agentId: external_exports.uuid().optional(),
@@ -5275,7 +5291,7 @@ var zeroConnectorManualGrantContract = c18.router({
5275
5291
  method: "POST",
5276
5292
  path: "/api/zero/connectors/:type/manual-grant",
5277
5293
  headers: authHeadersSchema,
5278
- pathParams: external_exports.object({ type: connectorRefSchema }),
5294
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5279
5295
  body: external_exports.object({
5280
5296
  authMethod: connectorAuthMethodIdSchema,
5281
5297
  agentId: external_exports.uuid().optional(),
@@ -5298,7 +5314,7 @@ var zeroConnectorNoAuthGrantContract = c18.router({
5298
5314
  method: "POST",
5299
5315
  path: "/api/zero/connectors/:type/no-auth",
5300
5316
  headers: authHeadersSchema,
5301
- pathParams: external_exports.object({ type: connectorRefSchema }),
5317
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5302
5318
  body: external_exports.object({
5303
5319
  authMethod: connectorAuthMethodIdSchema,
5304
5320
  agentId: external_exports.uuid().optional(),
@@ -5320,7 +5336,7 @@ var zeroConnectorOauthDeviceAuthSessionContract = c18.router({
5320
5336
  method: "POST",
5321
5337
  path: "/api/zero/connectors/:type/oauth/device/sessions",
5322
5338
  headers: authHeadersSchema,
5323
- pathParams: external_exports.object({ type: connectorRefSchema }),
5339
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5324
5340
  body: external_exports.object({
5325
5341
  authMethod: connectorAuthMethodIdSchema,
5326
5342
  agentId: external_exports.uuid().optional(),
@@ -5341,7 +5357,7 @@ var zeroConnectorOauthDeviceAuthSessionContract = c18.router({
5341
5357
  path: "/api/zero/connectors/:type/oauth/device/sessions/:sessionId/poll",
5342
5358
  headers: authHeadersSchema,
5343
5359
  pathParams: external_exports.object({
5344
- type: connectorRefSchema,
5360
+ type: connectorSlugSchema,
5345
5361
  sessionId: external_exports.uuid()
5346
5362
  }),
5347
5363
  body: connectorOauthDeviceAuthSessionPollRequestSchema,
@@ -5361,7 +5377,7 @@ var zeroConnectorExternalCodeSessionContract = c18.router({
5361
5377
  method: "POST",
5362
5378
  path: "/api/zero/connectors/:type/external-code/sessions",
5363
5379
  headers: authHeadersSchema,
5364
- pathParams: external_exports.object({ type: connectorRefSchema }),
5380
+ pathParams: external_exports.object({ type: connectorSlugSchema }),
5365
5381
  body: external_exports.object({
5366
5382
  authMethod: connectorAuthMethodIdSchema,
5367
5383
  agentId: external_exports.uuid().optional(),
@@ -5381,7 +5397,7 @@ var zeroConnectorExternalCodeSessionContract = c18.router({
5381
5397
  path: "/api/zero/connectors/:type/external-code/sessions/:sessionId/complete",
5382
5398
  headers: authHeadersSchema,
5383
5399
  pathParams: external_exports.object({
5384
- type: connectorRefSchema,
5400
+ type: connectorSlugSchema,
5385
5401
  sessionId: external_exports.uuid()
5386
5402
  }),
5387
5403
  body: connectorExternalCodeSessionCompleteRequestSchema,
@@ -5397,7 +5413,7 @@ var zeroConnectorExternalCodeSessionContract = c18.router({
5397
5413
  }
5398
5414
  });
5399
5415
  var connectorSearchItemSchema = external_exports.object({
5400
- id: connectorRefSchema,
5416
+ id: connectorSlugSchema,
5401
5417
  label: external_exports.string(),
5402
5418
  description: external_exports.string(),
5403
5419
  authMethods: external_exports.array(connectorAuthMethodIdSchema)
@@ -5447,7 +5463,8 @@ var connectorCatalogCompatibilityReasonSchema = external_exports.enum([
5447
5463
  "missing-platform-configuration"
5448
5464
  ]);
5449
5465
  var connectorCatalogFilteredAuthMethodSchema = external_exports.object({
5450
- connectorRef: connectorRefSchema,
5466
+ // TODO(#23619): Rename this diagnostics wire field after clients migrate.
5467
+ connectorRef: connectorSlugSchema,
5451
5468
  authMethodId: connectorAuthMethodIdSchema,
5452
5469
  reasons: external_exports.array(connectorCatalogCompatibilityReasonSchema).min(1)
5453
5470
  });
@@ -5533,7 +5550,8 @@ var publicConnectorCatalogCategoryMetadataSchema = external_exports.object({
5533
5550
  groups: external_exports.array(publicConnectorCatalogCategoryGroupSchema)
5534
5551
  });
5535
5552
  var publicConnectorCatalogItemSchema = external_exports.object({
5536
- connectorRef: connectorRefSchema,
5553
+ // TODO(#23619): Rename catalog API fields after independent clients migrate.
5554
+ connectorRef: connectorSlugSchema,
5537
5555
  label: external_exports.string(),
5538
5556
  description: external_exports.string(),
5539
5557
  icon: publicConnectorCatalogIconSchema,
@@ -5617,7 +5635,8 @@ var publicConnectorCatalogDefaultPolicySchema = external_exports.object({
5617
5635
  unknownPolicy: publicFirewallPolicyValueSchema
5618
5636
  });
5619
5637
  var publicConnectorCatalogPermissionDetailSchema = external_exports.object({
5620
- connectorRef: connectorRefSchema,
5638
+ // TODO(#23619): Rename this catalog API field after clients migrate.
5639
+ connectorRef: connectorSlugSchema,
5621
5640
  label: external_exports.string(),
5622
5641
  icon: publicConnectorCatalogIconSchema,
5623
5642
  permissionCount: external_exports.number().int().nonnegative(),
@@ -5629,7 +5648,8 @@ var publicConnectorCatalogPermissionDetailResponseSchema = external_exports.obje
5629
5648
  permissions: publicConnectorCatalogPermissionDetailSchema
5630
5649
  });
5631
5650
  var connectorCatalogPathParamsSchema = external_exports.object({
5632
- connectorRef: connectorRefSchema
5651
+ // TODO(#23619): Rename this path parameter and route in a compatible rollout.
5652
+ connectorRef: connectorSlugSchema
5633
5653
  });
5634
5654
  var zeroConnectorCatalogContract = c19.router({
5635
5655
  list: {
@@ -5708,7 +5728,8 @@ var connectorCheckUrlRequestSchema = external_exports.object({
5708
5728
  mode: external_exports.literal("url"),
5709
5729
  method: external_exports.string().min(1).max(16),
5710
5730
  url: external_exports.string().min(1).max(8192),
5711
- connectorRef: connectorRefSchema.optional(),
5731
+ // TODO(#23619): Rename connector-check wire fields after clients migrate.
5732
+ connectorRef: connectorSlugSchema.optional(),
5712
5733
  environmentName: boundedNameSchema.optional()
5713
5734
  }).strict();
5714
5735
  var connectorCheckEnvironmentRequestSchema = external_exports.object({
@@ -5721,13 +5742,15 @@ var connectorCheckRequestSchema = external_exports.discriminatedUnion("mode", [
5721
5742
  connectorCheckEnvironmentRequestSchema
5722
5743
  ]);
5723
5744
  var connectorCheckIdentitySchema = external_exports.object({
5724
- connectorRef: connectorRefSchema,
5745
+ // TODO(#23619): Rename with the connector-check response contract.
5746
+ connectorRef: connectorSlugSchema,
5725
5747
  label: external_exports.string().min(1),
5726
5748
  visibility: external_exports.enum(["available", "unavailable"]),
5727
5749
  credentialResolution: external_exports.enum(["network-boundary", "none"])
5728
5750
  }).strict();
5729
5751
  var connectorCheckCandidateSchema = external_exports.object({
5730
- connectorRef: connectorRefSchema,
5752
+ // TODO(#23619): Rename with the connector-check response contract.
5753
+ connectorRef: connectorSlugSchema,
5731
5754
  label: external_exports.string().min(1)
5732
5755
  }).strict();
5733
5756
  var connectorCheckNotScopedRunSchema = external_exports.object({ status: external_exports.literal("not-scoped") }).strict();
@@ -6103,16 +6126,16 @@ async function listZeroConnectorCatalogStatus() {
6103
6126
  }
6104
6127
  handleError(result, "Failed to list connector catalog status");
6105
6128
  }
6106
- async function getZeroConnectorCatalogPermissions(connectorRef) {
6129
+ async function getZeroConnectorCatalogPermissions(connectorSlug) {
6107
6130
  const config = await getClientConfig();
6108
6131
  const client2 = initClient(zeroConnectorCatalogContract, config);
6109
6132
  const result = await client2.permissions({
6110
- params: { connectorRef }
6133
+ params: { connectorRef: connectorSlug }
6111
6134
  });
6112
6135
  if (result.status === 200) {
6113
- if (result.body.permissions.connectorRef !== connectorRef) {
6136
+ if (result.body.permissions.connectorRef !== connectorSlug) {
6114
6137
  throw new Error(
6115
- `Permission metadata connectorRef mismatch: expected ${connectorRef}, got ${result.body.permissions.connectorRef}`
6138
+ `Permission metadata connectorRef mismatch: expected ${connectorSlug}, got ${result.body.permissions.connectorRef}`
6116
6139
  );
6117
6140
  }
6118
6141
  return result.body.permissions;
@@ -6122,7 +6145,7 @@ async function getZeroConnectorCatalogPermissions(connectorRef) {
6122
6145
  }
6123
6146
  handleError(
6124
6147
  result,
6125
- `Failed to get connector permission metadata for "${connectorRef}"`
6148
+ `Failed to get connector permission metadata for "${connectorSlug}"`
6126
6149
  );
6127
6150
  }
6128
6151
  async function diagnoseZeroConnectorCheck(request) {
@@ -6137,11 +6160,11 @@ async function diagnoseZeroConnectorCheck(request) {
6137
6160
  }
6138
6161
  handleError(result, "Failed to diagnose connector");
6139
6162
  }
6140
- async function getZeroConnector(type) {
6163
+ async function getZeroConnector(connectorSlug) {
6141
6164
  const config = await getClientConfig();
6142
- const client2 = initClient(zeroConnectorsByTypeContract, config);
6165
+ const client2 = initClient(zeroConnectorsBySlugContract, config);
6143
6166
  const result = await client2.get({
6144
- params: { type }
6167
+ params: { type: connectorSlug }
6145
6168
  });
6146
6169
  if (result.status === 200) {
6147
6170
  return result.body;
@@ -6149,19 +6172,19 @@ async function getZeroConnector(type) {
6149
6172
  if (result.status === 404) {
6150
6173
  return null;
6151
6174
  }
6152
- handleError(result, `Failed to get connector "${type}"`);
6175
+ handleError(result, `Failed to get connector "${connectorSlug}"`);
6153
6176
  }
6154
- async function connectZeroConnectorManualGrant(type, authMethod, values) {
6177
+ async function connectZeroConnectorManualGrant(connectorSlug, authMethod, values) {
6155
6178
  const config = await getClientConfig();
6156
6179
  const client2 = initClient(zeroConnectorManualGrantContract, config);
6157
6180
  const result = await client2.connect({
6158
- params: { type },
6181
+ params: { type: connectorSlug },
6159
6182
  body: { authMethod, values }
6160
6183
  });
6161
6184
  if (result.status === 200) {
6162
6185
  return result.body;
6163
6186
  }
6164
- handleError(result, `Failed to connect connector "${type}"`);
6187
+ handleError(result, `Failed to connect connector "${connectorSlug}"`);
6165
6188
  }
6166
6189
  async function listZeroCustomConnectors() {
6167
6190
  const config = await getClientConfig();
@@ -6330,7 +6353,7 @@ var storedConnectorPermissionBaselineSchema = external_exports.object({
6330
6353
  buildCommitSha: connectorCatalogBuildCommitShaSchema.nullable()
6331
6354
  }).strict(),
6332
6355
  connectors: external_exports.record(
6333
- connectorRefSchema,
6356
+ connectorSlugSchema,
6334
6357
  connectorPermissionBaselineEntrySchema
6335
6358
  )
6336
6359
  }).strict();
@@ -6552,6 +6575,8 @@ var storedExecutionContextSchema = external_exports.object({
6552
6575
  encryptedSecrets: external_exports.string().nullable(),
6553
6576
  // Maps firewall auth secret env aliases (the `NAME` in `${{ secrets.NAME }}`) to
6554
6577
  // their connector or provider owner. Keys are env aliases, not storage secret names.
6578
+ // TODO(#23619): Split connector slugs from provider keys before renaming this
6579
+ // persisted runner field.
6555
6580
  secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).nullable().optional(),
6556
6581
  // Same keys as secretConnectorMap; adds source details when the owner alone
6557
6582
  // is not enough to locate access storage (for example, personal model providers).
@@ -6616,6 +6641,8 @@ var executionContextSchema = external_exports.object({
6616
6641
  encryptedSecrets: external_exports.string().nullable(),
6617
6642
  // Maps firewall auth secret env aliases (the `NAME` in `${{ secrets.NAME }}`) to
6618
6643
  // their connector or provider owner. Keys are env aliases, not storage secret names.
6644
+ // TODO(#23619): Split connector slugs from provider keys before renaming this
6645
+ // runner wire field.
6619
6646
  secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).nullable().optional(),
6620
6647
  // Same keys as secretConnectorMap; adds source details when the owner alone
6621
6648
  // is not enough to locate access storage (for example, personal model providers).
@@ -6688,13 +6715,15 @@ var runnersNetworkPolicyRefreshContract = c22.router({
6688
6715
  runId: external_exports.uuid()
6689
6716
  }),
6690
6717
  body: external_exports.object({
6691
- connectorRefs: external_exports.array(connectorRefSchema).min(1).max(NETWORK_POLICY_REFRESH_CONNECTOR_REFS_MAX)
6718
+ // TODO(#23619): Rename runner wire fields in a compatibility-safe rollout.
6719
+ connectorRefs: external_exports.array(connectorSlugSchema).min(1).max(NETWORK_POLICY_REFRESH_CONNECTOR_REFS_MAX)
6692
6720
  }),
6693
6721
  responses: {
6694
6722
  200: external_exports.object({
6695
6723
  refreshes: external_exports.array(
6696
6724
  external_exports.object({
6697
- connectorRef: connectorRefSchema,
6725
+ // TODO(#23619): Keep the response aligned with the request rollout.
6726
+ connectorRef: connectorSlugSchema,
6698
6727
  networkPolicy: networkPolicySchema,
6699
6728
  nextRefreshAt: external_exports.string().datetime({ offset: true }).nullable()
6700
6729
  })
@@ -7062,6 +7091,8 @@ var webhookFirewallAuthContract = c23.router({
7062
7091
  authAwsSigv4: firewallAwsSigv4AuthSchema2.optional(),
7063
7092
  // Maps firewall auth secret env aliases (the `NAME` in `${{ secrets.NAME }}`)
7064
7093
  // to the connector or provider owner that can refresh/resolve access.
7094
+ // TODO(#23619): Split connector slugs from provider keys before renaming
7095
+ // this firewall-auth wire field.
7065
7096
  secretConnectorMap: external_exports.record(external_exports.string(), external_exports.string()).optional(),
7066
7097
  // Same keys as secretConnectorMap; adds source details when the owner
7067
7098
  // alone is not enough to locate access storage.
@@ -10899,7 +10930,8 @@ var zeroWorkflowConnectorReadinessStatusSchema = external_exports.enum([
10899
10930
  "unavailable"
10900
10931
  ]);
10901
10932
  var zeroWorkflowConnectorReadinessEntrySchema = external_exports.object({
10902
- connectorRef: connectorRefSchema,
10933
+ // TODO(#23619): Rename this workflow readiness response field with clients.
10934
+ connectorRef: connectorSlugSchema,
10903
10935
  label: external_exports.string().min(1),
10904
10936
  icon: publicConnectorCatalogIconSchema,
10905
10937
  reason: external_exports.string().min(1),
@@ -12947,7 +12979,7 @@ export {
12947
12979
  chatThreadSnapshotProjectionSchema,
12948
12980
  chatThreadEventSchema,
12949
12981
  zeroAgentVisibilitySchema,
12950
- connectorRefSchema,
12982
+ connectorSlugSchema,
12951
12983
  createZeroAgent,
12952
12984
  listZeroAgents,
12953
12985
  getZeroAgent,
@@ -13084,4 +13116,4 @@ export {
13084
13116
  getHostedSiteFiles,
13085
13117
  getHostedSiteDeployments
13086
13118
  };
13087
- //# sourceMappingURL=chunk-JQSR2FQW.js.map
13119
+ //# sourceMappingURL=chunk-FLWE2Q4D.js.map