@xopcai/xopc 0.0.210 → 0.0.213
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/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-JLmEb1p0.js → activity-store-Xw-pOm9A.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CI1zQfzY.js → agent-avatar-dicebear-Ca1bciiK.js} +1 -1
- package/dist/gateway/static/root/assets/agents-DD3TqNrC.js +68 -0
- package/dist/gateway/static/root/assets/{api-C6MmWfcb.js → api-CZK-lRew.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-Cd02GGpV.js → app-management-settings-panel-BLFIG09j.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-Db-h2I3G.js → appearance-settings-BsTWUq1i.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-cJkDKn72.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-CMHzJT2a.js → archive-plugin-B9LsFfEx.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BzhI2LoH.js → attachment-load-CsWiFfmN.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-CbjU2e75.js +1 -0
- package/dist/gateway/static/root/assets/automations-workspace-C4xyo0c4.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DsUeHvZO.js → binary-plugins-DbqhT_JB.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-CFfsIeZ4.js → block-editor-BGpHwxZ5.js} +4 -4
- package/dist/gateway/static/root/assets/browser-settings-page-CrhpQl-e.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-BiWghvJ0.js → browser-workflow-inputs-BXlon_hL.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-DPLdT6Zn.js → browser-workflows-page-B3BBDM_r.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-B9MoPW9u.js +7 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-CTxGFvsS.js → capability-presets-api-BqvMm6UW.js} +1 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-BmwldV9R.js +3 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-BklVUOxC.js → channel-recipient-api-9uca5kDa.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-CwLqWcy_.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-DeBw3du9.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-0F4Jmma2.js → chat-terminal-dock-DJjYT3WX.js} +2 -2
- package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-BMhrPKJC.js → chunk-KS7C4IRE-BaASWQor.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-BvIZ51ty.js → connectors-api-XCLfuDrN.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-CVkGtcMS.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-BHmwaMbO.js → cron-expression-DzQN7zBR.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-fj_pPCv5.js → date-picker-B-r5O5qd.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-DsWvwOv-.js → dependency-picker-Ch2XBU2s.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-mjkF0Xxh.js → desktop-pet-BdjX8jde.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-ClwUpRYu.js → desktop-pet-settings-CzjjgMMn.js} +1 -1
- package/dist/gateway/static/root/assets/directory-picker-path-field-BCTgGTk4.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DC69wplH.js → extension-debug-page-6OGgOucD.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DCtk6zdJ.js → extension-page-Cf6MUfCF.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-Bkm4zzv-.js → extension-settings-page-pSY_ZvQZ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-Dr_NQt7v.js → gateway-config-api-CFJMng9v.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-CEfv8N1J.js → gateway-config-swr-DpiY6aub.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-aQYxNePf.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-B8hebJ7s.js → gateway-startup-retry-BZ_6ChP4.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-CI33q9i1.js +1 -0
- package/dist/gateway/static/root/assets/home-page-CAIaWs6r.js +1 -0
- package/dist/gateway/static/root/assets/image-generation-api-DPndEWOU.js +1 -0
- package/dist/gateway/static/root/assets/index-BhstAl5i.js +108 -0
- package/dist/gateway/static/root/assets/index-DQzjgIkQ.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-DCQvf05d.js → keyboard-shortcuts-settings-CbLJRGXR.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-BqFnCaKT.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-B3Ugd0my.js → local-apps-page-Crf6c3SK.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-hDBVeG3G.js → locale-store-BYSRjM6g.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-nXdF3wOT.js → logs-page-BpfLQWex.js} +2 -2
- package/dist/gateway/static/root/assets/{management-settings-C-S5Llq3.js → management-settings-mxyYWKgM.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-DuVq37Uh.js → markdown-split-kZaPrUTM.js} +1 -1
- package/dist/gateway/static/root/assets/markdown-view-DD_PgVue.css +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-D8eO_6h3.js → markdown-view-DlsczsQ1.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-C1V6pkX3.js → media-plugins-Dk67jaG6.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DyM8OOVG.js +3 -0
- package/dist/gateway/static/root/assets/notes-api-DaeeQw8A.js +1 -0
- package/dist/gateway/static/root/assets/{notes-page-Dn71ZV8c.js → notes-page-CQDzw8fX.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-BYiROmRJ.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-B5a5aSoS.js → page-tabs-C4UkhX2U.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-5041AIBX.js → preview-open-alternatives-nzcjh6y0.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-7UkouFQU.js → product-open-page-3FvW5cHm.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-p45i1sMj.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Y9yXB4DX.js +1 -0
- package/dist/gateway/static/root/assets/registry-api-Bu6OGEY2.js +2 -0
- package/dist/gateway/static/root/assets/remote-access-hub-CNsGY0VS.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DvaXzHYS.js → runtime-tools-settings-panel-CVqPSfUb.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-Dlxl_5X0.js → schema-form-Dz6eZpqv.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-BAtpgb1t.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-pgBQ21Oe.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-CSaiuuer.js → settings-form-section-BaWFAZv4.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-H3mJwt3r.js → settings-loading-skeleton-BWmdZfNg.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-Cs7zA4BS.js → settings-page-Btcb-Dc8.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BNllZUFP.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-Bdpw5m7M.js → share-preview-page-CGzY3S0N.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CncwbTHY.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CcW2dhSW.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-Bup3Lg1Z.js → skills-page-Bi2IWpU0.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-D22ORR21.js → skills-page.utils-BancvwN2.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-GmtWsfjB.js → system-settings-panel-CihjIzWx.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-SSNFtY-d.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-CtY8RwMX.js → theme-store-D1_t_31B.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-C2aOdlEA.js → typed-models-lib-C2LhiQq5.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-DOj5i8d_.js → use-autosave-tf_8rxAK.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-BnPTFEar.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-5WfurWYa.js → voice-api-key-field-DN-y7Zfe.js} +1 -1
- package/dist/gateway/static/root/assets/work-discovery-overlay-bqqH4aZ9.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-bBA8LinI.js → workflow-run-setup-panel-2H33iXOB.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-BnfxRf1q.js +5 -0
- package/dist/gateway/static/root/index.html +13 -11
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +1 -1
- package/dist/src/agent/image/generation/providers/xopc-cloud.js +2 -1
- package/dist/src/agent/image/tool-model-config.js +15 -9
- package/dist/src/agent/memory/builtin-provider.js +0 -1
- package/dist/src/agent/memory/create-memory-manager.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +23 -7
- package/dist/src/agent-runtime/index.js +1 -1
- package/dist/src/agent-runtime/runtime-profile.js +1 -1
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/capabilities/readiness/from-config.d.ts +10 -0
- package/dist/src/capabilities/readiness/from-config.js +128 -0
- package/dist/src/capabilities/readiness/index.d.ts +3 -0
- package/dist/src/capabilities/readiness/index.js +3 -0
- package/dist/src/capabilities/readiness/planner.d.ts +3 -0
- package/dist/src/capabilities/readiness/planner.js +56 -0
- package/dist/src/capabilities/readiness/types.d.ts +35 -0
- package/dist/src/capabilities/readiness/types.js +1 -0
- package/dist/src/cli/commands/agent.js +9 -0
- package/dist/src/cli/commands/auth.js +4 -3
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/models.js +2 -1
- package/dist/src/cli/commands/onboard/model.d.ts +3 -21
- package/dist/src/cli/commands/onboard/model.js +10 -86
- package/dist/src/cli/commands/tunnel.js +3 -3
- package/dist/src/cli/utils/oauth-login.d.ts +2 -0
- package/dist/src/cli/utils/oauth-login.js +9 -1
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/paths-state.d.ts +2 -0
- package/dist/src/config/paths-state.js +5 -1
- package/dist/src/config/paths.d.ts +1 -1
- package/dist/src/config/paths.js +2 -2
- package/dist/src/config/schema.js +1 -1
- package/dist/src/connectors/composio-managed-client.d.ts +60 -0
- package/dist/src/connectors/composio-managed-client.js +135 -0
- package/dist/src/connectors/composio-managed-events.d.ts +41 -0
- package/dist/src/connectors/composio-managed-events.js +105 -0
- package/dist/src/connectors/composio-sessions.d.ts +3 -1
- package/dist/src/connectors/composio-sessions.js +15 -8
- package/dist/src/connectors/composio.js +10 -4
- package/dist/src/connectors/connected-source-cursor.d.ts +9 -0
- package/dist/src/connectors/connected-source-cursor.js +30 -0
- package/dist/src/connectors/connected-source-ingestion.js +128 -65
- package/dist/src/connectors/connected-source-normalizers.d.ts +1 -0
- package/dist/src/connectors/connected-source-normalizers.js +33 -2
- package/dist/src/connectors/connected-source-sanitization.d.ts +1 -0
- package/dist/src/connectors/connected-source-sanitization.js +21 -0
- package/dist/src/connectors/connector-identity.js +10 -2
- package/dist/src/connectors/content-enrichment.d.ts +29 -0
- package/dist/src/connectors/content-enrichment.js +273 -0
- package/dist/src/connectors/learning-coordinator.js +1 -2
- package/dist/src/connectors/learning-recipes.js +30 -33
- package/dist/src/connectors/runtime-adapter-registry.js +2 -2
- package/dist/src/discussions/live-worker.d.ts +1 -0
- package/dist/src/discussions/live-worker.js +7 -1
- package/dist/src/discussions/repository.js +11 -1
- package/dist/src/discussions/sealer.d.ts +1 -1
- package/dist/src/discussions/sealer.js +16 -7
- package/dist/src/discussions/service.js +6 -2
- package/dist/src/discussions/transcript.d.ts +2 -0
- package/dist/src/discussions/transcript.js +42 -3
- package/dist/src/discussions/types.d.ts +4 -0
- package/dist/src/extensions/install.d.ts +10 -0
- package/dist/src/extensions/install.js +111 -14
- package/dist/src/extensions/loader.js +22 -18
- package/dist/src/gateway/hono/app.js +8 -3
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/middleware/auth.js +2 -2
- package/dist/src/gateway/hono/middleware/logger.js +1 -1
- package/dist/src/gateway/hono/middleware/strict-rate-limit.d.ts +4 -0
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js +9 -2
- package/dist/src/gateway/hono/oauth-async.d.ts +11 -5
- package/dist/src/gateway/hono/oauth-async.js +29 -16
- package/dist/src/gateway/hono/oauth.d.ts +1 -3
- package/dist/src/gateway/hono/oauth.js +22 -22
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +10 -3
- package/dist/src/gateway/hono/routes/deps.d.ts +1 -0
- package/dist/src/gateway/hono/routes/discussions.js +2 -1
- package/dist/src/gateway/hono/routes/exposure.js +1 -1
- package/dist/src/gateway/hono/routes/home.d.ts +1 -1
- package/dist/src/gateway/hono/routes/home.js +2 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +2 -1
- package/dist/src/gateway/hono/routes/models.js +59 -5
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/tunnel.js +3 -3
- package/dist/src/gateway/hono/routes/understanding-sources.js +29 -0
- package/dist/src/gateway/hono/routes/voice.d.ts +1 -2
- package/dist/src/gateway/hono/routes/voice.js +16 -35
- package/dist/src/gateway/hono/routes/workflows.js +69 -0
- package/dist/src/gateway/index.js +2 -2
- package/dist/src/gateway/rate-limit/buckets.d.ts +3 -0
- package/dist/src/gateway/rate-limit/buckets.js +12 -0
- package/dist/src/gateway/runtime-config.js +2 -2
- package/dist/src/gateway/security/audit.js +2 -2
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/session-input-coordinator.js +1 -2
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +37 -7
- package/dist/src/knowledge/connected-understanding-pipeline.d.ts +1 -1
- package/dist/src/knowledge/connected-understanding-pipeline.js +74 -25
- package/dist/src/knowledge/ingestion-service.js +33 -15
- package/dist/src/knowledge/types.d.ts +2 -0
- package/dist/src/media-understanding/audio-transcription-runner.d.ts +2 -0
- package/dist/src/media-understanding/audio-transcription-runner.js +3 -1
- package/dist/src/media-understanding/runner.js +3 -1
- package/dist/src/media-understanding/types.d.ts +2 -0
- package/dist/src/notes/note-attachment-sync.js +1 -1
- package/dist/src/notes/service.d.ts +1 -0
- package/dist/src/notes/service.js +2 -1
- package/dist/src/notes/types.d.ts +2 -0
- package/dist/src/providers/model-catalog-persistence.d.ts +9 -0
- package/dist/src/providers/model-catalog-persistence.js +172 -0
- package/dist/src/providers/model-catalog-ranking.d.ts +2 -0
- package/dist/src/providers/model-catalog-ranking.js +17 -0
- package/dist/src/providers/model-catalog-store.d.ts +9 -57
- package/dist/src/providers/model-catalog-store.js +24 -5
- package/dist/src/providers/model-catalog-sync-service.d.ts +3 -3
- package/dist/src/providers/model-catalog-sync-service.js +12 -7
- package/dist/src/providers/model-catalog-types.d.ts +60 -0
- package/dist/src/providers/model-catalog-types.js +1 -0
- package/dist/src/providers/provider-auth-service.d.ts +1 -0
- package/dist/src/providers/provider-auth-service.js +3 -0
- package/dist/src/providers/provider-disconnect-core.d.ts +11 -0
- package/dist/src/providers/provider-disconnect-core.js +35 -0
- package/dist/src/providers/provider-disconnect.d.ts +3 -0
- package/dist/src/providers/provider-disconnect.js +11 -0
- package/dist/src/providers/xopc-cloud-catalog-coordinator.d.ts +56 -0
- package/dist/src/providers/xopc-cloud-catalog-coordinator.js +182 -0
- package/dist/src/providers/xopc-cloud-model-source.d.ts +6 -10
- package/dist/src/providers/xopc-cloud-model-source.js +49 -27
- package/dist/src/storage/sqlite/knowledge-repository.d.ts +1 -0
- package/dist/src/storage/sqlite/knowledge-repository.js +4 -0
- package/dist/src/storage/sqlite/migrations/124_workflow_context_snapshots.sql +15 -0
- package/dist/src/storage/sqlite/migrations/125_project_workflow_presets.sql +12 -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/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/user-context-quality-repository.d.ts +8 -0
- package/dist/src/storage/sqlite/user-context-quality-repository.js +21 -1
- package/dist/src/tasks/home-query-service.d.ts +12 -127
- package/dist/src/tasks/home-query-service.js +73 -271
- package/dist/src/tasks/index.js +2 -2
- package/dist/src/tui/backends/embedded-backend.js +11 -3
- package/dist/src/tui/tui-oauth-login.js +5 -0
- package/dist/src/tui/xopc-tui-keybindings.d.ts +2 -2
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/user-context/sources/activity-clustering.js +30 -117
- package/dist/src/user-context/sources/index.d.ts +1 -0
- package/dist/src/user-context/sources/index.js +2 -1
- package/dist/src/user-context/sources/signal-clustering.d.ts +18 -0
- package/dist/src/user-context/sources/signal-clustering.js +131 -0
- package/dist/src/voice/audio/normalize.d.ts +18 -0
- package/dist/src/voice/audio/normalize.js +175 -0
- package/dist/src/voice/language-profile.d.ts +1 -4
- package/dist/src/voice/language-profile.js +2 -25
- package/dist/src/voice/local/runtime-client.d.ts +2 -0
- package/dist/src/voice/local/runtime-client.js +20 -1
- package/dist/src/voice/local/runtime-worker.js +7 -13
- package/dist/src/voice/local/wav.d.ts +3 -0
- package/dist/src/voice/local/wav.js +11 -5
- package/dist/src/voice/stt/availability.d.ts +1 -4
- package/dist/src/voice/stt/availability.js +3 -15
- package/dist/src/voice/stt/config.js +1 -0
- package/dist/src/voice/stt/factory.js +23 -0
- package/dist/src/voice/stt/index.d.ts +1 -0
- package/dist/src/voice/stt/index.js +2 -2
- package/dist/src/voice/stt/list-providers.js +1 -1
- package/dist/src/voice/stt/providers/local-transcription.js +7 -3
- package/dist/src/voice/stt/providers/xopc-cloud-transcription.js +3 -1
- package/dist/src/voice/stt/transcribe-core.d.ts +5 -1
- package/dist/src/voice/stt/transcribe-core.js +13 -5
- package/dist/src/voice/stt/types.d.ts +2 -0
- package/dist/src/voice/tts/factory.d.ts +1 -1
- package/dist/src/voice/tts/factory.js +23 -1
- package/dist/src/voice/tts/merge-config.js +5 -3
- package/dist/src/voice/tts/providers/xopc-cloud-speech.js +3 -1
- package/dist/src/voice/tts/types.d.ts +2 -0
- package/dist/src/voice/tts/types.js +4 -2
- package/dist/src/work-discovery/evaluation.d.ts +23 -0
- package/dist/src/work-discovery/evaluation.js +18 -1
- package/dist/src/work-discovery/index.js +2 -2
- package/dist/src/work-discovery/service.js +6 -8
- package/dist/src/work-discovery/types.d.ts +2 -0
- package/dist/src/workflows/context/workflow-context-snapshot-repository.d.ts +21 -0
- package/dist/src/workflows/context/workflow-context-snapshot-repository.js +40 -0
- package/dist/src/workflows/context/workflow-context.d.ts +18 -0
- package/dist/src/workflows/context/workflow-context.js +159 -0
- package/dist/src/workflows/domain/run.d.ts +10 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +1 -0
- package/dist/src/workflows/engine/workflow-engine.js +2 -0
- package/dist/src/workflows/project-presets/project-workflow-preset-repository.d.ts +20 -0
- package/dist/src/workflows/project-presets/project-workflow-preset-repository.js +38 -0
- package/dist/src/workflows/service/workflow-run-service.d.ts +1 -0
- package/dist/src/workflows/service/workflow-run-service.js +107 -22
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +1 -0
- package/dist/src/workflows/service/workflow-writeback-service.d.ts +9 -0
- package/dist/src/workflows/service/workflow-writeback-service.js +106 -0
- package/package.json +9 -8
- package/dist/gateway/static/root/assets/agents-DqGMj3QJ.js +0 -68
- package/dist/gateway/static/root/assets/apps-page-BT7F4WBI.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-CwOXGV9z.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-CyRLhCod.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-jRKcS7lZ.js +0 -7
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-B3bKdtwU.js +0 -3
- package/dist/gateway/static/root/assets/channels-settings-yZBWH02s.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-C3zlimZd.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-OX4KvUkA.js +0 -2
- package/dist/gateway/static/root/assets/directory-picker-path-field-OkqRFyRL.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-V1XVxjHa.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-CWUBAQrE.js +0 -1
- package/dist/gateway/static/root/assets/home-page-D57cYRd3.js +0 -1
- package/dist/gateway/static/root/assets/index-DJ7HSgKs.js +0 -85
- package/dist/gateway/static/root/assets/index-PNBFdxHb.css +0 -2
- package/dist/gateway/static/root/assets/local-app-workbench-page-BbAiMZE1.js +0 -2
- package/dist/gateway/static/root/assets/markdown-view-B12xeflb.css +0 -1
- package/dist/gateway/static/root/assets/messages-1qg_hOOd.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-BYPoZeRw.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-D27nOKbo.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CdB5cJJ-.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DFoZ3UNS.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-C1cbIcJ7.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DnXRlQXS.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-CwgMODfJ.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-hlUgIkrp.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DR31B_Gz.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-CTKDpxhf.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-keJJYpix.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-overlay-D5_MH3n3.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-BcvBiebt.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-Cz2VpWdj.js +0 -5
- package/dist/src/voice/local/runtime-dispatcher.d.ts +0 -9
- package/dist/src/voice/local/runtime-dispatcher.js +0 -20
package/dist/src/config/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ENV_VARS, XOPC_DB_FILENAME, resolveHomeDir, resolveStateDir, resolveXopcDatabasePath } from "./paths-state.js";
|
|
1
|
+
import { ENV_VARS, XOPC_DB_FILENAME, resolveHomeDir, resolveStateDir, resolveXopcCloudCatalogCachePath, resolveXopcDatabasePath } from "./paths-state.js";
|
|
2
2
|
import { TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema } from "../../extensions/telegram/src/config-schema.js";
|
|
3
3
|
import { WeixinAccountConfigSchema, WeixinConfigSchema } from "../../extensions/weixin/src/config-schema.js";
|
|
4
4
|
import { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigSchema, ConnectorsConfigSchema, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelsDevConfigSchema, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, RuntimeToolsConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, init_schema, parseModelRef } from "./schema.js";
|
|
@@ -27,4 +27,4 @@ init_workspace_path();
|
|
|
27
27
|
init_models_json();
|
|
28
28
|
init_resolve_config_value();
|
|
29
29
|
//#endregion
|
|
30
|
-
export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigHotReloader, ConfigSchema, ConnectorsConfigSchema, CustomModelSchema, ENV_VARS, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, RuntimeToolsConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VercelGatewayRoutingSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, XOPC_DB_FILENAME, applyConfigOverrides, buildReloadPlan, canonicalizeConfiguredMcpServer, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getConfigOverrides, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, hasBundledExtensionManifest, isKnownCliMcpTypeAlias, listAgentProfileMarkdownDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeConfiguredMcpServers, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, resetConfigOverrides, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcDatabasePath, resolveXopcMcpTransportAlias, saveConfig, saveModelsJson, setConfigOverride, testApiKeyResolution, thinkLevelToNumber, unsetConfigOverride, validateModelsConfig };
|
|
30
|
+
export { AgentImageGenerationModelSchema, AgentModelRefSchema, AgentModelsSchema, AgentTypedModelRoleSchema, AgentsConfigSchema, BASE_RELOAD_RULES, BindingMatchSchema, BindingRuleSchema, BindingsConfigSchema, BrowserConfigSchema, ChannelsConfigSchema, CommandsConfigSchema, ConfigHotReloader, ConfigSchema, ConnectorsConfigSchema, CustomModelSchema, ENV_VARS, ExperimentalConfigSchema, ExtensionSecurityConfigSchema, ExtensionSlotsConfigSchema, ExtensionsConfigSchema, FILENAMES, GatewayAuthRateLimitSchema, GatewayAuthSchema, GatewayBindModeSchema, GatewayChannelConnectDeferModeSchema, GatewayConfigSchema, GatewayModeSchema, GatewayRemoteSchema, GatewaySecuritySchema, GatewayTailscaleConsentSchema, GatewayTailscaleSchema, GatewayTlsSchema, GatewayTrustedProxySchema, GatewayWebchatConfigSchema, HeartbeatConfigSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, McpConfigSchema, McpServerSchema, MediaUnderstandingCapabilitiesSchema, MediaUnderstandingModelSchema, MessagesConfigSchema, ModelCatalogConfigSchema, ModelOverrideSchema, ModelsDevConfigSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProfileManager, ProviderAuthConfigSchema, ProviderAzureConfigSchema, ProviderConfigSchema, ProviderRequestOverridesSchema, ProvidersConfigSchema, RuntimeToolsConfigSchema, STTConfigSchema, STTFallbackConfigSchema, STTProviderConfigSchema, SearchProviderEntrySchema, SessionConfigSchema, SessionDmScopeSchema, SessionResetByTypeSchema, SessionResetConfigSchema, SessionResetModeSchema, SessionScopeSchema, SessionStorageConfigSchema, TTSConfigSchema, TTSEdgeConfigSchema, TTSFallbackConfigSchema, TTSModelOverridesConfigSchema, TTSProviderConfigSchema, TTSSummarizationConfigSchema, TelegramAccountConfigSchema, TelegramConfigSchema, TelegramGroupConfigSchema, TelegramTopicConfigSchema, ToolsConfigSchema, ToolsMediaAudioConfigSchema, ToolsMediaConfigSchema, TuiConfigSchema, TunnelConfigSchema, TunnelConsentSchema, UpdateAutoConfigSchema, UpdateConfigSchema, VercelGatewayRoutingSchema, VoiceConfigSchema, VoiceRefinementConfigSchema, WORKSPACE_FILES, WebSearchConfigSchema, WebToolsConfigSchema, WebsiteBlocklistSchema, WeixinAccountConfigSchema, WeixinConfigSchema, WorkspaceConfigSchema, WorkspaceImportConfigSchema, XOPC_DB_FILENAME, applyConfigOverrides, buildReloadPlan, canonicalizeConfiguredMcpServer, clearConfigValueCache, createProfile, deleteProfile, diffConfigPaths, existsSync, expandWorkspacePathString, extractProfileAgentId, formatThinkingLevels, getAgentDefaultImageGenerationModelConfig, getAgentDefaultImageModelConfig, getAgentDefaultModelRef, getAllowedCommands, getCacheStats, getConfigOverrides, getCurrentProfile, getDefaultModelValues, resolveModelsJsonPath as getModelsJsonPath, getProfileManager, getProfileNameFromDir, getSwitchCommand, getWorkspacePath, hasBundledExtensionManifest, isKnownCliMcpTypeAlias, listAgentProfileMarkdownDirs, listAgentWorkspaceDirs, listProfiles, listThinkingLevels, loadConfig, loadModelsJson, matchReloadRule, modelsJsonExists, normalizeConfiguredMcpServers, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, normalizeWorkspaceDir, parseModelRef, resetConfigOverrides, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveConfigValue, resolveCredentialsDir, resolveDefaultAgentWorkspaceDir, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHeaders, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveProfileStateDir, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceRoot, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcCloudCatalogCachePath, resolveXopcDatabasePath, resolveXopcMcpTransportAlias, saveConfig, saveModelsJson, setConfigOverride, testApiKeyResolution, thinkLevelToNumber, unsetConfigOverride, validateModelsConfig };
|
|
@@ -20,3 +20,5 @@ export declare function resolveUpdateLockPath(env?: NodeJS.ProcessEnv): string;
|
|
|
20
20
|
/** Primary SQLite state database (`~/.xopc/xopc.db`). */
|
|
21
21
|
export declare const XOPC_DB_FILENAME = "xopc.db";
|
|
22
22
|
export declare function resolveXopcDatabasePath(env?: NodeJS.ProcessEnv): string;
|
|
23
|
+
/** Durable last-known-good XOPC Cloud model catalog. */
|
|
24
|
+
export declare function resolveXopcCloudCatalogCachePath(env?: NodeJS.ProcessEnv): string;
|
|
@@ -20,6 +20,10 @@ function resolveUpdateLockPath(env = process.env) {
|
|
|
20
20
|
function resolveXopcDatabasePath(env = process.env) {
|
|
21
21
|
return join(resolveStateDir(env), XOPC_DB_FILENAME);
|
|
22
22
|
}
|
|
23
|
+
/** Durable last-known-good XOPC Cloud model catalog. */
|
|
24
|
+
function resolveXopcCloudCatalogCachePath(env = process.env) {
|
|
25
|
+
return join(resolveStateDir(env), "cache", "model-catalog", "xopc-cloud-v1.json");
|
|
26
|
+
}
|
|
23
27
|
var ENV_VARS, XOPC_DB_FILENAME;
|
|
24
28
|
var init_paths_state = __esmMin((() => {
|
|
25
29
|
ENV_VARS = {
|
|
@@ -39,4 +43,4 @@ var init_paths_state = __esmMin((() => {
|
|
|
39
43
|
}));
|
|
40
44
|
//#endregion
|
|
41
45
|
init_paths_state();
|
|
42
|
-
export { ENV_VARS, XOPC_DB_FILENAME, init_paths_state, resolveHomeDir, resolveStateDir, resolveUpdateCheckStatePath, resolveUpdateLockPath, resolveXopcDatabasePath };
|
|
46
|
+
export { ENV_VARS, XOPC_DB_FILENAME, init_paths_state, resolveHomeDir, resolveStateDir, resolveUpdateCheckStatePath, resolveUpdateLockPath, resolveXopcCloudCatalogCachePath, resolveXopcDatabasePath };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'fs';
|
|
2
2
|
import type { Config } from './schema.js';
|
|
3
|
-
export { ENV_VARS, resolveHomeDir, resolveStateDir, resolveXopcDatabasePath, XOPC_DB_FILENAME } from './paths-state.js';
|
|
3
|
+
export { ENV_VARS, resolveHomeDir, resolveStateDir, resolveXopcCloudCatalogCachePath, resolveXopcDatabasePath, XOPC_DB_FILENAME, } from './paths-state.js';
|
|
4
4
|
export { resolveDefaultAgentWorkspaceDir } from './workspace-defaults.js';
|
|
5
5
|
export { resolveAgentWorkspaceDir, resolveAgentDir as resolveAgentDirFromConfig, resolveAgentHomeDir as resolveAgentHomeDirFromConfig, } from '../agent/agent-scope.js';
|
|
6
6
|
export declare const FILENAMES: {
|
package/dist/src/config/paths.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { ENV_VARS, XOPC_DB_FILENAME, init_paths_state, resolveHomeDir, resolveStateDir, resolveXopcDatabasePath } from "./paths-state.js";
|
|
2
|
+
import { ENV_VARS, XOPC_DB_FILENAME, init_paths_state, resolveHomeDir, resolveStateDir, resolveXopcCloudCatalogCachePath, resolveXopcDatabasePath } from "./paths-state.js";
|
|
3
3
|
import { init_workspace_defaults, resolveDefaultAgentWorkspaceDir } from "./workspace-defaults.js";
|
|
4
4
|
import { init_agent_scope, resolveAgentDir as resolveAgentDir$1, resolveAgentHomeDir as resolveAgentHomeDir$1, resolveAgentProfileDir as resolveAgentProfileDir$1, resolveAgentProfileMarkdownPath as resolveAgentProfileMarkdownPath$1, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
5
5
|
import { dirname, join, sep } from "path";
|
|
@@ -320,4 +320,4 @@ var init_paths = __esmMin((() => {
|
|
|
320
320
|
}));
|
|
321
321
|
//#endregion
|
|
322
322
|
init_paths();
|
|
323
|
-
export { ENV_VARS, FILENAMES, WORKSPACE_FILES, XOPC_DB_FILENAME, existsSync, hasBundledExtensionManifest, init_paths, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveDefaultAgentWorkspaceDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcDatabasePath };
|
|
323
|
+
export { ENV_VARS, FILENAMES, WORKSPACE_FILES, XOPC_DB_FILENAME, existsSync, hasBundledExtensionManifest, init_paths, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentDir$1 as resolveAgentDirFromConfig, resolveAgentHomeDir, resolveAgentHomeDir$1 as resolveAgentHomeDirFromConfig, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAgentWorkspaceDir, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveDefaultAgentWorkspaceDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveHomeDir, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStateDir, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath, resolveXopcCloudCatalogCachePath, resolveXopcDatabasePath };
|
|
@@ -834,7 +834,7 @@ activityDetailDefault: z.enum([
|
|
|
834
834
|
"always",
|
|
835
835
|
"inbound",
|
|
836
836
|
"tagged"
|
|
837
|
-
]).default("
|
|
837
|
+
]).default("off"),
|
|
838
838
|
fallback: TTSFallbackConfigSchema.optional(),
|
|
839
839
|
maxTextLength: z.number().int().min(1).default(512),
|
|
840
840
|
timeoutMs: z.number().int().min(1e3).max(18e4).default(6e4),
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { ToolRouterCreateSessionConfig } from '@composio/core';
|
|
2
|
+
import { type ProviderAuthService } from '../providers/provider-auth-service.js';
|
|
3
|
+
import type { ComposioSessionLike, ComposioSessionsClient } from './composio-sessions.js';
|
|
4
|
+
export declare class ManagedComposioClient implements ComposioSessionsClient {
|
|
5
|
+
readonly mode: "managed";
|
|
6
|
+
private readonly fetchImpl;
|
|
7
|
+
private readonly routerUrl;
|
|
8
|
+
private readonly credentials;
|
|
9
|
+
constructor(options?: {
|
|
10
|
+
fetchImpl?: typeof fetch;
|
|
11
|
+
routerUrl?: string;
|
|
12
|
+
credentials?: Pick<ProviderAuthService, 'resolveApiKey'>;
|
|
13
|
+
});
|
|
14
|
+
readonly sessions: {
|
|
15
|
+
create: (_userId: string, config?: ToolRouterCreateSessionConfig) => Promise<ComposioSessionLike>;
|
|
16
|
+
};
|
|
17
|
+
readonly connectedAccounts: {
|
|
18
|
+
list: () => Promise<unknown>;
|
|
19
|
+
delete: (id: string) => Promise<unknown>;
|
|
20
|
+
refresh: (id: string) => Promise<unknown>;
|
|
21
|
+
};
|
|
22
|
+
readonly authConfigs: {
|
|
23
|
+
list: () => Promise<{
|
|
24
|
+
items: [];
|
|
25
|
+
}>;
|
|
26
|
+
};
|
|
27
|
+
readonly toolkits: {
|
|
28
|
+
get: (slug: string) => Promise<{
|
|
29
|
+
composioManagedAuthSchemes?: string[];
|
|
30
|
+
authConfigDetails?: unknown[];
|
|
31
|
+
}>;
|
|
32
|
+
};
|
|
33
|
+
status(): Promise<{
|
|
34
|
+
configured: boolean;
|
|
35
|
+
mode: 'managed';
|
|
36
|
+
}>;
|
|
37
|
+
events(after?: number, limit?: number): Promise<{
|
|
38
|
+
items: Array<{
|
|
39
|
+
sequence: number;
|
|
40
|
+
id: string;
|
|
41
|
+
type: string;
|
|
42
|
+
toolkit?: string;
|
|
43
|
+
connectionId?: string;
|
|
44
|
+
payload: unknown;
|
|
45
|
+
createdAt: string;
|
|
46
|
+
}>;
|
|
47
|
+
nextCursor: number;
|
|
48
|
+
}>;
|
|
49
|
+
private session;
|
|
50
|
+
private request;
|
|
51
|
+
}
|
|
52
|
+
export declare function inspectManagedComposioStatus(options?: {
|
|
53
|
+
fetchImpl?: typeof fetch;
|
|
54
|
+
routerUrl?: string;
|
|
55
|
+
credentials?: Pick<ProviderAuthService, 'resolveApiKey'>;
|
|
56
|
+
}): Promise<{
|
|
57
|
+
configured: boolean;
|
|
58
|
+
mode: 'managed';
|
|
59
|
+
reason?: string;
|
|
60
|
+
}>;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { init_xopc_cloud_config, resolveXopcModelRouterUrl } from "../providers/xopc-cloud-config.js";
|
|
2
|
+
import { getProviderAuthService, init_provider_auth_service } from "../providers/provider-auth-service.js";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
//#region src/connectors/composio-managed-client.ts
|
|
5
|
+
init_provider_auth_service();
|
|
6
|
+
init_xopc_cloud_config();
|
|
7
|
+
var ManagedComposioError = class extends Error {
|
|
8
|
+
constructor(message, status, code) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.status = status;
|
|
11
|
+
this.code = code;
|
|
12
|
+
this.name = "ManagedComposioError";
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
var ManagedComposioClient = class {
|
|
16
|
+
mode = "managed";
|
|
17
|
+
fetchImpl;
|
|
18
|
+
routerUrl;
|
|
19
|
+
credentials;
|
|
20
|
+
constructor(options = {}) {
|
|
21
|
+
this.fetchImpl = options.fetchImpl ?? fetch;
|
|
22
|
+
this.routerUrl = resolveXopcModelRouterUrl(options.routerUrl);
|
|
23
|
+
this.credentials = options.credentials ?? getProviderAuthService();
|
|
24
|
+
}
|
|
25
|
+
sessions = { create: async (_userId, config = {}) => {
|
|
26
|
+
if (config.authConfigs && Object.keys(config.authConfigs).length > 0) throw new Error("Custom Composio auth configs require BYOK mode.");
|
|
27
|
+
const enabledToolkits = Array.isArray(config.toolkits) ? config.toolkits : config.toolkits && "enable" in config.toolkits ? config.toolkits.enable : [];
|
|
28
|
+
const connectedAccounts = Object.fromEntries(Object.entries(config.connectedAccounts ?? {}).map(([toolkit, value]) => [toolkit, Array.isArray(value) ? value : [value]]));
|
|
29
|
+
return this.session(enabledToolkits, connectedAccounts);
|
|
30
|
+
} };
|
|
31
|
+
connectedAccounts = {
|
|
32
|
+
list: async () => this.request({ path: "/connectors/composio/connections" }),
|
|
33
|
+
delete: async (id) => this.request({
|
|
34
|
+
path: `/connectors/composio/connections/${encodeURIComponent(id)}`,
|
|
35
|
+
method: "DELETE"
|
|
36
|
+
}),
|
|
37
|
+
refresh: async (id) => this.request({
|
|
38
|
+
path: `/connectors/composio/connections/${encodeURIComponent(id)}/refresh`,
|
|
39
|
+
method: "POST"
|
|
40
|
+
})
|
|
41
|
+
};
|
|
42
|
+
authConfigs = { list: async () => ({ items: [] }) };
|
|
43
|
+
toolkits = { get: async (slug) => {
|
|
44
|
+
const response = await this.request({ path: `/connectors/composio/toolkits/${encodeURIComponent(slug)}/auth` });
|
|
45
|
+
return {
|
|
46
|
+
composioManagedAuthSchemes: response.auth.managedAuthAvailable ? ["OAUTH2"] : [],
|
|
47
|
+
authConfigDetails: response.auth.requiresCustomAuthConfig ? [{}] : []
|
|
48
|
+
};
|
|
49
|
+
} };
|
|
50
|
+
async status() {
|
|
51
|
+
return this.request({ path: "/connectors/composio/status" });
|
|
52
|
+
}
|
|
53
|
+
async events(after = 0, limit = 50) {
|
|
54
|
+
return this.request({ path: `/connectors/composio/events?after=${after}&limit=${limit}` });
|
|
55
|
+
}
|
|
56
|
+
session(toolkits, connectedAccounts) {
|
|
57
|
+
const toolkit = () => {
|
|
58
|
+
if (toolkits.length !== 1 || !toolkits[0]) throw new Error("Managed Composio sessions require exactly one toolkit for this operation.");
|
|
59
|
+
return toolkits[0];
|
|
60
|
+
};
|
|
61
|
+
return {
|
|
62
|
+
sessionId: "managed",
|
|
63
|
+
toolkits: async () => {
|
|
64
|
+
return { items: (await this.request({ path: "/connectors/composio/toolkits" })).items };
|
|
65
|
+
},
|
|
66
|
+
authorize: async (requestedToolkit, options) => {
|
|
67
|
+
return (await this.request({
|
|
68
|
+
path: "/connectors/composio/authorizations",
|
|
69
|
+
method: "POST",
|
|
70
|
+
body: {
|
|
71
|
+
toolkit: requestedToolkit,
|
|
72
|
+
alias: options?.alias
|
|
73
|
+
}
|
|
74
|
+
})).item;
|
|
75
|
+
},
|
|
76
|
+
search: async () => {
|
|
77
|
+
return (await this.request({ path: `/connectors/composio/toolkits/${encodeURIComponent(toolkit())}/tools` })).result;
|
|
78
|
+
},
|
|
79
|
+
execute: async (toolSlug, args = {}, options) => {
|
|
80
|
+
const selected = options?.account ?? connectedAccounts[toolkit()]?.[0];
|
|
81
|
+
return (await this.request({
|
|
82
|
+
path: "/connectors/composio/execute",
|
|
83
|
+
method: "POST",
|
|
84
|
+
body: {
|
|
85
|
+
toolkit: toolkit(),
|
|
86
|
+
toolSlug,
|
|
87
|
+
args,
|
|
88
|
+
...selected ? { accountId: selected } : {}
|
|
89
|
+
},
|
|
90
|
+
headers: { "idempotency-key": randomUUID() }
|
|
91
|
+
})).result;
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
async request(input) {
|
|
96
|
+
const accessToken = await this.credentials.resolveApiKey("xopc-cloud");
|
|
97
|
+
if (!accessToken) throw new ManagedComposioError("Sign in to XOPC Cloud to use managed app connections.", 401, "xopc_cloud_not_configured");
|
|
98
|
+
const response = await this.fetchImpl(`${this.routerUrl}${input.path}`, {
|
|
99
|
+
method: input.method ?? "GET",
|
|
100
|
+
headers: {
|
|
101
|
+
authorization: `Bearer ${accessToken}`,
|
|
102
|
+
accept: "application/json",
|
|
103
|
+
...input.body === void 0 ? {} : { "content-type": "application/json" },
|
|
104
|
+
...input.headers
|
|
105
|
+
},
|
|
106
|
+
...input.body === void 0 ? {} : { body: JSON.stringify(input.body) },
|
|
107
|
+
signal: AbortSignal.timeout(6e4)
|
|
108
|
+
});
|
|
109
|
+
const body = await response.json().catch(() => null);
|
|
110
|
+
if (!response.ok) {
|
|
111
|
+
const code = typeof body?.error?.code === "string" ? body.error.code : void 0;
|
|
112
|
+
const fallback = response.status === 403 && code === "insufficient_scope" ? "Reconnect XOPC Cloud to grant app connection permissions." : `Managed Composio request failed (${response.status})`;
|
|
113
|
+
throw new ManagedComposioError(typeof body?.error?.message === "string" ? body.error.message : fallback, response.status, code);
|
|
114
|
+
}
|
|
115
|
+
return body;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
async function inspectManagedComposioStatus(options = {}) {
|
|
119
|
+
try {
|
|
120
|
+
const status = await new ManagedComposioClient(options).status();
|
|
121
|
+
return {
|
|
122
|
+
configured: status.configured,
|
|
123
|
+
mode: "managed",
|
|
124
|
+
...!status.configured ? { reason: "service_unavailable" } : {}
|
|
125
|
+
};
|
|
126
|
+
} catch (error) {
|
|
127
|
+
return {
|
|
128
|
+
configured: false,
|
|
129
|
+
mode: "managed",
|
|
130
|
+
reason: error instanceof ManagedComposioError && error.code === "insufficient_scope" ? "reauthorization_required" : error instanceof ManagedComposioError && error.status === 401 ? "signin_required" : "service_unavailable"
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
//#endregion
|
|
135
|
+
export { ManagedComposioClient, inspectManagedComposioStatus };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Config } from '../config/schema.js';
|
|
2
|
+
type ManagedEvent = {
|
|
3
|
+
sequence: number;
|
|
4
|
+
id: string;
|
|
5
|
+
type: string;
|
|
6
|
+
toolkit?: string;
|
|
7
|
+
connectionId?: string;
|
|
8
|
+
payload: unknown;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
};
|
|
11
|
+
type ManagedEventClient = {
|
|
12
|
+
events(after?: number, limit?: number): Promise<{
|
|
13
|
+
items: ManagedEvent[];
|
|
14
|
+
nextCursor: number;
|
|
15
|
+
}>;
|
|
16
|
+
};
|
|
17
|
+
export declare class ManagedComposioEventPoller {
|
|
18
|
+
private readonly input;
|
|
19
|
+
private timer?;
|
|
20
|
+
private cursor;
|
|
21
|
+
private syncing?;
|
|
22
|
+
constructor(input: {
|
|
23
|
+
getConfig: () => Config;
|
|
24
|
+
triggerAutomation: (event: {
|
|
25
|
+
type: string;
|
|
26
|
+
source: string;
|
|
27
|
+
payload: Record<string, unknown>;
|
|
28
|
+
}) => Promise<unknown>;
|
|
29
|
+
requestLearning: (toolkit: string) => void;
|
|
30
|
+
setLearningPaused: (connectionId: string, paused: boolean) => void;
|
|
31
|
+
client?: ManagedEventClient;
|
|
32
|
+
hasByok?: () => Promise<boolean>;
|
|
33
|
+
intervalMs?: number;
|
|
34
|
+
});
|
|
35
|
+
start(): void;
|
|
36
|
+
stop(): void;
|
|
37
|
+
sync(): Promise<void>;
|
|
38
|
+
private runSync;
|
|
39
|
+
private process;
|
|
40
|
+
}
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger/index.js";
|
|
2
|
+
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, releaseConnectorWebhookDelivery } from "../storage/sqlite/connector-repository.js";
|
|
4
|
+
import "../storage/sqlite/index.js";
|
|
5
|
+
import { resolveComposioApiKey } from "./composio-sessions.js";
|
|
6
|
+
import { ManagedComposioClient } from "./composio-managed-client.js";
|
|
7
|
+
import { appendComposioTriggerEvent, applyComposioConnectionLifecycleEvent, normalizeComposioTriggerPayload } from "./composio-triggers.js";
|
|
8
|
+
import { createHash } from "node:crypto";
|
|
9
|
+
//#region src/connectors/composio-managed-events.ts
|
|
10
|
+
init_logger();
|
|
11
|
+
const log = createLogger("Connectors:ComposioManagedEvents");
|
|
12
|
+
function hasInstalledComposioToolkit(config) {
|
|
13
|
+
return Object.values(config.connectors?.instances ?? {}).some((value) => {
|
|
14
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
15
|
+
const runtime = value.runtime;
|
|
16
|
+
return Boolean(runtime && typeof runtime === "object" && !Array.isArray(runtime) && runtime.type === "composio" && runtime.role === "toolkit");
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
var ManagedComposioEventPoller = class {
|
|
20
|
+
timer;
|
|
21
|
+
cursor = 0;
|
|
22
|
+
syncing;
|
|
23
|
+
constructor(input) {
|
|
24
|
+
this.input = input;
|
|
25
|
+
}
|
|
26
|
+
start() {
|
|
27
|
+
if (this.timer) return;
|
|
28
|
+
this.sync().catch(() => {});
|
|
29
|
+
this.timer = setInterval(() => {
|
|
30
|
+
this.sync().catch(() => {});
|
|
31
|
+
}, this.input.intervalMs ?? 15e3);
|
|
32
|
+
this.timer.unref?.();
|
|
33
|
+
}
|
|
34
|
+
stop() {
|
|
35
|
+
if (this.timer) clearInterval(this.timer);
|
|
36
|
+
this.timer = void 0;
|
|
37
|
+
}
|
|
38
|
+
sync() {
|
|
39
|
+
this.syncing ??= this.runSync().finally(() => {
|
|
40
|
+
this.syncing = void 0;
|
|
41
|
+
});
|
|
42
|
+
return this.syncing;
|
|
43
|
+
}
|
|
44
|
+
async runSync() {
|
|
45
|
+
const config = this.input.getConfig();
|
|
46
|
+
const hasByok = this.input.hasByok ?? (async () => Boolean(await resolveComposioApiKey()));
|
|
47
|
+
if (!hasInstalledComposioToolkit(config) || await hasByok()) return;
|
|
48
|
+
const client = this.input.client ?? new ManagedComposioClient();
|
|
49
|
+
try {
|
|
50
|
+
for (let page = 0; page < 20; page += 1) {
|
|
51
|
+
const response = await client.events(this.cursor, 100);
|
|
52
|
+
for (const event of response.items) await this.process(config, event);
|
|
53
|
+
const next = Math.max(this.cursor, response.nextCursor);
|
|
54
|
+
if (next === this.cursor || response.items.length === 0) break;
|
|
55
|
+
this.cursor = next;
|
|
56
|
+
if (response.items.length < 100) break;
|
|
57
|
+
}
|
|
58
|
+
} catch (error) {
|
|
59
|
+
log.debug({
|
|
60
|
+
err: error,
|
|
61
|
+
phase: "event_poll"
|
|
62
|
+
}, "Managed Composio event poll skipped");
|
|
63
|
+
throw error;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
async process(config, event) {
|
|
67
|
+
const payload = event.payload && typeof event.payload === "object" && !Array.isArray(event.payload) ? {
|
|
68
|
+
...event.payload,
|
|
69
|
+
id: event.id
|
|
70
|
+
} : {
|
|
71
|
+
id: event.id,
|
|
72
|
+
type: event.type,
|
|
73
|
+
data: event.payload
|
|
74
|
+
};
|
|
75
|
+
const hash = createHash("sha256").update(JSON.stringify(payload)).digest("hex");
|
|
76
|
+
if (claimConnectorWebhookDelivery({
|
|
77
|
+
id: event.id,
|
|
78
|
+
provider: "composio",
|
|
79
|
+
payloadHash: hash
|
|
80
|
+
}) !== "claimed") return;
|
|
81
|
+
try {
|
|
82
|
+
const normalized = normalizeComposioTriggerPayload(payload, event.id);
|
|
83
|
+
const inactiveConnectionId = applyComposioConnectionLifecycleEvent(payload);
|
|
84
|
+
if (inactiveConnectionId) this.input.setLearningPaused(inactiveConnectionId, true);
|
|
85
|
+
await appendComposioTriggerEvent(config, payload);
|
|
86
|
+
const toolkit = normalized.toolkit ?? event.toolkit;
|
|
87
|
+
if (toolkit) this.input.requestLearning(toolkit);
|
|
88
|
+
await this.input.triggerAutomation({
|
|
89
|
+
type: `connector.${normalized.trigger ?? normalized.type}`,
|
|
90
|
+
source: toolkit ? `composio:${toolkit}` : "composio",
|
|
91
|
+
payload: {
|
|
92
|
+
...normalized.data,
|
|
93
|
+
connectorId: toolkit ? `composio-${toolkit}` : "composio",
|
|
94
|
+
webhookId: event.id
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
completeConnectorWebhookDelivery(event.id);
|
|
98
|
+
} catch (error) {
|
|
99
|
+
releaseConnectorWebhookDelivery(event.id, error);
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
};
|
|
104
|
+
//#endregion
|
|
105
|
+
export { ManagedComposioEventPoller };
|
|
@@ -2,7 +2,7 @@ import type { ToolRouterCreateSessionConfig } from '@composio/core';
|
|
|
2
2
|
import { CredentialResolver } from '../auth/credentials.js';
|
|
3
3
|
import type { ConnectorActionMetadata, ConnectorConnection, ConnectorInstallationPolicy } from './types.js';
|
|
4
4
|
export declare function resolveComposioApiKey(resolver?: CredentialResolver): Promise<string | null>;
|
|
5
|
-
export declare function
|
|
5
|
+
export declare function assertComposioAccessConfigured(resolver?: CredentialResolver): Promise<'byok' | 'managed'>;
|
|
6
6
|
export type ComposioToolkitCatalogItem = {
|
|
7
7
|
slug: string;
|
|
8
8
|
name: string;
|
|
@@ -72,6 +72,7 @@ export type ComposioSessionLike = {
|
|
|
72
72
|
}): Promise<unknown>;
|
|
73
73
|
};
|
|
74
74
|
export type ComposioSessionsClient = {
|
|
75
|
+
mode?: 'managed' | 'byok';
|
|
75
76
|
sessions: {
|
|
76
77
|
create(userId: string, config?: ToolRouterCreateSessionConfig): Promise<ComposioSessionLike>;
|
|
77
78
|
};
|
|
@@ -122,6 +123,7 @@ export declare class ComposioSessionsAdapter {
|
|
|
122
123
|
constructor(options?: {
|
|
123
124
|
resolver?: CredentialResolver;
|
|
124
125
|
clientFactory?: ClientFactory;
|
|
126
|
+
fileDownloadDir?: string;
|
|
125
127
|
});
|
|
126
128
|
createSession(context: ComposioSessionContext): Promise<ComposioSessionLike>;
|
|
127
129
|
getToolkitAuthState(toolkit: string): Promise<ComposioToolkitAuthState>;
|
|
@@ -17,10 +17,10 @@ const COMPOSIO_API_KEY_PROVIDER = "connector-composio-api-key";
|
|
|
17
17
|
async function resolveComposioApiKey(resolver = new CredentialResolver()) {
|
|
18
18
|
return (await resolver.resolveApiKey(COMPOSIO_API_KEY_PROVIDER).catch(() => void 0))?.trim() || process.env.XOPC_COMPOSIO_API_KEY?.trim() || process.env.COMPOSIO_API_KEY?.trim() || null;
|
|
19
19
|
}
|
|
20
|
-
async function
|
|
21
|
-
|
|
22
|
-
if (
|
|
23
|
-
|
|
20
|
+
async function assertComposioAccessConfigured(resolver = new CredentialResolver()) {
|
|
21
|
+
if (await resolveComposioApiKey(resolver)) return "byok";
|
|
22
|
+
if ((await resolver.resolveApiKey("xopc-cloud").catch(() => null))?.trim()) return "managed";
|
|
23
|
+
throw new Error("Composio API key is not configured and XOPC Cloud is not signed in. Install the \"Composio API Key\" connector first or sign in to XOPC Cloud.");
|
|
24
24
|
}
|
|
25
25
|
function stableHash(value) {
|
|
26
26
|
return createHash("sha256").update(value).digest("hex").slice(0, 24);
|
|
@@ -91,7 +91,11 @@ var ComposioSessionsAdapter = class {
|
|
|
91
91
|
}
|
|
92
92
|
const resolver = options.resolver ?? new CredentialResolver();
|
|
93
93
|
this.createClient = async () => {
|
|
94
|
-
const apiKey = await
|
|
94
|
+
const apiKey = await resolveComposioApiKey(resolver);
|
|
95
|
+
if (!apiKey) {
|
|
96
|
+
const { ManagedComposioClient } = await import("./composio-managed-client.js");
|
|
97
|
+
return new ManagedComposioClient();
|
|
98
|
+
}
|
|
95
99
|
let Composio;
|
|
96
100
|
let PiProvider;
|
|
97
101
|
try {
|
|
@@ -99,15 +103,18 @@ var ComposioSessionsAdapter = class {
|
|
|
99
103
|
} catch (cause) {
|
|
100
104
|
throw new Error("The xopc installation is missing the bundled Composio runtime. Reinstall @xopcai/xopc and restart the gateway.", { cause });
|
|
101
105
|
}
|
|
102
|
-
|
|
106
|
+
const client = new Composio({
|
|
103
107
|
apiKey,
|
|
104
108
|
baseURL: process.env.XOPC_COMPOSIO_BASE_URL?.trim() || void 0,
|
|
105
109
|
allowTracking: false,
|
|
106
|
-
dangerouslyAllowAutoUploadDownloadFiles:
|
|
110
|
+
dangerouslyAllowAutoUploadDownloadFiles: Boolean(options.fileDownloadDir),
|
|
107
111
|
fileUploadDirs: false,
|
|
112
|
+
...options.fileDownloadDir ? { fileDownloadDir: options.fileDownloadDir } : {},
|
|
108
113
|
provider: new PiProvider(),
|
|
109
114
|
host: "xopc"
|
|
110
115
|
});
|
|
116
|
+
client.mode = "byok";
|
|
117
|
+
return client;
|
|
111
118
|
};
|
|
112
119
|
}
|
|
113
120
|
async createSession(context) {
|
|
@@ -374,4 +381,4 @@ var ComposioSessionsAdapter = class {
|
|
|
374
381
|
}
|
|
375
382
|
};
|
|
376
383
|
//#endregion
|
|
377
|
-
export { ComposioSessionsAdapter,
|
|
384
|
+
export { ComposioSessionsAdapter, assertComposioAccessConfigured, createComposioPrincipalId, resolveComposioApiKey };
|
|
@@ -2,7 +2,7 @@ import { getConnectorConnection, getConnectorInstallation, listConnectorConnecti
|
|
|
2
2
|
import { getConnectorAccount, refreshConnectorAccountCurrent } from "../storage/sqlite/connector-account-repository.js";
|
|
3
3
|
import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
4
4
|
import { connectorIdentityKey } from "./connector-identity.js";
|
|
5
|
-
import { ComposioSessionsAdapter } from "./composio-sessions.js";
|
|
5
|
+
import { ComposioSessionsAdapter, assertComposioAccessConfigured } from "./composio-sessions.js";
|
|
6
6
|
import { COMPOSIO_AGENT_READY_TOOLKITS, COMPOSIO_TOOLKIT_DISPLAY_NAMES, connectorDefinitionFromComposioToolkit } from "./composio-catalog.js";
|
|
7
7
|
import { consumeConnectorSetupSecretRef } from "./setup-secrets.js";
|
|
8
8
|
//#region src/connectors/composio.ts
|
|
@@ -92,14 +92,19 @@ const COMPOSIO_CURATED_ACTIONS = {
|
|
|
92
92
|
},
|
|
93
93
|
googlecalendar: {
|
|
94
94
|
GOOGLECALENDAR_FIND_EVENT: "read",
|
|
95
|
-
|
|
95
|
+
GOOGLECALENDAR_SYNC_EVENTS: "read",
|
|
96
96
|
GOOGLECALENDAR_CREATE_EVENT: "write",
|
|
97
97
|
GOOGLECALENDAR_UPDATE_EVENT: "write",
|
|
98
98
|
GOOGLECALENDAR_DELETE_EVENT: "admin"
|
|
99
99
|
},
|
|
100
100
|
googledrive: {
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
GOOGLEDRIVE_FIND_FILE: "read",
|
|
102
|
+
GOOGLEDRIVE_GET_ABOUT: "read",
|
|
103
|
+
GOOGLEDRIVE_GET_FILE_METADATA: "read",
|
|
104
|
+
GOOGLEDRIVE_DOWNLOAD_FILE: "read",
|
|
105
|
+
GOOGLEDRIVE_EXPORT_GOOGLE_WORKSPACE_FILE: "read",
|
|
106
|
+
GOOGLEDRIVE_GET_CHANGES_START_PAGE_TOKEN: "read",
|
|
107
|
+
GOOGLEDRIVE_LIST_CHANGES: "read",
|
|
103
108
|
GOOGLEDRIVE_CREATE_FILE: "write",
|
|
104
109
|
GOOGLEDRIVE_UPDATE_FILE: "write",
|
|
105
110
|
GOOGLEDRIVE_DELETE_FILE: "admin"
|
|
@@ -365,6 +370,7 @@ async function listComposioConnections(resolver = new CredentialResolver()) {
|
|
|
365
370
|
async function inspectComposioConnectorHealth(toolkit, resolver = new CredentialResolver()) {
|
|
366
371
|
const normalizedToolkit = normalizeToolkit(toolkit);
|
|
367
372
|
try {
|
|
373
|
+
await assertComposioAccessConfigured(resolver);
|
|
368
374
|
const connections = (await listComposioConnections(resolver)).filter((connection) => connection.toolkit.toLowerCase() === normalizedToolkit);
|
|
369
375
|
const byAccount = /* @__PURE__ */ new Map();
|
|
370
376
|
for (const connection of connections) {
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type ConnectedSourceCursor = {
|
|
2
|
+
version: 1;
|
|
3
|
+
checkpoint?: string;
|
|
4
|
+
scanStartedAt?: string;
|
|
5
|
+
pageToken?: string;
|
|
6
|
+
syncToken?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function decodeConnectedSourceCursor(value: string | undefined): ConnectedSourceCursor | undefined;
|
|
9
|
+
export declare function encodeConnectedSourceCursor(cursor: Omit<ConnectedSourceCursor, 'version'>): string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
//#region src/connectors/connected-source-cursor.ts
|
|
2
|
+
function optionalText(value) {
|
|
3
|
+
return typeof value === "string" && value.trim() ? value.trim() : void 0;
|
|
4
|
+
}
|
|
5
|
+
function decodeConnectedSourceCursor(value) {
|
|
6
|
+
if (!value) return void 0;
|
|
7
|
+
try {
|
|
8
|
+
const parsed = JSON.parse(value);
|
|
9
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) return void 0;
|
|
10
|
+
const row = parsed;
|
|
11
|
+
if (row.version !== 1) return void 0;
|
|
12
|
+
return {
|
|
13
|
+
version: 1,
|
|
14
|
+
...optionalText(row.checkpoint) ? { checkpoint: optionalText(row.checkpoint) } : {},
|
|
15
|
+
...optionalText(row.scanStartedAt) ? { scanStartedAt: optionalText(row.scanStartedAt) } : {},
|
|
16
|
+
...optionalText(row.pageToken) ? { pageToken: optionalText(row.pageToken) } : {},
|
|
17
|
+
...optionalText(row.syncToken) ? { syncToken: optionalText(row.syncToken) } : {}
|
|
18
|
+
};
|
|
19
|
+
} catch {
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
function encodeConnectedSourceCursor(cursor) {
|
|
24
|
+
return JSON.stringify({
|
|
25
|
+
version: 1,
|
|
26
|
+
...cursor
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//#endregion
|
|
30
|
+
export { decodeConnectedSourceCursor, encodeConnectedSourceCursor };
|