@xopcai/xopc 0.0.211 → 0.0.214
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/README.md +39 -60
- package/README.zh-CN.md +39 -61
- 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-BzjFoSr0.js → activity-store-k-mNF_Dq.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DTfjhfVE.js → agent-avatar-dicebear-B5VyiQ_K.js} +1 -1
- package/dist/gateway/static/root/assets/agents-DM2l0hCI.js +68 -0
- package/dist/gateway/static/root/assets/{api-D269PnU9.js → api-BjN2udFQ.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BFpfQDWc.js → app-management-settings-panel-Bbul18ij.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DLxFdqhY.js → appearance-settings-Bvvzgp00.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BWd2KUkp.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-DPlH4dnc.js → archive-plugin-DjGVsAgd.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-xqfLLd0I.js → attachment-load-BCuUeuuO.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-Doof8nA6.js +1 -0
- package/dist/gateway/static/root/assets/automations-workspace-B2eTpWQN.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-C0tuoPXk.js → binary-plugins-B7WFf-lc.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Deyphj1o.js → block-editor-CVwIwyUT.js} +47 -47
- package/dist/gateway/static/root/assets/browser-settings-page-D6ua52QD.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-CYEbXyRF.js → browser-workflow-inputs-Coz8pWzP.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-Bf0tPbGi.js → browser-workflows-page-8a3hnSXE.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-DfTpgo4L.js +7 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-DPkFA_-R.js → capability-presets-api-BF3G84qe.js} +1 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-DkjsA_Yn.js +3 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-DqKaAcnZ.js → channel-recipient-api-8Uz95P40.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-Cv3pT5iN.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-NfU9X-P5.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CTDRZa7e.js → chat-terminal-dock-BYds3un1.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-Buu8fif8.js → connectors-api-Cj4deNtI.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-CL6PMerr.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-DTLR82NB.js → cron-expression-DjBh0ZL4.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-DyNogHQH.js → date-picker-3cIzKCZU.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BpnCuo7B.js → dependency-picker-VZFStrz_.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-CDKI4gVB.js → desktop-pet-CRNQ4CKZ.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DjT5C2a3.js → desktop-pet-settings-CJBeLcbV.js} +1 -1
- package/dist/gateway/static/root/assets/directory-picker-path-field-Dbq9_c33.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DWf2z7q5.js → extension-debug-page-CSFZfcz5.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Dorx0kf9.js → extension-page-W8vZ3Nl0.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-B1wU9ZOB.js → extension-settings-page-D5zYR65b.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-B1lG4dNr.js → gateway-config-api-BnA56bxn.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-BIxuwPQi.js → gateway-config-swr-l2w9ecXl.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-DqIOqJjM.js → gateway-settings-CCOOGd8A.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BpZgd4U-.js → gateway-startup-retry-XUzMGmLZ.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-DG4Kmgkc.js → heartbeat-settings-AutxO-ec.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-BMpQAeHr.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-PkhYohDa.js → image-generation-api-CDoOrDMq.js} +1 -1
- package/dist/gateway/static/root/assets/index-BIBAmAjw.js +108 -0
- package/dist/gateway/static/root/assets/index-DQzjgIkQ.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-6OQT3gQF.js → keyboard-shortcuts-settings-Bcc08kso.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-ctXGGgj1.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-DfruRAmE.js → local-apps-page-CuwtmiCt.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-C5MK9WcP.js → locale-store-BIOMAhmR.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-Vq-wDYVv.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-L1VYkywO.js → management-settings-gQwyJgL4.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-oqgHbqt-.js → markdown-split-DLSvtLDY.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-V4rcPPH0.js → markdown-view-BMDQYc6E.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Bb6gSX2o.js → media-plugins-DFdpMglM.js} +1 -1
- package/dist/gateway/static/root/assets/messages-CbbZKEfO.js +3 -0
- package/dist/gateway/static/root/assets/notes-api-lKPk0Voa.js +1 -0
- package/dist/gateway/static/root/assets/{notes-page-B1rOXjpT.js → notes-page-BBhONbU4.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-CCFrzDRT.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-CBuCKeyy.js → page-tabs-DoQq4tt6.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BQ0tLfPO.js → preview-open-alternatives-BtJkAYOs.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DPeFn7Hu.js → product-open-page-ClyG8t4A.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CVeA23NS.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DFj-bwa5.js +1 -0
- package/dist/gateway/static/root/assets/registry-api-BFwvRxBn.js +2 -0
- package/dist/gateway/static/root/assets/remote-access-hub-BgIrBYNz.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BCfQNzjG.js → runtime-tools-settings-panel-DdTZPRU5.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-Bo7YbHYN.js → schema-form-C3Q03Hyv.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-wfBSuhmo.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-4zV9nthi.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-B9dnKr3M.js → settings-form-section-DdrNtxul.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-CYDV2JtY.js → settings-loading-skeleton-BFvEfK7v.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-DbrIYfS9.js → settings-page-B8iNNrLN.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DEBPLh04.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-olgr7LLN.js → share-preview-page-CrsscJs3.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-Cpd3s8-P.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-BrDL4HAN.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-PE16CNw5.js → skills-page-B1sTkjZH.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-nXmBcBxt.js → skills-page.utils-CIcb0h3E.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-C3qPwAdY.js → system-settings-panel-MAl91hH_.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-C5wgYuvF.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-KR5Otp5w.js → theme-store-BrbF9cgL.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-lMZodtDF.js → typed-models-lib-Peglr65V.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-CKpatP3S.js → use-autosave-C10PZ1OV.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-DsAfqOJy.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-CDcv0Wbh.js → voice-api-key-field-bdYmX3ph.js} +1 -1
- package/dist/gateway/static/root/assets/work-discovery-overlay-BI4wbLTm.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BAHYNlQt.js → workflow-run-setup-panel-CfmwGYkr.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-D7tjtD97.js +5 -0
- package/dist/gateway/static/root/index.html +12 -10
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.js +4 -4
- package/dist/src/agent/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/ipc/inbox.js +1 -1
- package/dist/src/agent/memory/create-memory-manager.js +1 -1
- package/dist/src/agent/service.js +2 -2
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- package/dist/src/agent-runtime/index.js +1 -1
- package/dist/src/agent-runtime/runtime-profile.js +1 -1
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/cli/commands/agent.js +2 -2
- 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/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/models.js +2 -2
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/cli/commands/profile.js +1 -1
- package/dist/src/cli/commands/tunnel.js +3 -3
- package/dist/src/cli/commands/update.js +1 -1
- package/dist/src/cli/extension-cli-register.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/index.js +5 -5
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.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-session-types.d.ts +91 -0
- package/dist/src/connectors/composio-session-types.js +1 -0
- package/dist/src/connectors/composio-sessions.d.ts +3 -91
- package/dist/src/connectors/composio-sessions.js +13 -7
- package/dist/src/connectors/composio.js +2 -1
- package/dist/src/connectors/connected-source-ingestion.js +67 -25
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/connectors/learning-recipes.js +2 -0
- package/dist/src/connectors/runtime-adapter-registry.js +2 -2
- package/dist/src/discussions/sealer.js +2 -2
- package/dist/src/discussions/service.js +6 -2
- package/dist/src/discussions/transcript.d.ts +2 -0
- package/dist/src/discussions/transcript.js +16 -3
- 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/extensions/lockfile.js +1 -1
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +2 -2
- 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.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +11 -4
- 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/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/session-input-handler.d.ts +2 -2
- 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/workflows.js +69 -0
- package/dist/src/gateway/index.js +2 -2
- package/dist/src/gateway/run-loop.js +1 -1
- 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 +2 -2
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +23 -8
- 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/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-catalog-persistence.d.ts +1 -1
- package/dist/src/providers/model-catalog-store.d.ts +2 -60
- 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/model-registry.js +1 -1
- 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 +2 -10
- package/dist/src/providers/provider-disconnect.js +4 -26
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/providers/xopc-cloud-catalog-coordinator.js +2 -2
- package/dist/src/runtime-tools/manager.js +41 -22
- 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/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/tui-startup-resources.js +2 -2
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/tui/xopc-tui-keybindings.d.ts +2 -2
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/voice/audio/normalize.d.ts +1 -0
- package/dist/src/voice/audio/normalize.js +24 -4
- package/dist/src/voice/local/wav.d.ts +3 -0
- package/dist/src/voice/local/wav.js +10 -4
- package/dist/src/work-discovery/analyzer.js +16 -4
- package/dist/src/work-discovery/service.js +6 -8
- package/dist/src/work-discovery/types.d.ts +3 -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 +108 -23
- 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 +20 -20
- package/dist/gateway/static/root/assets/agents-CjhgfuVJ.js +0 -68
- package/dist/gateway/static/root/assets/apps-page-CjmlGB5V.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-4m6Ey6wG.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-CAGCYx8U.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CKfLsxTI.js +0 -7
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-CpipKNqX.js +0 -3
- package/dist/gateway/static/root/assets/channels-settings-Bvq-O4pt.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CrMld2l7.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-CSQRzaVn.js +0 -2
- package/dist/gateway/static/root/assets/directory-picker-path-field-DlJY90TM.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BhqItS_s.js +0 -1
- package/dist/gateway/static/root/assets/index-DLhvsU9B.css +0 -2
- package/dist/gateway/static/root/assets/index-_cuTcWjB.js +0 -107
- package/dist/gateway/static/root/assets/local-app-workbench-page-DWjTmzxw.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-BA5efZ8B.js +0 -2
- package/dist/gateway/static/root/assets/messages-ctG2e-ix.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-CkHXVmKP.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-DCqet9-L.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-D0t_AjzG.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BUWPoBvw.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-vLhrrM3m.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-OP1y0Y8M.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Cxc-Ejl5.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-ZOqC6-aA.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DwvC3Iuf.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-DCRB-5q-.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-CoiedRuA.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-overlay-CGdT22un.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-BwaU1RqI.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-DHYmh9G7.js +0 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { buildMemoryRuntime } from "./memory-runtime.js";
|
|
2
1
|
import { checkBoundary } from "./boundary-guard.js";
|
|
3
2
|
import { resolveModelRole } from "./model-router.js";
|
|
4
3
|
import { buildRuntimeToolRegistry } from "./tool-registry.js";
|
|
4
|
+
import { buildMemoryRuntime } from "./memory-runtime.js";
|
|
5
5
|
import { resolveWorkflow, validateWorkflowForRuntime } from "./workflow-runtime.js";
|
|
6
6
|
import { buildAgentRuntimeProfile } from "./runtime-profile.js";
|
|
7
7
|
import { appendAgentRunEvent, createAgentRunTrace, finishAgentRunTrace, hashEffectiveManifest } from "./run-trace.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { buildAgentManifestPromptSection } from "../agent-manifest/prompt.js";
|
|
2
2
|
import "../agent-manifest/index.js";
|
|
3
|
-
import { buildMemoryRuntime } from "./memory-runtime.js";
|
|
4
3
|
import { checkBoundary } from "./boundary-guard.js";
|
|
5
4
|
import { resolveModelRole } from "./model-router.js";
|
|
6
5
|
import { buildRuntimeToolRegistry } from "./tool-registry.js";
|
|
6
|
+
import { buildMemoryRuntime } from "./memory-runtime.js";
|
|
7
7
|
import { resolveWorkflow, validateWorkflowForRuntime } from "./workflow-runtime.js";
|
|
8
8
|
//#region src/agent-runtime/runtime-profile.ts
|
|
9
9
|
function buildAgentRuntimeProfile(params) {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { getAssistantMessageErrorReason, stripCodeFences } from "../providers/model-response.js";
|
|
3
4
|
import { getDefaultModelSync, init_providers, resolveModel } from "../providers/index.js";
|
|
4
5
|
import { createExtensionAwareStreamFn } from "../providers/extension-stream-bridge.js";
|
|
5
6
|
import { isLocalModelBaseUrl, resolveModelCallApiKey, resolveModelCallOptions } from "../providers/model-call.js";
|
|
6
|
-
import { getAssistantMessageErrorReason, stripCodeFences } from "../providers/model-response.js";
|
|
7
7
|
//#region src/ai-assist/text-assist.ts
|
|
8
8
|
init_providers();
|
|
9
9
|
init_logger();
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
-
import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveCredentialsDir, resolveOAuthPath } from "../config/paths.js";
|
|
5
4
|
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
6
|
-
import {
|
|
5
|
+
import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveCredentialsDir, resolveOAuthPath } from "../config/paths.js";
|
|
7
6
|
import { getApiKeyFromEnv, init_env_keys } from "../providers/env-keys.js";
|
|
7
|
+
import { getOAuthProviderDefinition, init_registry } from "./oauth/registry.js";
|
|
8
8
|
import { init_oauth_provider_lock, withOAuthProviderLock } from "./oauth-provider-lock.js";
|
|
9
9
|
import { dirname, join } from "path";
|
|
10
10
|
import { mkdir, readFile, readdir, rm } from "fs/promises";
|
|
@@ -380,7 +380,7 @@ var init_xopc_cloud = __esmMin((() => {
|
|
|
380
380
|
init_pkce();
|
|
381
381
|
CLIENT_ID = "xopc-native";
|
|
382
382
|
DEFAULT_CONSOLE_URL = "https://console.xopc.ai";
|
|
383
|
-
DEFAULT_SCOPE = "models:read models:invoke account:usage offline_access";
|
|
383
|
+
DEFAULT_SCOPE = "models:read models:invoke account:usage connectors:read connectors:manage connectors:execute offline_access";
|
|
384
384
|
CALLBACK_PATH = "/oauth/callback";
|
|
385
385
|
AUTHORIZATION_TIMEOUT_MS = 5 * 6e4;
|
|
386
386
|
xopcCloudOAuthProvider = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_paths, resolveCredentialsDir } from "../../config/paths.js";
|
|
2
1
|
import { init_write_file_atomic, writeTextAtomicSync } from "../../infra/write-file-atomic.js";
|
|
2
|
+
import { init_paths, resolveCredentialsDir } from "../../config/paths.js";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { chmodSync, existsSync, mkdirSync, readFileSync } from "node:fs";
|
|
5
5
|
//#region src/auth/profiles/store.ts
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
3
2
|
import { init_paths, resolveAgentAuthProfilesPath, resolveAuthProfilesPath, resolveOAuthPath } from "../config/paths.js";
|
|
4
|
-
import { init_loader, loadConfig } from "../config/loader.js";
|
|
5
3
|
import { init_registry, isOAuthOnlyProvider } from "./oauth/registry.js";
|
|
4
|
+
import { init_loader, loadConfig } from "../config/loader.js";
|
|
5
|
+
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
6
6
|
import { existsSync, readFileSync } from "node:fs";
|
|
7
7
|
//#region src/auth/sync-provider-auth.ts
|
|
8
8
|
/**
|
|
@@ -2,8 +2,8 @@ import { PACKAGE_VERSION, init_package_version } from "../../package-version.js"
|
|
|
2
2
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../../utils/logger.js";
|
|
4
4
|
import { assertCacheDir, init_cache_dir_policy } from "../cache-dir-policy.js";
|
|
5
|
-
import { init_paths, resolveBinDir } from "../../config/paths.js";
|
|
6
5
|
import { init_write_file_atomic, writeTextAtomic } from "../../infra/write-file-atomic.js";
|
|
6
|
+
import { init_paths, resolveBinDir } from "../../config/paths.js";
|
|
7
7
|
import { resolvePackageRoot } from "../../infra/update-check.js";
|
|
8
8
|
import { dirname, join } from "node:path";
|
|
9
9
|
import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|
|
@@ -8,10 +8,10 @@ import { MessageBus, MessageBusShutdownError } from "../../infra/bus/queue.js";
|
|
|
8
8
|
import "../../infra/bus/index.js";
|
|
9
9
|
import { AgentService } from "../../agent/service.js";
|
|
10
10
|
import "../../agent/index.js";
|
|
11
|
-
import { formatExamples, register } from "../registry.js";
|
|
12
|
-
import { getContextWithOpts } from "../context.js";
|
|
13
11
|
import { getWorkspacePath } from "../../config/workspace-path-helpers.js";
|
|
14
12
|
import "../../config/index.js";
|
|
13
|
+
import { formatExamples, register } from "../registry.js";
|
|
14
|
+
import { getContextWithOpts } from "../context.js";
|
|
15
15
|
import { getXopcCloudCatalogCoordinator } from "../../providers/xopc-cloud-catalog-coordinator.js";
|
|
16
16
|
import { listSessions } from "./agent/sessions.js";
|
|
17
17
|
import { renderStreamToTerminal } from "./agent/stream-renderer.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { init_loader, loadConfig, saveConfig } from "../../config/loader.js";
|
|
2
|
-
import { register } from "../registry.js";
|
|
3
2
|
import { getStoreConnectorInstallPlan, installStoreConnector, listStoreConnectors } from "../../capabilities/store-connector.js";
|
|
3
|
+
import { register } from "../registry.js";
|
|
4
4
|
import { confirm } from "@inquirer/prompts";
|
|
5
5
|
import { Command } from "commander";
|
|
6
6
|
//#region src/cli/commands/connectors.ts
|
|
@@ -52,7 +52,7 @@ async function checkDatabaseSchema(ctx) {
|
|
|
52
52
|
id: "database-schema",
|
|
53
53
|
label: "Database schema",
|
|
54
54
|
status: "pass",
|
|
55
|
-
message: `SQLite schema v${status.dbVersion} (current release
|
|
55
|
+
message: `SQLite schema v${status.dbVersion} (current release v125).`,
|
|
56
56
|
hints: []
|
|
57
57
|
};
|
|
58
58
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getAgentDefaultModelRef, init_schema, parseModelRef } from "../../../../config/schema.js";
|
|
2
|
-
import { init_loader, loadConfig } from "../../../../config/loader.js";
|
|
3
2
|
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "../../../../providers/env-keys.js";
|
|
3
|
+
import { init_loader, loadConfig } from "../../../../config/loader.js";
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
//#region src/cli/commands/doctor/checks/provider-auth.ts
|
|
6
6
|
init_loader();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { init_paths, resolveConfigPath } from "../../../config/paths.js";
|
|
2
2
|
import { loadConfig } from "../../../config/loader.js";
|
|
3
|
-
import "../../../config/index.js";
|
|
4
3
|
import { isRestartEnabled } from "../../../config/commands.flags.js";
|
|
4
|
+
import "../../../config/index.js";
|
|
5
5
|
import { resolveGatewayService } from "../../../daemon/service.js";
|
|
6
6
|
import { authorizeGatewaySigusr1Restart, writeGatewayRestartIntentSync } from "../../../infra/restart.js";
|
|
7
7
|
import { findVerifiedGatewayListenerPidsOnPortSync, formatGatewayPidList, signalVerifiedGatewayPidSync } from "../../../infra/gateway-processes.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
2
|
-
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
3
2
|
import { CredentialResolver, init_credentials } from "../../auth/credentials.js";
|
|
3
|
+
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
4
4
|
import { getAllModels, getAvailableModels, getConfiguredProviders, getProviderAuthState, getProviderDisplayName, init_providers, isProviderConfigured, providerSupportsApiKey, providerSupportsOAuth, resolveModel } from "../../providers/index.js";
|
|
5
|
+
import "../../config/index.js";
|
|
5
6
|
import { formatExamples, register } from "../registry.js";
|
|
6
7
|
import { getContextWithOpts } from "../context.js";
|
|
7
|
-
import "../../config/index.js";
|
|
8
8
|
import { prepareUpdateGlobalDefaults } from "../../gateway/global-defaults-admin.js";
|
|
9
9
|
import { disconnectProvider } from "../../providers/provider-disconnect.js";
|
|
10
10
|
import { colors } from "../utils/colors.js";
|
|
@@ -2,8 +2,8 @@ import { init_paths_state, resolveStateDir } from "../../config/paths-state.js";
|
|
|
2
2
|
import { ConfigSchema, init_schema } from "../../config/schema.js";
|
|
3
3
|
import { saveConfig } from "../../config/loader.js";
|
|
4
4
|
import { resolveGatewayLocalClientHost } from "../../config/gateway-bind.js";
|
|
5
|
-
import { formatExamples, register } from "../registry.js";
|
|
6
5
|
import "../../config/index.js";
|
|
6
|
+
import { formatExamples, register } from "../registry.js";
|
|
7
7
|
import { provisionEagerRuntimes } from "../../runtime-tools/bootstrap.js";
|
|
8
8
|
import { colors } from "../utils/colors.js";
|
|
9
9
|
import { initWorkspace } from "../utils/init-workspace.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { formatExamples, register } from "../registry.js";
|
|
4
3
|
import { createProfile, deleteProfile, getCurrentProfile, getSwitchCommand, listProfiles, resolveProfileStateDir } from "../../config/profile.js";
|
|
4
|
+
import { formatExamples, register } from "../registry.js";
|
|
5
5
|
import { colors } from "../utils/colors.js";
|
|
6
6
|
import { Command } from "commander";
|
|
7
7
|
import Table from "cli-table3";
|
|
@@ -3,15 +3,15 @@ import { init_logger } from "../../utils/logger.js";
|
|
|
3
3
|
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
4
4
|
import { resolveGatewayEffectiveHost } from "../../config/gateway-bind.js";
|
|
5
5
|
import { loadTunnelState } from "../../tunnel/tunnel-state.js";
|
|
6
|
+
import "../../config/index.js";
|
|
7
|
+
import { formatExamples, register } from "../registry.js";
|
|
6
8
|
import { TUNNEL_RISK_SUMMARY_LINES, TunnelConsentError, assertTunnelMayStart, hasValidTunnelConsent } from "../../tunnel/consent.js";
|
|
7
9
|
import { resolveTunnelBrokerUrl, resolveTunnelRegistrationSecret } from "../../tunnel/env.js";
|
|
8
|
-
import { applyTunnelConsentToConfig, mergeTunnelConfigPatch, setTunnelEnabledInConfig } from "../../tunnel/tunnel-config.js";
|
|
9
10
|
import { ensureFrpcBinary } from "../../tunnel/frpc-binary.js";
|
|
10
11
|
import { getTunnelService } from "../../tunnel/tunnel-service.js";
|
|
11
12
|
import { resolveFrpSubdomainHost } from "../../tunnel/frp-subdomain-host.js";
|
|
13
|
+
import { applyTunnelConsentToConfig, mergeTunnelConfigPatch, setTunnelEnabledInConfig } from "../../tunnel/tunnel-config.js";
|
|
12
14
|
import "../../tunnel/index.js";
|
|
13
|
-
import { formatExamples, register } from "../registry.js";
|
|
14
|
-
import "../../config/index.js";
|
|
15
15
|
import { Command } from "commander";
|
|
16
16
|
//#region src/cli/commands/tunnel.ts
|
|
17
17
|
init_logger();
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PACKAGE_VERSION, init_package_version } from "../../package-version.js";
|
|
2
2
|
import { loadConfig } from "../../config/loader.js";
|
|
3
|
-
import { formatExamples, register } from "../registry.js";
|
|
4
3
|
import "../../config/index.js";
|
|
4
|
+
import { formatExamples, register } from "../registry.js";
|
|
5
5
|
import { acquireUpdateLock } from "../../infra/update-lock.js";
|
|
6
6
|
import { normalizeUpdateChannel } from "../../infra/update-channels.js";
|
|
7
7
|
import { compareSemver, resolveNpmChannelTag } from "../../infra/update-check.js";
|
|
@@ -4,9 +4,9 @@ import { ExtensionLoader } from "../extensions/loader.js";
|
|
|
4
4
|
import "../extensions/index.js";
|
|
5
5
|
import { MessageBus } from "../infra/bus/queue.js";
|
|
6
6
|
import "../infra/bus/index.js";
|
|
7
|
-
import { createDefaultContext } from "./registry.js";
|
|
8
7
|
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
9
8
|
import "../config/index.js";
|
|
9
|
+
import { createDefaultContext } from "./registry.js";
|
|
10
10
|
import { registerExtensionCliProgram } from "../extensions/sdk/channel-helpers.js";
|
|
11
11
|
import { join } from "path";
|
|
12
12
|
//#region src/cli/extension-cli-register.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
2
1
|
import { resolveEffectiveAgentManifest } from "../agent-manifest/resolver.js";
|
|
3
2
|
import "../agent-manifest/index.js";
|
|
3
|
+
import { init_agent_scope, normalizeAgentId, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
4
4
|
import { init_session_key, parseSessionKey } from "../routing/session-key.js";
|
|
5
5
|
import { agentExists, getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
6
6
|
//#region src/config/agent-profile.ts
|
package/dist/src/config/index.js
CHANGED
|
@@ -2,21 +2,21 @@ import { ENV_VARS, XOPC_DB_FILENAME, resolveHomeDir, resolveStateDir, resolveXop
|
|
|
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";
|
|
5
|
-
import {
|
|
5
|
+
import { clearConfigValueCache, getAllowedCommands, getCacheStats, init_resolve_config_value, resolveConfigValue, resolveHeaders, testApiKeyResolution } from "./resolve-config-value.js";
|
|
6
6
|
import { expandWorkspacePathString, init_workspace_path, normalizeWorkspaceDir, resolveWorkspaceRoot } from "./workspace-path.js";
|
|
7
7
|
import { resolveDefaultAgentWorkspaceDir } from "./workspace-defaults.js";
|
|
8
8
|
import { resolveAgentDir as resolveAgentDir$1, resolveAgentHomeDir as resolveAgentHomeDir$1, resolveAgentWorkspaceDir } from "../agent/agent-scope.js";
|
|
9
|
-
import { extractProfileAgentId, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "./agent-profile.js";
|
|
10
9
|
import { FILENAMES, WORKSPACE_FILES, existsSync, hasBundledExtensionManifest, init_paths, resolveAgentAuthProfilesPath, resolveAgentDir, resolveAgentHomeDir, resolveAgentProfileDir, resolveAgentProfileMarkdownPath, resolveAuthProfilesPath, resolveBinDir, resolveBundledExtensionsDir, resolveBundledSkillsDir, resolveConfigPath, resolveCredentialsDir, resolveExtensionSdkPath, resolveExtensionsDir, resolveExtensionsLockPath, resolveInboxDir, resolveInboxMessagePath, resolveInboxPendingDir, resolveInboxProcessedDir, resolveLogPath, resolveLogsDir, resolveModelsJsonPath, resolveNodeBinDir, resolveNodeBinPath, resolveNodeToolsDir, resolveNpmBinPath, resolveOAuthPath, resolvePidPath, resolveSkillPath, resolveSkillsCachePath, resolveSkillsDir, resolveSkillsLockPath, resolveSocketPath, resolveStatusPath, resolveToolsDir, resolveWorkspaceExtensionsDir, resolveWorkspaceFile, resolveWorkspaceStateDir, resolveWorkspaceStatePath, resolveXopcBinPath } from "./paths.js";
|
|
11
|
-
import { init_loader, loadConfig, saveConfig } from "./loader.js";
|
|
12
|
-
import { clearConfigValueCache, getAllowedCommands, getCacheStats, init_resolve_config_value, resolveConfigValue, resolveHeaders, testApiKeyResolution } from "./resolve-config-value.js";
|
|
13
10
|
import { CustomModelSchema, ImageGenerationCapabilitiesSchema, ImageGenerationModelSchema, ImageGenerationProviderSchema, ModelOverrideSchema, ModelsJsonSchema, OpenAICompatSchema, OpenAICompletionsCompatSchema, OpenAIResponsesCompatSchema, OpenRouterRoutingSchema, ProviderConfigSchema, VercelGatewayRoutingSchema, getDefaultModelValues, init_models_json, loadModelsJson, modelsJsonExists, saveModelsJson, validateModelsConfig } from "./models-json.js";
|
|
11
|
+
import { init_loader, loadConfig, saveConfig } from "./loader.js";
|
|
12
|
+
import { applyConfigOverrides, getConfigOverrides, resetConfigOverrides, setConfigOverride, unsetConfigOverride } from "./runtime-overrides.js";
|
|
13
|
+
import { extractProfileAgentId, resolveEffectiveAgentManifestForAgent, resolveEffectiveAgentManifestForSession, resolveEffectiveAgentProfile, resolveEffectiveAgentProfileForSession } from "./agent-profile.js";
|
|
14
14
|
import { canonicalizeConfiguredMcpServer, isKnownCliMcpTypeAlias, normalizeConfiguredMcpServers, resolveXopcMcpTransportAlias } from "./mcp-config-normalize.js";
|
|
15
15
|
import { formatThinkingLevels, listThinkingLevels, normalizeElevatedMode, normalizeReasoningLevel, normalizeThinkLevel, normalizeVerboseLevel, thinkLevelToNumber } from "../agent/transcript/thinking-types.js";
|
|
16
|
+
import { diffConfigPaths } from "./diff.js";
|
|
16
17
|
import { getWorkspacePath } from "./workspace-path-helpers.js";
|
|
17
18
|
import { listAgentProfileMarkdownDirs, listAgentWorkspaceDirs } from "./workspace-dirs.js";
|
|
18
19
|
import { ProfileManager, createProfile, deleteProfile, getCurrentProfile, getProfileManager, getProfileNameFromDir, getSwitchCommand, listProfiles, resolveProfileStateDir } from "./profile.js";
|
|
19
|
-
import { diffConfigPaths } from "./diff.js";
|
|
20
20
|
import { BASE_RELOAD_RULES, buildReloadPlan, matchReloadRule } from "./rules.js";
|
|
21
21
|
import { ConfigHotReloader } from "./reload.js";
|
|
22
22
|
//#region src/config/index.ts
|
|
@@ -2,8 +2,8 @@ import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
4
|
import { ConfigSchema, init_schema } from "./schema.js";
|
|
5
|
-
import { init_paths, resolveConfigPath } from "./paths.js";
|
|
6
5
|
import { init_write_file_atomic, writeTextAtomic } from "../infra/write-file-atomic.js";
|
|
6
|
+
import { init_paths, resolveConfigPath } from "./paths.js";
|
|
7
7
|
import { assertChannelPluginConfigs, init_validate_channel_configs } from "./validate-channel-configs.js";
|
|
8
8
|
import { dirname } from "path";
|
|
9
9
|
import { existsSync, mkdirSync, promises, readFileSync } from "fs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { init_paths, resolveModelsJsonPath } from "./paths.js";
|
|
3
2
|
import { init_write_file_atomic, writeTextAtomicSync } from "../infra/write-file-atomic.js";
|
|
3
|
+
import { init_paths, resolveModelsJsonPath } from "./paths.js";
|
|
4
4
|
import { existsSync, readFileSync } from "fs";
|
|
5
5
|
import { z } from "zod";
|
|
6
6
|
//#region src/config/models-json.ts
|
|
@@ -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-session-types.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 };
|