@xopcai/xopc 0.0.165 → 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 (180) 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-CKVX2TyD.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-ClToHdDF.js → app-management-settings-panel-DOjWALVF.js} +1 -1
  9. package/dist/gateway/static/root/assets/{appearance-settings-Ci2jWAkQ.js → appearance-settings-C31COUIC.js} +1 -1
  10. package/dist/gateway/static/root/assets/{apps-page-DCow0nte.js → apps-page-lSC486eu.js} +1 -1
  11. package/dist/gateway/static/root/assets/{archive-plugin-CKv5A1_M.js → archive-plugin-DQPvLqfx.js} +1 -1
  12. package/dist/gateway/static/root/assets/{attachment-load-LgoN-Vwo.js → attachment-load-DwT1x1rc.js} +1 -1
  13. package/dist/gateway/static/root/assets/{automation-suggestion-card-BwnZqDQE.js → automation-suggestion-card-ByYBiiMR.js} +1 -1
  14. package/dist/gateway/static/root/assets/{automations-page-DWWHMqCZ.js → automations-page-iZTnc1YZ.js} +1 -1
  15. package/dist/gateway/static/root/assets/{binary-plugins-WwMRnBdP.js → binary-plugins-CRXiHoZS.js} +1 -1
  16. package/dist/gateway/static/root/assets/{block-editor-CThEfJSn.js → block-editor-CHO6ILiz.js} +3 -3
  17. package/dist/gateway/static/root/assets/{browser-settings-page-7x8rKLOl.js → browser-settings-page-C-OOPZcJ.js} +1 -1
  18. package/dist/gateway/static/root/assets/{browser-workflow-inputs-DCj9DG0A.js → browser-workflow-inputs-3UaarfXS.js} +1 -1
  19. package/dist/gateway/static/root/assets/{browser-workflows-page-C1k2vHLV.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-DU93p9RZ.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-au5xzRMl.js → connector-logo-CbcC0T6i.js} +1 -1
  27. package/dist/gateway/static/root/assets/{connectors-page-B9sD56hT.js → connectors-page-DpDmJ3Nx.js} +1 -1
  28. package/dist/gateway/static/root/assets/{desktop-pet-CaTO9bAV.js → desktop-pet-CR7RGQff.js} +1 -1
  29. package/dist/gateway/static/root/assets/{desktop-pet-settings-CORq2BIE.js → desktop-pet-settings-BudmCcPE.js} +1 -1
  30. package/dist/gateway/static/root/assets/{directory-picker-path-field-Daf0tqrN.js → directory-picker-path-field-BLG2Oe6z.js} +1 -1
  31. package/dist/gateway/static/root/assets/{dreaming-settings-CJqJpvgc.js → dreaming-settings-BwBGC0SG.js} +1 -1
  32. package/dist/gateway/static/root/assets/{extension-debug-page-0XmiUqsm.js → extension-debug-page-Pr65_hLC.js} +1 -1
  33. package/dist/gateway/static/root/assets/{extension-page-C_9HSvyu.js → extension-page-BuJDcoKn.js} +1 -1
  34. package/dist/gateway/static/root/assets/{extension-settings-page-DcmUCmOu.js → extension-settings-page-B3802tn5.js} +1 -1
  35. package/dist/gateway/static/root/assets/{gateway-config-api-CZqfsxJf.js → gateway-config-api-D-NVkfts.js} +1 -1
  36. package/dist/gateway/static/root/assets/{gateway-settings-CzX8TVmO.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-Dbj_sgV-.js → goal-create-dialog-51j_DxgV.js} +1 -1
  39. package/dist/gateway/static/root/assets/{goal-detail-page-BdkiZwW-.js → goal-detail-page-CeqMr5GF.js} +1 -1
  40. package/dist/gateway/static/root/assets/{goals-config-api-Cvlq3jyf.js → goals-config-api-BkVBh7ct.js} +1 -1
  41. package/dist/gateway/static/root/assets/{goals-page-BD9ztXNA.js → goals-page-lf3oM4Xa.js} +1 -1
  42. package/dist/gateway/static/root/assets/{goals-settings-CSGvHJDi.js → goals-settings-Cg7MJLvx.js} +1 -1
  43. package/dist/gateway/static/root/assets/{heartbeat-settings-BvXA7oNN.js → heartbeat-settings-BV3kJOcX.js} +1 -1
  44. package/dist/gateway/static/root/assets/{index-CfOzvGDb.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-DH4nglP_.js → local-app-workbench-page-ehzr9CBG.js} +1 -1
  48. package/dist/gateway/static/root/assets/{local-apps-page-BScdXqMo.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-BBpAWjyF.js → logs-page-xuwEkusZ.js} +1 -1
  51. package/dist/gateway/static/root/assets/{markdown-split-8hnAS25m.js → markdown-split-DRDddIt8.js} +1 -1
  52. package/dist/gateway/static/root/assets/{media-plugins-DzlHseMD.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-DbDHFPiI.js → notes-page-BtKHSb4z.js} +1 -1
  55. package/dist/gateway/static/root/assets/{notes-workbench-B-A9whbg.js → notes-workbench-DXGXn5XF.js} +2 -2
  56. package/dist/gateway/static/root/assets/{page-tabs-CXJiygUJ.js → page-tabs-P2BEd1D8.js} +1 -1
  57. package/dist/gateway/static/root/assets/{preview-open-alternatives-Cq6aue5a.js → preview-open-alternatives-DrkjmW0F.js} +1 -1
  58. package/dist/gateway/static/root/assets/{product-open-page-nP8vuNlJ.js → product-open-page-CGzMEowb.js} +1 -1
  59. package/dist/gateway/static/root/assets/{project-detail-page-BXrscUbq.js → project-detail-page-IiE2ddWb.js} +1 -1
  60. package/dist/gateway/static/root/assets/{projects-page-m0EKUeaY.js → projects-page-DGOVhaYI.js} +1 -1
  61. package/dist/gateway/static/root/assets/{remote-access-hub-B16uQSY5.js → remote-access-hub-l_y_Shgl.js} +1 -1
  62. package/dist/gateway/static/root/assets/{save-bar-controls-BPgnLY1p.js → save-bar-controls-BkGrufxl.js} +1 -1
  63. package/dist/gateway/static/root/assets/{schedule-field-rHWpueWl.js → schedule-field-A8tDpL-9.js} +1 -1
  64. package/dist/gateway/static/root/assets/{schema-form-CHKIUrzk.js → schema-form-N6_hDWgx.js} +1 -1
  65. package/dist/gateway/static/root/assets/{sessions-page-C5_qtznc.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-CR4J0N4X.js → settings-form-section-Bb6yYt5f.js} +1 -1
  68. package/dist/gateway/static/root/assets/{settings-loading-skeleton-B8v-lHKT.js → settings-loading-skeleton-Q_Vh6HEl.js} +1 -1
  69. package/dist/gateway/static/root/assets/{settings-page-BcLf8Rd5.js → settings-page-CjOtQpbR.js} +1 -1
  70. package/dist/gateway/static/root/assets/{settings-page-layout-Co31Becn.js → settings-page-layout-CtESNNdx.js} +1 -1
  71. package/dist/gateway/static/root/assets/{setup-status-panel-BFLA1Fsj.js → setup-status-panel-CGxHXgJB.js} +1 -1
  72. package/dist/gateway/static/root/assets/{share-preview-page-B5vMe8DY.js → share-preview-page-C65IsFmd.js} +1 -1
  73. package/dist/gateway/static/root/assets/{shares-settings-DL2tKPq6.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-DAOZXlp5.js → skills-page-FeieOEn3.js} +1 -1
  76. package/dist/gateway/static/root/assets/{system-settings-panel-CHt3FXI8.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-C9Rr1IUV.js → time-picker-EkhqT3fS.js} +1 -1
  79. package/dist/gateway/static/root/assets/{typed-models-lib-QMF30Yvh.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-D6EEhj-e.js → user-context-page-DHiRvd4i.js} +1 -1
  82. package/dist/gateway/static/root/assets/{voice-api-key-field-Gjjs3qih.js → voice-api-key-field-Bql0SPCp.js} +1 -1
  83. package/dist/gateway/static/root/assets/{work-discovery-page-CDnL9daG.js → work-discovery-page-BcmZux7y.js} +1 -1
  84. package/dist/gateway/static/root/assets/{work-item-detail-page-BCoT4p1E.js → work-item-detail-page-D94Q5zVD.js} +1 -1
  85. package/dist/gateway/static/root/assets/{work-page-l8h2Y50w.js → work-page-DdFBMDcB.js} +1 -1
  86. package/dist/gateway/static/root/assets/{workflow-run-setup-panel-DnOfronD.js → workflow-run-setup-panel-Dow7ZztR.js} +1 -1
  87. package/dist/gateway/static/root/assets/{workflows-page-IVbQ83CW.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/agent-manager.js +3 -3
  91. package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
  92. package/dist/src/agent/embedded/model-runtime.js +1 -1
  93. package/dist/src/agent/goals/post-turn.js +1 -1
  94. package/dist/src/agent/image/generation/custom-openai-images-provider.d.ts +7 -0
  95. package/dist/src/agent/image/generation/custom-openai-images-provider.js +81 -0
  96. package/dist/src/agent/image/generation/{openai-compatible-image-provider.d.ts → openai-images-provider.d.ts} +10 -31
  97. package/dist/src/agent/image/generation/{openai-compatible-image-provider.js → openai-images-provider.js} +36 -23
  98. package/dist/src/agent/image/generation/provider-registry.d.ts +2 -0
  99. package/dist/src/agent/image/generation/provider-registry.js +50 -4
  100. package/dist/src/agent/image/generation/providers/openai.js +2 -2
  101. package/dist/src/agent/image/generation/runtime.js +5 -1
  102. package/dist/src/agent/image/generation/types.d.ts +11 -0
  103. package/dist/src/agent/image/tool-model-config.js +1 -1
  104. package/dist/src/agent/ipc/inbox.js +1 -1
  105. package/dist/src/agent/memory/dreaming/config.js +1 -1
  106. package/dist/src/agent/service.js +2 -2
  107. package/dist/src/agent/skills/hub-lock.js +1 -1
  108. package/dist/src/agent-runtime/index.js +1 -1
  109. package/dist/src/agent-runtime/runtime-profile.js +1 -1
  110. package/dist/src/auth/credentials.js +2 -2
  111. package/dist/src/auth/profiles/store.js +1 -1
  112. package/dist/src/auth/sync-provider-auth.js +2 -2
  113. package/dist/src/browser/providers/browser-ext-install.js +1 -1
  114. package/dist/src/cli/commands/channels.js +1 -1
  115. package/dist/src/cli/commands/connectors.js +2 -2
  116. package/dist/src/cli/commands/doctor/checks/image-providers.d.ts +2 -0
  117. package/dist/src/cli/commands/doctor/checks/image-providers.js +68 -0
  118. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  119. package/dist/src/cli/commands/doctor/flow.js +2 -0
  120. package/dist/src/cli/commands/extension-marketplace.js +2 -2
  121. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  122. package/dist/src/cli/commands/models.js +2 -2
  123. package/dist/src/cli/commands/onboard.js +1 -1
  124. package/dist/src/cli/commands/update.js +1 -1
  125. package/dist/src/config/agent-profile.js +1 -1
  126. package/dist/src/config/index.js +5 -5
  127. package/dist/src/config/loader.js +1 -1
  128. package/dist/src/config/models-json.d.ts +325 -0
  129. package/dist/src/config/models-json.js +140 -5
  130. package/dist/src/connectors/connector-memory-sync.js +1 -1
  131. package/dist/src/connectors/health.js +1 -1
  132. package/dist/src/extensions/lockfile.js +1 -1
  133. package/dist/src/extensions/sdk/index.js +1 -1
  134. package/dist/src/gateway/agents-admin.js +2 -2
  135. package/dist/src/gateway/custom-image-providers.d.ts +89 -0
  136. package/dist/src/gateway/custom-image-providers.js +59 -0
  137. package/dist/src/gateway/file-path-classifier.js +1 -1
  138. package/dist/src/gateway/heartbeat/service.js +1 -1
  139. package/dist/src/gateway/hono/lib/config-payload.js +1 -1
  140. package/dist/src/gateway/hono/routes/mcp.js +1 -1
  141. package/dist/src/gateway/hono/routes/models.js +183 -2
  142. package/dist/src/gateway/hono/routes/update.js +2 -2
  143. package/dist/src/gateway/image-generation-setup.js +7 -1
  144. package/dist/src/gateway/index.js +1 -1
  145. package/dist/src/gateway/run-loop.js +1 -1
  146. package/dist/src/gateway/service/config-coordinator.js +3 -1
  147. package/dist/src/gateway/service.js +6 -6
  148. package/dist/src/goals/goal-workflow-judge.js +1 -1
  149. package/dist/src/heartbeat/index.js +1 -1
  150. package/dist/src/infra/gateway-processes.js +1 -1
  151. package/dist/src/infra/update-restart.js +1 -1
  152. package/dist/src/infra/update-runner.js +2 -2
  153. package/dist/src/infra/update-startup.js +1 -1
  154. package/dist/src/mcp/channel-bridge.js +1 -1
  155. package/dist/src/media-shared/http/index.d.ts +1 -1
  156. package/dist/src/media-shared/http/index.js +2 -2
  157. package/dist/src/media-shared/http/provider-http.d.ts +2 -0
  158. package/dist/src/media-shared/http/provider-http.js +43 -4
  159. package/dist/src/notes/service.js +1 -1
  160. package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
  161. package/dist/src/providers/index.js +7 -4
  162. package/dist/src/providers/model-ref.d.ts +6 -0
  163. package/dist/src/providers/model-ref.js +15 -0
  164. package/dist/src/providers/model-reference-auditor.d.ts +1 -0
  165. package/dist/src/providers/model-reference-auditor.js +23 -13
  166. package/dist/src/providers/model-registry.js +6 -3
  167. package/dist/src/tui/tui-startup-resources.js +2 -2
  168. package/dist/src/tui/tui.js +1 -1
  169. package/dist/src/workflows/service/workflow-run-service.js +1 -1
  170. package/package.json +2 -2
  171. package/dist/gateway/static/root/assets/agents-F8749KZ_.js +0 -2
  172. package/dist/gateway/static/root/assets/capabilities-settings-panel-DIwGIpuS.js +0 -2
  173. package/dist/gateway/static/root/assets/capability-presets-api-C_NVbV7o.js +0 -1
  174. package/dist/gateway/static/root/assets/capability-presets-settings-panel-DBdvIcV0.js +0 -2
  175. package/dist/gateway/static/root/assets/channels-status-swr-DZZq0upi.js +0 -1
  176. package/dist/gateway/static/root/assets/index-BXtJvaQl.css +0 -1
  177. package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-xb6mna1C.js +0 -1
  178. package/dist/gateway/static/root/assets/locale-store-C_ax27uc.js +0 -1
  179. package/dist/gateway/static/root/assets/settings-advanced-gate-DQlbm1mA.js +0 -1
  180. package/dist/gateway/static/root/assets/skill-reload-api-C8jkuLob.js +0 -1
@@ -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>;
@@ -1,6 +1,6 @@
1
1
  import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
2
- import { init_write_file_atomic, writeTextAtomicSync } from "../infra/write-file-atomic.js";
3
2
  import { init_paths, resolveModelsJsonPath } from "./paths.js";
3
+ import { init_write_file_atomic, writeTextAtomicSync } from "../infra/write-file-atomic.js";
4
4
  import { existsSync, readFileSync } from "fs";
5
5
  import { z } from "zod";
6
6
  //#region src/config/models-json.ts
@@ -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 };
@@ -3,8 +3,8 @@ import "../storage/sqlite/index.js";
3
3
  import { ComposioSessionsAdapter } from "./composio-sessions.js";
4
4
  import { scopeForComposioAction } from "./composio.js";
5
5
  import { getConnectorDefinition } from "./catalog.js";
6
- import { getWorkspacePath } from "../config/workspace-path-helpers.js";
7
6
  import { getConnectorInstance } from "./instances.js";
7
+ import { getWorkspacePath } from "../config/workspace-path-helpers.js";
8
8
  import { KnowledgeIngestionService } from "../knowledge/ingestion-service.js";
9
9
  import { ConnectedKnowledgePipeline } from "../knowledge/connected-knowledge-pipeline.js";
10
10
  import { LocalFolderKnowledgeSourceAdapter } from "../knowledge/local-folder-adapter.js";
@@ -1,7 +1,7 @@
1
1
  import { listBundleMcpServerCapabilitiesForGateway } from "../agent/mcp/bundle-mcp-materialize.js";
2
- import { getWorkspacePath } from "../config/workspace-path-helpers.js";
3
2
  import { materializeConnectorMcpServer } from "./materialize.js";
4
3
  import { getConnectorInstance } from "./instances.js";
4
+ import { getWorkspacePath } from "../config/workspace-path-helpers.js";
5
5
  //#region src/connectors/health.ts
6
6
  function classifyConnectorHealthError(error) {
7
7
  const message = error instanceof Error ? error.message : String(error);
@@ -1,7 +1,7 @@
1
1
  import { createLogger } from "../utils/logger/index.js";
2
2
  import { init_logger } from "../utils/logger.js";
3
- import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
4
3
  import { init_paths, resolveExtensionsDir, resolveExtensionsLockPath } from "../config/paths.js";
4
+ import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
5
5
  import { dirname, join } from "path";
6
6
  import { existsSync } from "fs";
7
7
  import { mkdir, readFile } from "fs/promises";
@@ -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
@@ -1,7 +1,7 @@
1
- import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
2
1
  import { init_agent_scope, listAgentEntries, normalizeAgentId, resolveAgentDir, resolveAgentProfileDir, resolveAgentWorkspaceDir, resolveDefaultAgentId, resolveUserPath, validateAgentIdForNewAgent } from "../agent/agent-scope.js";
3
- import { WORKSPACE_FILES, init_paths, resolveUserProfilePath } from "../config/paths.js";
2
+ import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
4
3
  import { resolveEffectiveAgentProfile } from "../config/agent-profile.js";
4
+ import { WORKSPACE_FILES, init_paths, resolveUserProfilePath } from "../config/paths.js";
5
5
  import { AGENT_PROFILE_MARKDOWN_SYSTEM_FILES, REQUIRED_AGENT_PROFILE_MARKDOWN_FILE_SET } from "../agent/context/workspace.js";
6
6
  import { isPathUnderWorkspace, resolveWorkspaceSafePath } from "./workspace-editor-path.js";
7
7
  import { applyAgentConfig, findAgentEntryIndex, getAgentDeleteBlocker, pruneAgentConfig, removeAgentDirsFromDisk } from "../commands/agents.config.js";