@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.
- package/{agent-7TQZ2JNP.js → agent-MHMP5BOB.js} +20 -15
- package/{agent-7TQZ2JNP.js.map → agent-MHMP5BOB.js.map} +1 -1
- package/{banking-XMPJDCX4.js → banking-WB4NGHEW.js} +4 -4
- package/{browser-EFDP23US.js → browser-OO3SXJ66.js} +4 -4
- package/{chat-3I3QSPCW.js → chat-IYYYJKVT.js} +5 -5
- package/{chunk-D53LZEPV.js → chunk-7DFIPXTO.js} +29 -11
- package/{chunk-D53LZEPV.js.map → chunk-7DFIPXTO.js.map} +1 -1
- package/{chunk-O2ZRRF6W.js → chunk-A3GE6ETZ.js} +2 -2
- package/{chunk-KD6CU6C6.js → chunk-AOHVC7EW.js} +2 -3
- package/chunk-AOHVC7EW.js.map +1 -0
- package/{chunk-DHADLTRS.js → chunk-CPLEJWQT.js} +2 -2
- package/{chunk-MIVNAXCC.js → chunk-DOYP2C2B.js} +2 -2
- package/{chunk-JQSR2FQW.js → chunk-FLWE2Q4D.js} +88 -56
- package/chunk-FLWE2Q4D.js.map +1 -0
- package/{chunk-CTAGNU3W.js → chunk-IOJHMLKT.js} +2 -2
- package/{chunk-R6EQANV5.js → chunk-JUMGFS6V.js} +6 -6
- package/chunk-JUMGFS6V.js.map +1 -0
- package/{chunk-SQ4ZYZMV.js → chunk-MTLPPLPH.js} +29 -24
- package/chunk-MTLPPLPH.js.map +1 -0
- package/{chunk-4YEMIZDG.js → chunk-NBF6ONZJ.js} +9 -9
- package/{chunk-4YEMIZDG.js.map → chunk-NBF6ONZJ.js.map} +1 -1
- package/{computer-use-PLMPMCUY.js → computer-use-JPDTT4KX.js} +4 -4
- package/{connector-45KWH4GF.js → connector-NI2PWPCC.js} +119 -108
- package/connector-NI2PWPCC.js.map +1 -0
- package/{credit-Q6RGVKM6.js → credit-RE47VTRH.js} +5 -5
- package/{developer-support-RLFWS3US.js → developer-support-DSPTERLL.js} +4 -4
- package/{doctor-NTJCG5E3.js → doctor-GGFT4M2V.js} +5 -5
- package/{feishu-KKWRQ2BO.js → feishu-COL55I4I.js} +4 -4
- package/{finance-OVJSFJE5.js → finance-4KCKJTAE.js} +4 -4
- package/{generate-GKI4KYTD.js → generate-NVBPAC3Z.js} +31 -25
- package/generate-NVBPAC3Z.js.map +1 -0
- package/{github-WLWS3NDF.js → github-KLRR5N7F.js} +4 -4
- package/{goal-V7MRASUE.js → goal-FINXKJ2J.js} +4 -4
- package/{host-QRNSGCEI.js → host-BMUSAUQG.js} +4 -4
- package/{logs-4TC3XVNS.js → logs-V3YP5YWY.js} +6 -6
- package/{mail-IEXIV6SF.js → mail-JUWPEJBZ.js} +15 -15
- package/mail-JUWPEJBZ.js.map +1 -0
- package/{maps-GR6M6KB4.js → maps-N7NXJPFL.js} +4 -4
- package/{model-UNL2R4ZB.js → model-Q3RGYM62.js} +5 -5
- package/{model-provider-T3PLIV44.js → model-provider-33TUNFMS.js} +5 -5
- package/{org-RYVXLOYP.js → org-SD4IEYST.js} +4 -4
- package/package.json +1 -1
- package/{people-search-VLZ7NPR7.js → people-search-3UMPCYVU.js} +4 -4
- package/{phone-PPVFHJC2.js → phone-7BQ3BR3C.js} +4 -4
- package/{preference-MNUW5R5G.js → preference-FXATAHDW.js} +4 -4
- package/{resource-4SKQNOTT.js → resource-Y67KRIPY.js} +4 -4
- package/{scrape-W4DWXZ7B.js → scrape-3JQ2OS3K.js} +4 -4
- package/{search-YHU5HQOW.js → search-YESW2FNC.js} +6 -6
- package/{secret-A7VJZCL5.js → secret-RXYXPWUF.js} +4 -4
- package/{slack-O6RAMJBK.js → slack-4DCGDMNB.js} +4 -4
- package/{teams-BYZY4YZT.js → teams-QFD2A6GL.js} +4 -4
- package/{telegram-LOP4EISR.js → telegram-RXVJHSUD.js} +4 -4
- package/{upgrade-5VBTF5UN.js → upgrade-BAMSKCN3.js} +3 -3
- package/{variable-MGQ6QHX2.js → variable-W2SCMTCE.js} +4 -4
- package/{video-5H3CCX2T.js → video-U54DBG7F.js} +3 -3
- package/{weather-MVJYZQWZ.js → weather-BQ7XSCCQ.js} +4 -4
- package/{web-CQ2W6UFJ.js → web-NSMEQ7KS.js} +4 -4
- package/{web-search-JFBZWJPA.js → web-search-U7HXOGYD.js} +4 -4
- package/{whoami-ZPH3YLXD.js → whoami-7GHF4FG6.js} +12 -12
- package/whoami-7GHF4FG6.js.map +1 -0
- package/{workflow-3Q4DQDHW.js → workflow-5IUYLCC5.js} +5 -5
- package/zero.js +43 -43
- package/chunk-JQSR2FQW.js.map +0 -1
- package/chunk-KD6CU6C6.js.map +0 -1
- package/chunk-R6EQANV5.js.map +0 -1
- package/chunk-SQ4ZYZMV.js.map +0 -1
- package/connector-45KWH4GF.js.map +0 -1
- package/generate-GKI4KYTD.js.map +0 -1
- package/mail-IEXIV6SF.js.map +0 -1
- package/whoami-ZPH3YLXD.js.map +0 -1
- /package/{banking-XMPJDCX4.js.map → banking-WB4NGHEW.js.map} +0 -0
- /package/{browser-EFDP23US.js.map → browser-OO3SXJ66.js.map} +0 -0
- /package/{chat-3I3QSPCW.js.map → chat-IYYYJKVT.js.map} +0 -0
- /package/{chunk-O2ZRRF6W.js.map → chunk-A3GE6ETZ.js.map} +0 -0
- /package/{chunk-DHADLTRS.js.map → chunk-CPLEJWQT.js.map} +0 -0
- /package/{chunk-MIVNAXCC.js.map → chunk-DOYP2C2B.js.map} +0 -0
- /package/{chunk-CTAGNU3W.js.map → chunk-IOJHMLKT.js.map} +0 -0
- /package/{computer-use-PLMPMCUY.js.map → computer-use-JPDTT4KX.js.map} +0 -0
- /package/{credit-Q6RGVKM6.js.map → credit-RE47VTRH.js.map} +0 -0
- /package/{developer-support-RLFWS3US.js.map → developer-support-DSPTERLL.js.map} +0 -0
- /package/{doctor-NTJCG5E3.js.map → doctor-GGFT4M2V.js.map} +0 -0
- /package/{feishu-KKWRQ2BO.js.map → feishu-COL55I4I.js.map} +0 -0
- /package/{finance-OVJSFJE5.js.map → finance-4KCKJTAE.js.map} +0 -0
- /package/{github-WLWS3NDF.js.map → github-KLRR5N7F.js.map} +0 -0
- /package/{goal-V7MRASUE.js.map → goal-FINXKJ2J.js.map} +0 -0
- /package/{host-QRNSGCEI.js.map → host-BMUSAUQG.js.map} +0 -0
- /package/{logs-4TC3XVNS.js.map → logs-V3YP5YWY.js.map} +0 -0
- /package/{maps-GR6M6KB4.js.map → maps-N7NXJPFL.js.map} +0 -0
- /package/{model-UNL2R4ZB.js.map → model-Q3RGYM62.js.map} +0 -0
- /package/{model-provider-T3PLIV44.js.map → model-provider-33TUNFMS.js.map} +0 -0
- /package/{org-RYVXLOYP.js.map → org-SD4IEYST.js.map} +0 -0
- /package/{people-search-VLZ7NPR7.js.map → people-search-3UMPCYVU.js.map} +0 -0
- /package/{phone-PPVFHJC2.js.map → phone-7BQ3BR3C.js.map} +0 -0
- /package/{preference-MNUW5R5G.js.map → preference-FXATAHDW.js.map} +0 -0
- /package/{resource-4SKQNOTT.js.map → resource-Y67KRIPY.js.map} +0 -0
- /package/{scrape-W4DWXZ7B.js.map → scrape-3JQ2OS3K.js.map} +0 -0
- /package/{search-YHU5HQOW.js.map → search-YESW2FNC.js.map} +0 -0
- /package/{secret-A7VJZCL5.js.map → secret-RXYXPWUF.js.map} +0 -0
- /package/{slack-O6RAMJBK.js.map → slack-4DCGDMNB.js.map} +0 -0
- /package/{teams-BYZY4YZT.js.map → teams-QFD2A6GL.js.map} +0 -0
- /package/{telegram-LOP4EISR.js.map → telegram-RXVJHSUD.js.map} +0 -0
- /package/{upgrade-5VBTF5UN.js.map → upgrade-BAMSKCN3.js.map} +0 -0
- /package/{variable-MGQ6QHX2.js.map → variable-W2SCMTCE.js.map} +0 -0
- /package/{video-5H3CCX2T.js.map → video-U54DBG7F.js.map} +0 -0
- /package/{weather-MVJYZQWZ.js.map → weather-BQ7XSCCQ.js.map} +0 -0
- /package/{web-CQ2W6UFJ.js.map → web-NSMEQ7KS.js.map} +0 -0
- /package/{web-search-JFBZWJPA.js.map → web-search-U7HXOGYD.js.map} +0 -0
- /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-
|
|
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-
|
|
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:
|
|
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-
|
|
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-
|
|
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-
|
|
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.
|
|
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-
|
|
16779
|
+
//# sourceMappingURL=chunk-DOYP2C2B.js.map
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
updateOrgModelPoliciesRequestSchema,
|
|
22
22
|
upsertModelProviderRequestSchema,
|
|
23
23
|
upsertModelProviderResponseSchema
|
|
24
|
-
} from "./chunk-
|
|
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 (
|
|
3803
|
-
throw new Error(
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
4811
|
-
|
|
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 =
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
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 !==
|
|
6136
|
+
if (result.body.permissions.connectorRef !== connectorSlug) {
|
|
6114
6137
|
throw new Error(
|
|
6115
|
-
`Permission metadata connectorRef mismatch: expected ${
|
|
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 "${
|
|
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(
|
|
6163
|
+
async function getZeroConnector(connectorSlug) {
|
|
6141
6164
|
const config = await getClientConfig();
|
|
6142
|
-
const client2 = initClient(
|
|
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 "${
|
|
6175
|
+
handleError(result, `Failed to get connector "${connectorSlug}"`);
|
|
6153
6176
|
}
|
|
6154
|
-
async function connectZeroConnectorManualGrant(
|
|
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 "${
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
13119
|
+
//# sourceMappingURL=chunk-FLWE2Q4D.js.map
|