@xopcai/xopc 0.0.166 → 0.0.167

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (136) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/telegram/xopc.extension.json +1 -1
  4. package/dist/gateway/static/root/assets/{activity-store-DkALQFJT.js → activity-store-DjEDu38T.js} +1 -1
  5. package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Tr2hgn4j.js → agent-avatar-dicebear-DQULz7qY.js} +1 -1
  6. package/dist/gateway/static/root/assets/agents-CnzkBgKC.js +2 -0
  7. package/dist/gateway/static/root/assets/{api-DPIXEcIq.js → api-DwVCuPOb.js} +1 -1
  8. package/dist/gateway/static/root/assets/{app-management-settings-panel-D7Nrbhez.js → app-management-settings-panel-DOjWALVF.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-DNNbABFj.js → appearance-settings-C31COUIC.js} +1 -1
  10. package/dist/gateway/static/root/assets/{apps-page-0zXIeywq.js → apps-page-lSC486eu.js} +1 -1
  11. package/dist/gateway/static/root/assets/{archive-plugin-CizqFy4G.js → archive-plugin-DQPvLqfx.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-DU8KjTua.js → attachment-load-DwT1x1rc.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automation-suggestion-card-3pqyIveW.js → automation-suggestion-card-ByYBiiMR.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-DSz3xDsi.js → automations-page-iZTnc1YZ.js} +1 -1
  15. package/dist/gateway/static/root/assets/{binary-plugins-CipUnsOr.js → binary-plugins-CRXiHoZS.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-XoEq6qiv.js → block-editor-CHO6ILiz.js} +1 -1
  17. package/dist/gateway/static/root/assets/{browser-settings-page-COYvq3y5.js → browser-settings-page-C-OOPZcJ.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-DRH995XI.js → browser-workflow-inputs-3UaarfXS.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-65edjhpz.js → browser-workflows-page-BFaa-N_D.js} +1 -1
  20. package/dist/gateway/static/root/assets/capabilities-settings-panel-BayH0Uom.js +7 -0
  21. package/dist/gateway/static/root/assets/capability-presets-api-DdCHSzcA.js +1 -0
  22. package/dist/gateway/static/root/assets/capability-presets-settings-panel-JlhjAhT7.js +2 -0
  23. package/dist/gateway/static/root/assets/{channel-recipient-api-B5rLegwk.js → channel-recipient-api-BOkLI89e.js} +1 -1
  24. package/dist/gateway/static/root/assets/{channels-settings-D8nH0mve.js → channels-settings-C-Spmwr5.js} +1 -1
  25. package/dist/gateway/static/root/assets/channels-status-swr-ZrqadU60.js +1 -0
  26. package/dist/gateway/static/root/assets/{connector-logo-n4Hg41iD.js → connector-logo-CbcC0T6i.js} +1 -1
  27. package/dist/gateway/static/root/assets/{connectors-page-jvRWZn3Y.js → connectors-page-DpDmJ3Nx.js} +1 -1
  28. package/dist/gateway/static/root/assets/{desktop-pet-D4OzBOwm.js → desktop-pet-CR7RGQff.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-settings-CDGezbaf.js → desktop-pet-settings-BudmCcPE.js} +1 -1
  30. package/dist/gateway/static/root/assets/{directory-picker-path-field-DmL4AUXQ.js → directory-picker-path-field-BLG2Oe6z.js} +1 -1
  31. package/dist/gateway/static/root/assets/{dreaming-settings-ClUcBKnd.js → dreaming-settings-BwBGC0SG.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-DsV_KUDM.js → extension-debug-page-Pr65_hLC.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-DJv_G1jY.js → extension-page-BuJDcoKn.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-settings-page-DUAlJ4CU.js → extension-settings-page-B3802tn5.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-config-api-SVYgzqv7.js → gateway-config-api-D-NVkfts.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-settings-YL6f2C_F.js → gateway-settings-DIdsKVXv.js} +1 -1
  37. package/dist/gateway/static/root/assets/{gateway-startup-retry-ulwTJovP.js → gateway-startup-retry-qnEmj-vL.js} +1 -1
  38. package/dist/gateway/static/root/assets/{goal-create-dialog-CJJe-4Co.js → goal-create-dialog-51j_DxgV.js} +1 -1
  39. package/dist/gateway/static/root/assets/{goal-detail-page-Da9VMWRd.js → goal-detail-page-CeqMr5GF.js} +1 -1
  40. package/dist/gateway/static/root/assets/{goals-config-api-st_Itxa9.js → goals-config-api-BkVBh7ct.js} +1 -1
  41. package/dist/gateway/static/root/assets/{goals-page-B6pC7PYZ.js → goals-page-lf3oM4Xa.js} +1 -1
  42. package/dist/gateway/static/root/assets/{goals-settings-BEZePZ5m.js → goals-settings-Cg7MJLvx.js} +1 -1
  43. package/dist/gateway/static/root/assets/{heartbeat-settings-DpeD9GQ9.js → heartbeat-settings-BV3kJOcX.js} +1 -1
  44. package/dist/gateway/static/root/assets/{index-BhQMnKH1.js → index-B24B26og.js} +9 -9
  45. package/dist/gateway/static/root/assets/index-DfE2j0g8.css +1 -0
  46. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-B9K5rTZZ.js +1 -0
  47. package/dist/gateway/static/root/assets/{local-app-workbench-page-Ctia6lSG.js → local-app-workbench-page-ehzr9CBG.js} +1 -1
  48. package/dist/gateway/static/root/assets/{local-apps-page-DWF9rpWQ.js → local-apps-page-BBx6mfAD.js} +1 -1
  49. package/dist/gateway/static/root/assets/locale-store-tnRLWdx2.js +1 -0
  50. package/dist/gateway/static/root/assets/{logs-page-D3gL6vHX.js → logs-page-xuwEkusZ.js} +1 -1
  51. package/dist/gateway/static/root/assets/{markdown-split-BuduJ0Ev.js → markdown-split-DRDddIt8.js} +1 -1
  52. package/dist/gateway/static/root/assets/{media-plugins-CLASZjhT.js → media-plugins-Dn3hxhOV.js} +1 -1
  53. package/dist/gateway/static/root/assets/{messages-C96Zjb0V.js → messages-B1EG4gdu.js} +2 -4
  54. package/dist/gateway/static/root/assets/{notes-page-ve3XiBDF.js → notes-page-BtKHSb4z.js} +1 -1
  55. package/dist/gateway/static/root/assets/{notes-workbench-oHU532lp.js → notes-workbench-DXGXn5XF.js} +2 -2
  56. package/dist/gateway/static/root/assets/{page-tabs-DU85jn98.js → page-tabs-P2BEd1D8.js} +1 -1
  57. package/dist/gateway/static/root/assets/{preview-open-alternatives-CtchTuRQ.js → preview-open-alternatives-DrkjmW0F.js} +1 -1
  58. package/dist/gateway/static/root/assets/{product-open-page-DFT6Fx6y.js → product-open-page-CGzMEowb.js} +1 -1
  59. package/dist/gateway/static/root/assets/{project-detail-page-Ceu0NoC1.js → project-detail-page-IiE2ddWb.js} +1 -1
  60. package/dist/gateway/static/root/assets/{projects-page-CdpqOmO8.js → projects-page-DGOVhaYI.js} +1 -1
  61. package/dist/gateway/static/root/assets/{remote-access-hub-D1NKLyiR.js → remote-access-hub-l_y_Shgl.js} +1 -1
  62. package/dist/gateway/static/root/assets/{save-bar-controls-CmcrHpMc.js → save-bar-controls-BkGrufxl.js} +1 -1
  63. package/dist/gateway/static/root/assets/{schedule-field-DmIkP6JV.js → schedule-field-A8tDpL-9.js} +1 -1
  64. package/dist/gateway/static/root/assets/{schema-form-Dkk9blN0.js → schema-form-N6_hDWgx.js} +1 -1
  65. package/dist/gateway/static/root/assets/{sessions-page-CMj_JaOk.js → sessions-page-CAX4ipPv.js} +1 -1
  66. package/dist/gateway/static/root/assets/settings-advanced-gate-eVlH9brU.js +1 -0
  67. package/dist/gateway/static/root/assets/{settings-form-section-CuQzWvg5.js → settings-form-section-Bb6yYt5f.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-loading-skeleton-C5FNbyej.js → settings-loading-skeleton-Q_Vh6HEl.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-page-a-A2yTGE.js → settings-page-CjOtQpbR.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-layout-MuXpamWD.js → settings-page-layout-CtESNNdx.js} +1 -1
  71. package/dist/gateway/static/root/assets/{setup-status-panel-BUdh8FKY.js → setup-status-panel-CGxHXgJB.js} +1 -1
  72. package/dist/gateway/static/root/assets/{share-preview-page-BfzzmTgg.js → share-preview-page-C65IsFmd.js} +1 -1
  73. package/dist/gateway/static/root/assets/{shares-settings-8a9qnLF8.js → shares-settings-Ct3fcbHr.js} +1 -1
  74. package/dist/gateway/static/root/assets/skill-reload-api-ElA5kabh.js +1 -0
  75. package/dist/gateway/static/root/assets/{skills-page-CmHj-CKY.js → skills-page-FeieOEn3.js} +1 -1
  76. package/dist/gateway/static/root/assets/{system-settings-panel-CyhRkWMi.js → system-settings-panel-CdUl2I0D.js} +1 -1
  77. package/dist/gateway/static/root/assets/{theme-store-D37XLD_C.js → theme-store-H9T49Iar.js} +1 -1
  78. package/dist/gateway/static/root/assets/{time-picker-WEPp3HrB.js → time-picker-EkhqT3fS.js} +1 -1
  79. package/dist/gateway/static/root/assets/{typed-models-lib-Bi1uoxFR.js → typed-models-lib-5xRRUE9Y.js} +1 -1
  80. package/dist/gateway/static/root/assets/{use-channel-catalog-DBh0dOC9.js → use-channel-catalog-UACJTyH0.js} +1 -1
  81. package/dist/gateway/static/root/assets/{user-context-page-BObEyiim.js → user-context-page-DHiRvd4i.js} +1 -1
  82. package/dist/gateway/static/root/assets/{voice-api-key-field-Gvgodhec.js → voice-api-key-field-Bql0SPCp.js} +1 -1
  83. package/dist/gateway/static/root/assets/{work-discovery-page-BHnjvGH1.js → work-discovery-page-BcmZux7y.js} +1 -1
  84. package/dist/gateway/static/root/assets/{work-item-detail-page-CQ8ybkxx.js → work-item-detail-page-D94Q5zVD.js} +1 -1
  85. package/dist/gateway/static/root/assets/{work-page-D_U_En23.js → work-page-DdFBMDcB.js} +1 -1
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-B-Sk6gFn.js → workflow-run-setup-panel-Dow7ZztR.js} +1 -1
  87. package/dist/gateway/static/root/assets/{workflows-page-DT0pzfkz.js → workflows-page-wOVSoduy.js} +1 -1
  88. package/dist/gateway/static/root/index.html +8 -8
  89. package/dist/package.js +1 -1
  90. package/dist/src/agent/image/generation/custom-openai-images-provider.d.ts +7 -0
  91. package/dist/src/agent/image/generation/custom-openai-images-provider.js +81 -0
  92. package/dist/src/agent/image/generation/{openai-compatible-image-provider.d.ts → openai-images-provider.d.ts} +10 -31
  93. package/dist/src/agent/image/generation/{openai-compatible-image-provider.js → openai-images-provider.js} +36 -23
  94. package/dist/src/agent/image/generation/provider-registry.d.ts +2 -0
  95. package/dist/src/agent/image/generation/provider-registry.js +50 -4
  96. package/dist/src/agent/image/generation/providers/openai.js +2 -2
  97. package/dist/src/agent/image/generation/runtime.js +5 -1
  98. package/dist/src/agent/image/generation/types.d.ts +11 -0
  99. package/dist/src/cli/commands/channels.js +1 -1
  100. package/dist/src/cli/commands/connectors.js +1 -1
  101. package/dist/src/cli/commands/doctor/checks/image-providers.d.ts +2 -0
  102. package/dist/src/cli/commands/doctor/checks/image-providers.js +68 -0
  103. package/dist/src/cli/commands/doctor/flow.js +2 -0
  104. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  105. package/dist/src/cli/commands/models.js +1 -1
  106. package/dist/src/cli/commands/onboard.js +1 -1
  107. package/dist/src/config/index.js +2 -2
  108. package/dist/src/config/models-json.d.ts +325 -0
  109. package/dist/src/config/models-json.js +139 -4
  110. package/dist/src/extensions/sdk/index.js +1 -1
  111. package/dist/src/gateway/custom-image-providers.d.ts +89 -0
  112. package/dist/src/gateway/custom-image-providers.js +59 -0
  113. package/dist/src/gateway/heartbeat/service.js +1 -1
  114. package/dist/src/gateway/hono/routes/models.js +182 -1
  115. package/dist/src/gateway/hono/routes/workflows.js +1 -1
  116. package/dist/src/gateway/image-generation-setup.js +7 -1
  117. package/dist/src/gateway/service/config-coordinator.js +2 -0
  118. package/dist/src/gateway/service.js +2 -2
  119. package/dist/src/heartbeat/index.js +1 -1
  120. package/dist/src/media-shared/http/index.d.ts +1 -1
  121. package/dist/src/media-shared/http/index.js +2 -2
  122. package/dist/src/media-shared/http/provider-http.d.ts +2 -0
  123. package/dist/src/media-shared/http/provider-http.js +43 -4
  124. package/dist/src/providers/model-reference-auditor.d.ts +1 -0
  125. package/dist/src/providers/model-reference-auditor.js +23 -13
  126. package/package.json +2 -2
  127. package/dist/gateway/static/root/assets/agents-DZ69tC4K.js +0 -2
  128. package/dist/gateway/static/root/assets/capabilities-settings-panel-LOQyfdsM.js +0 -2
  129. package/dist/gateway/static/root/assets/capability-presets-api-XL4h7dCK.js +0 -1
  130. package/dist/gateway/static/root/assets/capability-presets-settings-panel-KPJFkt1h.js +0 -2
  131. package/dist/gateway/static/root/assets/channels-status-swr-DZZq0upi.js +0 -1
  132. package/dist/gateway/static/root/assets/index-BXtJvaQl.css +0 -1
  133. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-fhssr2-J.js +0 -1
  134. package/dist/gateway/static/root/assets/locale-store-C_ax27uc.js +0 -1
  135. package/dist/gateway/static/root/assets/settings-advanced-gate-DR9Q2ZyF.js +0 -1
  136. package/dist/gateway/static/root/assets/skill-reload-api-da5gLCer.js +0 -1
@@ -8,8 +8,8 @@ import { initWorkspace } from "../utils/init-workspace.js";
8
8
  import { setupModel } from "./onboard/model.js";
9
9
  import { getChannelConfigurators } from "./onboard/channels/registry.js";
10
10
  import { setupChannels } from "./onboard/channels/index.js";
11
- import { Command } from "commander";
12
11
  import { select } from "@inquirer/prompts";
12
+ import { Command } from "commander";
13
13
  //#region src/cli/commands/onboard.ts
14
14
  init_schema();
15
15
  function isInteractive() {
@@ -10,7 +10,7 @@ import { extractProfileAgentId, resolveEffectiveAgentManifestForAgent, resolveEf
10
10
  import { FILENAMES, USER_MEMORY_FILENAME, USER_PROFILE_FILENAME, WORKSPACE_FILES, existsSync, hasBundledExtensionManifest, init_paths, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentHomeDir, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStatusPath, resolveToolsDir, resolveUserDir, resolveUserMemoryPath, resolveUserProfilePath, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath } from "./paths.js";
11
11
  import { init_loader, loadConfig, saveConfig } from "./loader.js";
12
12
  import { clearConfigValueCache, getAllowedCommands, getCacheStats, init_resolve_config_value, resolveConfigValue, resolveHeaders, testApiKeyResolution } from "./resolve-config-value.js";
13
- import { CustomModelSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig } from "./models-json.js";
13
+ import { CustomModelSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig } from "./models-json.js";
14
14
  import { canonicalizeConfiguredMcpServer, isKnownCliMcpTypeAlias, normalizeConfiguredMcpServers, resolveXopcMcpTransportAlias } from "./mcp-config-normalize.js";
15
15
  import { formatThinkingLevels, listThinkingLevels, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, thinkLevelToNumber } from "../agent/transcript/thinking-types.js";
16
16
  import { getWorkspacePath } from "./workspace-path-helpers.js";
@@ -27,4 +27,4 @@ init_workspace_path();
27
27
  init_models_json();
28
28
  init_resolve_config_value();
29
29
  //#endregion
30
- export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CodeIntelligenceConfigSchema, CommandsConfigSchema, ConfigHotReloader, ConfigSchema, ConnectorsConfigSchema, CustomModelSchema, ENV_VARS, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GoalNotificationEventSchema, GoalNotificationTargetSchema, GoalNotificationsConfigSchema, GoalsConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, USER_MEMORY_FILENAME, USER_PROFILE_FILENAME, UpdateAutoConfigSchema, UpdateConfigSchema, VercelGatewayRoutingSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, XOPC_DB_FILENAME, applyConfigOverrides, buildReloadPlan, canonicalizeConfiguredMcpServer, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getConfigOverrides, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, hasBundledExtensionManifest, isKnownCliMcpTypeAlias, listAgentProfileMarkdownDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeConfiguredMcpServers, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, resetConfigOverrides, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveUserDir, resolveUserMemoryPath, resolveUserProfilePath, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcDatabasePath, resolveXopcMcpTransportAlias, saveConfig, saveModelsJson, setConfigOverride, testApiKeyResolution, thinkLevelToNumber, unsetConfigOverride, validateModelsConfig };
30
+ export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CodeIntelligenceConfigSchema, CommandsConfigSchema, ConfigHotReloader, ConfigSchema, ConnectorsConfigSchema, CustomModelSchema, ENV_VARS, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GoalNotificationEventSchema, GoalNotificationTargetSchema, GoalNotificationsConfigSchema, GoalsConfigSchema, HeartbeatConfigSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, USER_MEMORY_FILENAME, USER_PROFILE_FILENAME, UpdateAutoConfigSchema, UpdateConfigSchema, VercelGatewayRoutingSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, XOPC_DB_FILENAME, applyConfigOverrides, buildReloadPlan, canonicalizeConfiguredMcpServer, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getConfigOverrides, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, hasBundledExtensionManifest, isKnownCliMcpTypeAlias, listAgentProfileMarkdownDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeConfiguredMcpServers, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, resetConfigOverrides, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveUserDir, resolveUserMemoryPath, resolveUserProfilePath, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcDatabasePath, resolveXopcMcpTransportAlias, saveConfig, saveModelsJson, setConfigOverride, testApiKeyResolution, thinkLevelToNumber, unsetConfigOverride, validateModelsConfig };
@@ -72,6 +72,177 @@ export declare const OpenAICompatSchema: z.ZodUnion<readonly [z.ZodObject<{
72
72
  }, z.core.$strip>>;
73
73
  supportsStrictMode: z.ZodOptional<z.ZodBoolean>;
74
74
  }, z.core.$strip>, z.ZodObject<{}, z.core.$strip>]>;
75
+ export declare const ImageGenerationCapabilitiesSchema: z.ZodObject<{
76
+ generate: z.ZodOptional<z.ZodObject<{
77
+ maxCount: z.ZodOptional<z.ZodNumber>;
78
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
79
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
80
+ supportsResolution: z.ZodOptional<z.ZodBoolean>;
81
+ }, z.core.$strict>>;
82
+ edit: z.ZodOptional<z.ZodObject<{
83
+ enabled: z.ZodBoolean;
84
+ maxInputImages: z.ZodOptional<z.ZodNumber>;
85
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
86
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
87
+ }, z.core.$strict>>;
88
+ geometry: z.ZodOptional<z.ZodObject<{
89
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
90
+ aspectRatios: z.ZodOptional<z.ZodArray<z.ZodString>>;
91
+ resolutions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
92
+ "1K": "1K";
93
+ "2K": "2K";
94
+ "4K": "4K";
95
+ }>>>;
96
+ }, z.core.$strict>>;
97
+ output: z.ZodOptional<z.ZodObject<{
98
+ qualities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
99
+ low: "low";
100
+ high: "high";
101
+ auto: "auto";
102
+ medium: "medium";
103
+ }>>>;
104
+ formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
105
+ png: "png";
106
+ jpeg: "jpeg";
107
+ webp: "webp";
108
+ }>>>;
109
+ backgrounds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
110
+ auto: "auto";
111
+ transparent: "transparent";
112
+ opaque: "opaque";
113
+ }>>>;
114
+ }, z.core.$strict>>;
115
+ }, z.core.$strict>;
116
+ export declare const ImageGenerationModelSchema: z.ZodObject<{
117
+ id: z.ZodString;
118
+ name: z.ZodOptional<z.ZodString>;
119
+ capabilities: z.ZodObject<{
120
+ generate: z.ZodOptional<z.ZodObject<{
121
+ maxCount: z.ZodOptional<z.ZodNumber>;
122
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
123
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
124
+ supportsResolution: z.ZodOptional<z.ZodBoolean>;
125
+ }, z.core.$strict>>;
126
+ edit: z.ZodOptional<z.ZodObject<{
127
+ enabled: z.ZodBoolean;
128
+ maxInputImages: z.ZodOptional<z.ZodNumber>;
129
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
130
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
131
+ }, z.core.$strict>>;
132
+ geometry: z.ZodOptional<z.ZodObject<{
133
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
134
+ aspectRatios: z.ZodOptional<z.ZodArray<z.ZodString>>;
135
+ resolutions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
136
+ "1K": "1K";
137
+ "2K": "2K";
138
+ "4K": "4K";
139
+ }>>>;
140
+ }, z.core.$strict>>;
141
+ output: z.ZodOptional<z.ZodObject<{
142
+ qualities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
143
+ low: "low";
144
+ high: "high";
145
+ auto: "auto";
146
+ medium: "medium";
147
+ }>>>;
148
+ formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
149
+ png: "png";
150
+ jpeg: "jpeg";
151
+ webp: "webp";
152
+ }>>>;
153
+ backgrounds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
154
+ auto: "auto";
155
+ transparent: "transparent";
156
+ opaque: "opaque";
157
+ }>>>;
158
+ }, z.core.$strict>>;
159
+ }, z.core.$strict>;
160
+ defaults: z.ZodOptional<z.ZodObject<{
161
+ count: z.ZodOptional<z.ZodNumber>;
162
+ size: z.ZodOptional<z.ZodString>;
163
+ outputFormat: z.ZodOptional<z.ZodEnum<{
164
+ png: "png";
165
+ jpeg: "jpeg";
166
+ webp: "webp";
167
+ }>>;
168
+ }, z.core.$strict>>;
169
+ }, z.core.$strict>;
170
+ export declare const ImageGenerationProviderSchema: z.ZodObject<{
171
+ api: z.ZodLiteral<"openai-images">;
172
+ name: z.ZodString;
173
+ documentationUrl: z.ZodOptional<z.ZodString>;
174
+ apiKeyUrl: z.ZodOptional<z.ZodString>;
175
+ defaultModel: z.ZodString;
176
+ auth: z.ZodDiscriminatedUnion<[z.ZodObject<{
177
+ type: z.ZodLiteral<"bearer">;
178
+ }, z.core.$strict>, z.ZodObject<{
179
+ type: z.ZodLiteral<"header">;
180
+ headerName: z.ZodString;
181
+ }, z.core.$strict>, z.ZodObject<{
182
+ type: z.ZodLiteral<"none">;
183
+ }, z.core.$strict>], "type">;
184
+ paths: z.ZodOptional<z.ZodObject<{
185
+ generations: z.ZodOptional<z.ZodString>;
186
+ edits: z.ZodOptional<z.ZodString>;
187
+ }, z.core.$strict>>;
188
+ network: z.ZodOptional<z.ZodObject<{
189
+ allowedHosts: z.ZodArray<z.ZodString>;
190
+ }, z.core.$strict>>;
191
+ models: z.ZodArray<z.ZodObject<{
192
+ id: z.ZodString;
193
+ name: z.ZodOptional<z.ZodString>;
194
+ capabilities: z.ZodObject<{
195
+ generate: z.ZodOptional<z.ZodObject<{
196
+ maxCount: z.ZodOptional<z.ZodNumber>;
197
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
198
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
199
+ supportsResolution: z.ZodOptional<z.ZodBoolean>;
200
+ }, z.core.$strict>>;
201
+ edit: z.ZodOptional<z.ZodObject<{
202
+ enabled: z.ZodBoolean;
203
+ maxInputImages: z.ZodOptional<z.ZodNumber>;
204
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
205
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
206
+ }, z.core.$strict>>;
207
+ geometry: z.ZodOptional<z.ZodObject<{
208
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
209
+ aspectRatios: z.ZodOptional<z.ZodArray<z.ZodString>>;
210
+ resolutions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
211
+ "1K": "1K";
212
+ "2K": "2K";
213
+ "4K": "4K";
214
+ }>>>;
215
+ }, z.core.$strict>>;
216
+ output: z.ZodOptional<z.ZodObject<{
217
+ qualities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
218
+ low: "low";
219
+ high: "high";
220
+ auto: "auto";
221
+ medium: "medium";
222
+ }>>>;
223
+ formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
224
+ png: "png";
225
+ jpeg: "jpeg";
226
+ webp: "webp";
227
+ }>>>;
228
+ backgrounds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
229
+ auto: "auto";
230
+ transparent: "transparent";
231
+ opaque: "opaque";
232
+ }>>>;
233
+ }, z.core.$strict>>;
234
+ }, z.core.$strict>;
235
+ defaults: z.ZodOptional<z.ZodObject<{
236
+ count: z.ZodOptional<z.ZodNumber>;
237
+ size: z.ZodOptional<z.ZodString>;
238
+ outputFormat: z.ZodOptional<z.ZodEnum<{
239
+ png: "png";
240
+ jpeg: "jpeg";
241
+ webp: "webp";
242
+ }>>;
243
+ }, z.core.$strict>>;
244
+ }, z.core.$strict>>;
245
+ }, z.core.$strict>;
75
246
  export declare const CustomModelSchema: z.ZodObject<{
76
247
  id: z.ZodString;
77
248
  name: z.ZodOptional<z.ZodString>;
@@ -295,6 +466,82 @@ export declare const ProviderConfigSchema: z.ZodObject<{
295
466
  modelDiscovery: z.ZodOptional<z.ZodObject<{
296
467
  enabled: z.ZodBoolean;
297
468
  }, z.core.$strict>>;
469
+ imageGeneration: z.ZodOptional<z.ZodObject<{
470
+ api: z.ZodLiteral<"openai-images">;
471
+ name: z.ZodString;
472
+ documentationUrl: z.ZodOptional<z.ZodString>;
473
+ apiKeyUrl: z.ZodOptional<z.ZodString>;
474
+ defaultModel: z.ZodString;
475
+ auth: z.ZodDiscriminatedUnion<[z.ZodObject<{
476
+ type: z.ZodLiteral<"bearer">;
477
+ }, z.core.$strict>, z.ZodObject<{
478
+ type: z.ZodLiteral<"header">;
479
+ headerName: z.ZodString;
480
+ }, z.core.$strict>, z.ZodObject<{
481
+ type: z.ZodLiteral<"none">;
482
+ }, z.core.$strict>], "type">;
483
+ paths: z.ZodOptional<z.ZodObject<{
484
+ generations: z.ZodOptional<z.ZodString>;
485
+ edits: z.ZodOptional<z.ZodString>;
486
+ }, z.core.$strict>>;
487
+ network: z.ZodOptional<z.ZodObject<{
488
+ allowedHosts: z.ZodArray<z.ZodString>;
489
+ }, z.core.$strict>>;
490
+ models: z.ZodArray<z.ZodObject<{
491
+ id: z.ZodString;
492
+ name: z.ZodOptional<z.ZodString>;
493
+ capabilities: z.ZodObject<{
494
+ generate: z.ZodOptional<z.ZodObject<{
495
+ maxCount: z.ZodOptional<z.ZodNumber>;
496
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
497
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
498
+ supportsResolution: z.ZodOptional<z.ZodBoolean>;
499
+ }, z.core.$strict>>;
500
+ edit: z.ZodOptional<z.ZodObject<{
501
+ enabled: z.ZodBoolean;
502
+ maxInputImages: z.ZodOptional<z.ZodNumber>;
503
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
504
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
505
+ }, z.core.$strict>>;
506
+ geometry: z.ZodOptional<z.ZodObject<{
507
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
508
+ aspectRatios: z.ZodOptional<z.ZodArray<z.ZodString>>;
509
+ resolutions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
510
+ "1K": "1K";
511
+ "2K": "2K";
512
+ "4K": "4K";
513
+ }>>>;
514
+ }, z.core.$strict>>;
515
+ output: z.ZodOptional<z.ZodObject<{
516
+ qualities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
517
+ low: "low";
518
+ high: "high";
519
+ auto: "auto";
520
+ medium: "medium";
521
+ }>>>;
522
+ formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
523
+ png: "png";
524
+ jpeg: "jpeg";
525
+ webp: "webp";
526
+ }>>>;
527
+ backgrounds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
528
+ auto: "auto";
529
+ transparent: "transparent";
530
+ opaque: "opaque";
531
+ }>>>;
532
+ }, z.core.$strict>>;
533
+ }, z.core.$strict>;
534
+ defaults: z.ZodOptional<z.ZodObject<{
535
+ count: z.ZodOptional<z.ZodNumber>;
536
+ size: z.ZodOptional<z.ZodString>;
537
+ outputFormat: z.ZodOptional<z.ZodEnum<{
538
+ png: "png";
539
+ jpeg: "jpeg";
540
+ webp: "webp";
541
+ }>>;
542
+ }, z.core.$strict>>;
543
+ }, z.core.$strict>>;
544
+ }, z.core.$strict>>;
298
545
  }, z.core.$strip>;
299
546
  export declare const ModelsJsonSchema: z.ZodObject<{
300
547
  providers: z.ZodRecord<z.ZodString, z.ZodObject<{
@@ -418,6 +665,82 @@ export declare const ModelsJsonSchema: z.ZodObject<{
418
665
  modelDiscovery: z.ZodOptional<z.ZodObject<{
419
666
  enabled: z.ZodBoolean;
420
667
  }, z.core.$strict>>;
668
+ imageGeneration: z.ZodOptional<z.ZodObject<{
669
+ api: z.ZodLiteral<"openai-images">;
670
+ name: z.ZodString;
671
+ documentationUrl: z.ZodOptional<z.ZodString>;
672
+ apiKeyUrl: z.ZodOptional<z.ZodString>;
673
+ defaultModel: z.ZodString;
674
+ auth: z.ZodDiscriminatedUnion<[z.ZodObject<{
675
+ type: z.ZodLiteral<"bearer">;
676
+ }, z.core.$strict>, z.ZodObject<{
677
+ type: z.ZodLiteral<"header">;
678
+ headerName: z.ZodString;
679
+ }, z.core.$strict>, z.ZodObject<{
680
+ type: z.ZodLiteral<"none">;
681
+ }, z.core.$strict>], "type">;
682
+ paths: z.ZodOptional<z.ZodObject<{
683
+ generations: z.ZodOptional<z.ZodString>;
684
+ edits: z.ZodOptional<z.ZodString>;
685
+ }, z.core.$strict>>;
686
+ network: z.ZodOptional<z.ZodObject<{
687
+ allowedHosts: z.ZodArray<z.ZodString>;
688
+ }, z.core.$strict>>;
689
+ models: z.ZodArray<z.ZodObject<{
690
+ id: z.ZodString;
691
+ name: z.ZodOptional<z.ZodString>;
692
+ capabilities: z.ZodObject<{
693
+ generate: z.ZodOptional<z.ZodObject<{
694
+ maxCount: z.ZodOptional<z.ZodNumber>;
695
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
696
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
697
+ supportsResolution: z.ZodOptional<z.ZodBoolean>;
698
+ }, z.core.$strict>>;
699
+ edit: z.ZodOptional<z.ZodObject<{
700
+ enabled: z.ZodBoolean;
701
+ maxInputImages: z.ZodOptional<z.ZodNumber>;
702
+ supportsSize: z.ZodOptional<z.ZodBoolean>;
703
+ supportsAspectRatio: z.ZodOptional<z.ZodBoolean>;
704
+ }, z.core.$strict>>;
705
+ geometry: z.ZodOptional<z.ZodObject<{
706
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
707
+ aspectRatios: z.ZodOptional<z.ZodArray<z.ZodString>>;
708
+ resolutions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
709
+ "1K": "1K";
710
+ "2K": "2K";
711
+ "4K": "4K";
712
+ }>>>;
713
+ }, z.core.$strict>>;
714
+ output: z.ZodOptional<z.ZodObject<{
715
+ qualities: z.ZodOptional<z.ZodArray<z.ZodEnum<{
716
+ low: "low";
717
+ high: "high";
718
+ auto: "auto";
719
+ medium: "medium";
720
+ }>>>;
721
+ formats: z.ZodOptional<z.ZodArray<z.ZodEnum<{
722
+ png: "png";
723
+ jpeg: "jpeg";
724
+ webp: "webp";
725
+ }>>>;
726
+ backgrounds: z.ZodOptional<z.ZodArray<z.ZodEnum<{
727
+ auto: "auto";
728
+ transparent: "transparent";
729
+ opaque: "opaque";
730
+ }>>>;
731
+ }, z.core.$strict>>;
732
+ }, z.core.$strict>;
733
+ defaults: z.ZodOptional<z.ZodObject<{
734
+ count: z.ZodOptional<z.ZodNumber>;
735
+ size: z.ZodOptional<z.ZodString>;
736
+ outputFormat: z.ZodOptional<z.ZodEnum<{
737
+ png: "png";
738
+ jpeg: "jpeg";
739
+ webp: "webp";
740
+ }>>;
741
+ }, z.core.$strict>>;
742
+ }, z.core.$strict>>;
743
+ }, z.core.$strict>>;
421
744
  }, z.core.$strip>>;
422
745
  }, z.core.$strip>;
423
746
  export type OpenRouterRouting = z.infer<typeof OpenRouterRoutingSchema>;
@@ -425,6 +748,8 @@ export type VercelGatewayRouting = z.infer<typeof VercelGatewayRoutingSchema>;
425
748
  export type OpenAICompletionsCompat = z.infer<typeof OpenAICompletionsCompatSchema>;
426
749
  export type OpenAIResponsesCompat = z.infer<typeof OpenAIResponsesCompatSchema>;
427
750
  export type OpenAICompat = z.infer<typeof OpenAICompatSchema>;
751
+ export type ImageGenerationModelConfig = z.infer<typeof ImageGenerationModelSchema>;
752
+ export type ImageGenerationProviderConfig = z.infer<typeof ImageGenerationProviderSchema>;
428
753
  export type CustomModel = z.infer<typeof CustomModelSchema>;
429
754
  export type ModelOverride = z.infer<typeof ModelOverrideSchema>;
430
755
  export type ProviderConfig = z.infer<typeof ProviderConfigSchema>;
@@ -48,6 +48,55 @@ function validateModelsConfig(config) {
48
48
  const hasModels = providerConfig.models && providerConfig.models.length > 0;
49
49
  const hasModelOverrides = providerConfig.modelOverrides && Object.keys(providerConfig.modelOverrides).length > 0;
50
50
  const hasBaseUrl = !!providerConfig.baseUrl;
51
+ const imageGeneration = providerConfig.imageGeneration;
52
+ if (imageGeneration) {
53
+ if (RESERVED_PROVIDER_IDS.has(providerName)) errors.push({
54
+ path: `providers.${providerName}.imageGeneration`,
55
+ message: "Custom image generation cannot override a built-in provider ID",
56
+ severity: "error"
57
+ });
58
+ if (!hasBaseUrl) errors.push({
59
+ path: `providers.${providerName}.baseUrl`,
60
+ message: "baseUrl is required when defining image generation models",
61
+ severity: "error"
62
+ });
63
+ const credentialHeaderNames = new Set([
64
+ "authorization",
65
+ "proxy-authorization",
66
+ "cookie",
67
+ ...imageGeneration.auth.type === "header" ? [imageGeneration.auth.headerName.toLowerCase()] : []
68
+ ]);
69
+ for (const headerName of Object.keys(providerConfig.headers ?? {})) if (credentialHeaderNames.has(headerName.toLowerCase())) errors.push({
70
+ path: `providers.${providerName}.headers.${headerName}`,
71
+ message: "Credential headers must be stored in the credential store, not models.json",
72
+ severity: "error"
73
+ });
74
+ for (const [headerName, headerValue] of Object.entries(providerConfig.headers ?? {})) if (!isHttpHeaderValue(headerValue)) errors.push({
75
+ path: `providers.${providerName}.headers.${headerName}`,
76
+ message: "Header values must contain only HTTP ByteString characters and no control characters",
77
+ severity: "error"
78
+ });
79
+ const imageModelIds = /* @__PURE__ */ new Set();
80
+ for (let i = 0; i < imageGeneration.models.length; i++) {
81
+ const model = imageGeneration.models[i];
82
+ if (model.id.includes("/")) errors.push({
83
+ path: `providers.${providerName}.imageGeneration.models[${i}].id`,
84
+ message: "Image model ID cannot contain \"/\" character",
85
+ severity: "error"
86
+ });
87
+ if (imageModelIds.has(model.id)) errors.push({
88
+ path: `providers.${providerName}.imageGeneration.models[${i}].id`,
89
+ message: `Duplicate image model ID "${model.id}"`,
90
+ severity: "error"
91
+ });
92
+ imageModelIds.add(model.id);
93
+ }
94
+ if (!imageModelIds.has(imageGeneration.defaultModel)) errors.push({
95
+ path: `providers.${providerName}.imageGeneration.defaultModel`,
96
+ message: "defaultModel must reference a configured image generation model",
97
+ severity: "error"
98
+ });
99
+ }
51
100
  if (hasModels) {
52
101
  if (!hasBaseUrl) errors.push({
53
102
  path: `providers.${providerName}.baseUrl`,
@@ -55,7 +104,7 @@ function validateModelsConfig(config) {
55
104
  severity: "error"
56
105
  });
57
106
  }
58
- if (!hasModels && !hasBaseUrl && !hasModelOverrides && !providerConfig.apiKey) errors.push({
107
+ if (!hasModels && !hasBaseUrl && !hasModelOverrides && !providerConfig.apiKey && !imageGeneration) errors.push({
59
108
  path: `providers.${providerName}`,
60
109
  message: "Must specify baseUrl, modelOverrides, models, or apiKey",
61
110
  severity: "error"
@@ -99,6 +148,13 @@ function validateModelsConfig(config) {
99
148
  errors
100
149
  };
101
150
  }
151
+ function isHttpHeaderValue(value) {
152
+ for (let index = 0; index < value.length; index++) {
153
+ const code = value.charCodeAt(index);
154
+ if (code > 255 || code < 32 && code !== 9 || code === 127) return false;
155
+ }
156
+ return true;
157
+ }
102
158
  function getDefaultModelValues() {
103
159
  return {
104
160
  input: ["text"],
@@ -158,7 +214,7 @@ function saveModelsJson(path, config) {
158
214
  function modelsJsonExists(path = resolveModelsJsonPath()) {
159
215
  return existsSync(path);
160
216
  }
161
- var OpenRouterRoutingSchema, VercelGatewayRoutingSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenAICompatSchema, CustomModelSchema, ModelOverrideSchema, ProviderConfigSchema, ModelsJsonSchema, PROVIDER_ID_REGEX, RESERVED_PROVIDER_IDS;
217
+ var OpenRouterRoutingSchema, VercelGatewayRoutingSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenAICompatSchema, ImageGenerationResolutionSchema, ImageGenerationQualitySchema, ImageGenerationOutputFormatSchema, ImageGenerationBackgroundSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, CustomModelSchema, ModelOverrideSchema, ProviderConfigSchema, ModelsJsonSchema, PROVIDER_ID_REGEX, RESERVED_PROVIDER_IDS;
162
218
  var init_models_json = __esmMin((() => {
163
219
  init_write_file_atomic();
164
220
  init_paths();
@@ -191,6 +247,82 @@ var init_models_json = __esmMin((() => {
191
247
  });
192
248
  OpenAIResponsesCompatSchema = z.object({});
193
249
  OpenAICompatSchema = z.union([OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema]);
250
+ ImageGenerationResolutionSchema = z.enum([
251
+ "1K",
252
+ "2K",
253
+ "4K"
254
+ ]);
255
+ ImageGenerationQualitySchema = z.enum([
256
+ "low",
257
+ "medium",
258
+ "high",
259
+ "auto"
260
+ ]);
261
+ ImageGenerationOutputFormatSchema = z.enum([
262
+ "png",
263
+ "jpeg",
264
+ "webp"
265
+ ]);
266
+ ImageGenerationBackgroundSchema = z.enum([
267
+ "transparent",
268
+ "opaque",
269
+ "auto"
270
+ ]);
271
+ ImageGenerationCapabilitiesSchema = z.object({
272
+ generate: z.object({
273
+ maxCount: z.number().int().positive().optional(),
274
+ supportsSize: z.boolean().optional(),
275
+ supportsAspectRatio: z.boolean().optional(),
276
+ supportsResolution: z.boolean().optional()
277
+ }).strict().optional(),
278
+ edit: z.object({
279
+ enabled: z.boolean(),
280
+ maxInputImages: z.number().int().positive().optional(),
281
+ supportsSize: z.boolean().optional(),
282
+ supportsAspectRatio: z.boolean().optional()
283
+ }).strict().optional(),
284
+ geometry: z.object({
285
+ sizes: z.array(z.string().min(1)).optional(),
286
+ aspectRatios: z.array(z.string().min(1)).optional(),
287
+ resolutions: z.array(ImageGenerationResolutionSchema).optional()
288
+ }).strict().optional(),
289
+ output: z.object({
290
+ qualities: z.array(ImageGenerationQualitySchema).optional(),
291
+ formats: z.array(ImageGenerationOutputFormatSchema).optional(),
292
+ backgrounds: z.array(ImageGenerationBackgroundSchema).optional()
293
+ }).strict().optional()
294
+ }).strict();
295
+ ImageGenerationModelSchema = z.object({
296
+ id: z.string().min(1),
297
+ name: z.string().min(1).optional(),
298
+ capabilities: ImageGenerationCapabilitiesSchema,
299
+ defaults: z.object({
300
+ count: z.number().int().positive().optional(),
301
+ size: z.string().min(1).optional(),
302
+ outputFormat: ImageGenerationOutputFormatSchema.optional()
303
+ }).strict().optional()
304
+ }).strict();
305
+ ImageGenerationProviderSchema = z.object({
306
+ api: z.literal("openai-images"),
307
+ name: z.string().min(1),
308
+ documentationUrl: z.string().url().optional(),
309
+ apiKeyUrl: z.string().url().optional(),
310
+ defaultModel: z.string().min(1),
311
+ auth: z.discriminatedUnion("type", [
312
+ z.object({ type: z.literal("bearer") }).strict(),
313
+ z.object({
314
+ type: z.literal("header"),
315
+ headerName: z.string().regex(/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/)
316
+ }).strict(),
317
+ z.object({ type: z.literal("none") }).strict()
318
+ ]),
319
+ paths: z.object({
320
+ generations: z.string().startsWith("/").optional(),
321
+ edits: z.string().startsWith("/").optional()
322
+ }).strict().optional(),
323
+ network: z.object({ allowedHosts: z.array(z.string().min(1).refine((host) => host === host.trim() && !host.includes("://") && !/[/?#]/.test(host), "Use an exact hostname or IP without scheme, port, or path")).min(1) }).strict().optional(),
324
+ models: z.array(ImageGenerationModelSchema).min(1)
325
+ }).strict();
194
326
  CustomModelSchema = z.object({
195
327
  id: z.string().min(1),
196
328
  name: z.string().min(1).optional(),
@@ -251,7 +383,8 @@ var init_models_json = __esmMin((() => {
251
383
  authHeader: z.boolean().optional(),
252
384
  models: z.array(CustomModelSchema).optional(),
253
385
  modelOverrides: z.record(z.string(), ModelOverrideSchema).optional(),
254
- modelDiscovery: z.object({ enabled: z.boolean() }).strict().optional()
386
+ modelDiscovery: z.object({ enabled: z.boolean() }).strict().optional(),
387
+ imageGeneration: ImageGenerationProviderSchema.optional()
255
388
  });
256
389
  ModelsJsonSchema = z.object({ providers: z.record(z.string(), ProviderConfigSchema) });
257
390
  PROVIDER_ID_REGEX = /^[a-z0-9]([a-z0-9-_]*[a-z0-9])?$/;
@@ -262,7 +395,9 @@ var init_models_json = __esmMin((() => {
262
395
  "cerebras",
263
396
  "cloudflare-ai-gateway",
264
397
  "cloudflare-workers-ai",
398
+ "dashscope",
265
399
  "deepseek",
400
+ "fal",
266
401
  "fireworks",
267
402
  "github-copilot",
268
403
  "google",
@@ -294,4 +429,4 @@ var init_models_json = __esmMin((() => {
294
429
  }));
295
430
  //#endregion
296
431
  init_models_json();
297
- export { CustomModelSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig };
432
+ export { CustomModelSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig };
@@ -7,8 +7,8 @@ import { SlotRegistry, getSlotRegistry, registerSlotType } from "../slots.js";
7
7
  import { ExtensionDiagnostics, ExtensionLoaderCacheImpl, getExtensionCache, getExtensionDiagnostics } from "../diagnostics.js";
8
8
  import "../loader.js";
9
9
  import { ExtensionHookRunner, createHookContext, isHookEvent } from "../hooks.js";
10
- import { registerExtensionCliProgram } from "./channel-helpers.js";
11
10
  import { defineChannelPluginEntry } from "./channel-entry.js";
11
+ import { registerExtensionCliProgram } from "./channel-helpers.js";
12
12
  import { lazyFunction, lazyModule } from "./lazy.js";
13
13
  import { createMockExtensionApi, createTestGateway } from "./testing.js";
14
14
  //#region src/extensions/sdk/index.ts