@vm0/cli 9.276.3 → 9.277.1
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-DVXFZD4R.js → agent-X7ZNZPOX.js} +5 -5
- package/{banking-EJVF4KKJ.js → banking-KGL4A62H.js} +4 -4
- package/{browser-6NCHD7HI.js → browser-MWEZPQ7O.js} +4 -4
- package/{chat-YTXE3G2X.js → chat-OT3H62CI.js} +5 -5
- package/{chunk-5IGKA7BS.js → chunk-4GLJF77C.js} +20 -8
- package/chunk-4GLJF77C.js.map +1 -0
- package/{chunk-DC4HTHC2.js → chunk-7572GO27.js} +4 -4
- package/{chunk-3CNC4K2X.js → chunk-AIHN2SKV.js} +2 -2
- package/{chunk-B7TK7FO4.js → chunk-H6BEDAS4.js} +56 -5
- package/{chunk-B7TK7FO4.js.map → chunk-H6BEDAS4.js.map} +1 -1
- package/{chunk-5GQGFQJ3.js → chunk-IL2KMIJJ.js} +24 -10
- package/chunk-IL2KMIJJ.js.map +1 -0
- package/{chunk-2QVU2TRP.js → chunk-NEXYY3VO.js} +2 -2
- package/{chunk-2QVU2TRP.js.map → chunk-NEXYY3VO.js.map} +1 -1
- package/{chunk-ONHQ3KTK.js → chunk-SGSECC77.js} +2 -2
- package/{chunk-BDOANREY.js → chunk-WHCP2H2S.js} +6 -7
- package/chunk-WHCP2H2S.js.map +1 -0
- package/{chunk-VUCHS2QO.js → chunk-XO3YWKZB.js} +2 -2
- package/{computer-use-VDP6IPBW.js → computer-use-4QXDRG4V.js} +4 -4
- package/{connector-ODH6PC2R.js → connector-SXSAS4PE.js} +6 -6
- package/{credit-B7YTX5LO.js → credit-CKHMOX6F.js} +5 -5
- package/{developer-support-RNIEBQEO.js → developer-support-QBGR6BJO.js} +4 -4
- package/{doctor-GMFAPWIO.js → doctor-EA7ECFIO.js} +5 -5
- package/{feishu-FQDCRBBC.js → feishu-4N7IWJJV.js} +4 -4
- package/{finance-UW6ILMND.js → finance-KQS5IPPY.js} +4 -4
- package/{generate-KJTVWXNA.js → generate-ALYUA6F7.js} +6 -6
- package/{github-OMF7MJWS.js → github-MXA236XO.js} +4 -4
- package/{goal-MTAJWPOE.js → goal-RK2DOCPU.js} +4 -4
- package/{host-LR6CEAS5.js → host-4NZXR7RE.js} +4 -4
- package/{logs-EQTVJIBB.js → logs-E4T5GFFU.js} +6 -6
- package/{mail-3CCW73GS.js → mail-AS3PMC7N.js} +6 -6
- package/{maps-SXFI36KF.js → maps-GFGMODQZ.js} +4 -4
- package/{model-T2F74FZP.js → model-AJIZ5IVT.js} +5 -5
- package/{model-provider-EZQMWLK5.js → model-provider-RBY4EVBH.js} +5 -5
- package/{org-7S3MA3MB.js → org-OUHCBZOO.js} +11 -8
- package/org-OUHCBZOO.js.map +1 -0
- package/package.json +1 -1
- package/{people-search-W5F5F2SS.js → people-search-PZQZLLSA.js} +4 -4
- package/{phone-L3B7FH3Q.js → phone-X756PGVQ.js} +4 -4
- package/{recognize-UDSXFIX3.js → recognize-P7QG3HXA.js} +4 -4
- package/{resource-S7HFVWBC.js → resource-5LCV4HM6.js} +4 -4
- package/{scrape-AOXC7B6D.js → scrape-6ZQMKQNG.js} +4 -4
- package/{search-I6I3MO7W.js → search-ZJJINEQB.js} +6 -6
- package/{slack-ODGAN7LF.js → slack-Z6WENJ2P.js} +4 -4
- package/{teams-6YLFS2F4.js → teams-ZAMCSLKG.js} +4 -4
- package/{telegram-3XTVZBV5.js → telegram-XJMUTZLB.js} +4 -4
- package/{upgrade-TNYSAH6M.js → upgrade-3DANFB33.js} +3 -3
- package/{video-B4LQFRHZ.js → video-QC32QN57.js} +3 -3
- package/{weather-ODGUO3UI.js → weather-CWWT2KDJ.js} +4 -4
- package/{web-Z6AD6JJE.js → web-5K2IPPWW.js} +4 -4
- package/{web-search-ZVHXNBO5.js → web-search-DBJMZGK4.js} +4 -4
- package/{whoami-23NVQ5FU.js → whoami-HPT36I55.js} +5 -5
- package/{workflow-6SRSR3RV.js → workflow-27BFGSGL.js} +5 -5
- package/zero.js +58 -46
- package/zero.js.map +1 -1
- package/chunk-5GQGFQJ3.js.map +0 -1
- package/chunk-5IGKA7BS.js.map +0 -1
- package/chunk-BDOANREY.js.map +0 -1
- package/org-7S3MA3MB.js.map +0 -1
- /package/{agent-DVXFZD4R.js.map → agent-X7ZNZPOX.js.map} +0 -0
- /package/{banking-EJVF4KKJ.js.map → banking-KGL4A62H.js.map} +0 -0
- /package/{browser-6NCHD7HI.js.map → browser-MWEZPQ7O.js.map} +0 -0
- /package/{chat-YTXE3G2X.js.map → chat-OT3H62CI.js.map} +0 -0
- /package/{chunk-DC4HTHC2.js.map → chunk-7572GO27.js.map} +0 -0
- /package/{chunk-3CNC4K2X.js.map → chunk-AIHN2SKV.js.map} +0 -0
- /package/{chunk-ONHQ3KTK.js.map → chunk-SGSECC77.js.map} +0 -0
- /package/{chunk-VUCHS2QO.js.map → chunk-XO3YWKZB.js.map} +0 -0
- /package/{computer-use-VDP6IPBW.js.map → computer-use-4QXDRG4V.js.map} +0 -0
- /package/{connector-ODH6PC2R.js.map → connector-SXSAS4PE.js.map} +0 -0
- /package/{credit-B7YTX5LO.js.map → credit-CKHMOX6F.js.map} +0 -0
- /package/{developer-support-RNIEBQEO.js.map → developer-support-QBGR6BJO.js.map} +0 -0
- /package/{doctor-GMFAPWIO.js.map → doctor-EA7ECFIO.js.map} +0 -0
- /package/{feishu-FQDCRBBC.js.map → feishu-4N7IWJJV.js.map} +0 -0
- /package/{finance-UW6ILMND.js.map → finance-KQS5IPPY.js.map} +0 -0
- /package/{generate-KJTVWXNA.js.map → generate-ALYUA6F7.js.map} +0 -0
- /package/{github-OMF7MJWS.js.map → github-MXA236XO.js.map} +0 -0
- /package/{goal-MTAJWPOE.js.map → goal-RK2DOCPU.js.map} +0 -0
- /package/{host-LR6CEAS5.js.map → host-4NZXR7RE.js.map} +0 -0
- /package/{logs-EQTVJIBB.js.map → logs-E4T5GFFU.js.map} +0 -0
- /package/{mail-3CCW73GS.js.map → mail-AS3PMC7N.js.map} +0 -0
- /package/{maps-SXFI36KF.js.map → maps-GFGMODQZ.js.map} +0 -0
- /package/{model-T2F74FZP.js.map → model-AJIZ5IVT.js.map} +0 -0
- /package/{model-provider-EZQMWLK5.js.map → model-provider-RBY4EVBH.js.map} +0 -0
- /package/{people-search-W5F5F2SS.js.map → people-search-PZQZLLSA.js.map} +0 -0
- /package/{phone-L3B7FH3Q.js.map → phone-X756PGVQ.js.map} +0 -0
- /package/{recognize-UDSXFIX3.js.map → recognize-P7QG3HXA.js.map} +0 -0
- /package/{resource-S7HFVWBC.js.map → resource-5LCV4HM6.js.map} +0 -0
- /package/{scrape-AOXC7B6D.js.map → scrape-6ZQMKQNG.js.map} +0 -0
- /package/{search-I6I3MO7W.js.map → search-ZJJINEQB.js.map} +0 -0
- /package/{slack-ODGAN7LF.js.map → slack-Z6WENJ2P.js.map} +0 -0
- /package/{teams-6YLFS2F4.js.map → teams-ZAMCSLKG.js.map} +0 -0
- /package/{telegram-3XTVZBV5.js.map → telegram-XJMUTZLB.js.map} +0 -0
- /package/{upgrade-TNYSAH6M.js.map → upgrade-3DANFB33.js.map} +0 -0
- /package/{video-B4LQFRHZ.js.map → video-QC32QN57.js.map} +0 -0
- /package/{weather-ODGUO3UI.js.map → weather-CWWT2KDJ.js.map} +0 -0
- /package/{web-Z6AD6JJE.js.map → web-5K2IPPWW.js.map} +0 -0
- /package/{web-search-ZVHXNBO5.js.map → web-search-DBJMZGK4.js.map} +0 -0
- /package/{whoami-23NVQ5FU.js.map → whoami-HPT36I55.js.map} +0 -0
- /package/{workflow-6SRSR3RV.js.map → workflow-27BFGSGL.js.map} +0 -0
package/chunk-BDOANREY.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 JoggAiBuiltIn = \"joggAiBuiltIn\",\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 ZeroBrowser = \"zeroBrowser\",\n ZeroChatMessaging = \"zeroChatMessaging\",\n ZeroMailReplyFollowUp = \"zeroMailReplyFollowUp\",\n RustZeroCli = \"rustZeroCli\",\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 RealAgentInPreview = \"realAgentInPreview\",\n ComposerUploadPopover = \"composerUploadPopover\",\n StructuredPromptInlineTemplates = \"structuredPromptInlineTemplates\",\n CustomModelGateways = \"customModelGateways\",\n\n ZapierConnector = \"zapierConnector\",\n ComputerUseDesktopPlugins = \"computerUseDesktopPlugins\",\n ChatThreadUnifiedSearch = \"chatThreadUnifiedSearch\",\n ChatErrorRecovery = \"chatErrorRecovery\",\n PwaChatKeyboardGestures = \"pwaChatKeyboardGestures\",\n SidebarSubscriptionUsage = \"sidebarSubscriptionUsage\",\n TeamsIntegration = \"teamsIntegration\",\n FeishuIntegration = \"feishuIntegration\",\n StrapiIntegration = \"strapiIntegration\",\n ArtifactKeyV2 = \"artifactKeyV2\",\n HostedArtifactVersions = \"hostedArtifactVersions\",\n HtmlResourceIndex = \"htmlResourceIndex\",\n WorkflowConnectorReadiness = \"workflowConnectorReadiness\",\n ComposerConnectorPermissions = \"composerConnectorPermissions\",\n ThreeColumnNav = \"threeColumnNav\",\n ChatThreadSidebarAutoOpen = \"chatThreadSidebarAutoOpen\",\n ArtifactSidebarInlineOpen = \"artifactSidebarInlineOpen\",\n CustomConnectorCliCreate = \"customConnectorCliCreate\",\n CustomConnectorOAuth2 = \"customConnectorOAuth2\",\n MermaidDiagrams = \"mermaidDiagrams\",\n CustomConnectorPermissions = \"customConnectorPermissions\",\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. Every registered switch accepts user overrides\n * through `POST /api/zero/feature-switches`. 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}\n\nexport interface FeatureSwitchMetadata {\n readonly maintainer: string;\n readonly description?: string;\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\nconst CUSTOM_MODEL_GATEWAY_ORG_ID_HASHES = [\n ...STAFF_ORG_ID_HASHES,\n \"a6e60503\", // geo rollout workspace\n] as const;\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: true,\n },\n [FeatureSwitchKey.GoogleFormsConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the Google Forms connector\",\n enabled: true,\n },\n [FeatureSwitchKey.JoggAiConnector]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable the JoggAI video generation connector\",\n enabled: true,\n },\n [FeatureSwitchKey.JoggAiBuiltIn]: {\n maintainer: \"yuma@vm0.ai\",\n description: \"Enable vm0-managed JoggAI talking-avatar video generation\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\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.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 },\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 },\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 },\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.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 },\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 },\n [FeatureSwitchKey.CustomModelGateways]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Enable admin-defined Anthropic Messages and OpenAI Responses model gateway connections.\",\n enabled: false,\n enabledOrgIdHashes: CUSTOM_MODEL_GATEWAY_ORG_ID_HASHES,\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.ChatErrorRecovery]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Replace supported Codex and Claude Code limit errors with recovery actions in chat.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.PwaChatKeyboardGestures]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Keep the PWA chat composer pinned above the software keyboard and support swipe-to-dismiss gestures.\",\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.MermaidDiagrams]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Render ```mermaid code blocks in assistant markdown as diagrams, and tell the web chat agent that they are rendered.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.ArtifactSidebarInlineOpen]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Open an artifact clicked in a chat thread inside the already-open artifact sidebar instead of stacking the page-global lightbox over it.\",\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.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 },\n [FeatureSwitchKey.ArtifactKeyV2]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Store new user artifacts under flat, ten-character hashed public keys.\",\n enabled: true,\n },\n [FeatureSwitchKey.HostedArtifactVersions]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Create immutable hosted artifact versions behind stable site aliases.\",\n enabled: true,\n },\n [FeatureSwitchKey.HtmlResourceIndex]: {\n maintainer: \"bingjie@vm0.ai\",\n description:\n \"Use target-specific static indexes for HTML generation resource selection.\",\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 },\n [FeatureSwitchKey.ZeroMailReplyFollowUp]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Enable Zero Mail reply follow-up for staff after all API deployments can read Gmail event configurations with threadId.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\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.ZeroChatMessaging]: {\n maintainer: \"ethan@vm0.ai\",\n description:\n \"Advertise zero chat create, send, and cancel in the agent system prompt without gating the CLI commands or API.\",\n enabled: false,\n enabledOrgIdHashes: STAFF_ORG_ID_HASHES,\n },\n [FeatureSwitchKey.RustZeroCli]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Use the runner-bundled Rust zero-cli entry point for Zero CLI commands.\",\n enabled: false,\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 },\n [FeatureSwitchKey.CustomConnectorCliCreate]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Allow Zero CLI agents to create and configure custom connectors directly.\",\n enabled: true,\n },\n [FeatureSwitchKey.CustomConnectorOAuth2]: {\n maintainer: \"liangyou@vm0.ai\",\n description:\n \"Allow org admins to add OAuth 2.0 authentication to custom connectors.\",\n enabled: true,\n },\n [FeatureSwitchKey.CustomConnectorPermissions]: {\n maintainer: \"yuma@vm0.ai\",\n description:\n \"Allow users to manage agent permission grants for custom connectors.\",\n enabled: 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 };\n }\n return result;\n}\n\n/** Keep overrides for currently registered feature switches. */\nexport function filterFeatureSwitchOverrides(\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 (key in FEATURE_SWITCHES) {\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":";;;;;;;;AAAA;;;ACAA;;;ACAA;AASO,SAAS,MAAM,OAAuB;AAC3C,MAAI,IAAI,eAAe;AACvB,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,SAAK,MAAM,WAAW,CAAC;AACvB,QAAI,KAAK,KAAK,GAAG,QAAQ,MAAM;AAAA,EACjC;AACA,SAAO,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG;AACvC;AASO,IAAM,sBAAyC;AAAA,EACpD;AAAA;AACF;;;ADSA,IAAM,qCAAqC;AAAA,EACzC,GAAG;AAAA,EACH;AAAA;AACF;AAKA,IAAM,mBAA4D;AAAA,EAChE,oBAAuB,GAAG;AAAA,IACxB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,kCAA8B,GAAG;AAAA,IAC/B,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,sCAAgC,GAAG;AAAA,IACjC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,sCAAgC,GAAG;AAAA,IACjC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wDAAyC,GAAG;AAAA,IAC1C,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,kDAAsC,GAAG;AAAA,IACvC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,sDAAwC,GAAG;AAAA,IACzC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,gDAAqC,GAAG;AAAA,IACtC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,sCAAgC,GAAG;AAAA,IACjC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,kCAA8B,GAAG;AAAA,IAC/B,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,4BAA2B,GAAG;AAAA,IAC5B,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,wBAAyB,GAAG;AAAA,IAC1B,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,gBAAqB,GAAG;AAAA,IACtB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,kCAA8B,GAAG;AAAA,IAC/B,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4DAA2C,GAAG;AAAA,IAC5C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,0DAA0C,GAAG;AAAA,IAC3C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,kDAAsC,GAAG;AAAA,IACvC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,SAAS;AAAA,EACX;AAAA,EAEA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,8CAAoC,GAAG;AAAA,IACrC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,oDAAuC,GAAG;AAAA,IACxC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,wEAAiD,GAAG;AAAA,IAClD,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,gDAAqC,GAAG;AAAA,IACtC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,4DAA2C,GAAG;AAAA,IAC5C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,wDAAyC,GAAG;AAAA,IAC1C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,wDAAyC,GAAG;AAAA,IAC1C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4DAA2C,GAAG;AAAA,IAC5C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,wCAAiC,GAAG;AAAA,IAClC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4DAA2C,GAAG;AAAA,IAC5C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,sCAAgC,GAAG;AAAA,IACjC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA;AAAA,IAET,oBAAoB,CAAC,UAAU;AAAA;AAAA,EACjC;AAAA,EACA,0DAA0C,GAAG;AAAA,IAC3C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,0CAAkC,GAAG;AAAA,IACnC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,oCAA+B,GAAG;AAAA,IAChC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,sDAAwC,GAAG;AAAA,IACzC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,8DAA4C,GAAG;AAAA,IAC7C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,oDAAuC,GAAG;AAAA,IACxC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,gCAA6B,GAAG;AAAA,IAC9B,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,4CAAmC,GAAG;AAAA,IACpC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,IACT,oBAAoB;AAAA,EACtB;AAAA,EACA,gCAA6B,GAAG;AAAA,IAC9B,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,kEAA8C,GAAG;AAAA,IAC/C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,0DAA0C,GAAG;AAAA,IAC3C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,oDAAuC,GAAG;AAAA,IACxC,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AAAA,EACA,8DAA4C,GAAG;AAAA,IAC7C,YAAY;AAAA,IACZ,aACE;AAAA,IACF,SAAS;AAAA,EACX;AACF;AA0HO,SAAS,iBACd,KACA,KACS;AACT,QAAM,WAAW,IAAI,YAAY,GAAG;AACpC,MAAI,aAAa,QAAW;AAC1B,WAAO;AAAA,EACT;AAEA,QAAM,gBAAgB,iBAAiB,GAAG;AAC1C,MAAI,cAAc,SAAS;AACzB,WAAO;AAAA,EACT;AACA,MAAI,IAAI,UAAU,cAAc,mBAAmB,QAAQ;AACzD,QAAI,cAAc,kBAAkB,SAAS,MAAM,IAAI,MAAM,CAAC;AAC5D,aAAO;AAAA,EACX;AACA,MAAI,IAAI,SAAS,cAAc,oBAAoB,QAAQ;AACzD,QACE,cAAc,mBAAmB,SAAS,MAAM,IAAI,MAAM,YAAY,CAAC,CAAC;AAExE,aAAO;AAAA,EACX;AACA,MAAI,IAAI,SAAS,cAAc,oBAAoB,QAAQ;AACzD,QAAI,cAAc,mBAAmB,SAAS,MAAM,IAAI,KAAK,CAAC;AAC5D,aAAO;AAAA,EACX;AACA,SAAO;AACT;","names":[]}
|
package/org-7S3MA3MB.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands/zero/org/index.ts","../src/commands/zero/org/status.ts","../src/commands/zero/org/list.ts","../src/commands/zero/org/members.ts","../src/commands/zero/org/invite.ts","../src/commands/zero/org/remove.ts","../src/commands/zero/org/leave.ts","../src/commands/zero/org/secret/index.ts","../src/commands/zero/org/secret/list.ts","../src/commands/zero/org/secret/set.ts","../src/commands/zero/org/secret/remove.ts","../src/commands/zero/org/variable/index.ts","../src/commands/zero/org/variable/list.ts","../src/commands/zero/org/variable/set.ts","../src/commands/zero/org/variable/remove.ts","../src/commands/zero/org/model-provider/index.ts","../src/commands/zero/org/model-provider/list.ts","../src/commands/zero/org/model-provider/setup.ts","../src/lib/domain/model-provider/shared.ts","../src/commands/zero/org/model-provider/remove.ts"],"sourcesContent":["import { Command } from \"commander\";\nimport { statusCommand } from \"./status\";\nimport { listCommand } from \"./list\";\nimport { membersCommand } from \"./members\";\nimport { inviteCommand } from \"./invite\";\nimport { removeCommand } from \"./remove\";\nimport { leaveCommand } from \"./leave\";\nimport { zeroOrgSecretCommand } from \"./secret\";\nimport { zeroOrgVariableCommand } from \"./variable\";\nimport { zeroOrgModelProviderCommand } from \"./model-provider\";\n\nexport const zeroOrgCommand = new Command()\n .name(\"org\")\n .description(\"Manage organization settings, members, and providers\")\n .addCommand(statusCommand)\n .addCommand(listCommand)\n .addCommand(membersCommand)\n .addCommand(inviteCommand)\n .addCommand(removeCommand)\n .addCommand(leaveCommand)\n .addCommand(zeroOrgSecretCommand)\n .addCommand(zeroOrgVariableCommand)\n .addCommand(zeroOrgModelProviderCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getZeroOrg } from \"../../../lib/api\";\nimport { ApiRequestError } from \"../../../lib/api/core/client-factory\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const statusCommand = new Command()\n .name(\"status\")\n .description(\"View current organization status\")\n .action(\n withErrorHandler(async () => {\n try {\n const org = await getZeroOrg();\n\n console.log(chalk.bold(\"Organization Information:\"));\n console.log(` Slug: ${chalk.green(org.slug)}`);\n } catch (error) {\n if (error instanceof ApiRequestError && error.status === 404) {\n throw new Error(\"No organization configured\", {\n cause: new Error(\n \"Create or join an organization in the vm0 dashboard, then try again\",\n ),\n });\n }\n throw error;\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgs } from \"../../../lib/api\";\nimport { getActiveOrg } from \"../../../lib/api/config\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const listCommand = new Command()\n .name(\"list\")\n .description(\"List all accessible organizations\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgs();\n const activeOrg = await getActiveOrg();\n\n console.log(chalk.bold(\"Available organizations:\"));\n for (const org of result.orgs) {\n const isCurrent = org.slug === activeOrg;\n const marker = isCurrent ? chalk.green(\"* \") : \" \";\n const roleLabel = org.role ? ` (${org.role})` : \"\";\n const currentLabel = isCurrent ? chalk.dim(\" ← current\") : \"\";\n console.log(`${marker}${org.slug}${roleLabel}${currentLabel}`);\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { getZeroOrgMembers } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const membersCommand = new Command()\n .name(\"members\")\n .description(\"View organization members\")\n .action(\n withErrorHandler(async () => {\n const status = await getZeroOrgMembers();\n\n console.log(chalk.bold(`Organization: ${status.slug}`));\n console.log(` Role: ${status.role}`);\n console.log(\n ` Created: ${new Date(status.createdAt).toLocaleDateString()}`,\n );\n console.log();\n console.log(chalk.bold(\"Members:\"));\n for (const member of status.members) {\n const roleTag =\n member.role === \"admin\"\n ? chalk.yellow(` (${member.role})`)\n : chalk.dim(` (${member.role})`);\n console.log(` ${member.email}${roleTag}`);\n }\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { inviteZeroOrgMember } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const inviteCommand = new Command()\n .name(\"invite\")\n .description(\"Invite a member to the current organization\")\n .requiredOption(\"--email <email>\", \"Email address of the member to invite\")\n .option(\n \"--role <role>\",\n \"Role for the invited member (member or admin)\",\n \"member\",\n )\n .action(\n withErrorHandler(async (options: { email: string; role: string }) => {\n if (options.role !== \"member\" && options.role !== \"admin\") {\n throw new Error(\n `Invalid role \"${options.role}\". Must be \"member\" or \"admin\".`,\n );\n }\n await inviteZeroOrgMember(options.email, options.role);\n console.log(\n chalk.green(`✓ Invitation sent to ${options.email} as ${options.role}`),\n );\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { removeZeroOrgMember } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const removeCommand = new Command()\n .name(\"remove\")\n .description(\"Remove a member from the current organization\")\n .argument(\"<email>\", \"Email address of the member to remove\")\n .action(\n withErrorHandler(async (email: string) => {\n await removeZeroOrgMember(email);\n console.log(chalk.green(`✓ Removed ${email} from organization`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { leaveZeroOrg } from \"../../../lib/api\";\nimport { withErrorHandler } from \"../../../lib/command\";\n\nexport const leaveCommand = new Command()\n .name(\"leave\")\n .description(\"Leave the current organization\")\n .action(\n withErrorHandler(async () => {\n await leaveZeroOrg();\n console.log(chalk.green(\"✓ Left organization.\"));\n }),\n );\n","import { Command } from \"commander\";\nimport { listCommand } from \"./list\";\nimport { setCommand } from \"./set\";\nimport { removeCommand } from \"./remove\";\n\nexport const zeroOrgSecretCommand = new Command()\n .name(\"secret\")\n .description(\"Manage org-level secrets (admin)\")\n .addCommand(listCommand)\n .addCommand(setCommand)\n .addCommand(removeCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgSecrets } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List all org-level secrets\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgSecrets();\n\n if (result.secrets.length === 0) {\n console.log(chalk.dim(\"No org secrets found\"));\n console.log();\n console.log(\"To add an org secret:\");\n console.log(\n chalk.cyan(\" zero org secret set MY_API_KEY --body <value>\"),\n );\n return;\n }\n\n console.log(chalk.bold(\"Org Secrets:\"));\n console.log();\n\n for (const secret of result.secrets) {\n console.log(` ${chalk.cyan(secret.name)}`);\n if (secret.description) {\n console.log(` ${chalk.dim(secret.description)}`);\n }\n console.log(\n ` ${chalk.dim(`Updated: ${new Date(secret.updatedAt).toLocaleString()}`)}`,\n );\n console.log();\n }\n\n console.log(chalk.dim(`Total: ${result.secrets.length} secret(s)`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { setZeroOrgSecret } from \"../../../../lib/api\";\nimport {\n isInteractive,\n promptPassword,\n} from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Create or update an org-level secret (admin only)\")\n .argument(\"<name>\", \"Secret name (uppercase, e.g., MY_API_KEY)\")\n .option(\n \"-b, --body <value>\",\n \"Secret value (required in non-interactive mode)\",\n )\n .option(\"-d, --description <description>\", \"Optional description\")\n .action(\n withErrorHandler(\n async (\n name: string,\n options: { body?: string; description?: string },\n ) => {\n let value: string;\n\n if (options.body !== undefined) {\n value = options.body;\n } else if (isInteractive()) {\n const prompted = await promptPassword(\"Enter secret value:\");\n if (prompted === undefined) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n value = prompted;\n } else {\n throw new Error(\"--body is required in non-interactive mode\", {\n cause: new Error(\n `Usage: zero org secret set ${name} --body \"your-secret-value\"`,\n ),\n });\n }\n\n let secret;\n try {\n secret = await setZeroOrgSecret({\n name,\n value,\n description: options.description,\n });\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"must contain only uppercase\")\n ) {\n throw new Error(error.message, {\n cause: new Error(\n \"Examples of valid secret names: MY_API_KEY, GITHUB_TOKEN, AWS_ACCESS_KEY_ID\",\n ),\n });\n }\n throw error;\n }\n\n console.log(chalk.green(`✓ Org secret \"${secret.name}\" saved`));\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrgSecret } from \"../../../../lib/api\";\nimport {\n isInteractive,\n promptConfirm,\n} from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const removeCommand = new Command()\n .name(\"remove\")\n .description(\"Delete an org-level secret (admin only)\")\n .argument(\"<name>\", \"Secret name to delete\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .action(\n withErrorHandler(async (name: string, options: { yes?: boolean }) => {\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n\n const confirmed = await promptConfirm(\n `Are you sure you want to delete org secret \"${name}\"?`,\n false,\n );\n\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteZeroOrgSecret(name);\n console.log(chalk.green(`✓ Org secret \"${name}\" deleted`));\n }),\n );\n","import { Command } from \"commander\";\nimport { listCommand } from \"./list\";\nimport { setCommand } from \"./set\";\nimport { removeCommand } from \"./remove\";\n\nexport const zeroOrgVariableCommand = new Command()\n .name(\"variable\")\n .description(\"Manage org-level variables (admin)\")\n .addCommand(listCommand)\n .addCommand(setCommand)\n .addCommand(removeCommand);\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgVariables } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\n/**\n * Truncate value for display if too long\n */\nfunction truncateValue(value: string, maxLength: number = 60): string {\n if (value.length <= maxLength) {\n return value;\n }\n return value.slice(0, maxLength - 15) + \"... [truncated]\";\n}\n\nexport const listCommand = new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(\"List all org-level variables\")\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgVariables();\n\n if (result.variables.length === 0) {\n console.log(chalk.dim(\"No org variables found\"));\n console.log();\n console.log(\"To add an org variable:\");\n console.log(chalk.cyan(\" zero org variable set MY_VAR <value>\"));\n return;\n }\n\n console.log(chalk.bold(\"Org Variables:\"));\n console.log();\n\n for (const variable of result.variables) {\n const displayValue = truncateValue(variable.value);\n console.log(` ${chalk.cyan(variable.name)} = ${displayValue}`);\n if (variable.description) {\n console.log(` ${chalk.dim(variable.description)}`);\n }\n console.log(\n ` ${chalk.dim(`Updated: ${new Date(variable.updatedAt).toLocaleString()}`)}`,\n );\n console.log();\n }\n\n console.log(chalk.dim(`Total: ${result.variables.length} variable(s)`));\n }),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { setZeroOrgVariable } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const setCommand = new Command()\n .name(\"set\")\n .description(\"Create or update an org-level variable (admin only)\")\n .argument(\"<name>\", \"Variable name (uppercase, e.g., MY_VAR)\")\n .argument(\"<value>\", \"Variable value\")\n .option(\"-d, --description <description>\", \"Optional description\")\n .action(\n withErrorHandler(\n async (\n name: string,\n value: string,\n options: { description?: string },\n ) => {\n let variable;\n try {\n variable = await setZeroOrgVariable({\n name,\n value,\n description: options.description,\n });\n } catch (error) {\n if (\n error instanceof Error &&\n error.message.includes(\"must contain only uppercase\")\n ) {\n throw new Error(error.message, {\n cause: new Error(\n \"Examples of valid variable names: MY_VAR, API_URL, DEBUG_MODE\",\n ),\n });\n }\n throw error;\n }\n\n console.log(chalk.green(`✓ Org variable \"${variable.name}\" saved`));\n },\n ),\n );\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrgVariable } from \"../../../../lib/api\";\nimport {\n isInteractive,\n promptConfirm,\n} from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\nexport const removeCommand = new Command()\n .name(\"remove\")\n .description(\"Delete an org-level variable (admin only)\")\n .argument(\"<name>\", \"Variable name to delete\")\n .option(\"-y, --yes\", \"Skip confirmation prompt\")\n .action(\n withErrorHandler(async (name: string, options: { yes?: boolean }) => {\n if (!options.yes) {\n if (!isInteractive()) {\n throw new Error(\"--yes flag is required in non-interactive mode\");\n }\n\n const confirmed = await promptConfirm(\n `Are you sure you want to delete org variable \"${name}\"?`,\n false,\n );\n\n if (!confirmed) {\n console.log(chalk.dim(\"Cancelled\"));\n return;\n }\n }\n\n await deleteZeroOrgVariable(name);\n console.log(chalk.green(`✓ Org variable \"${name}\" deleted`));\n }),\n );\n","import { Command } from \"commander\";\nimport { createListCommand } from \"./list\";\nimport { createSetupCommand } from \"./setup\";\nimport { createRemoveCommand } from \"./remove\";\n\nexport const zeroOrgModelProviderCommand = new Command()\n .name(\"model-provider\")\n .description(\"Manage org-level model providers\")\n .addCommand(\n createListCommand({\n scopeLabel: \"org-level\",\n title: \"Org Model Providers\",\n setupCommand: \"zero org model-provider setup\",\n }),\n )\n .addCommand(\n createSetupCommand({\n commandPrefix: \"zero org model-provider setup\",\n description: \"Configure an org-level model provider\",\n scopeLabel: \"Org\",\n }),\n )\n .addCommand(createRemoveCommand({ scopeLabel: \"Org\" }));\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { listZeroOrgModelProviders } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\n\ninterface CreateListCommandOptions {\n scopeLabel?: string;\n title?: string;\n setupCommand?: string;\n}\n\nexport function createListCommand(\n options: CreateListCommandOptions = {},\n): Command {\n const scopeLabel = options.scopeLabel ?? \"org-level\";\n const title = options.title ?? \"Org Model Providers\";\n const setupCommand = options.setupCommand ?? \"zero org model-provider setup\";\n\n return new Command()\n .name(\"list\")\n .alias(\"ls\")\n .description(`List all ${scopeLabel} model providers`)\n .action(\n withErrorHandler(async () => {\n const result = await listZeroOrgModelProviders();\n\n if (result.modelProviders.length === 0) {\n console.log(chalk.dim(`No ${scopeLabel} model providers configured`));\n console.log();\n console.log(`To add a ${scopeLabel} model provider:`);\n console.log(chalk.cyan(` ${setupCommand}`));\n return;\n }\n\n // Group by framework\n const byFramework = result.modelProviders.reduce(\n (acc, p) => {\n const fw = p.framework;\n if (!acc[fw]) {\n acc[fw] = [];\n }\n acc[fw].push(p);\n return acc;\n },\n {} as Record<string, typeof result.modelProviders>,\n );\n\n console.log(chalk.bold(`${title}:`));\n console.log();\n\n for (const [framework, providers] of Object.entries(byFramework)) {\n console.log(` ${chalk.cyan(framework)}:`);\n for (const provider of providers) {\n console.log(` ${provider.type}`);\n console.log(chalk.dim(` ID: ${provider.id}`));\n console.log(\n chalk.dim(\n ` Updated: ${new Date(provider.updatedAt).toLocaleString()}`,\n ),\n );\n }\n console.log();\n }\n\n console.log(\n chalk.dim(`Total: ${result.modelProviders.length} provider(s)`),\n );\n }),\n );\n}\n\nexport const listCommand = createListCommand();\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport prompts from \"prompts\";\nimport {\n listZeroOrgModelProviders,\n upsertZeroOrgModelProvider,\n} from \"../../../../lib/api\";\nimport {\n MODEL_PROVIDER_TYPES,\n hasAuthMethods,\n getSelectableProviderTypes,\n type ModelProviderType,\n} from \"@vm0/api-contracts/contracts/model-providers\";\nimport { isInteractive } from \"../../../../lib/utils/prompt-utils\";\nimport { withErrorHandler } from \"../../../../lib/command\";\nimport {\n type SetupInput,\n handleNonInteractiveMode,\n promptForAuthMethod,\n promptForSecrets,\n collectSecrets,\n} from \"../../../../lib/domain/model-provider/shared\";\n\ninterface CreateSetupCommandOptions {\n commandPrefix?: string;\n description?: string;\n scopeLabel?: string;\n}\n\nasync function handleInteractiveMode(\n commandPrefix: string,\n): Promise<SetupInput | null> {\n if (!isInteractive()) {\n throw new Error(\"Interactive mode requires a TTY\", {\n cause: new Error(\n `Use non-interactive mode: ${commandPrefix} --type <type> --secret \"<value>\"`,\n ),\n });\n }\n\n let cancelled = false;\n const onCancel = () => {\n cancelled = true;\n return false;\n };\n\n // Fetch configured org providers to annotate choices\n const { modelProviders: configuredProviders } =\n await listZeroOrgModelProviders();\n const configuredTypes = new Set(\n configuredProviders.map((p) => {\n return p.type;\n }),\n );\n\n // Build provider choices with configuration status (only selectable providers)\n const annotatedChoices = getSelectableProviderTypes().map((type) => {\n const config = MODEL_PROVIDER_TYPES[type];\n const isConfigured = configuredTypes.has(type);\n const isExperimental = hasAuthMethods(type);\n let title: string = config.label;\n if (isConfigured) {\n title = `${title} ✓`;\n }\n if (isExperimental) {\n title = `${title} ${chalk.dim(\"(experimental)\")}`;\n }\n return {\n title,\n value: type,\n };\n });\n\n const typeResponse = await prompts(\n {\n type: \"select\",\n name: \"type\",\n message: \"Select provider type:\",\n choices: annotatedChoices,\n },\n { onCancel },\n );\n\n if (cancelled) {\n console.log(chalk.dim(\"Cancelled\"));\n return null;\n }\n\n const type = typeResponse.type as ModelProviderType;\n\n // Check if provider is already configured using the list we already fetched\n const existingProvider = configuredProviders.find((p) => {\n return p.type === type;\n });\n\n if (existingProvider) {\n console.log();\n console.log(`\"${type}\" is already configured`);\n console.log();\n\n const actionResponse = await prompts(\n {\n type: \"select\",\n name: \"action\",\n message: \"\",\n choices: [\n { title: \"Keep existing secret\", value: \"keep\" },\n { title: \"Update secret\", value: \"update\" },\n ],\n },\n { onCancel },\n );\n\n if (cancelled) {\n console.log(chalk.dim(\"Cancelled\"));\n return null;\n }\n\n if (actionResponse.action === \"keep\") {\n return {\n type,\n keepExistingSecret: true,\n isInteractiveMode: true,\n };\n }\n // Fall through to secret prompt for \"update\"\n }\n\n const config = MODEL_PROVIDER_TYPES[type];\n\n console.log();\n if (\"helpText\" in config) {\n console.log(chalk.dim(config.helpText));\n }\n console.log();\n\n // Handle multi-auth providers\n if (hasAuthMethods(type)) {\n const authMethod = await promptForAuthMethod(type);\n const secrets = await promptForSecrets(type, authMethod);\n\n return {\n type,\n authMethod,\n secrets,\n isInteractiveMode: true,\n };\n }\n\n // Single-secret provider (legacy)\n const secretLabel = \"secretLabel\" in config ? config.secretLabel : \"secret\";\n\n const secretResponse = await prompts(\n {\n type: \"password\",\n name: \"secret\",\n message: `Enter your ${secretLabel}:`,\n validate: (value: string) => {\n return value.length > 0 || `${secretLabel} is required`;\n },\n },\n { onCancel },\n );\n\n if (cancelled) {\n console.log(chalk.dim(\"Cancelled\"));\n return null;\n }\n\n const secret = secretResponse.secret as string;\n\n return { type, secret, isInteractiveMode: true };\n}\n\nexport function createSetupCommand(\n options: CreateSetupCommandOptions = {},\n): Command {\n const commandPrefix =\n options.commandPrefix ?? \"zero org model-provider setup\";\n const description =\n options.description ?? \"Configure an org-level model provider\";\n const scopeLabel = options.scopeLabel ?? \"Org\";\n\n return new Command()\n .name(\"setup\")\n .description(description)\n .option(\"-t, --type <type>\", \"Provider type (for non-interactive mode)\")\n .option(\n \"-s, --secret <value>\",\n \"Secret value (can be used multiple times, supports VALUE or KEY=VALUE format)\",\n collectSecrets,\n [],\n )\n .option(\n \"-a, --auth-method <method>\",\n \"Auth method (required for multi-auth providers like aws-bedrock)\",\n )\n .action(\n withErrorHandler(\n async (options: {\n type?: string;\n secret?: string[];\n authMethod?: string;\n }) => {\n let input: SetupInput;\n const secretArgs = options.secret ?? [];\n\n if (options.type && secretArgs.length > 0) {\n input = handleNonInteractiveMode({\n type: options.type,\n secret: secretArgs,\n authMethod: options.authMethod,\n commandPrefix,\n });\n } else if (options.type || secretArgs.length > 0) {\n throw new Error(\"Both --type and --secret are required\");\n } else {\n const result = await handleInteractiveMode(commandPrefix);\n if (result === null) {\n return;\n }\n input = result;\n }\n\n // Handle \"keep existing secret\" flow\n if (input.keepExistingSecret) {\n console.log(\n chalk.green(\n `✓ ${scopeLabel} model provider \"${input.type}\" unchanged`,\n ),\n );\n return;\n }\n\n // Standard upsert flow with secret\n const { created } = await upsertZeroOrgModelProvider({\n type: input.type,\n secret: input.secret,\n authMethod: input.authMethod,\n secrets: input.secrets,\n });\n\n const action = created ? \"created\" : \"updated\";\n console.log(\n chalk.green(\n `✓ ${scopeLabel} model provider \"${input.type}\" ${action}`,\n ),\n );\n },\n ),\n );\n}\n\nexport const setupCommand = createSetupCommand();\n","import chalk from \"chalk\";\nimport prompts from \"prompts\";\nimport {\n MODEL_PROVIDER_TYPES,\n hasAuthMethods,\n getAuthMethodsForType,\n getDefaultAuthMethod,\n getSecretsForAuthMethod,\n type ModelProviderType,\n} from \"@vm0/api-contracts/contracts/model-providers\";\n\nexport interface SetupInput {\n type: ModelProviderType;\n secret?: string;\n // Multi-auth support\n authMethod?: string;\n secrets?: Record<string, string>;\n keepExistingSecret?: boolean;\n isInteractiveMode?: boolean;\n}\n\nfunction validateProviderType(typeStr: string): ModelProviderType {\n if (!Object.keys(MODEL_PROVIDER_TYPES).includes(typeStr)) {\n const validTypes = Object.keys(MODEL_PROVIDER_TYPES).join(\", \");\n throw new Error(`Invalid type \"${typeStr}\"`, {\n cause: new Error(`Valid types: ${validTypes}`),\n });\n }\n return typeStr as ModelProviderType;\n}\n\nfunction validateAuthMethod(\n type: ModelProviderType,\n authMethodStr: string,\n): string | never {\n const authMethods = getAuthMethodsForType(type);\n if (!authMethods || !(authMethodStr in authMethods)) {\n const validMethods = authMethods\n ? Object.keys(authMethods).join(\", \")\n : \"none\";\n throw new Error(`Invalid auth method \"${authMethodStr}\"`, {\n cause: new Error(`Valid auth methods: ${validMethods}`),\n });\n }\n return authMethodStr;\n}\n\n/**\n * Parse secret arguments into a secrets object.\n * Supports two formats:\n * - Single value (e.g., \"sk-xxx\") - auto-mapped to the provider's secret name\n * - KEY=VALUE format (e.g., \"AWS_REGION=us-east-1\") - explicit mapping\n */\nfunction parseSecrets(\n type: ModelProviderType,\n authMethod: string,\n secretArgs: string[],\n): Record<string, string> {\n const secretsConfig = getSecretsForAuthMethod(type, authMethod);\n if (!secretsConfig) {\n throw new Error(`Invalid auth method \"${authMethod}\"`);\n }\n\n const secretNames = Object.keys(secretsConfig);\n\n // Single value without = sign: only allowed for single-secret auth methods\n const firstArg = secretArgs[0];\n if (secretArgs.length === 1 && firstArg && !firstArg.includes(\"=\")) {\n if (secretNames.length !== 1) {\n throw new Error(\n \"Must use KEY=VALUE format for multi-secret auth methods\",\n { cause: new Error(`Required secrets: ${secretNames.join(\", \")}`) },\n );\n }\n const firstSecretName = secretNames[0];\n if (!firstSecretName) {\n throw new Error(\"No secrets defined for this auth method\");\n }\n return { [firstSecretName]: firstArg };\n }\n\n // KEY=VALUE format\n const secrets: Record<string, string> = {};\n for (const arg of secretArgs) {\n const eqIndex = arg.indexOf(\"=\");\n if (eqIndex === -1) {\n throw new Error(`Invalid secret format \"${arg}\"`, {\n cause: new Error(\"Use KEY=VALUE format (e.g., AWS_REGION=us-east-1)\"),\n });\n }\n const key = arg.slice(0, eqIndex);\n const value = arg.slice(eqIndex + 1);\n secrets[key] = value;\n }\n return secrets;\n}\n\n/**\n * Validate secrets against the auth method config.\n */\nfunction validateSecrets(\n type: ModelProviderType,\n authMethod: string,\n secrets: Record<string, string>,\n): void {\n const secretsConfig = getSecretsForAuthMethod(type, authMethod);\n if (!secretsConfig) {\n throw new Error(`Invalid auth method \"${authMethod}\"`);\n }\n\n // Check required fields\n for (const [name, fieldConfig] of Object.entries(secretsConfig)) {\n if (fieldConfig.required && !secrets[name]) {\n const requiredNames = Object.entries(secretsConfig)\n .filter(([, fc]) => {\n return fc.required;\n })\n .map(([n]) => {\n return n;\n })\n .join(\", \");\n throw new Error(`Missing required secret: ${name}`, {\n cause: new Error(`Required secrets: ${requiredNames}`),\n });\n }\n }\n\n // Check for unknown fields\n for (const name of Object.keys(secrets)) {\n if (!(name in secretsConfig)) {\n const validNames = Object.keys(secretsConfig).join(\", \");\n throw new Error(`Unknown secret: ${name}`, {\n cause: new Error(`Valid secrets: ${validNames}`),\n });\n }\n }\n}\n\nexport function handleNonInteractiveMode(options: {\n type: string;\n secret: string[];\n authMethod?: string;\n commandPrefix?: string;\n}): SetupInput {\n const type = validateProviderType(options.type);\n const cmdPrefix = options.commandPrefix ?? \"zero org model-provider setup\";\n\n // Handle multi-auth providers\n if (hasAuthMethods(type)) {\n // Determine auth method\n let authMethod: string;\n if (options.authMethod) {\n authMethod = validateAuthMethod(type, options.authMethod);\n } else {\n const defaultAuthMethod = getDefaultAuthMethod(type);\n const authMethods = getAuthMethodsForType(type);\n if (!defaultAuthMethod || !authMethods) {\n throw new Error(`Provider \"${type}\" requires --auth-method`);\n }\n // If there's only one auth method, use it; otherwise require explicit selection\n const authMethodNames = Object.keys(authMethods);\n if (authMethodNames.length === 1) {\n authMethod = authMethodNames[0]!;\n } else {\n const methods = authMethodNames.join(\", \");\n throw new Error(\n `--auth-method is required for \"${type}\" (multiple auth methods available)`,\n {\n cause: new Error(\n `Available: ${methods}. Example: ${cmdPrefix} --type ${type} --auth-method ${authMethodNames[0]} --secret KEY=VALUE`,\n ),\n },\n );\n }\n }\n\n // Parse and validate secrets\n const secrets = parseSecrets(type, authMethod, options.secret);\n validateSecrets(type, authMethod, secrets);\n\n return {\n type,\n authMethod,\n secrets,\n isInteractiveMode: false,\n };\n }\n\n // Single-secret provider (legacy)\n // Accept single value or KEY=VALUE format\n const secretArgs = options.secret;\n const firstArg = secretArgs[0];\n if (!firstArg) {\n throw new Error(\"Secret is required\");\n }\n\n // If KEY=VALUE format, extract the value\n let secret: string;\n if (firstArg.includes(\"=\")) {\n secret = firstArg.slice(firstArg.indexOf(\"=\") + 1);\n } else {\n secret = firstArg;\n }\n\n return {\n type,\n secret,\n isInteractiveMode: false,\n };\n}\n\n/**\n * Prompt for auth method selection (only for multi-auth providers)\n */\nexport async function promptForAuthMethod(\n type: ModelProviderType,\n): Promise<string> {\n const authMethods = getAuthMethodsForType(type);\n const defaultAuthMethod = getDefaultAuthMethod(type);\n\n if (!authMethods) {\n return \"default\";\n }\n\n const choices = Object.entries(authMethods).map(([method, config]) => {\n return {\n title:\n method === defaultAuthMethod\n ? `${config.label} (Recommended)`\n : config.label,\n value: method,\n };\n });\n\n const response = await prompts(\n {\n type: \"select\",\n name: \"authMethod\",\n message: \"Select authentication method:\",\n choices,\n },\n {\n onCancel: () => {\n return process.exit(0);\n },\n },\n );\n\n return response.authMethod as string;\n}\n\n/**\n * Determine if a secret should be masked (password type)\n * Non-secret values like region should be visible\n */\nfunction isSensitiveSecret(name: string): boolean {\n const nonSecretPatterns = [\"REGION\", \"ENDPOINT\", \"URL\"];\n return !nonSecretPatterns.some((pattern) => {\n return name.toUpperCase().includes(pattern);\n });\n}\n\nexport async function promptForSecrets(\n type: ModelProviderType,\n authMethod: string,\n): Promise<Record<string, string>> {\n const secretsConfig = getSecretsForAuthMethod(type, authMethod);\n\n if (!secretsConfig) {\n throw new Error(`Invalid auth method \"${authMethod}\"`);\n }\n\n const secrets: Record<string, string> = {};\n\n for (const [name, fieldConfig] of Object.entries(secretsConfig)) {\n if (fieldConfig.helpText) {\n console.log(chalk.dim(fieldConfig.helpText));\n }\n\n const isSensitive = isSensitiveSecret(name);\n const placeholder =\n \"placeholder\" in fieldConfig ? (fieldConfig.placeholder as string) : \"\";\n\n if (fieldConfig.required) {\n const response = await prompts(\n {\n type: isSensitive ? \"password\" : \"text\",\n name: \"value\",\n message: `${fieldConfig.label}:`,\n initial: placeholder ? \"\" : undefined,\n validate: (value: string) => {\n return value.length > 0 || `${fieldConfig.label} is required`;\n },\n },\n {\n onCancel: () => {\n return process.exit(0);\n },\n },\n );\n secrets[name] = response.value as string;\n } else {\n // Optional field\n const response = await prompts(\n {\n type: isSensitive ? \"password\" : \"text\",\n name: \"value\",\n message: `${fieldConfig.label} (optional):`,\n },\n {\n onCancel: () => {\n return process.exit(0);\n },\n },\n );\n const value = response.value as string;\n if (value && value.trim()) {\n secrets[name] = value.trim();\n }\n }\n }\n\n return secrets;\n}\n\n/**\n * Collect secret values from repeatable --secret option\n */\nexport function collectSecrets(value: string, previous: string[]): string[] {\n return previous.concat([value]);\n}\n","import { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { deleteZeroOrgModelProvider } from \"../../../../lib/api\";\nimport { withErrorHandler } from \"../../../../lib/command\";\nimport {\n MODEL_PROVIDER_TYPES,\n type ModelProviderType,\n} from \"@vm0/api-contracts/contracts/model-providers\";\n\ninterface CreateRemoveCommandOptions {\n scopeLabel?: string;\n}\n\nexport function createRemoveCommand(\n options: CreateRemoveCommandOptions = {},\n): Command {\n const scopeLabel = options.scopeLabel ?? \"Org\";\n\n return new Command()\n .name(\"remove\")\n .description(`Remove a ${scopeLabel.toLowerCase()} model provider`)\n .argument(\"<type>\", \"Model provider type to remove\")\n .action(\n withErrorHandler(async (type: string) => {\n if (!Object.keys(MODEL_PROVIDER_TYPES).includes(type)) {\n const validTypes = Object.keys(MODEL_PROVIDER_TYPES).join(\", \");\n throw new Error(`Invalid type \"${type}\"`, {\n cause: new Error(`Valid types: ${validTypes}`),\n });\n }\n\n await deleteZeroOrgModelProvider(type as ModelProviderType);\n console.log(\n chalk.green(`✓ ${scopeLabel} model provider \"${type}\" removed`),\n );\n }),\n );\n}\n\nexport const removeCommand = createRemoveCommand();\n"],"mappings":"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","names":["listCommand","removeCommand","listCommand","removeCommand","listCommand","setCommand","removeCommand","listCommand","setCommand","removeCommand","setupCommand","listCommand","import_prompts","prompts","type","config","prompts","options","removeCommand"]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|