@xopcai/xopc 0.0.389 → 0.0.390
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/manifest.json +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-dvik6t7Z.js → activity-store-DGMAYkw8.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-bWMd5TDC.js → agent-avatar-dicebear-B4AsZzJR.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-9NUY1sO3.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-CNc6ntzP.js +1 -0
- package/dist/gateway/static/root/assets/agents-QNY9Vkrf.js +77 -0
- package/dist/gateway/static/root/assets/{agents-admin-api-BlNGyXpm.js → agents-admin-api-DxdaiFWn.js} +1 -1
- package/dist/gateway/static/root/assets/app-management-settings-panel-DHRfLkYD.js +1 -0
- package/dist/gateway/static/root/assets/{appearance-settings-CUAdx44v.js → appearance-settings-DtKSapgb.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-D5zDB6gp.js → apps-page-B9kuRt_z.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-Du6dJNcl.js → archive-plugin-AgySTXp_.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BO8Ig5Z4.js → automations-page-D1o7ZtUW.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-BJenz0P1.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-D7VJjwnr.js → binary-plugins-A1AXOsO6.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CaJlWTAn.js → block-editor-DUNLkLKF.js} +3 -3
- package/dist/gateway/static/root/assets/{browser-automation-inputs-iyMBJmQX.js → browser-automation-inputs-BvUC6OiW.js} +1 -1
- package/dist/gateway/static/root/assets/browser-automations-page-Dq2LlVMh.js +3 -0
- package/dist/gateway/static/root/assets/browser-settings-page-BOZ-1g51.js +3 -0
- package/dist/gateway/static/root/assets/{capabilities-MCKRMZDK.js → capabilities-BkCutK0V.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-CEH1AnXc.js → capabilities-D61uSJPy.js} +1 -1
- package/dist/gateway/static/root/assets/capabilities-page-BDP6gzlv.js +2 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-D6PL3Mfl.js +8 -0
- package/dist/gateway/static/root/assets/{capability-header-actions-BIA0Lwt5.js → capability-header-actions-D9uGs4Pw.js} +1 -1
- package/dist/gateway/static/root/assets/channels-xb7n8rwF.js +1 -0
- package/dist/gateway/static/root/assets/chat-terminal-dock-Dgn09YDs.js +36 -0
- package/dist/gateway/static/root/assets/{computer-settings-page-DvY3zgyY.js → computer-settings-page-C66P4ifT.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-St2-Fj3y.js → connector-service-page-Dp35XdYf.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-BHcRxYib.js +1 -0
- package/dist/gateway/static/root/assets/{date-picker-C0-D80ny.js → date-picker-CddHY982.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-CNd7mwMU.js → dependency-picker-Ob6BZTqv.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-C-2wDANn.js → desktop-pet-dmwCV-I4.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DyhxLrdJ.js → desktop-pet-settings-B-TBkZAZ.js} +1 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-SWHwRgG3.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-CNivVIPT.js → directory-picker-path-field-6VZa4fT1.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-CGYO3JPw.js → extension-debug-page-C0_njMva.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Dc51ALAg.js → extension-page-BeBLMFmW.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-provider-BXPILdlw.js → extension-provider-DWI0KAKT.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-BiLUwoKx.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-swr-Bc2MytsF.js → gateway-config-swr-CmYcOqhb.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-realtime-BFK-vlME.js → gateway-realtime-Ci1Jst5g.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-BMUiUQMk.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-CzWT_v09.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BDPMttPx.js → gateway-startup-retry-C-BG5M7H.js} +1 -1
- package/dist/gateway/static/root/assets/{highlighted-body-KQOG7T2V-DAlRGMge.js → highlighted-body-KQOG7T2V-CsA7lCVc.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-BeXJfxsg.js +2 -0
- package/dist/gateway/static/root/assets/image-generation-api-B_DqCwtV.js +1 -0
- package/dist/gateway/static/root/assets/imports-page-oAvAF9QS.js +1 -0
- package/dist/gateway/static/root/assets/index-W9ls-0Yd.css +1 -0
- package/dist/gateway/static/root/assets/index-xTL-vb51.js +260 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BYYC9Qmw.js → keyboard-shortcuts-settings--MjYe-Pb.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-BKZfn-MS.js → local-app-workbench-page-DL33dtd7.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-BU8pUsVM.js → local-apps-page-DOa7mxjB.js} +1 -1
- package/dist/gateway/static/root/assets/{local-session-drafts-kFc_MAA9.js → local-session-drafts-DAtLkTPg.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-Dr43FCty.js → locale-store-DMy9W6IG.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-C-GbTYsM.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-C0TzuD3-.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-CdKlPjJM.js → markdown-view-wyOHdXEg.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DE9zt88i.js → media-plugins-Pb2zr_-L.js} +1 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-BxyGGa4D.js +1 -0
- package/dist/gateway/static/root/assets/messages-O0BEUKnx.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-cache-DdH1MODX.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-panel-BFpEqskQ.js +5 -0
- package/dist/gateway/static/root/assets/{notes-api-BHouNL6-.js → notes-api-CYt2pGsm.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-h-qqFJ6Z.js +8 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-TQr8NnSc.js → page-context-capture-button-3uj5EcQC.js} +1 -1
- package/dist/gateway/static/root/assets/personal-page-BGyW6cdt.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-BEl6syFp.js → product-open-page-hI13tPS1.js} +1 -1
- package/dist/gateway/static/root/assets/{product-preview-content-BxSHnbqz.js → product-preview-content-lT_in0-Q.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-Baj7fQ7N.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-D7DyQFU3.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-BD5IgDOA.js → registry-api-CgQrCqL6.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DU_d93Tm.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-api-CjTRoQWT.js → runtime-tools-api-D12qVKeC.js} +1 -1
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-DOSPOfCU.js +1 -0
- package/dist/gateway/static/root/assets/scenes-page-swyUIF5A.js +2 -0
- package/dist/gateway/static/root/assets/{schema-form-ByG-R6N2.js → schema-form-CwOFgsyh.js} +1 -1
- package/dist/gateway/static/root/assets/{send-session-input-UAVStisp.js → send-session-input-nH8Cw0US.js} +1 -1
- package/dist/gateway/static/root/assets/{session-api-DvgEiNRS.js → session-api-B9HrwF-c.js} +1 -1
- package/dist/gateway/static/root/assets/{session-manager-BOb1tC_Z.js → session-manager-aXqXuqDX.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-CI_PJmlX.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DCVaeBLW.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-C1e9m23j.js → settings-page-BN70wE6R.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-CHzcVRi-.js +1 -0
- package/dist/gateway/static/root/assets/{share-link-dialog-kE_6v5Dp.js → share-link-dialog-B1TDyhPt.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-BT-_yR1h.js → share-preview-page-Br-eAZaP.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-api-Dg_SqHQE.js → shares-api-Bl1ZBh5S.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-jgCC_E4Y.js +1 -0
- package/dist/gateway/static/root/assets/{skill-api-BslUYMnX.js → skill-api-ClUw3SRC.js} +1 -1
- package/dist/gateway/static/root/assets/{skill-reload-api-BQ2rTOP1.js → skill-reload-api--1BfIPzb.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-C9oRZSuL.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-GpbPfWwo.js → system-settings-panel-tWrqu7ai.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-5B5ZVAu0.js → task-detail-page-BYRW7Rrr.js} +2 -2
- package/dist/gateway/static/root/assets/{task-expandable-content-DJrrEBB4.js → task-expandable-content-D2t4ahzR.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-BKpYnggg.js → theme-store-BBLjE0fi.js} +1 -1
- package/dist/gateway/static/root/assets/{tracing-settings-page-D71w7dwV.js → tracing-settings-page-5ATxQH5c.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-BV46CvS8.js → tunnel-api-CF1Qh4wU.js} +1 -1
- package/dist/gateway/static/root/assets/{usage-page-rMuwNpJi.js → usage-page-CuEHzXil.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-CzyqRffr.js → use-autosave-tY3keIbm.js} +1 -1
- package/dist/gateway/static/root/assets/{use-composer-attachments-Dviq-1f6.js → use-composer-attachments-CXsocZjt.js} +1 -1
- package/dist/gateway/static/root/assets/{use-file-preview-expanded-D5Kk7Hon.js → use-file-preview-expanded-CEsxnDnQ.js} +2 -2
- package/dist/gateway/static/root/assets/user-model-page-Dvt5TIZ6.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-DWtbmacd.js → voice-api-key-field-COTNLUU3.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-DnIjZm_9.js → voice-config-api-DrxBjSja.js} +1 -1
- package/dist/gateway/static/root/assets/voice-transcribe-api-B47j0_xA.js +1 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-ChEG71hz.js → work-discovery-overlay-PByMJrhV.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-pdiRKLxP.js → workflow-run-setup-panel-CSUkMo63.js} +2 -2
- package/dist/gateway/static/root/assets/{workflows-page-D9LMxINt.js → workflows-page-BUDvFo3R.js} +3 -3
- package/dist/gateway/static/root/assets/{workspace-api-CZDvu7uA.js → workspace-api-Bmx1O449.js} +2 -2
- package/dist/gateway/static/root/assets/{xopc-cloud-account-card-CbUgg1SK.js → xopc-cloud-account-card-DVsAbvwP.js} +1 -1
- package/dist/gateway/static/root/index.html +28 -27
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/discussions.js +3 -2
- package/dist/packages/gateway-contract/src/index.js +4 -0
- package/dist/packages/gateway-contract/src/provider-setup.js +6 -0
- package/dist/packages/gateway-contract/src/recording-outcome.js +6 -0
- package/dist/packages/image-providers/src/catalog.js +10 -0
- package/dist/packages/image-providers/src/execute.js +5 -1
- package/dist/packages/image-providers/src/validation.js +19 -1
- package/dist/src/agent/background-review/run-background-review.d.ts +0 -1
- package/dist/src/agent/background-review/run-background-review.js +10 -2
- package/dist/src/agent/embedded/run-for-session.js +26 -3
- package/dist/src/agent/embedded/run-turn.js +12 -0
- package/dist/src/agent/embedded/xopc-stream-bridge.js +3 -0
- package/dist/src/agent/image/generation/runtime.js +12 -14
- package/dist/src/agent/image/understanding/runtime.js +5 -0
- package/dist/src/agent/inbound/inbound-loop.d.ts +1 -15
- package/dist/src/agent/inbound/inbound-loop.js +5 -0
- package/dist/src/agent/mcp/connection-errors.d.ts +3 -0
- package/dist/src/agent/mcp/connection-errors.js +32 -0
- package/dist/src/agent/mcp/connection-setup.d.ts +2 -0
- package/dist/src/agent/mcp/connection-setup.js +38 -18
- package/dist/src/agent/memory/compaction.js +5 -1
- package/dist/src/agent/memory/idle-compaction-scheduler.js +3 -1
- package/dist/src/agent/models/manager.d.ts +1 -0
- package/dist/src/agent/models/manager.js +4 -2
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +1 -6
- package/dist/src/agent/orchestration/agent-orchestrator.js +5 -0
- package/dist/src/agent/service/process-direct-one-shot.js +5 -0
- package/dist/src/agent/service/process-direct-streaming.d.ts +1 -0
- package/dist/src/agent/service/process-direct-streaming.js +17 -1
- package/dist/src/agent/tools/image-generate-tool.js +5 -1
- package/dist/src/agent-config/resolver.js +5 -0
- package/dist/src/agent-config/schema.d.ts +26 -6
- package/dist/src/agent-config/schema.js +2 -0
- package/dist/src/ai-assist/text-assist.js +5 -16
- package/dist/src/automations/service/action-executor.js +3 -1
- package/dist/src/channels/index.js +1 -1
- package/dist/src/channels/manager.js +1 -1
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/config/agent-model-intents.js +4 -1
- package/dist/src/config/schema.d.ts +11 -5
- package/dist/src/config/schema.js +11 -3
- package/dist/src/discussions/analyzer.d.ts +2 -0
- package/dist/src/discussions/analyzer.js +38 -9
- package/dist/src/discussions/audio-clip.d.ts +3 -0
- package/dist/src/discussions/audio-clip.js +72 -0
- package/dist/src/discussions/live-worker.js +3 -1
- package/dist/src/discussions/long-review.d.ts +17 -0
- package/dist/src/discussions/long-review.js +278 -0
- package/dist/src/discussions/media-timeline.d.ts +21 -0
- package/dist/src/discussions/media-timeline.js +134 -0
- package/dist/src/discussions/organizer-worker.d.ts +4 -1
- package/dist/src/discussions/organizer-worker.js +17 -12
- package/dist/src/discussions/organizer.js +2 -0
- package/dist/src/discussions/processing.d.ts +43 -0
- package/dist/src/discussions/processing.js +125 -0
- package/dist/src/discussions/recording.js +202 -42
- package/dist/src/discussions/recordingJobs.js +2 -0
- package/dist/src/discussions/repository.js +4 -2
- package/dist/src/discussions/review.d.ts +8 -0
- package/dist/src/discussions/review.js +183 -0
- package/dist/src/discussions/sealer.d.ts +7 -1
- package/dist/src/discussions/sealer.js +163 -87
- package/dist/src/discussions/service.d.ts +7 -1
- package/dist/src/discussions/service.js +51 -15
- package/dist/src/discussions/types.d.ts +2 -1
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/global-defaults-admin.d.ts +3 -1
- package/dist/src/gateway/global-defaults-admin.js +14 -2
- package/dist/src/gateway/hono/lib/config-payload.d.ts +11 -2
- package/dist/src/gateway/hono/lib/config-payload.js +2 -0
- package/dist/src/gateway/hono/lib/voice-settings-revisions.d.ts +5 -0
- package/dist/src/gateway/hono/lib/voice-settings-revisions.js +23 -0
- package/dist/src/gateway/hono/routes/config-patch/misc.js +8 -1
- package/dist/src/gateway/hono/routes/config.js +12 -0
- package/dist/src/gateway/hono/routes/discussions.js +63 -1
- package/dist/src/gateway/hono/routes/global-defaults.js +8 -1
- package/dist/src/gateway/hono/routes/models.js +12 -4
- package/dist/src/gateway/hono/routes/provider-setup.d.ts +3 -0
- package/dist/src/gateway/hono/routes/provider-setup.js +106 -0
- package/dist/src/gateway/hono/routes/status.js +2 -0
- package/dist/src/gateway/hono/routes/voice.js +23 -10
- package/dist/src/gateway/provider-model-setup.d.ts +4 -0
- package/dist/src/gateway/provider-model-setup.js +56 -0
- package/dist/src/gateway/service/config-coordinator.d.ts +2 -2
- package/dist/src/gateway/service.js +7 -7
- package/dist/src/home-intelligence/host.js +2 -2
- package/dist/src/media-shared/http/provider-http.d.ts +0 -6
- package/dist/src/media-shared/http/provider-http.js +5 -4
- package/dist/src/media-understanding/runner.d.ts +0 -28
- package/dist/src/media-understanding/runner.js +4 -0
- package/dist/src/platform/client.d.ts +1 -1
- package/dist/src/platform/contracts.d.ts +1 -1
- package/dist/src/providers/env-keys.js +3 -0
- package/dist/src/providers/extension-stream-bridge.js +3 -0
- package/dist/src/providers/index.js +15 -0
- package/dist/src/providers/model-call.d.ts +5 -2
- package/dist/src/providers/model-call.js +13 -2
- package/dist/src/providers/model-reference-auditor.js +1 -0
- package/dist/src/providers/model-response.js +1 -1
- package/dist/src/providers/model-usage.d.ts +15 -0
- package/dist/src/providers/model-usage.js +50 -0
- package/dist/src/providers/presentation.js +8 -0
- package/dist/src/providers/setup/engine.d.ts +37 -0
- package/dist/src/providers/setup/engine.js +177 -0
- package/dist/src/providers/setup/profiles.d.ts +4 -0
- package/dist/src/providers/setup/profiles.js +94 -0
- package/dist/src/providers/setup/voice.d.ts +23 -0
- package/dist/src/providers/setup/voice.js +234 -0
- package/dist/src/scenes/agentExecutor.d.ts +1 -0
- package/dist/src/scenes/agentExecutor.js +5 -0
- package/dist/src/storage/sqlite/migrations/253_discussion_processing_recovery.sql +20 -0
- package/dist/src/storage/sqlite/migrations/254_discussion_annotations.sql +17 -0
- package/dist/src/storage/sqlite/migrations/255_discussion_chapter_progress.sql +10 -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/usage/recorder.js +2 -1
- package/dist/src/usage/scenario-registry.js +128 -123
- package/dist/src/voice/dashscope/streaming-stt-session.js +3 -0
- package/dist/src/voice/dashscope/streaming-tts-stream.js +3 -0
- package/dist/src/voice/dictation.d.ts +12 -0
- package/dist/src/voice/dictation.js +22 -0
- package/dist/src/voice/metadata/builtin.js +54 -0
- package/dist/src/voice/platform-streams.js +3 -0
- package/dist/src/voice/realtime/omniEngine.js +3 -0
- package/dist/src/voice/realtime/omniRoute.js +3 -2
- package/dist/src/voice/realtime/runtime.js +4 -2
- package/dist/src/voice/stt/factory.js +9 -3
- package/dist/src/voice/stt/providers/bailian-plan-transcription.d.ts +2 -0
- package/dist/src/voice/stt/providers/bailian-plan-transcription.js +32 -0
- package/dist/src/voice/stt/providers/index.d.ts +1 -0
- package/dist/src/voice/stt/providers/index.js +2 -1
- package/dist/src/voice/token-plan.d.ts +8 -0
- package/dist/src/voice/token-plan.js +11 -0
- package/dist/src/voice/tts/factory.js +4 -1
- package/dist/src/voice/tts/providers/bailian-plan-speech.d.ts +2 -0
- package/dist/src/voice/tts/providers/bailian-plan-speech.js +84 -0
- package/dist/src/voice/tts/providers/index.d.ts +1 -0
- package/dist/src/voice/tts/providers/index.js +2 -1
- package/dist/src/voice/tts/speak-core.js +10 -1
- package/package.json +4 -4
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-Ds0Ue2FB.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-UunIxc1q.js +0 -1
- package/dist/gateway/static/root/assets/agents-BLRM4o-U.js +0 -77
- package/dist/gateway/static/root/assets/app-management-settings-panel-Dmy828Pe.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-UcCneEs3.js +0 -6
- package/dist/gateway/static/root/assets/browser-automations-page-BjvQnYfO.js +0 -3
- package/dist/gateway/static/root/assets/browser-settings-page-D5ZghI28.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-page-MC8qIrXo.js +0 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-Blz3hEzp.js +0 -8
- package/dist/gateway/static/root/assets/channels-DSg_iCVC.js +0 -1
- package/dist/gateway/static/root/assets/chat-terminal-dock-C97SJEwd.js +0 -36
- package/dist/gateway/static/root/assets/connectors-page-DXk-GAsd.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-BeSuq__I.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-jYu6qpY2.js +0 -1
- package/dist/gateway/static/root/assets/fallback-models-CoyzvDo7.js +0 -1
- package/dist/gateway/static/root/assets/gateway-realtime-store-C3vH-Iup.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-JlT1dlSj.js +0 -1
- package/dist/gateway/static/root/assets/home-page-DOVl8s-1.js +0 -2
- package/dist/gateway/static/root/assets/image-generation-api-BZBiYDmV.js +0 -1
- package/dist/gateway/static/root/assets/imports-page-DgdBTp_0.js +0 -1
- package/dist/gateway/static/root/assets/index-CmC8JkSM.js +0 -260
- package/dist/gateway/static/root/assets/index-Dgzc0oBu.css +0 -1
- package/dist/gateway/static/root/assets/logs-page-BSepiACn.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-dE_ykPNY.js +0 -1
- package/dist/gateway/static/root/assets/mermaid-MCJ5UELQ-65SE6j-_.js +0 -1
- package/dist/gateway/static/root/assets/messages-DlTNQI92.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-cache-C7FAsEe_.js +0 -1
- package/dist/gateway/static/root/assets/note-detail-panel-D9oqhdyk.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-Bd4_7ph8.js +0 -8
- package/dist/gateway/static/root/assets/personal-page-BvWzq4Wp.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-D-qkIXVT.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-BQtw1Dfn.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CYFNz0Jc.js +0 -1
- package/dist/gateway/static/root/assets/runtime-tools-settings-panel-Qq_NyYx_.js +0 -1
- package/dist/gateway/static/root/assets/scenes-page-hGr-ppYk.js +0 -2
- package/dist/gateway/static/root/assets/sessions-page-CpX1Rluw.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-D2s_MlxR.js +0 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-BTqvr_Fw.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BiHRYDHq.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-DfcAu08T.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-CvKc5nBN.js +0 -2
- package/dist/gateway/static/root/assets/user-model-page-Dhqw3v_u.js +0 -2
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { __esmMin } from "../../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
//#region src/providers/setup/profiles.ts
|
|
3
|
+
/** Plan usage is conservative until a vendor explicitly permits unattended execution. */
|
|
4
|
+
function isInteractiveOnlyProvider(provider, baseUrl) {
|
|
5
|
+
if (subscriptionProviders.has(provider?.trim().toLowerCase())) return true;
|
|
6
|
+
if (!baseUrl) return false;
|
|
7
|
+
try {
|
|
8
|
+
const url = new URL(baseUrl);
|
|
9
|
+
const hostname = url.hostname.toLowerCase().replace(/\.$/, "");
|
|
10
|
+
return [
|
|
11
|
+
"token-plan.cn-beijing.maas.aliyuncs.com",
|
|
12
|
+
"token-plan.ap-southeast-1.maas.aliyuncs.com",
|
|
13
|
+
"token-plan-cn.xiaomimimo.com",
|
|
14
|
+
"token-plan-ams.xiaomimimo.com",
|
|
15
|
+
"token-plan-sgp.xiaomimimo.com",
|
|
16
|
+
"coding.dashscope.aliyuncs.com",
|
|
17
|
+
"coding-intl.dashscope.aliyuncs.com"
|
|
18
|
+
].includes(hostname) || ["ark.cn-beijing.volces.com", "ark.ap-southeast.bytepluses.com"].includes(hostname) && decodeURIComponent(url.pathname).startsWith("/api/coding/");
|
|
19
|
+
} catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function getProviderSetupProfile(provider, name = provider, oauth = false, baseUrl) {
|
|
24
|
+
if (profiles[provider]) return {
|
|
25
|
+
id: provider,
|
|
26
|
+
...profiles[provider]
|
|
27
|
+
};
|
|
28
|
+
const interactiveOnly = isInteractiveOnlyProvider(provider, baseUrl);
|
|
29
|
+
const local = Boolean(baseUrl && /^https?:\/\/(localhost|127\.0\.0\.1|\[::1\])(?=[:/]|$)/.test(baseUrl));
|
|
30
|
+
return {
|
|
31
|
+
id: provider,
|
|
32
|
+
brand: {
|
|
33
|
+
"dashscope-cn": "Alibaba Bailian",
|
|
34
|
+
"dashscope-intl": "Alibaba Bailian",
|
|
35
|
+
"qwen-token-plan": "Alibaba Bailian",
|
|
36
|
+
"qwen-token-plan-individual": "Alibaba Bailian",
|
|
37
|
+
xiaomi: "Xiaomi MiMo",
|
|
38
|
+
"xiaomi-token-plan-ams": "Xiaomi MiMo",
|
|
39
|
+
"xiaomi-token-plan-sgp": "Xiaomi MiMo"
|
|
40
|
+
}[provider] ?? name,
|
|
41
|
+
name,
|
|
42
|
+
access: interactiveOnly ? "subscription" : local ? "local" : "api",
|
|
43
|
+
credential: oauth ? "oauth" : local ? "none" : "api-key",
|
|
44
|
+
interactiveOnly
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
var subscriptionProviders, profiles;
|
|
48
|
+
var init_profiles = __esmMin((() => {
|
|
49
|
+
subscriptionProviders = new Set([
|
|
50
|
+
"qwen-token-plan-cn",
|
|
51
|
+
"qwen-token-plan",
|
|
52
|
+
"qwen-token-plan-individual",
|
|
53
|
+
"xiaomi-token-plan-cn",
|
|
54
|
+
"xiaomi-token-plan-ams",
|
|
55
|
+
"xiaomi-token-plan-sgp",
|
|
56
|
+
"zai-coding-cn",
|
|
57
|
+
"zai-coding-global",
|
|
58
|
+
"zhipu-coding-cn",
|
|
59
|
+
"kimi-coding",
|
|
60
|
+
"volcengine-plan",
|
|
61
|
+
"byteplus-plan",
|
|
62
|
+
"stepfun-plan",
|
|
63
|
+
"stepfun-plan-cn",
|
|
64
|
+
"stepfun-plan-intl"
|
|
65
|
+
]);
|
|
66
|
+
profiles = {
|
|
67
|
+
"qwen-token-plan-cn": {
|
|
68
|
+
brand: "Alibaba Bailian",
|
|
69
|
+
name: "Bailian subscription · Beijing",
|
|
70
|
+
access: "subscription",
|
|
71
|
+
credential: "api-key",
|
|
72
|
+
interactiveOnly: true,
|
|
73
|
+
apiKeyUrl: "https://bailian.console.aliyun.com/cn-beijing/subscription/overview"
|
|
74
|
+
},
|
|
75
|
+
"xopc-cloud": {
|
|
76
|
+
brand: "XOPC Cloud",
|
|
77
|
+
name: "XOPC Cloud",
|
|
78
|
+
access: "account",
|
|
79
|
+
credential: "oauth",
|
|
80
|
+
interactiveOnly: false
|
|
81
|
+
},
|
|
82
|
+
"xiaomi-token-plan-cn": {
|
|
83
|
+
brand: "Xiaomi MiMo",
|
|
84
|
+
name: "MiMo Token Plan · China",
|
|
85
|
+
access: "subscription",
|
|
86
|
+
credential: "api-key",
|
|
87
|
+
interactiveOnly: true,
|
|
88
|
+
apiKeyUrl: "https://platform.xiaomimimo.com/"
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
}));
|
|
92
|
+
//#endregion
|
|
93
|
+
init_profiles();
|
|
94
|
+
export { getProviderSetupProfile, init_profiles, isInteractiveOnlyProvider };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { ModelSetupUse } from '@xopcai/gateway-contract';
|
|
2
|
+
import { type Config } from '../../config/schema.js';
|
|
3
|
+
export type VoiceSetupUse = Extract<ModelSetupUse, 'speech' | 'transcription' | 'conversation'>;
|
|
4
|
+
export type SetupVoiceModel = {
|
|
5
|
+
ref: string;
|
|
6
|
+
name: string;
|
|
7
|
+
provider: string;
|
|
8
|
+
model: string;
|
|
9
|
+
voice?: string;
|
|
10
|
+
recommended?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type SetupVoiceState = {
|
|
13
|
+
revision: string;
|
|
14
|
+
current: Partial<Record<VoiceSetupUse, string>>;
|
|
15
|
+
choices: Record<VoiceSetupUse, SetupVoiceModel[]>;
|
|
16
|
+
};
|
|
17
|
+
export declare const voiceSetupUses: VoiceSetupUse[];
|
|
18
|
+
export declare function readSetupVoiceState(provider: string, config: Config): SetupVoiceState;
|
|
19
|
+
/** Voice lives in the existing app configuration; never copy the provider secret. */
|
|
20
|
+
export declare function applySetupVoice(config: Config, assignments: Array<{
|
|
21
|
+
use: VoiceSetupUse;
|
|
22
|
+
model: SetupVoiceModel;
|
|
23
|
+
}>): Config;
|
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
2
|
+
import { voiceSupportsMode } from "../../../packages/realtime-protocol/src/voice-catalog.js";
|
|
3
|
+
import { init_voice } from "../../../packages/realtime-protocol/src/voice.js";
|
|
4
|
+
import { getModelCatalogStore, init_model_catalog_store } from "../model-catalog-store.js";
|
|
5
|
+
import { BAILIAN_PLAN_HOST, BAILIAN_PLAN_OMNI_MODEL, BAILIAN_PLAN_OMNI_VOICE, BAILIAN_PLAN_PROVIDER, BAILIAN_PLAN_STT_MODEL, BAILIAN_PLAN_TTS_MODEL, BAILIAN_PLAN_TTS_VOICE } from "../../voice/token-plan.js";
|
|
6
|
+
import { listSttProvidersForApi } from "../../voice/stt/list-providers.js";
|
|
7
|
+
import { listTtsProvidersForApi } from "../../voice/tts/list-providers.js";
|
|
8
|
+
import { selectPlatformVoice } from "../../voice/platform-settings.js";
|
|
9
|
+
import { createHash } from "node:crypto";
|
|
10
|
+
//#region src/providers/setup/voice.ts
|
|
11
|
+
init_voice();
|
|
12
|
+
init_schema();
|
|
13
|
+
init_model_catalog_store();
|
|
14
|
+
const voiceSetupUses = [
|
|
15
|
+
"transcription",
|
|
16
|
+
"speech",
|
|
17
|
+
"conversation"
|
|
18
|
+
];
|
|
19
|
+
function readSetupVoiceState(provider, config) {
|
|
20
|
+
const tts = config.messages?.tts;
|
|
21
|
+
const stt = config.tools.media?.audio;
|
|
22
|
+
const omni = config.voice?.realtime?.omni;
|
|
23
|
+
const choices = {
|
|
24
|
+
speech: [],
|
|
25
|
+
transcription: [],
|
|
26
|
+
conversation: []
|
|
27
|
+
};
|
|
28
|
+
if (provider === "qwen-token-plan-cn") {
|
|
29
|
+
choices.speech.push({
|
|
30
|
+
ref: `${provider}/${BAILIAN_PLAN_TTS_MODEL}`,
|
|
31
|
+
name: "Qwen Audio 3.0 TTS Plus",
|
|
32
|
+
provider,
|
|
33
|
+
model: BAILIAN_PLAN_TTS_MODEL,
|
|
34
|
+
voice: BAILIAN_PLAN_TTS_VOICE
|
|
35
|
+
});
|
|
36
|
+
choices.transcription.push({
|
|
37
|
+
ref: `${provider}/${BAILIAN_PLAN_STT_MODEL}`,
|
|
38
|
+
name: "Qwen Audio 3.0 ASR Flash",
|
|
39
|
+
provider,
|
|
40
|
+
model: BAILIAN_PLAN_STT_MODEL
|
|
41
|
+
});
|
|
42
|
+
choices.conversation.push({
|
|
43
|
+
ref: `${provider}/${BAILIAN_PLAN_OMNI_MODEL}`,
|
|
44
|
+
name: "Qwen Audio 3.0 Realtime Plus",
|
|
45
|
+
provider,
|
|
46
|
+
model: BAILIAN_PLAN_OMNI_MODEL,
|
|
47
|
+
voice: BAILIAN_PLAN_OMNI_VOICE
|
|
48
|
+
});
|
|
49
|
+
} else if (provider === "xopc-cloud") {
|
|
50
|
+
const source = getModelCatalogStore().getSource(provider);
|
|
51
|
+
for (const model of source?.models ?? []) {
|
|
52
|
+
if (model.availability !== "available" || !model.voice) continue;
|
|
53
|
+
for (const use of voiceSetupUses) {
|
|
54
|
+
const kind = {
|
|
55
|
+
speech: "tts",
|
|
56
|
+
transcription: "stt",
|
|
57
|
+
conversation: "omni"
|
|
58
|
+
}[use];
|
|
59
|
+
if (model.kind !== kind) continue;
|
|
60
|
+
if (!model.voice.modes.includes(use)) continue;
|
|
61
|
+
const voice = use === "transcription" ? void 0 : model.voice.voices.find((voice) => voice.id === model.voice?.defaultVoice && voiceSupportsMode(voice, use))?.id ?? model.voice.voices.find((voice) => voiceSupportsMode(voice, use))?.id;
|
|
62
|
+
if (use !== "transcription" && !voice) continue;
|
|
63
|
+
choices[use].push({
|
|
64
|
+
ref: `${provider}/${model.id}`,
|
|
65
|
+
name: model.name,
|
|
66
|
+
provider,
|
|
67
|
+
model: model.id,
|
|
68
|
+
...voice ? { voice } : {},
|
|
69
|
+
recommended: source?.recommended?.[model.kind] === model.id
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (provider !== "qwen-token-plan-cn" && provider !== "xopc-cloud") for (const [use, entries] of [["transcription", listSttProvidersForApi(config).providers], ["speech", listTtsProvidersForApi(config).providers]]) {
|
|
75
|
+
const entry = entries.find((entry) => entry.id === provider && entry.configured);
|
|
76
|
+
if (!entry) continue;
|
|
77
|
+
const configured = use === "speech" ? tts?.providers?.[provider] : stt?.providers?.[provider];
|
|
78
|
+
const models = entry.models?.length ? entry.models : [{
|
|
79
|
+
id: String(configured?.model ?? "default"),
|
|
80
|
+
name: entry.displayName
|
|
81
|
+
}];
|
|
82
|
+
const currentModel = configured?.model ?? entry.fields.find((field) => field.key === "model")?.defaultValue ?? models[0]?.id;
|
|
83
|
+
const voiceDefault = entry.fields.find((field) => field.key === "voice")?.defaultValue;
|
|
84
|
+
const defaultVoice = typeof voiceDefault === "string" ? voiceDefault : entry.voices?.[0]?.id;
|
|
85
|
+
for (const model of models) choices[use].push({
|
|
86
|
+
ref: `${provider}/${model.id}`,
|
|
87
|
+
name: model.name,
|
|
88
|
+
provider,
|
|
89
|
+
model: model.id,
|
|
90
|
+
...use === "speech" ? { voice: currentModel === model.id && typeof configured?.voice === "string" ? configured.voice : defaultVoice } : {}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
const current = {};
|
|
94
|
+
if (tts?.provider) current.speech = `${tts.provider}/${tts.providers?.[tts.provider]?.model ?? "default"}`;
|
|
95
|
+
if (stt?.provider) current.transcription = `${stt.provider}/${stt.providers?.[stt.provider]?.model ?? "default"}`;
|
|
96
|
+
if (omni) current.conversation = `${omni.provider}/${omni.model}`;
|
|
97
|
+
return {
|
|
98
|
+
current,
|
|
99
|
+
choices,
|
|
100
|
+
revision: createHash("sha256").update(JSON.stringify([
|
|
101
|
+
tts,
|
|
102
|
+
stt,
|
|
103
|
+
config.voice,
|
|
104
|
+
choices
|
|
105
|
+
])).digest("hex")
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
/** Voice lives in the existing app configuration; never copy the provider secret. */
|
|
109
|
+
function applySetupVoice(config, assignments) {
|
|
110
|
+
let next = structuredClone(config);
|
|
111
|
+
for (const { use, model } of assignments) {
|
|
112
|
+
if (model.provider === "xopc-cloud") next = selectPlatformVoice(next, {
|
|
113
|
+
mode: use,
|
|
114
|
+
model: model.model,
|
|
115
|
+
...model.voice ? { voice: model.voice } : {}
|
|
116
|
+
});
|
|
117
|
+
else if (model.provider === "qwen-token-plan-cn") if (use === "speech") {
|
|
118
|
+
const current = next.messages?.tts;
|
|
119
|
+
const previous = current?.providers?.[model.provider];
|
|
120
|
+
const voice = (!previous?.model || previous.model === model.model) && typeof previous?.voice === "string" ? previous.voice : model.voice;
|
|
121
|
+
next.messages ??= {};
|
|
122
|
+
next.messages.tts = {
|
|
123
|
+
enabled: true,
|
|
124
|
+
provider: model.provider,
|
|
125
|
+
trigger: "off",
|
|
126
|
+
maxTextLength: 512,
|
|
127
|
+
timeoutMs: 6e4,
|
|
128
|
+
...current,
|
|
129
|
+
providers: {
|
|
130
|
+
...current?.providers,
|
|
131
|
+
[model.provider]: {
|
|
132
|
+
...previous,
|
|
133
|
+
model: model.model,
|
|
134
|
+
voice
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
next.messages.tts.provider = model.provider;
|
|
139
|
+
next.messages.tts.enabled = true;
|
|
140
|
+
} else if (use === "transcription") {
|
|
141
|
+
next.tools.media ??= {};
|
|
142
|
+
const current = next.tools.media.audio;
|
|
143
|
+
next.tools.media.audio = {
|
|
144
|
+
...current,
|
|
145
|
+
enabled: true,
|
|
146
|
+
provider: model.provider,
|
|
147
|
+
fallback: {
|
|
148
|
+
enabled: false,
|
|
149
|
+
order: []
|
|
150
|
+
},
|
|
151
|
+
models: [{
|
|
152
|
+
provider: model.provider,
|
|
153
|
+
model: model.model,
|
|
154
|
+
capabilities: ["audio"]
|
|
155
|
+
}],
|
|
156
|
+
providers: {
|
|
157
|
+
...current?.providers,
|
|
158
|
+
[model.provider]: {
|
|
159
|
+
...current?.providers?.[model.provider],
|
|
160
|
+
model: model.model
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
} else {
|
|
165
|
+
next = ConfigSchema.parse({
|
|
166
|
+
...next,
|
|
167
|
+
voice: next.voice ?? {}
|
|
168
|
+
});
|
|
169
|
+
next.voice.realtime.enabled = true;
|
|
170
|
+
next.voice.realtime.omni = {
|
|
171
|
+
provider: BAILIAN_PLAN_PROVIDER,
|
|
172
|
+
model: model.model,
|
|
173
|
+
voice: model.voice,
|
|
174
|
+
baseUrl: `${BAILIAN_PLAN_HOST.replace("https:", "wss:")}/api-ws/v1/realtime`,
|
|
175
|
+
instructions: next.voice?.realtime.omni?.instructions ?? "Keep replies conversational and concise. You cannot execute tools."
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
else if (use === "speech") {
|
|
179
|
+
const current = next.messages?.tts;
|
|
180
|
+
next.messages ??= {};
|
|
181
|
+
next.messages.tts = {
|
|
182
|
+
enabled: true,
|
|
183
|
+
trigger: "off",
|
|
184
|
+
maxTextLength: 512,
|
|
185
|
+
timeoutMs: 6e4,
|
|
186
|
+
...current,
|
|
187
|
+
provider: model.provider,
|
|
188
|
+
providers: {
|
|
189
|
+
...current?.providers,
|
|
190
|
+
[model.provider]: {
|
|
191
|
+
...current?.providers?.[model.provider],
|
|
192
|
+
model: model.model,
|
|
193
|
+
...model.voice ? { voice: model.voice } : {}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
next.messages.tts.enabled = true;
|
|
198
|
+
} else if (use === "transcription") {
|
|
199
|
+
next.tools.media ??= {};
|
|
200
|
+
const current = next.tools.media.audio;
|
|
201
|
+
next.tools.media.audio = {
|
|
202
|
+
...current,
|
|
203
|
+
enabled: true,
|
|
204
|
+
provider: model.provider,
|
|
205
|
+
providers: {
|
|
206
|
+
...current?.providers,
|
|
207
|
+
[model.provider]: {
|
|
208
|
+
...current?.providers?.[model.provider],
|
|
209
|
+
model: model.model
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
};
|
|
213
|
+
} else throw new Error("No realtime voice configuration binding for this provider");
|
|
214
|
+
if (use === "speech" && next.messages?.tts) next.messages.tts.fallback = {
|
|
215
|
+
enabled: false,
|
|
216
|
+
order: []
|
|
217
|
+
};
|
|
218
|
+
if (use === "conversation" && next.voice) next.voice.realtime.defaultEngine = "omni";
|
|
219
|
+
if (use === "transcription" && next.tools.media?.audio) {
|
|
220
|
+
next.tools.media.audio.fallback = {
|
|
221
|
+
enabled: false,
|
|
222
|
+
order: []
|
|
223
|
+
};
|
|
224
|
+
next.tools.media.audio.models = [{
|
|
225
|
+
provider: model.provider,
|
|
226
|
+
model: model.model,
|
|
227
|
+
capabilities: ["audio"]
|
|
228
|
+
}];
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
return ConfigSchema.parse(next);
|
|
232
|
+
}
|
|
233
|
+
//#endregion
|
|
234
|
+
export { applySetupVoice, readSetupVoiceState, voiceSetupUses };
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { init_model_usage, modelUsageOriginForCall, withModelUsageOrigin } from "../providers/model-usage.js";
|
|
1
2
|
import { init_sync_provider_auth, resolveProviderApiKeySync } from "../auth/sync-provider-auth.js";
|
|
2
3
|
import { getApiKeySync, init_providers } from "../providers/index.js";
|
|
3
4
|
import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
|
|
@@ -7,12 +8,16 @@ import { Agent } from "@earendil-works/pi-agent-core";
|
|
|
7
8
|
//#region src/scenes/agentExecutor.ts
|
|
8
9
|
init_sync_provider_auth();
|
|
9
10
|
init_providers();
|
|
11
|
+
init_model_usage();
|
|
10
12
|
/** A single reasoning turn over host-selected evidence; no tools or delegation. */
|
|
11
13
|
var SceneAgentExecutor = class {
|
|
12
14
|
constructor(resolveModel) {
|
|
13
15
|
this.resolveModel = resolveModel;
|
|
14
16
|
}
|
|
15
17
|
async execute(input) {
|
|
18
|
+
return withModelUsageOrigin(modelUsageOriginForCall(input.usage), () => this.executeScoped(input));
|
|
19
|
+
}
|
|
20
|
+
async executeScoped(input) {
|
|
16
21
|
input.signal.throwIfAborted();
|
|
17
22
|
const stream = createExtensionAwareStreamFn();
|
|
18
23
|
let calls = 0;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
CREATE TABLE discussion_processing (
|
|
2
|
+
discussion_id TEXT PRIMARY KEY REFERENCES discussion_captures(id) ON DELETE CASCADE,
|
|
3
|
+
run_id TEXT NOT NULL UNIQUE,
|
|
4
|
+
audio_sha256 TEXT,
|
|
5
|
+
base_transcript_revision INTEGER NOT NULL,
|
|
6
|
+
force_audio INTEGER NOT NULL DEFAULT 0 CHECK(force_audio IN (0,1)),
|
|
7
|
+
retry_stage TEXT,
|
|
8
|
+
attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
next_attempt_at INTEGER,
|
|
10
|
+
lease_owner TEXT,
|
|
11
|
+
lease_until INTEGER
|
|
12
|
+
);
|
|
13
|
+
CREATE TABLE discussion_transcription_checkpoints (
|
|
14
|
+
run_id TEXT NOT NULL REFERENCES discussion_processing(run_id) ON DELETE CASCADE,
|
|
15
|
+
started_at_ms REAL NOT NULL,
|
|
16
|
+
ended_at_ms REAL NOT NULL,
|
|
17
|
+
result_json TEXT NOT NULL,
|
|
18
|
+
created_at INTEGER NOT NULL,
|
|
19
|
+
PRIMARY KEY(run_id, started_at_ms, ended_at_ms)
|
|
20
|
+
);
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
CREATE TABLE discussion_annotations (
|
|
2
|
+
discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE,
|
|
3
|
+
id TEXT NOT NULL,
|
|
4
|
+
kind TEXT NOT NULL CHECK(kind IN ('highlight','question','note')),
|
|
5
|
+
text TEXT NOT NULL,
|
|
6
|
+
anchor_json TEXT NOT NULL,
|
|
7
|
+
revision INTEGER NOT NULL,
|
|
8
|
+
deleted INTEGER NOT NULL DEFAULT 0,
|
|
9
|
+
created_at INTEGER NOT NULL,
|
|
10
|
+
updated_at INTEGER NOT NULL,
|
|
11
|
+
PRIMARY KEY(discussion_id,id)
|
|
12
|
+
);
|
|
13
|
+
CREATE TABLE discussion_media_timeline (
|
|
14
|
+
discussion_id TEXT PRIMARY KEY REFERENCES discussion_captures(id) ON DELETE CASCADE,
|
|
15
|
+
audio_sha256 TEXT NOT NULL,
|
|
16
|
+
timeline_json TEXT NOT NULL
|
|
17
|
+
);
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
CREATE TABLE discussion_chapter_progress (
|
|
2
|
+
discussion_id TEXT NOT NULL REFERENCES discussion_captures(id) ON DELETE CASCADE,
|
|
3
|
+
source_sha256 TEXT NOT NULL,
|
|
4
|
+
transcript_revision INTEGER NOT NULL,
|
|
5
|
+
transcript_sha256 TEXT NOT NULL,
|
|
6
|
+
input_hash TEXT NOT NULL,
|
|
7
|
+
position INTEGER NOT NULL,
|
|
8
|
+
chapter_json TEXT NOT NULL,
|
|
9
|
+
PRIMARY KEY(discussion_id, source_sha256, transcript_revision, transcript_sha256, input_hash)
|
|
10
|
+
);
|
|
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
|
|
|
3
3
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
4
4
|
export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
|
|
5
5
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
6
|
-
export declare const XOPC_DB_SCHEMA_VERSION =
|
|
6
|
+
export declare const XOPC_DB_SCHEMA_VERSION = 255;
|
|
7
7
|
export declare function resolveMigrationsDir(override?: string): string;
|
|
8
8
|
/**
|
|
9
9
|
* Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
|
|
@@ -59,7 +59,7 @@ function applySingleMigration(db, migration, discardOldScenes = false) {
|
|
|
59
59
|
function applyPendingMigrations(db, options = {}) {
|
|
60
60
|
db.function("xopc_memory_search_text", { deterministic: true }, (value) => memorySearchText(String(value ?? "")));
|
|
61
61
|
db.function("xopc_operation_id", () => currentOperationId() ?? null);
|
|
62
|
-
const targetVersion = options.targetVersion ??
|
|
62
|
+
const targetVersion = options.targetVersion ?? 255;
|
|
63
63
|
let currentVersion = readSchemaVersion(db);
|
|
64
64
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
65
65
|
if (!options.migrationsDir && currentVersion < 165) throw new DatabaseSchemaTooOldError(currentVersion, 165);
|
|
@@ -97,7 +97,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
97
97
|
}
|
|
98
98
|
/** Inspect schema version without mutating the database. */
|
|
99
99
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
100
|
-
const appVersion = options.targetVersion ??
|
|
100
|
+
const appVersion = options.targetVersion ?? 255;
|
|
101
101
|
const dbVersion = readSchemaVersion(db);
|
|
102
102
|
if (dbVersion > appVersion) return {
|
|
103
103
|
dbVersion,
|
|
@@ -140,7 +140,7 @@ var init_runner = __esmMin((() => {
|
|
|
140
140
|
init_errors();
|
|
141
141
|
log = createLogger("Sqlite:Migrations");
|
|
142
142
|
XOPC_DB_BASELINE_SCHEMA_VERSION = 165;
|
|
143
|
-
XOPC_DB_SCHEMA_VERSION =
|
|
143
|
+
XOPC_DB_SCHEMA_VERSION = 255;
|
|
144
144
|
}));
|
|
145
145
|
//#endregion
|
|
146
146
|
init_runner();
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { init_connection, isXopcDatabaseOpen } from "../storage/sqlite/connection.js";
|
|
4
|
+
import { init_scenario_registry, resolveAiUsageScenario } from "./scenario-registry.js";
|
|
4
5
|
import { startObservation } from "../observability/runtime.js";
|
|
5
6
|
import { finishAiUsageEvent, insertAiUsageEvent } from "../storage/sqlite/ai-usage-repository.js";
|
|
6
7
|
import { classifyCostSource, dollarsToMicrousd, pricingSnapshot } from "./cost.js";
|
|
7
|
-
import { resolveAiUsageScenario } from "./scenario-registry.js";
|
|
8
8
|
import { reconcileCloudUsageReceipt, withUsageReceiptContext } from "./cloud-receipts.js";
|
|
9
9
|
import { randomUUID } from "node:crypto";
|
|
10
10
|
//#region src/usage/recorder.ts
|
|
11
11
|
init_connection();
|
|
12
12
|
init_logger();
|
|
13
|
+
init_scenario_registry();
|
|
13
14
|
const log = createLogger("AiUsage");
|
|
14
15
|
function continuesAfterTool(messages) {
|
|
15
16
|
for (let index = messages.length - 1; index >= 0; index -= 1) {
|