@xopcai/xopc 0.0.364 → 0.0.367
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-ext/dist/sidepanel.js +16 -4
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-GvR2gZ0T.js → activity-store-Cuf3JFFJ.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-7Ct-ZlfL.js → agent-avatar-dicebear-DyATPNTe.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-gT9_j4tr.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-CLXCJ6JN.js +1 -0
- package/dist/gateway/static/root/assets/agents-BAUfOMsq.js +66 -0
- package/dist/gateway/static/root/assets/{agents-admin-api-BkXb7VEZ.js → agents-admin-api-D842OcNo.js} +1 -1
- package/dist/gateway/static/root/assets/app-link-4gpFbdsr.js +1 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-CjfsIn9A.js → app-management-settings-panel-CoIFxQKH.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-qqHZ15GU.js → appearance-settings-DQr0o6Lm.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-Ba2VkQk6.js → apps-page-CltMV4Xp.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-CKe3qAaL.js → archive-plugin-DT8Nio-r.js} +1 -1
- package/dist/gateway/static/root/assets/automation-display-DCkjVzA0.js +2 -0
- package/dist/gateway/static/root/assets/{automations-page-Bt8Q58ut.js → automations-page-BIfWS_3Y.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-BCGPjsdU.js +6 -0
- package/dist/gateway/static/root/assets/binary-plugins-7qs3qcW9.js +2 -0
- package/dist/gateway/static/root/assets/{block-editor-ClRFbHP7.js → block-editor-BFPUlxJ6.js} +28 -28
- package/dist/gateway/static/root/assets/{browser-automation-inputs-5B3qAdmb.js → browser-automation-inputs-BUAIKIX0.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-BjMub7JM.js → browser-automations-page-CSwu1U1F.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-C1ReMNqX.js +3 -0
- package/dist/gateway/static/root/assets/capabilities-BzWFO_x_.js +1 -0
- package/dist/gateway/static/root/assets/{capabilities-BKu9BqPe.js → capabilities-K0Zb_lH0.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-BdTSqloI.js +2 -0
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-gZ8auLwa.js → capabilities-settings-panel-BUblBMZC.js} +4 -4
- package/dist/gateway/static/root/assets/{capability-header-actions-L1NvoOUG.js → capability-header-actions-AMn_vTNv.js} +1 -1
- package/dist/gateway/static/root/assets/channels-CXCf5qO6.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-DsCpKPBe.js → chat-terminal-dock-C7nAROhF.js} +2 -2
- package/dist/gateway/static/root/assets/chevron-left-DqFhpbvK.js +1 -0
- package/dist/gateway/static/root/assets/computer-settings-page-B5SuSZ3G.js +1 -0
- package/dist/gateway/static/root/assets/{connector-service-page-mtH9mEBf.js → connector-service-page-CTx1B8wx.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-DfnK1crf.js +2 -0
- package/dist/gateway/static/root/assets/date-formatters-CUZAyDEg.js +1 -0
- package/dist/gateway/static/root/assets/date-picker-Cx_xIKvN.js +1 -0
- package/dist/gateway/static/root/assets/{dependency-picker-B_fPQBTM.js → dependency-picker-DYm96PDu.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-CJrO9Vd_.js → desktop-pet-D90OzgeR.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DYAfri9w.js → desktop-pet-settings-CmdCecjm.js} +1 -1
- package/dist/gateway/static/root/assets/{device-pairing-wizard-CqRys2R8.js → device-pairing-wizard-s2ogSa4l.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-D7_qSxNZ.js → directory-picker-path-field-DZpaoeNa.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-BGyJpRv4.js → extension-debug-page-Bv6QE8kC.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-D1zBmd8F.js → extension-page-CEsq71Cm.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-F9JzOWZ3.js → extension-provider-CX-sK0Tw.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CTR8AjCG.js → extension-settings-page-UyOHF39P.js} +1 -1
- package/dist/gateway/static/root/assets/{fallback-models-Chhv4Nfv.js → fallback-models-CKv_Wqg8.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-CoRoOG1l.js → gateway-config-swr-Cjnkle5J.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-D0ygm6bc.js → gateway-realtime-DCCLdyQD.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-C_Th8kGg.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-CZ73IpbP.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-FDS6S6qa.js → gateway-startup-retry-CXKmdVzN.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-BQWq4kYi.js +2 -0
- package/dist/gateway/static/root/assets/{image-generation-api-BPd76jW5.js → image-generation-api-NLHzm4Nc.js} +1 -1
- package/dist/gateway/static/root/assets/{imports-page-9EnECtcl.js → imports-page-C7qvlBTQ.js} +1 -1
- package/dist/gateway/static/root/assets/index-BQgqzhQj.js +106 -0
- package/dist/gateway/static/root/assets/index-COB4QIJp.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-MC7mG2h2.js → keyboard-shortcuts-settings-pkgFWJb-.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-dMDhZXAi.js +1 -0
- package/dist/gateway/static/root/assets/{local-apps-page-c3HncHZ3.js → local-apps-page-TpUAfOn2.js} +1 -1
- package/dist/gateway/static/root/assets/local-session-drafts-Cvv7I0fw.js +1 -0
- package/dist/gateway/static/root/assets/{locale-store-DId6-v2R.js → locale-store-C8TMD2gn.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-B-Y9oZLh.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-B2lzsw6X.js +1 -0
- package/dist/gateway/static/root/assets/markdown-view-Dse7rkio.js +201 -0
- package/dist/gateway/static/root/assets/{media-plugins-XLewwq2q.js → media-plugins-BZrnzaBM.js} +1 -1
- package/dist/gateway/static/root/assets/messages-Dy26npMy.js +3 -0
- package/dist/gateway/static/root/assets/{models-hub-cache-B9SKjidc.js → models-hub-cache-B1C86nRp.js} +1 -1
- package/dist/gateway/static/root/assets/note-detail-panel-DL__qP6U.js +5 -0
- package/dist/gateway/static/root/assets/{notes-api-Byt65v3r.js → notes-api-DKiVeQKG.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-DTBbg9Hs.js +8 -0
- package/dist/gateway/static/root/assets/{oauth-api-BYsCbyGZ.js → oauth-api-BwpzpRwC.js} +1 -1
- package/dist/gateway/static/root/assets/open-route-MyZ2sB9C.js +1 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-RBp1QK0F.js → page-context-capture-button-Cxzd4QPB.js} +1 -1
- package/dist/gateway/static/root/assets/personal-page-CzaTnHeD.js +1 -0
- package/dist/gateway/static/root/assets/product-open-page-D4hoEWiu.js +1 -0
- package/dist/gateway/static/root/assets/product-preview-content-aR38El2E.js +1 -0
- package/dist/gateway/static/root/assets/project-detail-page-D20QH4YB.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Bf3BIcT6.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-7F2WNEZC.js → registry-api-AdnxowbH.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CKxqncqW.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-B0c120iI.js → runtime-tools-settings-panel-CBN3raz1.js} +1 -1
- package/dist/gateway/static/root/assets/scenes-page-Cv_5ozfX.js +2 -0
- package/dist/gateway/static/root/assets/{schema-form-DQpQc9tH.js → schema-form-CxrMGsT9.js} +1 -1
- package/dist/gateway/static/root/assets/secret-input-D93UrW4C.js +1 -0
- package/dist/gateway/static/root/assets/{send-session-input-D1oc6BC6.js → send-session-input-CgOzhDZ0.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-N3N37MrR.js → session-api-_HIN8or3.js} +1 -1
- package/dist/gateway/static/root/assets/session-manager-CzCto5zT.js +16 -0
- package/dist/gateway/static/root/assets/sessions-page-DZcu6NLJ.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DazqeDQ7.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-GgBEp6O7.js → settings-page-D8Q3H3-o.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DvLMMiuS.js +1 -0
- package/dist/gateway/static/root/assets/{share-link-dialog-TBBGJPfT.js → share-link-dialog-Dg5os066.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DyRLPsPv.js → share-preview-page-DMvohAyr.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-DU0fHP2G.js → shares-api-C96IO4qJ.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-DJ1ME-XM.js → shares-settings-CsDATuCw.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-api-1Puv6wOz.js → skill-api-C10ML0CH.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-ClyFqHk7.js → skill-reload-api-DNbJzSfB.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-DObMKvA6.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel--yV67a8L.js → system-settings-panel-Bn3khdzb.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-BR2L1L8l.js +2 -0
- package/dist/gateway/static/root/assets/task-expandable-content-DL2Q2gre.js +1 -0
- package/dist/gateway/static/root/assets/{tasks-CH6KoBeY.js → tasks-DwKXgZ-I.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-OhcbFEUR.js → theme-store-DQ6KJa4l.js} +1 -1
- package/dist/gateway/static/root/assets/tracing-settings-page-Ed8_GYUT.js +1 -0
- package/dist/gateway/static/root/assets/{tunnel-api-COLdiP_E.js → tunnel-api-D3X8jDwo.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-CtM5IfrL.js → usage-page-BqzRyyb9.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-veoM0dHn.js → use-autosave-CRFefpzO.js} +1 -1
- package/dist/gateway/static/root/assets/use-composer-attachments-OLrvSjn5.js +2 -0
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-Bope6MW6.js → use-file-preview-expanded-CJvzfQvw.js} +2 -2
- package/dist/gateway/static/root/assets/user-model-page-CG6wqIKP.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-CwD6a3KQ.js → voice-api-key-field-R9zNWYR_.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-Daexehmc.js → voice-config-api-DLudE9Rc.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-C9u7tuEc.js → work-discovery-overlay-DVmQrolV.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BMOBbf33.js → workflow-run-setup-panel-DEkmuD3T.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-pqCB3sh4.js +6 -0
- package/dist/gateway/static/root/assets/workspace-api-CdVUhyPo.js +2 -0
- package/dist/gateway/static/root/index.html +33 -31
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/automations.js +1 -0
- package/dist/packages/gateway-contract/src/home.js +14 -0
- package/dist/packages/gateway-contract/src/index.js +2 -0
- package/dist/packages/gateway-contract/src/notifications.js +2 -1
- package/dist/packages/gateway-contract/src/personal-proactivity.js +139 -0
- package/dist/packages/gateway-contract/src/session-input-command.js +1 -0
- package/dist/packages/image-providers/src/catalog.js +373 -0
- package/dist/packages/image-providers/src/execute.js +372 -0
- package/dist/packages/image-providers/src/http.js +94 -0
- package/dist/packages/image-providers/src/index.js +5 -0
- package/dist/packages/image-providers/src/types.d.ts +95 -0
- package/dist/packages/image-providers/src/validation.js +52 -0
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +35 -3
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/commands/command-registry.js +1 -1
- package/dist/src/agent/context/execution-context.js +1 -1
- package/dist/src/agent/context/project-context.js +4 -4
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/failover-error.d.ts +1 -1
- package/dist/src/agent/failover-error.js +7 -0
- package/dist/src/agent/image/generation/native-provider.d.ts +2 -0
- package/dist/src/agent/image/generation/native-provider.js +118 -0
- package/dist/src/agent/image/generation/openai-images-provider.d.ts +1 -1
- package/dist/src/agent/image/generation/openai-images-provider.js +48 -32
- package/dist/src/agent/image/generation/provider-registry.js +4 -13
- package/dist/src/agent/image/generation/providers/xopc-cloud.js +5 -34
- package/dist/src/agent/image/generation/runtime-types.d.ts +2 -4
- package/dist/src/agent/image/generation/runtime.js +28 -23
- package/dist/src/agent/image/generation/types.d.ts +3 -50
- package/dist/src/agent/image/generation/validation.d.ts +6 -0
- package/dist/src/agent/image/generation/validation.js +16 -0
- package/dist/src/agent/inbound/attachment-pipeline.js +1 -1
- package/dist/src/agent/prompt/voice-presentation.d.ts +1 -1
- package/dist/src/agent/prompt/voice-presentation.js +1 -1
- package/dist/src/agent/service/direct-turn-helpers.js +17 -1
- package/dist/src/agent/service.js +3 -3
- package/dist/src/agent/skills/index.js +1 -1
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/tools/delegation-parent-policy.js +2 -0
- package/dist/src/agent/tools/delegation-policy.js +2 -0
- package/dist/src/agent/tools/factory.d.ts +2 -0
- package/dist/src/agent/tools/factory.js +31 -4
- package/dist/src/agent/tools/image-generate-tool.js +5 -19
- package/dist/src/agent/tools/index.d.ts +2 -2
- package/dist/src/agent/tools/index.js +3 -3
- package/dist/src/agent/tools/knowledge-memory-tool.d.ts +2 -0
- package/dist/src/agent/tools/knowledge-memory-tool.js +60 -1
- package/dist/src/agent/tools/personal-attention-tool.d.ts +21 -0
- package/dist/src/agent/tools/personal-attention-tool.js +191 -0
- package/dist/src/agent/tools/personal-task-tool.d.ts +12 -8
- package/dist/src/agent/tools/personal-task-tool.js +35 -41
- package/dist/src/agent/tools/user-context-tool.d.ts +2 -0
- package/dist/src/agent/tools/user-context-tool.js +61 -2
- package/dist/src/agent/tools/xopc-use-tool.js +2 -2
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/agent-catalog/migrations/legacy-config-cutover.js +1 -1
- package/dist/src/agent-catalog/repository.d.ts +1 -0
- package/dist/src/agent-catalog/repository.js +4 -1
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/capabilities/write.d.ts +2 -0
- package/dist/src/automations/domain/types.d.ts +1 -1
- package/dist/src/automations/domain/validation.d.ts +4 -0
- package/dist/src/automations/domain/validation.js +1 -0
- package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/chat-commands/personal-command-policy.d.ts +2 -0
- package/dist/src/chat-commands/personal-command-policy.js +9 -0
- package/dist/src/chat-commands/registry.js +6 -0
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/models.js +4 -9
- package/dist/src/cli/commands/onboard/model.js +2 -2
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/models-json.d.ts +170 -0
- package/dist/src/config/models-json.js +23 -8
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/files/file-service.d.ts +6 -0
- package/dist/src/files/file-service.js +38 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/custom-image-providers.d.ts +34 -0
- package/dist/src/gateway/file-path-classifier.js +12 -3
- package/dist/src/gateway/hono/routes/agents.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/files.js +13 -2
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/observability.js +8 -0
- package/dist/src/gateway/hono/routes/personal-agent.js +41 -0
- package/dist/src/gateway/hono/routes/projects.js +3 -3
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -0
- package/dist/src/gateway/hono/routes/session-input-handler.js +9 -1
- package/dist/src/gateway/hono/routes/sessions.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/hono/routes/voice.js +1 -1
- package/dist/src/gateway/image-generation-setup.js +1 -1
- package/dist/src/gateway/service/agent-runner.d.ts +1 -0
- package/dist/src/gateway/service/agent-runner.js +12 -1
- package/dist/src/gateway/service/run-gateway-agent.d.ts +1 -0
- package/dist/src/gateway/service/run-gateway-agent.js +15 -0
- package/dist/src/gateway/service/session-command-service.js +5 -3
- package/dist/src/gateway/service/session-input-coordinator.d.ts +12 -0
- package/dist/src/gateway/service/session-input-coordinator.js +63 -5
- package/dist/src/gateway/service/sessions-api.js +1 -1
- package/dist/src/gateway/service.d.ts +3 -0
- package/dist/src/gateway/service.js +54 -9
- package/dist/src/gateway/session-context-summary.js +1 -1
- package/dist/src/gateway/session-reset-service.js +1 -1
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/local-apps/service.js +2 -2
- package/dist/src/notifications/planner.js +32 -0
- package/dist/src/notifications/service.d.ts +2 -0
- package/dist/src/personal-agent/capability-service.js +3 -2
- package/dist/src/personal-agent/communication.d.ts +3 -2
- package/dist/src/personal-agent/communication.js +4 -3
- package/dist/src/personal-agent/conversation-state.d.ts +5 -0
- package/dist/src/personal-agent/conversation-state.js +17 -0
- package/dist/src/personal-agent/notifications.d.ts +4 -0
- package/dist/src/personal-agent/notifications.js +40 -0
- package/dist/src/personal-agent/persona.d.ts +6 -0
- package/dist/src/personal-agent/persona.js +16 -0
- package/dist/src/personal-agent/policy.d.ts +3 -1
- package/dist/src/personal-agent/policy.js +28 -6
- package/dist/src/personal-agent/proactivity/automation.d.ts +3 -0
- package/dist/src/personal-agent/proactivity/automation.js +41 -0
- package/dist/src/personal-agent/proactivity/follow-up-request.d.ts +5 -0
- package/dist/src/personal-agent/proactivity/follow-up-request.js +44 -0
- package/dist/src/personal-agent/proactivity/repository.d.ts +128 -0
- package/dist/src/personal-agent/proactivity/repository.js +403 -0
- package/dist/src/personal-agent/proactivity/routes.d.ts +3 -0
- package/dist/src/personal-agent/proactivity/routes.js +182 -0
- package/dist/src/personal-agent/proactivity/service.d.ts +32 -0
- package/dist/src/personal-agent/proactivity/service.js +496 -0
- package/dist/src/personal-agent/prompt-context.d.ts +10 -0
- package/dist/src/personal-agent/prompt-context.js +119 -0
- package/dist/src/personal-agent/prompts.d.ts +7 -0
- package/dist/src/personal-agent/prompts.js +135 -0
- package/dist/src/personal-agent/reply-composer.d.ts +1 -1
- package/dist/src/personal-agent/reply-composer.js +41 -13
- package/dist/src/personal-agent/repository.d.ts +1 -1
- package/dist/src/personal-agent/repository.js +1 -1
- package/dist/src/personal-agent/request-delivery.js +1 -1
- package/dist/src/personal-agent/request-service.js +2 -2
- package/dist/src/personal-agent/service.d.ts +1 -2
- package/dist/src/personal-agent/service.js +5 -93
- package/dist/src/personal-agent/specialist-capabilities.d.ts +9 -0
- package/dist/src/personal-agent/specialist-capabilities.js +37 -0
- package/dist/src/personal-agent/unread.d.ts +10 -0
- package/dist/src/personal-agent/unread.js +43 -0
- package/dist/src/providers/env-keys.js +6 -0
- package/dist/src/providers/model-catalog-persistence.js +3 -22
- package/dist/src/providers/model-catalog-store.js +1 -8
- package/dist/src/providers/model-catalog-types.d.ts +1 -9
- package/dist/src/providers/xopc-cloud-model-source.js +4 -25
- package/dist/src/session/client-history.d.ts +2 -0
- package/dist/src/session/client-history.js +26 -0
- package/dist/src/session/init-session-turn.js +10 -0
- package/dist/src/session/session-context-for-llm.js +28 -0
- package/dist/src/session/store.js +1 -1
- package/dist/src/storage/sqlite/migrations/235_personal_conversation_priority.sql +3 -0
- package/dist/src/storage/sqlite/migrations/236_personal_proactivity.sql +53 -0
- package/dist/src/storage/sqlite/migrations/237_personal_strategy_versions.sql +18 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-input-repository.d.ts +2 -0
- package/dist/src/storage/sqlite/session-input-repository.js +18 -5
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/execution-context.js +1 -1
- package/dist/src/tasks/home-query-service.js +27 -1
- package/dist/src/tasks/task-main-update-decision-service.js +1 -1
- package/dist/src/tasks/task-result-delivery-service.js +1 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/voice/platform-catalog.d.ts +1 -9
- package/dist/src/voice/realtime/agentEngine.js +32 -7
- package/dist/src/voice/realtime/engine.d.ts +1 -0
- package/dist/src/voice/realtime/omniEngine.d.ts +1 -0
- package/dist/src/voice/realtime/omniEngine.js +10 -0
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/dist/src/voice/realtime/runtime.d.ts +1 -0
- package/dist/src/voice/realtime/runtime.js +5 -0
- package/dist/src/voice/realtime/runtime.types.d.ts +2 -0
- package/dist/src/work-discovery/service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +4 -3
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-wYj-iyqv.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-C9HYMhnJ.js +0 -1
- package/dist/gateway/static/root/assets/agents-hPkFQ81z.js +0 -66
- package/dist/gateway/static/root/assets/app-link-DRL0YnPs.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-Ch0ViAJW.js +0 -7
- package/dist/gateway/static/root/assets/binary-plugins-J51oS7-D.js +0 -2
- package/dist/gateway/static/root/assets/browser-settings-page-CYrPA-Fp.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-CT_ZW9fT.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-page-dW6FXtOy.js +0 -2
- package/dist/gateway/static/root/assets/channels-Dx5T2G73.js +0 -1
- package/dist/gateway/static/root/assets/computer-settings-page-6FWwxYLe.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DgDLaws0.js +0 -2
- package/dist/gateway/static/root/assets/date-picker-BDcwEaIx.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-DBvCRclh.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BVfz4Tla.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BF_9C9yW.js +0 -1
- package/dist/gateway/static/root/assets/index-BpXej9jJ.js +0 -106
- package/dist/gateway/static/root/assets/index-CbJNcWAn.css +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-CytNu0-_.js +0 -1
- package/dist/gateway/static/root/assets/local-session-drafts-gbemPamv.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-D4aXtitd.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-CRzWi_iJ.js +0 -1
- package/dist/gateway/static/root/assets/markdown-view-DQZ51j9e.js +0 -201
- package/dist/gateway/static/root/assets/messages-BHvpZNe9.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-BgbByI-4.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-R2BX5XCE.js +0 -8
- package/dist/gateway/static/root/assets/personal-page-F0jTBWva.js +0 -1
- package/dist/gateway/static/root/assets/product-open-page-BtDK68qb.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-DmQEm0yH.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CrLQvkHX.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-C25_hQAd.js +0 -1
- package/dist/gateway/static/root/assets/scenes-page-DM64yMnx.js +0 -2
- package/dist/gateway/static/root/assets/secret-input-DPl3VYM8.js +0 -1
- package/dist/gateway/static/root/assets/session-manager-CMGUwtbN.js +0 -16
- package/dist/gateway/static/root/assets/sessions-page-DvDO8LtA.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BNhgbmcX.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-10bMi6yL.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-D52pEr5x.js +0 -2
- package/dist/gateway/static/root/assets/task-detail-page-D-tcS2bS.js +0 -2
- package/dist/gateway/static/root/assets/tracing-settings-page-DoBJ0TYY.js +0 -1
- package/dist/gateway/static/root/assets/use-composer-attachments-DB0bBGzZ.js +0 -2
- package/dist/gateway/static/root/assets/user-model-page-CSh61kZ5.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-BrD9vXqO.js +0 -6
- package/dist/gateway/static/root/assets/workspace-api-Cs4sjV2A.js +0 -2
- package/dist/src/agent/image/generation/normalization.d.ts +0 -38
- package/dist/src/agent/image/generation/normalization.js +0 -181
- package/dist/src/agent/image/generation/providers/dashscope.d.ts +0 -35
- package/dist/src/agent/image/generation/providers/dashscope.js +0 -257
- package/dist/src/agent/image/generation/providers/fal.d.ts +0 -15
- package/dist/src/agent/image/generation/providers/fal.js +0 -323
- package/dist/src/agent/image/generation/providers/google.d.ts +0 -16
- package/dist/src/agent/image/generation/providers/google.js +0 -244
- package/dist/src/agent/image/generation/providers/minimax.d.ts +0 -23
- package/dist/src/agent/image/generation/providers/minimax.js +0 -215
- package/dist/src/agent/image/generation/providers/openai.d.ts +0 -5
- package/dist/src/agent/image/generation/providers/openai.js +0 -134
|
@@ -8,7 +8,6 @@ import { getSessionMetadata } from "../storage/sqlite/session-read-repository.js
|
|
|
8
8
|
import { init_sqlite } from "../storage/sqlite/index.js";
|
|
9
9
|
import { expandWorkspacePathString, init_workspace_path } from "../config/workspace-path.js";
|
|
10
10
|
import { init_agent_scope, listAgentEntries, resolveAgentProfileDir } from "./agent-scope.js";
|
|
11
|
-
import { extractTextContent } from "./context/workspace.js";
|
|
12
11
|
import { init_paths, resolveBundledSkillsDir } from "../config/paths.js";
|
|
13
12
|
import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
14
13
|
import { traceTools } from "../observability/runtime.js";
|
|
@@ -19,6 +18,10 @@ import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync
|
|
|
19
18
|
import { getApiKeySync, getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
|
|
20
19
|
import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
|
|
21
20
|
import { continuesAfterTool, trackAiUsageStream } from "../usage/recorder.js";
|
|
21
|
+
import { extractTextContent } from "./context/workspace.js";
|
|
22
|
+
import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
|
|
23
|
+
import { isPersonalConversation } from "../personal-agent/repository.js";
|
|
24
|
+
import { PersonalPromptContext } from "../personal-agent/prompt-context.js";
|
|
22
25
|
import { buildExecutionScopeContextForPrompt } from "./context/execution-scope.js";
|
|
23
26
|
import { clearBootstrapSnapshot } from "./bootstrap/bootstrap-cache.js";
|
|
24
27
|
import { resolveBootstrapContextSync } from "./bootstrap/bootstrap-files.js";
|
|
@@ -35,7 +38,6 @@ import { resolveWorkspaceSkillsDir, resolveWorkspaceSkillsLockPath } from "./ski
|
|
|
35
38
|
import { replaceAgentSystemPrompt } from "./prompt/agent-system-prompt.js";
|
|
36
39
|
import { evictAllEmbeddedSessionRunners, evictEmbeddedSessionRunner } from "./embedded/session-runner.js";
|
|
37
40
|
import { createAgentTurnPolicy } from "./orchestration/agent-turn-policy.js";
|
|
38
|
-
import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
|
|
39
41
|
import { createAgentCapabilitySessionState, resolveAgentCapabilityCatalog } from "./capabilities/registry.js";
|
|
40
42
|
import "./capabilities/index.js";
|
|
41
43
|
import { sortToolsForPromptCache } from "./tools/cache-stability.js";
|
|
@@ -258,6 +260,7 @@ var AgentManager = class {
|
|
|
258
260
|
getPrimaryModel: () => this.resolveModelStringToModel(this.pickDefaultModelRef()),
|
|
259
261
|
getMemoryManager: () => this.getCurrentWorkspaceRuntime().memoryManager,
|
|
260
262
|
getSkillManager: () => this.getCurrentWorkspaceRuntime().skillManager,
|
|
263
|
+
getAgentSkillAvailability: (agentId) => this.getAgentSkillAvailability(agentId),
|
|
261
264
|
getSessionStore: this.config.getSessionStore,
|
|
262
265
|
gatewayClarify: this.config.gatewayClarify,
|
|
263
266
|
getAutomationService: this.config.getAutomationService,
|
|
@@ -393,7 +396,7 @@ var AgentManager = class {
|
|
|
393
396
|
prepareSkillTurn(conversationId, text) {
|
|
394
397
|
this.getOrCreateAgent(conversationId);
|
|
395
398
|
const inst = this.agents.get(conversationId);
|
|
396
|
-
if (!text.includes("/skill:")) return {
|
|
399
|
+
if (isPersonalConversation(conversationId) || !text.includes("/skill:")) return {
|
|
397
400
|
text,
|
|
398
401
|
activatedCapabilityNames: this.activeCapabilityNames(inst)
|
|
399
402
|
};
|
|
@@ -969,7 +972,9 @@ var AgentManager = class {
|
|
|
969
972
|
composeDynamicProjectContext(...sections) {
|
|
970
973
|
return sections.map((section) => section?.trim()).filter((section) => Boolean(section)).join("\n\n") || void 0;
|
|
971
974
|
}
|
|
975
|
+
personalPromptContext = new PersonalPromptContext();
|
|
972
976
|
buildExecutionScopeContext(conversationId) {
|
|
977
|
+
if (isXopcDatabaseOpen() && isPersonalConversation(conversationId)) return this.personalPromptContext.build(this.config.config, conversationId);
|
|
973
978
|
const access = resolveUserContextSessionAccess(this.config.config, conversationId);
|
|
974
979
|
return buildExecutionScopeContextForPrompt(conversationId, {
|
|
975
980
|
includeKnowledge: access.knowledge,
|
|
@@ -1133,6 +1138,33 @@ var AgentManager = class {
|
|
|
1133
1138
|
}
|
|
1134
1139
|
resolveToolPolicy(profile, toolName, args) {
|
|
1135
1140
|
const gatewayPolicy = profile.config.tools[toolName];
|
|
1141
|
+
if (toolName === "user_context_read" || toolName === "knowledge_read") {
|
|
1142
|
+
const command = args?.command;
|
|
1143
|
+
if (command === "search" || command === "get") {
|
|
1144
|
+
const legacyId = `${toolName.slice(0, -5)}_${command}`;
|
|
1145
|
+
const legacyPolicy = profile.config.tools[legacyId];
|
|
1146
|
+
const policies = [gatewayPolicy && {
|
|
1147
|
+
id: toolName,
|
|
1148
|
+
...gatewayPolicy
|
|
1149
|
+
}, legacyPolicy && {
|
|
1150
|
+
id: legacyId,
|
|
1151
|
+
...legacyPolicy
|
|
1152
|
+
}].filter((policy) => Boolean(policy));
|
|
1153
|
+
const rank = {
|
|
1154
|
+
allow: 0,
|
|
1155
|
+
ask: 1,
|
|
1156
|
+
deny: 2
|
|
1157
|
+
};
|
|
1158
|
+
policies.sort((a, b) => rank[b.mode] - rank[a.mode]);
|
|
1159
|
+
const selected = policies[0];
|
|
1160
|
+
if (!selected) return void 0;
|
|
1161
|
+
const limits = policies.flatMap((policy) => policy.maxCallsPerTurn ? [policy.maxCallsPerTurn] : []);
|
|
1162
|
+
return {
|
|
1163
|
+
...selected,
|
|
1164
|
+
...limits.length ? { maxCallsPerTurn: Math.min(...limits) } : {}
|
|
1165
|
+
};
|
|
1166
|
+
}
|
|
1167
|
+
}
|
|
1136
1168
|
if (gatewayPolicy && gatewayPolicy.mode !== "allow") return {
|
|
1137
1169
|
id: toolName,
|
|
1138
1170
|
...gatewayPolicy
|
|
@@ -4,12 +4,12 @@ import { finishContextExtractionRun } from "../../storage/sqlite/context-extract
|
|
|
4
4
|
import { getSessionMetadata } from "../../storage/sqlite/session-read-repository.js";
|
|
5
5
|
import { loadCompactionSourceSnapshot } from "../../storage/sqlite/transcript-repository.js";
|
|
6
6
|
import { init_sqlite } from "../../storage/sqlite/index.js";
|
|
7
|
-
import { extractTextContent } from "../context/workspace.js";
|
|
8
7
|
import { extractProfileAgentId } from "../../config/agent-profile.js";
|
|
9
8
|
import { init_sync_provider_auth, resolveProviderApiKeySync } from "../../auth/sync-provider-auth.js";
|
|
10
9
|
import { getApiKeySync, init_providers, resolveModel } from "../../providers/index.js";
|
|
11
10
|
import { createExtensionAwareStreamFn } from "../../providers/extension-stream-bridge.js";
|
|
12
11
|
import { trackAiUsageStream } from "../../usage/recorder.js";
|
|
12
|
+
import { extractTextContent } from "../context/workspace.js";
|
|
13
13
|
import { getAssertionSlot, listUserAssertions } from "../../user-model/repository.js";
|
|
14
14
|
import { readAgentMessageContent } from "../memory/agent-message-access.js";
|
|
15
15
|
import { isAssistantTurnAborted, isAssistantTurnFailed } from "../orchestration/llm-turn-retry.js";
|
|
@@ -3,8 +3,8 @@ import { redactSensitiveOutput } from "../../utils/logger/redact.js";
|
|
|
3
3
|
import { init_logger } from "../../utils/logger.js";
|
|
4
4
|
import { init_global_singleton, resolveGlobalSingleton } from "../../utils/global-singleton.js";
|
|
5
5
|
import { init_paths } from "../../config/paths.js";
|
|
6
|
-
import { spawnProcess } from "../../process/run-process.js";
|
|
7
6
|
import { DurableState } from "../../storage/sqlite/durable-state.js";
|
|
7
|
+
import { spawnProcess } from "../../process/run-process.js";
|
|
8
8
|
import { isolatedCommand, removeCommandContainer } from "./command-isolation.js";
|
|
9
9
|
import { readWorkspaceRevision } from "../coding/workspace-revision.js";
|
|
10
10
|
import { join } from "node:path";
|
|
@@ -2,10 +2,10 @@ import { getSqliteDatabase, init_transaction } from "../../storage/sqlite/transa
|
|
|
2
2
|
import { init_collaboration_rule_repository, listCollaborationRules } from "../../storage/sqlite/collaboration-rule-repository.js";
|
|
3
3
|
import { searchKnowledgeItems } from "../../knowledge-memory/repository.js";
|
|
4
4
|
import "../../knowledge-memory/index.js";
|
|
5
|
-
import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
|
|
6
5
|
import { listUserAssertions } from "../../user-model/repository.js";
|
|
7
6
|
import { calculateExecutionValue } from "../../user-model/importance.js";
|
|
8
7
|
import { canUseAssertion } from "../../user-model/usage-policy.js";
|
|
8
|
+
import { retrievalLexicalSimilarity } from "../../retrieval/textFeatures.js";
|
|
9
9
|
import { getExecutionContextFeedbackScores } from "./audit.js";
|
|
10
10
|
import { buildUserContextBlock } from "../memory/context-fence.js";
|
|
11
11
|
import { randomUUID } from "node:crypto";
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { TaskRepository, init_task_repository } from "../../tasks/task-repository.js";
|
|
2
|
+
import { knowledgeItemAllowed, listKnowledgeItems, searchKnowledgeItems } from "../../knowledge-memory/repository.js";
|
|
3
|
+
import "../../knowledge-memory/index.js";
|
|
4
|
+
import { ProjectStore } from "../../projects/project-store.js";
|
|
5
|
+
import { getProjectForSession, getProjectWorkspacePathForSession } from "../../projects/workspace.js";
|
|
2
6
|
import { sanitizeForPromptLiteral } from "../prompt/sanitize-for-prompt.js";
|
|
3
7
|
import { TaskReadModelProjector } from "../../tasks/task-read-model-projector.js";
|
|
4
8
|
import { LocalAppStore } from "../../local-apps/store.js";
|
|
5
|
-
import { ProjectStore } from "../../projects/project-store.js";
|
|
6
|
-
import { getProjectForSession, getProjectWorkspacePathForSession } from "../../projects/workspace.js";
|
|
7
|
-
import { knowledgeItemAllowed, listKnowledgeItems, searchKnowledgeItems } from "../../knowledge-memory/repository.js";
|
|
8
|
-
import "../../knowledge-memory/index.js";
|
|
9
9
|
//#region src/agent/context/project-context.ts
|
|
10
10
|
init_task_repository();
|
|
11
11
|
const MAX_TEXT = 1200;
|
|
@@ -6,9 +6,9 @@ import { setTraceIdentity, startObservation, traceOperation, traceRun } from "..
|
|
|
6
6
|
import { resolveEffectiveAgentProfileForSession } from "../../config/agent-profile.js";
|
|
7
7
|
import { init_providers, resolveModel } from "../../providers/index.js";
|
|
8
8
|
import { appendDynamicPromptSection } from "../prompt/cache-boundary.js";
|
|
9
|
+
import { isPersonalConversation } from "../../personal-agent/repository.js";
|
|
9
10
|
import { runWithEmbeddedExecutionSession } from "./execution-context.js";
|
|
10
11
|
import { resolveAgentTurnTimeoutMs } from "../orchestration/run-agent-turn-with-timeout.js";
|
|
11
|
-
import { isPersonalConversation } from "../../personal-agent/repository.js";
|
|
12
12
|
import { resolvePromptCachePolicy } from "../../providers/prompt-cache-plan.js";
|
|
13
13
|
import { evaluateContextBudget } from "../memory/context-budget.js";
|
|
14
14
|
import { assessContext, recoverContext as recoverContext$1 } from "../memory/context-recovery.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
|
|
2
|
-
import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
|
|
3
1
|
import { COMPUTER_CONTROL_TOOL, init_src } from "../../../packages/computer-control-contract/src/index.js";
|
|
4
2
|
import { BROWSER_CONTROL_ENDPOINT_TOOL_NAME } from "../../../packages/browser-control-contract/src/index.js";
|
|
3
|
+
import { executeExternalOperation } from "../../capabilities/runtime/external-operations.js";
|
|
4
|
+
import { canonicalCapabilityJson } from "../../capabilities/runtime/dispatcher.js";
|
|
5
5
|
import { externalToolRef, parseExternalToolRef } from "./refs.js";
|
|
6
6
|
import { createHash } from "node:crypto";
|
|
7
7
|
//#region src/agent/external-tools/endpoint-provider.ts
|
|
@@ -19,7 +19,7 @@ export type FailoverReason = 'timeout' | 'aborted' | 'auth' | 'rate_limit' | 'ba
|
|
|
19
19
|
export interface FallbackAttempt {
|
|
20
20
|
/** Provider id, e.g. "openai". */
|
|
21
21
|
provider: string;
|
|
22
|
-
/** Model id, e.g. "gpt-image-2". */
|
|
22
|
+
/** Model id, e.g. "gpt-image-2.5-flare". */
|
|
23
23
|
model: string;
|
|
24
24
|
/** Short, human-readable failure summary. */
|
|
25
25
|
error: string;
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { isTimeoutAbortError } from "../media-shared/http/deadline.js";
|
|
2
2
|
import { ProviderHttpError } from "../media-shared/http/provider-http-errors.js";
|
|
3
3
|
import "../media-shared/http/index.js";
|
|
4
|
+
import { ImageProviderError } from "../../packages/image-providers/src/validation.js";
|
|
5
|
+
import "../../packages/image-providers/src/index.js";
|
|
4
6
|
//#region src/agent/failover-error.ts
|
|
5
7
|
/**
|
|
6
8
|
* FailoverError — uniform terminal error after all candidate provider/model
|
|
@@ -80,6 +82,11 @@ function reasonFromHttpStatus(status) {
|
|
|
80
82
|
* {@link FallbackAttempt}-friendly shape.
|
|
81
83
|
*/
|
|
82
84
|
function classifyAttemptError(e) {
|
|
85
|
+
if (e instanceof ImageProviderError) return {
|
|
86
|
+
reason: reasonFromHttpStatus(e.status),
|
|
87
|
+
status: e.status,
|
|
88
|
+
message: e.message
|
|
89
|
+
};
|
|
83
90
|
if (e instanceof ProviderHttpError) return {
|
|
84
91
|
reason: reasonFromHttpStatus(e.status),
|
|
85
92
|
status: e.status,
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { privateNetworkPolicyToSsrfGuardOptions } from "../../../media-shared/http/private-network.js";
|
|
2
|
+
import { resolveProviderHttpRequestConfig } from "../../../media-shared/http/resolve-provider-http-request-config.js";
|
|
3
|
+
import { fetchWithTimeoutGuarded } from "../../../media-shared/http/provider-http.js";
|
|
4
|
+
import "../../../media-shared/http/index.js";
|
|
5
|
+
import { getImageProviderSpec } from "../../../../packages/image-providers/src/catalog.js";
|
|
6
|
+
import { executeImageProvider } from "../../../../packages/image-providers/src/execute.js";
|
|
7
|
+
import "../../../../packages/image-providers/src/index.js";
|
|
8
|
+
import { resolveApiKeyForProvider } from "../../../providers/auth-runtime/resolve-api-key.js";
|
|
9
|
+
import { isProviderApiKeyConfigured } from "../../../providers/auth-runtime/is-configured.js";
|
|
10
|
+
import "../../../providers/auth-runtime/index.js";
|
|
11
|
+
//#region src/agent/image/generation/native-provider.ts
|
|
12
|
+
function buildNativeImageProvider(providerId) {
|
|
13
|
+
const spec = getImageProviderSpec(providerId);
|
|
14
|
+
const modelCapabilities = Object.fromEntries(spec.models.map((model) => [model.id, model.capabilities]));
|
|
15
|
+
return {
|
|
16
|
+
id: spec.id,
|
|
17
|
+
label: spec.name,
|
|
18
|
+
documentationUrl: spec.documentationUrl,
|
|
19
|
+
apiKeyUrl: spec.apiKeyUrl,
|
|
20
|
+
defaultModel: spec.models[0].id,
|
|
21
|
+
models: spec.models.map((model) => model.id),
|
|
22
|
+
capabilities: spec.models[0].capabilities,
|
|
23
|
+
modelCapabilities,
|
|
24
|
+
configFields: [...spec.regions ? [{
|
|
25
|
+
key: "region",
|
|
26
|
+
label: "Region",
|
|
27
|
+
type: "select",
|
|
28
|
+
required: true,
|
|
29
|
+
options: [{
|
|
30
|
+
value: "cn",
|
|
31
|
+
label: "China"
|
|
32
|
+
}, {
|
|
33
|
+
value: "intl",
|
|
34
|
+
label: "International"
|
|
35
|
+
}]
|
|
36
|
+
}] : [], {
|
|
37
|
+
key: "baseUrl",
|
|
38
|
+
label: "Base URL",
|
|
39
|
+
type: "url",
|
|
40
|
+
placeholder: spec.baseUrl
|
|
41
|
+
}],
|
|
42
|
+
isConfigured: (ctx) => isProviderApiKeyConfigured({
|
|
43
|
+
providerId,
|
|
44
|
+
cfg: ctx.cfg,
|
|
45
|
+
agentId: ctx.agentId
|
|
46
|
+
}) && (!spec.regions || Boolean(ctx.cfg?.providers?.[providerId]?.region)),
|
|
47
|
+
async generateImage(req) {
|
|
48
|
+
const apiKey = resolveApiKeyForProvider({
|
|
49
|
+
providerId,
|
|
50
|
+
cfg: req.cfg,
|
|
51
|
+
agentId: req.agentId,
|
|
52
|
+
store: req.authStore
|
|
53
|
+
});
|
|
54
|
+
if (!apiKey) throw new Error(`${spec.name} API key missing`);
|
|
55
|
+
const settings = req.cfg?.providers?.[providerId];
|
|
56
|
+
if (settings?.azure) throw new Error("Configure Azure images as an explicit custom image provider");
|
|
57
|
+
const baseUrl = settings?.baseUrl ?? (spec.regions ? spec.regions[settings?.region] : spec.baseUrl);
|
|
58
|
+
if (!baseUrl) throw new Error(`${spec.name} requires region or baseUrl`);
|
|
59
|
+
const http = resolveProviderHttpRequestConfig({
|
|
60
|
+
providerId,
|
|
61
|
+
cfg: req.cfg,
|
|
62
|
+
fallbackTimeoutMs: spec.timeoutMs
|
|
63
|
+
});
|
|
64
|
+
const timeoutMs = req.timeoutMs ?? http.timeoutMs ?? spec.timeoutMs;
|
|
65
|
+
const signal = AbortSignal.any([AbortSignal.timeout(timeoutMs), ...req.signal ? [req.signal] : []]);
|
|
66
|
+
const result = await executeImageProvider({
|
|
67
|
+
providerId,
|
|
68
|
+
baseUrl,
|
|
69
|
+
apiKey,
|
|
70
|
+
signal,
|
|
71
|
+
fetchImpl: ((url, init) => {
|
|
72
|
+
const headers = new Headers(new URL(String(url)).origin === new URL(baseUrl).origin ? http.headers : void 0);
|
|
73
|
+
new Headers(init?.headers).forEach((value, key) => headers.set(key, value));
|
|
74
|
+
return fetchWithTimeoutGuarded(String(url), {
|
|
75
|
+
label: spec.name,
|
|
76
|
+
timeoutMs,
|
|
77
|
+
signal,
|
|
78
|
+
init: {
|
|
79
|
+
...init,
|
|
80
|
+
headers,
|
|
81
|
+
redirect: "error"
|
|
82
|
+
},
|
|
83
|
+
...privateNetworkPolicyToSsrfGuardOptions()
|
|
84
|
+
});
|
|
85
|
+
}),
|
|
86
|
+
request: {
|
|
87
|
+
model: req.model,
|
|
88
|
+
prompt: req.prompt,
|
|
89
|
+
count: req.count,
|
|
90
|
+
size: req.size,
|
|
91
|
+
aspectRatio: req.aspectRatio,
|
|
92
|
+
resolution: req.resolution,
|
|
93
|
+
quality: req.quality,
|
|
94
|
+
outputFormat: req.outputFormat,
|
|
95
|
+
background: req.background ?? req.providerOptions?.openai?.background,
|
|
96
|
+
openai: req.providerOptions?.openai,
|
|
97
|
+
inputImages: req.inputImages?.map((image, index) => ({
|
|
98
|
+
blob: new Blob([new Uint8Array(image.buffer)], { type: image.mimeType }),
|
|
99
|
+
fileName: image.fileName ?? `input-${index}.png`
|
|
100
|
+
}))
|
|
101
|
+
}
|
|
102
|
+
});
|
|
103
|
+
return {
|
|
104
|
+
model: req.model,
|
|
105
|
+
images: result.images.map((image) => ({
|
|
106
|
+
buffer: Buffer.from(image.bytes),
|
|
107
|
+
mimeType: image.mimeType
|
|
108
|
+
})),
|
|
109
|
+
metadata: {
|
|
110
|
+
requestId: result.requestId,
|
|
111
|
+
usage: result.usage
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
//#endregion
|
|
118
|
+
export { buildNativeImageProvider };
|
|
@@ -48,7 +48,7 @@ export interface OpenAiImagesProviderOptions {
|
|
|
48
48
|
resolveEndpoint: (req: ImageGenerationRequest) => OpenAiImagesEndpointResolution;
|
|
49
49
|
/** Default per-call timeout. Combined with provider-level config in provider-http. */
|
|
50
50
|
defaultTimeoutMs?: number;
|
|
51
|
-
/** Default count
|
|
51
|
+
/** Default image count. Provider may also enforce via `capabilities.generate.maxCount`. */
|
|
52
52
|
defaultCount?: number;
|
|
53
53
|
defaultSize?: string;
|
|
54
54
|
}
|
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
import { createLogger } from "../../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../../utils/logger.js";
|
|
3
|
-
import {
|
|
3
|
+
import { imageFileExtensionForMimeType } from "./image-assets.js";
|
|
4
4
|
import { pickTimeoutMsOrFallback } from "../../../media-shared/http/deadline.js";
|
|
5
5
|
import { privateNetworkPolicyToSsrfGuardOptions } from "../../../media-shared/http/private-network.js";
|
|
6
6
|
import { resolveProviderHttpRequestConfig } from "../../../media-shared/http/resolve-provider-http-request-config.js";
|
|
7
7
|
import { postJsonRequest, postMultipartRequest, readJsonResponseLimited } from "../../../media-shared/http/provider-http.js";
|
|
8
8
|
import "../../../media-shared/http/index.js";
|
|
9
|
+
import { ImageProviderError, validateImageRequest } from "../../../../packages/image-providers/src/validation.js";
|
|
10
|
+
import { decodeBase64, imageFromBytes } from "../../../../packages/image-providers/src/http.js";
|
|
11
|
+
import "../../../../packages/image-providers/src/index.js";
|
|
9
12
|
//#region src/agent/image/generation/openai-images-provider.ts
|
|
13
|
+
/** Strict implementation of the OpenAI Images REST protocol. */
|
|
10
14
|
init_logger();
|
|
11
15
|
const log = createLogger("ImageGen:OpenAIImages");
|
|
12
|
-
const DEFAULT_OUTPUT_MIME = "image/png";
|
|
13
16
|
const DEFAULT_TIMEOUT_MS = 12e4;
|
|
14
17
|
const MAX_RESPONSE_BYTES = 64 * 1024 * 1024;
|
|
15
|
-
const MAX_IMAGE_BYTES = 32 * 1024 * 1024;
|
|
16
18
|
const MAX_TOTAL_IMAGE_BYTES = 64 * 1024 * 1024;
|
|
17
19
|
function createOpenAiImagesProvider(options) {
|
|
18
|
-
const defaultMaxCount = options.capabilities.generate?.maxCount ?? 4;
|
|
19
20
|
const defaultCount = options.defaultCount ?? 1;
|
|
20
|
-
const defaultSize = options.defaultSize ??
|
|
21
|
+
const defaultSize = options.defaultSize ?? options.capabilities.geometry?.sizes?.[0];
|
|
21
22
|
return {
|
|
22
23
|
id: options.id,
|
|
23
24
|
label: options.label,
|
|
@@ -44,8 +45,20 @@ function createOpenAiImagesProvider(options) {
|
|
|
44
45
|
});
|
|
45
46
|
const ssrfGuardOptions = privateNetworkPolicyToSsrfGuardOptions(endpoint.privateNetworkPolicy);
|
|
46
47
|
const isEdit = (req.inputImages?.length ?? 0) > 0;
|
|
47
|
-
const count =
|
|
48
|
-
const size = req.size?.trim() || defaultSize;
|
|
48
|
+
const count = req.count ?? defaultCount;
|
|
49
|
+
const size = req.size?.trim() || (req.aspectRatio || req.resolution || !options.capabilities.generate?.supportsSize ? void 0 : defaultSize);
|
|
50
|
+
if (!options.models.includes(req.model)) throw new ImageProviderError(`Unsupported image model: ${req.model}`, 400);
|
|
51
|
+
validateImageRequest({
|
|
52
|
+
...req,
|
|
53
|
+
count,
|
|
54
|
+
size,
|
|
55
|
+
background: req.background ?? req.providerOptions?.openai?.background,
|
|
56
|
+
openai: req.providerOptions?.openai,
|
|
57
|
+
inputImages: req.inputImages?.map((image, index) => ({
|
|
58
|
+
blob: new Blob([new Uint8Array(image.buffer)], { type: image.mimeType }),
|
|
59
|
+
fileName: image.fileName ?? `input-${index}`
|
|
60
|
+
}))
|
|
61
|
+
}, options.capabilities);
|
|
49
62
|
const url = isEdit ? joinPath(endpoint.baseUrl, endpoint.editsPath ?? "/images/edits") : joinPath(endpoint.baseUrl, endpoint.generationsPath ?? "/images/generations");
|
|
50
63
|
log.debug({
|
|
51
64
|
providerId: options.id,
|
|
@@ -72,7 +85,11 @@ function createOpenAiImagesProvider(options) {
|
|
|
72
85
|
size,
|
|
73
86
|
httpDefaults,
|
|
74
87
|
ssrfGuardOptions
|
|
75
|
-
}),
|
|
88
|
+
}), {
|
|
89
|
+
...req,
|
|
90
|
+
count
|
|
91
|
+
});
|
|
92
|
+
if (mapped.length > count) throw new ImageProviderError("Provider returned too many images", 502);
|
|
76
93
|
if (mapped.length === 0) throw new Error(`${options.id} returned no images.`);
|
|
77
94
|
return {
|
|
78
95
|
images: mapped,
|
|
@@ -86,10 +103,13 @@ async function postGenerateRequest(params) {
|
|
|
86
103
|
model: params.req.model,
|
|
87
104
|
prompt: params.req.prompt,
|
|
88
105
|
n: params.count,
|
|
89
|
-
size: params.size
|
|
90
|
-
response_format: "b64_json"
|
|
106
|
+
...params.size ? { size: params.size } : {}
|
|
91
107
|
};
|
|
92
108
|
applyOpenAiOptions(body, params.req);
|
|
109
|
+
if (params.req.aspectRatio || params.req.resolution) body.xopc = { image: {
|
|
110
|
+
aspectRatio: params.req.aspectRatio,
|
|
111
|
+
resolution: params.req.resolution
|
|
112
|
+
} };
|
|
93
113
|
const timeoutMs = pickTimeoutMsOrFallback(params.req.timeoutMs, params.httpDefaults.timeoutMs, DEFAULT_TIMEOUT_MS);
|
|
94
114
|
return await readJsonResponseLimited(await postJsonRequest(params.url, {
|
|
95
115
|
label: params.providerId,
|
|
@@ -106,9 +126,15 @@ async function postEditRequest(params) {
|
|
|
106
126
|
model: params.req.model,
|
|
107
127
|
prompt: params.req.prompt,
|
|
108
128
|
n: String(params.count),
|
|
109
|
-
size: params.size
|
|
110
|
-
response_format: "b64_json"
|
|
129
|
+
...params.size ? { size: params.size } : {}
|
|
111
130
|
};
|
|
131
|
+
const options = {};
|
|
132
|
+
applyOpenAiOptions(options, params.req);
|
|
133
|
+
for (const [key, value] of Object.entries(options)) fields[key] = String(value);
|
|
134
|
+
if (params.req.aspectRatio || params.req.resolution) fields.xopc = JSON.stringify({ image: {
|
|
135
|
+
aspectRatio: params.req.aspectRatio,
|
|
136
|
+
resolution: params.req.resolution
|
|
137
|
+
} });
|
|
112
138
|
const form = new FormData();
|
|
113
139
|
for (const [k, v] of Object.entries(fields)) if (typeof v === "string") form.append(k, v);
|
|
114
140
|
for (let idx = 0; idx < inputImages.length; idx++) {
|
|
@@ -117,7 +143,7 @@ async function postEditRequest(params) {
|
|
|
117
143
|
const u8 = img.buffer instanceof Uint8Array ? img.buffer : new Uint8Array(img.buffer);
|
|
118
144
|
const copy = new Uint8Array(u8.byteLength);
|
|
119
145
|
copy.set(u8);
|
|
120
|
-
form.append(field, new Blob([copy], { type: img.mimeType
|
|
146
|
+
form.append(field, new Blob([copy], { type: img.mimeType }), pickEditFileName(img, idx));
|
|
121
147
|
}
|
|
122
148
|
const headers = new Headers(params.headers);
|
|
123
149
|
headers.delete("content-type");
|
|
@@ -135,26 +161,20 @@ function mapOpenAiImagesResponse(raw, req) {
|
|
|
135
161
|
if (!raw || typeof raw !== "object") return [];
|
|
136
162
|
const data = raw.data;
|
|
137
163
|
if (!Array.isArray(data)) return [];
|
|
138
|
-
|
|
164
|
+
if (data.length > (req.count ?? 1)) throw new ImageProviderError("Provider returned too many images", 502);
|
|
139
165
|
const out = [];
|
|
140
166
|
let totalBytes = 0;
|
|
141
|
-
data.
|
|
142
|
-
const
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
if (estimatedBytes > MAX_IMAGE_BYTES) throw new Error(`OpenAI Images response image exceeds ${MAX_IMAGE_BYTES} bytes.`);
|
|
146
|
-
totalBytes += estimatedBytes;
|
|
147
|
-
if (totalBytes > MAX_TOTAL_IMAGE_BYTES) throw new Error(`OpenAI Images response images exceed ${MAX_TOTAL_IMAGE_BYTES} bytes total.`);
|
|
148
|
-
const asset = imageAssetFromBase64({
|
|
149
|
-
base64: b64,
|
|
150
|
-
mimeType: req.outputFormat ? `image/${req.outputFormat}` : void 0,
|
|
151
|
-
fileName: `image-${index + 1}.${ext}`
|
|
152
|
-
});
|
|
167
|
+
for (const [index, entry] of data.entries()) {
|
|
168
|
+
const image = imageFromBytes(decodeBase64(entry?.b64_json));
|
|
169
|
+
totalBytes += image.bytes.byteLength;
|
|
170
|
+
if (totalBytes > MAX_TOTAL_IMAGE_BYTES) throw new ImageProviderError("Generated images exceed total byte limit", 502);
|
|
153
171
|
out.push({
|
|
154
|
-
|
|
172
|
+
buffer: Buffer.from(image.bytes),
|
|
173
|
+
mimeType: image.mimeType,
|
|
174
|
+
fileName: `image-${index + 1}.${imageFileExtensionForMimeType(image.mimeType)}`,
|
|
155
175
|
...typeof entry.revised_prompt === "string" ? { revisedPrompt: entry.revised_prompt } : {}
|
|
156
176
|
});
|
|
157
|
-
}
|
|
177
|
+
}
|
|
158
178
|
return out;
|
|
159
179
|
}
|
|
160
180
|
function applyAuthorizationHeader(params) {
|
|
@@ -191,10 +211,6 @@ function pickEditFileName(img, idx) {
|
|
|
191
211
|
const ext = imageFileExtensionForMimeType(img.mimeType);
|
|
192
212
|
return `image-${idx + 1}.${ext}`;
|
|
193
213
|
}
|
|
194
|
-
function clampCount(requested, fallback, max) {
|
|
195
|
-
if (typeof requested !== "number" || !Number.isFinite(requested) || requested <= 0) return fallback;
|
|
196
|
-
return Math.min(max, Math.max(1, Math.floor(requested)));
|
|
197
|
-
}
|
|
198
214
|
function joinPath(baseUrl, subPath) {
|
|
199
215
|
return `${baseUrl.replace(/\/+$/, "")}${subPath.startsWith("/") ? subPath : `/${subPath}`}`;
|
|
200
216
|
}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { createLogger } from "../../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../../utils/logger.js";
|
|
3
3
|
import { init_models_json, loadModelsJson } from "../../../config/models-json.js";
|
|
4
|
+
import { listImageProviderSpecs } from "../../../../packages/image-providers/src/catalog.js";
|
|
5
|
+
import "../../../../packages/image-providers/src/index.js";
|
|
4
6
|
import { buildCustomOpenAiImagesProvider } from "./custom-openai-images-provider.js";
|
|
5
|
-
import {
|
|
6
|
-
import { buildFalImageGenerationProvider } from "./providers/fal.js";
|
|
7
|
-
import { buildGoogleImageGenerationProvider } from "./providers/google.js";
|
|
8
|
-
import { buildMinimaxImageGenerationProvider } from "./providers/minimax.js";
|
|
9
|
-
import { buildOpenAIImageGenerationProvider } from "./providers/openai.js";
|
|
7
|
+
import { buildNativeImageProvider } from "./native-provider.js";
|
|
10
8
|
import { buildXopcCloudImageGenerationProvider } from "./providers/xopc-cloud.js";
|
|
11
9
|
//#region src/agent/image/generation/provider-registry.ts
|
|
12
10
|
init_models_json();
|
|
@@ -14,14 +12,7 @@ init_logger();
|
|
|
14
12
|
const log = createLogger("ImageGenerationRegistry");
|
|
15
13
|
function buildBuiltInProviders() {
|
|
16
14
|
const cloud = buildXopcCloudImageGenerationProvider();
|
|
17
|
-
return [
|
|
18
|
-
...cloud ? [cloud] : [],
|
|
19
|
-
buildOpenAIImageGenerationProvider(),
|
|
20
|
-
buildDashScopeImageGenerationProvider(),
|
|
21
|
-
buildMinimaxImageGenerationProvider(),
|
|
22
|
-
buildGoogleImageGenerationProvider(),
|
|
23
|
-
buildFalImageGenerationProvider()
|
|
24
|
-
];
|
|
15
|
+
return [...cloud ? [cloud] : [], ...listImageProviderSpecs().map((spec) => buildNativeImageProvider(spec.id))];
|
|
25
16
|
}
|
|
26
17
|
let providers = buildBuiltInProviders();
|
|
27
18
|
let providersById = new Map(providers.map((provider) => [provider.id, provider]));
|
|
@@ -9,9 +9,9 @@ init_provider_auth_service();
|
|
|
9
9
|
init_xopc_cloud_config();
|
|
10
10
|
function buildXopcCloudImageGenerationProvider() {
|
|
11
11
|
const source = getModelCatalogStore().getSource("xopc-cloud");
|
|
12
|
-
const models = source?.models.filter((model) => model.availability === "available" && model.kind === "image" && model.operations.includes("images.generate")).sort((left, right) => compareCatalogModels(left, right, source.recommended?.["image-generation"])) ?? [];
|
|
12
|
+
const models = source?.models.filter((model) => model.availability === "available" && model.kind === "image" && model.operations.includes("images.generate") && Boolean(model.imageGeneration)).sort((left, right) => compareCatalogModels(left, right, source.recommended?.["image-generation"])) ?? [];
|
|
13
13
|
if (models.length === 0) return void 0;
|
|
14
|
-
const modelCapabilities = Object.fromEntries(models.map((model) => [model.id,
|
|
14
|
+
const modelCapabilities = Object.fromEntries(models.map((model) => [model.id, model.imageGeneration]));
|
|
15
15
|
const defaultModel = models[0].id;
|
|
16
16
|
const baseUrl = source?.baseUrl ?? resolveXopcModelRouterUrl();
|
|
17
17
|
const executors = new Map(models.map((model) => [model.id, createOpenAiImagesProvider({
|
|
@@ -19,11 +19,12 @@ function buildXopcCloudImageGenerationProvider() {
|
|
|
19
19
|
label: "XOPC Model Service",
|
|
20
20
|
defaultModel: model.id,
|
|
21
21
|
models: [model.id],
|
|
22
|
+
defaultTimeoutMs: 6e5,
|
|
22
23
|
capabilities: modelCapabilities[model.id],
|
|
23
24
|
isConfigured: () => true,
|
|
24
25
|
resolveApiKey: (request) => getProviderAuthService().resolveApiKey("xopc-cloud", request.signal),
|
|
25
26
|
resolveEndpoint: () => ({ baseUrl }),
|
|
26
|
-
...model.imageGeneration?.sizes[0] ? { defaultSize: model.imageGeneration.sizes[0] } : {}
|
|
27
|
+
...model.imageGeneration?.geometry?.sizes?.[0] ? { defaultSize: model.imageGeneration.geometry.sizes[0] } : {}
|
|
27
28
|
})]));
|
|
28
29
|
return {
|
|
29
30
|
id: "xopc-cloud",
|
|
@@ -37,37 +38,7 @@ function buildXopcCloudImageGenerationProvider() {
|
|
|
37
38
|
async generateImage(request) {
|
|
38
39
|
const executor = executors.get(request.model);
|
|
39
40
|
if (!executor) throw new Error(`Image model is not available from XOPC Model Service: ${request.model}`);
|
|
40
|
-
|
|
41
|
-
const size = request.size ?? (request.aspectRatio && geometry?.aspectRatios?.includes(request.aspectRatio) ? request.aspectRatio : void 0) ?? (request.resolution && geometry?.resolutions?.includes(request.resolution) ? request.resolution : void 0);
|
|
42
|
-
return executor.generateImage({
|
|
43
|
-
...request,
|
|
44
|
-
...size ? { size } : {}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
function toProviderCapabilities(model) {
|
|
50
|
-
const image = model.imageGeneration;
|
|
51
|
-
return {
|
|
52
|
-
generate: {
|
|
53
|
-
maxCount: image?.maxCount ?? 1,
|
|
54
|
-
supportsSize: Boolean(image?.sizes.length),
|
|
55
|
-
supportsAspectRatio: Boolean(image?.aspectRatios?.length)
|
|
56
|
-
},
|
|
57
|
-
edit: {
|
|
58
|
-
enabled: model.operations.includes("images.edit"),
|
|
59
|
-
maxInputImages: image?.maxInputImages ?? 0,
|
|
60
|
-
supportsSize: Boolean(image?.sizes.length),
|
|
61
|
-
supportsAspectRatio: Boolean(image?.aspectRatios?.length)
|
|
62
|
-
},
|
|
63
|
-
geometry: {
|
|
64
|
-
sizes: image?.sizes ?? [],
|
|
65
|
-
aspectRatios: image?.aspectRatios ?? []
|
|
66
|
-
},
|
|
67
|
-
output: {
|
|
68
|
-
qualities: image?.qualities ?? [],
|
|
69
|
-
formats: image?.formats ?? [],
|
|
70
|
-
backgrounds: image?.backgrounds ?? []
|
|
41
|
+
return executor.generateImage(request);
|
|
71
42
|
}
|
|
72
43
|
};
|
|
73
44
|
}
|
|
@@ -10,9 +10,9 @@ import type { Config } from '../../../config/schema.js';
|
|
|
10
10
|
import type { ToolModelConfig } from '../tool-model-config.js';
|
|
11
11
|
import type { AuthProfileStore } from '../../../providers/auth-runtime/index.js';
|
|
12
12
|
import type { FallbackAttempt } from '../../failover-error.js';
|
|
13
|
-
import type { GeneratedImageAsset, ImageGenerationBackground,
|
|
13
|
+
import type { GeneratedImageAsset, ImageGenerationBackground, ImageGenerationOutputFormat, ImageGenerationProvider, ImageGenerationProviderOptions, ImageGenerationQuality, ImageGenerationResolution, ImageGenerationSourceImage } from './types.js';
|
|
14
14
|
export interface GenerateImageParams {
|
|
15
|
-
/** Active xopc config.
|
|
15
|
+
/** Active xopc config. */
|
|
16
16
|
cfg?: Config;
|
|
17
17
|
prompt: string;
|
|
18
18
|
agentId?: string;
|
|
@@ -41,8 +41,6 @@ export interface GenerateImageRuntimeResult {
|
|
|
41
41
|
provider: string;
|
|
42
42
|
model: string;
|
|
43
43
|
attempts: FallbackAttempt[];
|
|
44
|
-
normalization?: ImageGenerationNormalization;
|
|
45
|
-
ignoredOverrides: ImageGenerationIgnoredOverride[];
|
|
46
44
|
metadata?: Record<string, unknown>;
|
|
47
45
|
}
|
|
48
46
|
/**
|